old-www/LDP/LG/issue31/issue31.html

17876 lines
708 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<TITLE> Linux Gazette Index Page </TITLE>
<META NAME="robots" CONTENT="noindex, nofollow">
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#A000A0"
ALINK="#FF0000" >
<center><H2><IMG SRC="../gx/newlogo.jpg"
ALT="Linux Gazette... making Linux just a little more fun!">
</H2>
<H5>Copyright &copy; 1996-98 Specialized Systems Consultants, Inc.</H5>
</center>
<P> <HR> <P>
<!--==================================================================-->
<center>
<H1>Welcome to Linux Gazette!<img src="../gx/tm.gif" alt="(tm)"></H1>
</center>
<P> <HR> <P>
<!--==================================================================-->
<H1>Published by:</H1>
<center>
<H1><A HREF="http://www.ssc.com/lj/">
<img src="../gx/ljlogo.gif" alt="Linux Journal" border=0></A></H1>
</center>
<P><HR> <P>
<H1>Sponsored by:</H1>
<table>
<tr>
<td><H1><A HREF="http://www.infomagic.com/"><img ALIGN="bottom" HSPACE="70" src=../gx/infologo.gif alt="InfoMagic" border=0></A></H1></td>
<td>
<H1><A HREF="http://www.suse.com/"><img ALIGN="bottom" src=../gx/suse.gif alt="S.u.S.E." border=0></A></H1></td>
<td>
<H1><A HREF="http://www.redhat.com/"><img HSPACE="70" src=../gx/redhat.gif alt="Red Hat" border=0></A></H1></td>
</tr>
<tr>
<td><H1><A HREF="http://www.LinuxMall.com/"><img ALIGN="bottom" HSPACE="70"
src=../gx/linuxmall.gif alt="LinuxMall" border=0></A></H1></td>
<td><H1><A HREF="http://www.linuxresources.com/"><img ALIGN="bottom"
src=../gx/linux6.gif alt="Linux Resources" border=0></A></H1></td>
<td><H1><A HREF="/cgi-bin/redirect.pl"><img HSPACE="70"
src=../gx/mozilla.gif alt="Mozilla" border=0></A></H1></td>
</tr>
</table>
<P>
Our sponsors make financial contributions toward the costs of
publishing <I>Linux Gazette</I>. If you would like to become a sponsor
of <I>LG</I>, e-mail us at <A
HREF="mailto:sponsor@ssc.com">sponsor@ssc.com</A>.
<P>
<I>Linux Gazette</I> is a non-commercial, freely available publication and will
remain that way. Show your support by using the products of our sponsors
and publisher.
<P> <HR> <P>
<!--=================================================================-->
<H1 align="center">Table of Contents <BR>August 1998 Issue #31</H1>
<P> <HR> <P>
<table><tr>
<td rowspan=4>
<UL>
<LI><A HREF="../index.html">The Front Page</A>
<LI><A HREF="./lg_mail31.html">The MailBag</A>
<ul>
<li><a HREF="./lg_mail31.html#ideas">Article Ideas</a>
<li><a HREF="./lg_mail31.html#help">Help Wanted</a>
<li><a HREF="./lg_mail31.html#gen">General Mail</a>
</ul>
<LI><A HREF="./lg_tips31.html">More 2 Cent Tips</A>
<ul>
<li><a HREF="./lg_tips31.html#brindle">
RE: Photogrammetry tools for Linux? in Issue 30</A>
<li><a HREF="./lg_tips31.html#esser">
Re: Suggestion for Article, simultaneous versions of Kernels</A>
<li><a HREF="./lg_tips31.html#reith">
Secondary IDE interface CDROM detection/automounting tip</A>
<li><a HREF="./lg_tips31.html#hornby">
Re ext2 partitions</A>
<li><a HREF="./lg_tips31.html#hegbloom">
pdf resumes: pdflatex</A>
<li><a HREF="./lg_tips31.html#mitchell">
Re: CHAOS</A>
<li><a HREF="./lg_tips31.html#leon">
Re: 3com network cards</A>
<li><a HREF="./lg_tips31.html#rudder">
ext2 Partitions</A>
<li><a HREF="./lg_tips31.html#lussier1">
RE: Searching (somewhat in vain) for sources on shell scripting</A>
<li><a HREF="./lg_tips31.html#lussier2">
Re: $.02 tips on ext2 Partitions </A>
<li><a HREF="./lg_tips31.html#huggie">
LG30 ext2 Partition tip</A>
<li><a HREF="./lg_tips31.html#np">
Modem Connecting Speed</A>
<li><a HREF="./lg_tips31.html#carlson">
Short Article on upgrading to SMP</A>
<li><a HREF="./lg_tips31.html#gushee">
Cross-platform Text Conversions</A>
</ul>
<LI><A HREF="./lg_bytes31.html">News Bytes</A>
<ul>
<li><a HREF="./lg_bytes31.html#general">News in General</a>
<li><a HREF="./lg_bytes31.html#software">Software Announcements</a>
</ul>
<LI><A HREF="./lg_answer31.html">The Answer Guy</A>, by James T. Dennis
<LI><A HREF="./searls.html">Betting on Darwin, Part 2</a>, by Doc Searls
<LI><A HREF="./canal.html">Copying Red Hat Legalities</a>, by Eric Canal
<LI><A HREF="./marsden.html">EMACSulation</A>, by Eric Marsden
<LI><A HREF="./roelofs.html">The Future of Linux</A>, by Greg Roelofs
<LI><A HREF="./gm.html">Graphics Muse</A>, by Michael J. Hammel
<LI><A HREF="./dibona.html">The Great Linux Revolt of 1998</a>,
by Chris Dibona
<li><A HREF="./rogers2.html">How I got my Adaptec AVA 1502 SCSI card to
work with Linux and Sane</A>, by James M. Rogers
<LI>New Release Reviews, by Larry Ayers
<ul>
<li><A HREF="./ayers1.html">Debian 2.0</a>
<li><A HREF="./ayers2.html">Software and Plants</a>
</ul>
<LI><A HREF="./raymond.html">Open Source's First Six Months</A>
by Eric Raymond
<LI><A HREF="./pavlicek.html">Personal Linux/Alpha System: 64 bits for
Under $500</A> by Russell C. Pavlicek
<li><A HREF="./pelletier.html">Product Review: The Roxen Challenger Web
Server</A>, by Michael Pelletier
<li><A HREF="./hughes.html">Selecting a Linux Distribution</A>,
by Phil Hughes
<li><A HREF="./richardson.html">Some History and Other Things</A>,
by Marjorie Richardson
<li><A HREF="./rogers1.html">The Standard C Library for Linux, Part Two</A>,
by James M. Rogers
<LI><A HREF="./lg_backpage31.html">The Back Page</A>
<ul>
<li><a HREF="./lg_backpage31.html#authors">About This Month's Authors</a>
<li><a HREF="./lg_backpage31.html#notlinux">Not Linux</a>
</UL>
</UL>
</td>
</tr><tr>
<td align=center>
<A HREF="lg_answer31.html">
<img src="../gx/dennis/answerwiz-255.gif" border=0 alt="">
</a>
<A HREF="lg_answer31.html"><i>The Answer Guy</i></a>
</td>
</tr><tr>
<td align=center>
<A HREF="gm.html">
<IMG SRC="../gx/hammel/banner-3.gif" border=0 alt="">
</a>
</td>
</tr>
</table>
<P> <HR><P>
<!--=============================================================-->
<A HREF="./issue31.txt">TWDT 1 (text)</A><BR>
<A HREF="./issue31.html">TWDT 2 (HTML)</A><BR>
are files containing the entire issue: one in text format, one in HTML.
They are provided
strictly as a way to save the contents as one file for later printing in
the format of your choice;
there is no guarantee of working links in the HTML version.
<!--=============================================================-->
<P> <HR><P>
Got any <I>great</I> ideas for improvements? Send your
<A HREF="mailto:gazette@ssc.com">comments, criticisms, suggestions
and ideas.</A>
<P><hr><p>
This page written and maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A>
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
<HR>
<center>
<table width="100%" cellpadding=7><tr><td>
<H2><a NAME="mail"><IMG SRC="../gx/mailbox.gif" ALIGN=MIDDLE ALT=" ">
The Mailbag!</a> </H2>
Write the Gazette at <A HREF="mailto:gazette@ssc.com"> gazette@ssc.com</A>
</td><td>
<H3>Contents:</H3>
<ul>
<li><a HREF="./lg_mail31.html#help">Help Wanted -- Article Ideas</a>
<li><a HREF="./lg_mail31.html#gen">General Mail</a>
</ul>
</td></tr></table>
</center>
<a name="help"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="maroon">Help Wanted -- Article Ideas</font></H3></center>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 30 Jun 1998 17:59:52 -0600<BR>
From: Ernesto Vargas, <A HREF="mailto:evargas@aisinternational.com">
evargas@aisinternational.com</A> <BR>
Subject: <B>email to pager gateway</B>
<P>
I'm trying to find an e-mail to pager gateway. So for example if I send a
e-mail to 123456@mydomain.com it will send it to the pager system but if
I send and e-mail to evargas@mydomain.com leave the message in my pop
account. Additional to this is not to specify each pager our company has
more then 25,000 and is growing 1,000 per month.
<P>
Thanks,<BR>
Ernesto Vargas
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Thu, 2 Jul 1998 14:44:52 -0600<BR>
From: "MARK C ZOLTON", <A HREF="mailto:mcz@wheat.ksu.edu">
mcz@wheat.ksu.edu</A> <BR>
Subject: <B>SyQuest EZ 135 and Linux...</B>
<P>
For quite some time now I've been wondering how to set up my SyQuest
EZ 135 removable disk drive under Linux. If you haven't seen one,
it's kind of like a ZIP drive, but less of an industry standard. I
got it for free, otherwise I don't think it would have been worth it.
Anyway, I have about six 135MB disks for it and I'd like to give some
of that to Linux. Any ideas? I've seen a driver around before, but I
don't remember where to get it.
<P>
Mark
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Mon, 06 Jul 1998 17:01:00 +0300<BR>
From: admin, <A HREF="mailto:admin@jrol.com">
admin@jrol.com</A> <BR>
Subject: <B>chroot how to?</B>
<P>
I have been trying to lookup information on chroot command. i am trying
to see if I can restrict my users to there home directories. Same
concept like anonymous ftp.
So each user will have his or hers own work space. Is there any
documentation ?
Thank you for your time.
I have Red Hat5.0 and 5.1.
<P>
Khriss,
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Sun, 05 Jul 1998 05:32:21 -0700<BR>
From: "Wizard Saturn", <A HREF="mailto:alexey@mailcity.com">
alexey@mailcity.com</A> <BR>
Subject: <B>problem mouse</B>
<P>
I have Genius Net Mouse (with a Magic-Button for making browsing easy, hardware scrolling).
I use Read Heat 5.0, but I cannot use Magic-Button for scrolling in Xwindows.What shall I do for using it.
<P>
Thank you in advance.<BR>
alexey
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Fri, 3 Jul 1998 17:47:35 +0100 (BST)<BR>
From: Sean Kelly, <A HREF="mailto:S.Kelly@newcastle.ac.uk">
S.Kelly@newcastle.ac.uk</A> <BR>
Subject: <B>Recognising the AMD K5-PR166</B>
<P>
I'm wondering whether any other readers have used the AMD K5-PR166
with Linux. It's just that my system seems to think it's a K5-PR133 and
states that it's running at 100MHz. Also, the BogoMips value indicates
that the processor is running at 100MHz.
Anyone any advice?
<P>
Thanks in advance,<BR>
Sean.
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: 08 Jul 98 16:10:03 +0000<BR>
From: James Spenceley, <A HREF="mailto:creative@create.com.au">
creative@create.com.au</A> <BR>
Subject: <B>PPP help</B>
<P>
I'd like to set my Linux box up as a PPP remote access server. Can you
give me an idea of where i can find some info on how to do this ?
Or maybe someone who has done it with a positive outlook and an email
address.
Any help would be great
<P>
Thanks<BR>
James
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Sat, 18 Jul 1998 02:20:45 +0200<BR>
From: silvia ballmann, <A HREF="mailto:sballmann@usa.net">
sballmann@usa.net</A> <BR>
Subject: <B>Linux AND Lanprinter</B>
<P>
Can I manage 800 lanprinter with one Linux system?
Thanks.
<P>
bye, Thomas
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Thu, 16 Jul 1998 16:50:41 -0700<BR>
From: al00584, <A HREF="mailto:al00584@snetsy.cpg.com.au">
al00584@snetsy.cpg.com.au</A> <BR>
Subject: <B>DStealth Linux FVWM driver</B>
<P>
I have a Diamond Stealth 3D 2000 Virge card. In initial drivers even 16
bit display modes were patchy. Now I'm wondering if there would be new
drivers developed which are stable since.
Furthermore I seem to have trouble installing and uninstalling files.
No Uninstallshield equivalent of windows??
<P>
Keep up the great service.<BR>
Andrew
<blockquote> <I>
(No need for an uninstall with Linux, <tt>rm -rf</tt> will remove all the
way down a directory tree. Be careful when you use it though. Also, if you
feel the need to write C code to this, there is an article in the August
issue of <I>Linux Journal</I> about how to write a "deltree" command.
--Editor)
</I> </blockquote>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 21 Jul 1998 10:07:36 -0700 (PDT)<BR>
From: <A HREF="mailto:dhelm@linknet.kitsap.lib.wa.us">
dhelm@linknet.kitsap.lib.wa.us</A> <BR>
Subject: <B>CHAOS</B>
<P>
I would like more information on the CHAOS article in the July (#30) issue
of LG. Are there any HOW-TO's on how to set a thing like that up? Since I
cant afford (OK, to cheap to buy..) one of the new systems, a little
network of cheap PC's sounds fun.
<P>
GreatDane
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Wed, 22 Jul 1998 00:08:57 EDT<BR>
From: <A HREF="mailto:Kilgorecom@aol.com">Kilgorecom@aol.com</A> <BR>
Subject: <B>notebook</B>
<P>
I have an OLD laptop that is probably only good for a doorstop or
running DOS. (I did download DR. DOS, and may give it a try, but am more
interested in putting a Linux system on it if possible. It is a DTK model
DLT-3311 which has a whopping Cx486dlc 33 Mhz processor and 4 MB of ram. It
has a monochrome monitor, and runs windows 3.x slow. I can't find any more
ram for it and am interested in finding out if there is a distribution of
Linux, BSD, or something of the like that would turn this into a suitable
companion for sales calls, including a database, pim, and anything else slick
I could get this to do until I can afford something less paeliolithic.
<P>
Any info you could send would be greatly appreciated, as well as being a big
feather in your Karmic hat.
<P>
Thanks in advance,
Kent
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Wed, 29 Jul 1998 08:18:28 +0000<BR>
From: Abduraghmaan Phillips, <A HREF="mailto:phillips@srvnac3.nac.ac.za">
phillips@srvnac3.nac.ac.za</A> <BR>
Subject: <B>Intel Celeron Processor</B>
<P>
I would like to know whether Linux will have any problems with
the Intel Celeron Processor.
<P>
Thanks, A. Phillips
<a name="gen"></a>
<P> <hr> <P>
<!-- =================================================================== -->
<center><H3><font color="maroon">General Mail</font></H3></center>
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Mon, 27 Jul 1998 12:19:00 -0700<BR>
From: Antony Chesser, <A HREF="mailto:antonyc3@integritas.com">
antonyc3@integritas.com</A> <BR>
Subject: <B>The Other Side of the Story</B>
<P>
In the article, Installing Microsoft & Linux, by Manish P. Pagey, we
were treated to a (possibly justified) diatribe about the difficulties
in integrating Linux and Win95. However, to have a more balanced view,
one might also note the following:
<P>
I like Linux thus far. But I never mistake what I like with that is
simpler for the average person out there to use. Linux is as user
friendly as a hurled brick. Installing Linux puts you at a $ or #
prompt with no clue of where to go afterwards. I'm a Novell CNE with
many years experience working with PCs and networks, so I'm not daunted
by a non-intuitive prompt. And I already had a WIN95 machine set up so
I could access the net, download the truly excellent Linux Journal
online, and get support on how to install RPMs, etc. Had that not been
the case, however, I'd have been hard pressed to iron our the wrinkles
in my install, or to know which files to edit, or programs to run, to do
basic configuration. By comparison, win95 starts off in the gui mode,
allowing for rather intuitive productivity immediately. And yes, I
agree...it IS less stable. But crashing once a week (and I don't, by
the way... I applied the service pack to it, and I am very stable) is
still far better than not being able to even find out how to connect to
the net.
<P>
When Linux finishes installing, you're left with a # prompt. When WIN95
finishes installing, you've a fairly intuitive GUI that allows you to
quickly and easily install and run programs, connect to the net, and
**apply updates without re-compiling the kernel**.
<P>
So is win95 better than Linux? Nope. But neither is it inferior. Each
tool for the right job. If someone wants to set up their own PC and get
working quickly, the average person without experience in EITHER of the
OS's will have an easier time with win95. The trade off for that is
that yes, it IS less stable in the long run, and yes, you DO have to pay
for it. But considering that for the novice, the alternative is a PC
that he/she cannot use, the answer seems clear that one should get the
more easily installed and usable system. And that is not yet Linux.
<P>
I believe firmly that it one day WILL be. Many of the Linux Accolytes
have decried the attempt to enhance the functionality and ease of use
for Linux as the equivalent of "Starting down the Dark path of the
Force." (shrug) A bit melodramatic, if you ask me. Consider this...
that if we don't make it more user friendly, it will STAY a tiny share
of the home and small business market, which in turn means less software
written for it, and less call for us to support it for a living. Which,
given all it's virtues, seems a shame, doesn't it?
<P>
Let's keep the tight, elegant kernel that is Linux, and add ease of use
to it. If we do this, then like IBM's iron fisted dominance of the PC
market that faded, so too will Microsoft be "The Giant That Was."
However, if we insist on keeping Linux the OS that commands a religious
like fervor with a select few, and keeping it un-usable for the vast
majority of home and small business users, we'll continue to watch Mr.
Gates... the richest man in the world... sell upgrades to a kludgy OS
for more money than ANY current version of Linux gets. And we'll hear
his laughter.
<P>
Antony Chessor
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 07 Jul 1998 20:01:16 -0400<BR>
From: Kevin Fortin, <A
HREF="mailto:kfortin@ufl.edu">kfortin@ufl.edu</A><BR>
Subject: <B>RedHat Service Pack 1</B>
<P>
A badly organized yet sketchy editorial, upon these themes:
<P>
Just when Linux was starting to get a little more of the limelight,
Red Hat releases a new version of its popular distribution, the
regrettably buggy RH5.1 (a few weeks ahead of whatever product from
Redmond).
<P>
Many Linux beginners will probably start with Red Hat, because of the
ease of installation and the collection of software.
bo
Many or most beginners who want to give Linux a try will be installing
on their home machines, and will want to connect to the Internet by
modem afterwards (sorry -- PPP module not supported by kernel). Note:
this feature makes it difficult for home users to download patches from
FTP sites.
<P>
Furthermore, all users might want to install additional RPMs from CDROMS
(sorry -- unable to mount iso9660 filesystem).
<P>
[Strangely, when I upgraded an RH4.2 system to RH5.1, I did not have
trouble with PPP or CD-ROM support, but when I did an RH5.1 installation
from scratch, I did have problems. On that troublesome system, I
reformatted and reinstalled RH4.2.]
<P>
Many (or at least I) passed over RH5.0 (because I had read it needed a
lot of patching) and waited for RH5.1 to come out.
<P>
The Linux press doesn't appear to have commented on this situation.
Maybe I'm not looking hard enough, but I haven't come across any product
reviews or editorials in the on-line Linux press chastising RedHat for
rushing a defective product to market (ala Microsoft).
<P>
In spite of the above, "Me, I'm a Red Hat Man".
<P>
I'm no expert user, but I am a fan of the Linux phenomenon and certainly
of Red Hat, and I guess I'm just disappointed by the possibility that
potential newcomers might be frustrated and turned away from Linux by
the current Red Hat distribution.
<P>
I wish the people at Red Hat well, and will probably even send some money
their way, in appreciation of their 4.2 distrib as well as their ongoing
efforts. However, I might wait for RH5.2 or at least give the most
crucial of the RH5.1 patches enough time to make it onto the official CD
pressings.
<P>
[To be fair, I should note that I obtained RH5.1 on a $1.99 CD from
CheapBytes, but from reading the newsgroups, I don't believe that this
undermines the points made above. Also, I don't imagine that RedHat's
own commercial CD releases and their FTP site would be much out-of-sync,
and CheapBytes probably relies on the RH FTP site for its pressings.]
<P>
Kevin Fortin
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Mon, 06 Jul 1998 11:59:33 +0900<BR>
From: Tom Holroyd, <A HREF="mailto:tomh@taz.ccs.fau.edu">
tomh@taz.ccs.fau.edu</A> <BR>
Subject: <B>Compaq Unix Support</B>
<P>
Since the recent acquisition of Digital by Compaq, I think it's important
to let everybody know how they can show their support of Linux on
Compaq's
AXP platform. Jon Hall, Unix Software Group Senior Leader inside
Compaq, and
also Executive director of Linux International, has posted the following
announcement to axp-list@redhat.com
<P>
url: http://archive.redhat.com//axp-list/1998-June/0567.html
<P>
Remember that if a major player such as Compaq started shipping machines
(and not
only axps) with Linux pre-loaded, it would do much for Linux popularity.
<P>
<blockquote> <font color="blue">
Since sending them all one at a time to Mr. Pfeiffer will only make him
pissed off in the long run, you are welcome to send them to me, and I will
roll them up for him, and present them all at once.
I would suggest including in the letter (along with whatever else you want):
Your name, Your occupation, Whether you are buying the machine for personal
or business use, How many machines per year you buy (ONE is an o.k.
number!! Even one, every two or three years...he will understand, and they
mount up over many people), What type of machine you would buy (Alpha,
Intel), What size (how many megs memory, disk, etc.), and
Whether you would be interested in buying support.
Put as the subject line: YET ANOTHER UNIX USER
</font></blockquote>
<blockquote> <font color="blue">
I will guarantee you that my immediate management will look at them, at a
minimum, and I am fairly sure that they will get all the way up to Mr.
Pfeiffer, at least as a report. -- Jon "maddog" Hall,
<A HREF="mailto:maddog@zk3.dec.com">maddog@zk3.dec.com</A>
</font></blockquote>
<P>
Dr. Tom Holroyd
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Wed, 1 Jul 1998 12:04:27 +0100 (BST)<BR>
From: Karsten Ballueder, <A HREF="mailto:karsten@phy.hw.ac.uk">
karsten@phy.hw.ac.uk</A> <BR>
Subject: <B>Portable GUI C++ Libraries</B>
<P>
I have just read your article about "Portable GUI C++ Libraries" and
found it to be not very well researched. The information given about
wxWindows is outdated and a bit inaccurate.
<P>
You mentioned that Version 2.0 "is rumoured to be available in the
near future". Fact is, it has already been available in different
alpha releases for quite some time. While the code is still under
development, it is worth mentioning that it is already very usable and=20=
<P>
the turnaround time for bug fixes is quite low. At present there are
two implementations of wxWindows 2.0, the Windows version, available
from the main wxWindows web page mentioned in your article, and the
GTK based Unix version wxGTK, available from
http://www.freiburg.linux.de/~wxxt/ . Both versions are ready for
development right now ( We are using it to implement quite a large
e-mail application, http://Ballueder.home.ml.org/M ). A third version,=20=
<P>
based on Motif is under development.
<P>
You also mentioned the "side project" of a port of wxWindows which
doesn't require the Motif libraries. This "port", called wxXt has been=20=
<P>
around for many years and is probably the most-used wxWindows version
on Linux. It provides a complete Motif-lookalike interface, without
requiring Motif.
<P>
I find that if you look at the newer wxWindows releases, especially
wxGTK, they provide a much more complete environment and a much
improved user interface than other toolkits. Unfortunately, your
screenshots based on the older Motif version don't show this.
<P>
Regards, Karsten
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Sun, 05 Jul 1998 00:09:07 +0000<BR>
From: general, <A HREF="mailto:general@gis.net">general@gis.net</A> <BR>
Subject: <B>LG30 article by Manish Pagey</B>
<P>
The most intelligent statement in this persons article was " Because
I'm stupid thats why". This article was not anything of general interest
but only a tirade about Bill Gates and Microsoft.
<P>
If your Linux is so great why must you degenerate the efforts and
products of others. Evidently, you people all live in the ivory towers
of academia and not the real world. Manish cites that the Feds and the
state ag's are after MS.
<P>
His vehemence smacks so much of hate that they may come for him next for
committing "hate crimes or if not hate crimes the incidence of a hate
crime", to quote one great liberal mayor here in Marxachusettes.
<P>
Why must all of Linux literature be permeated with the stink of
egotistical minds rotting putridly in the sun. Linux may be the
operating system of the future, that is if we can get by humid
putrification of your egotism.
<P>
Quite frankly, LG should hide in shame for printing such childish
gibberish. When I downloaded your recent issue to my Linux box, it was
with the hope that it might enlighten my experience with another
operating system and broaden my limited computer knowledge.
<P>
However, this trash will not deter my efforts to learn about Linux as it
has presented quite a challenge to run both it and W95. Here's hoping
that you and others can present a journal that will teach not disgust.
<P>
Thanks for letting me vent.
<P>
Robert E. Lee
<blockquote> <I>
I frankly don't have time to read every word of every article. I try to
avoid articles that are just hate mail. Obviously, I missed on this one if
it is as bad as you say. People are always asking for articles about
installing both Linux and Microsoft and the problems incurred while doing
so and this one looked to fit the bill.
I am sorry you were offended and that I did not do a better filtering job.
Thanks for writing -- Editor
</I> </blockquote>
<P>
Thank you for responding to my e-mail. However, my feelings were not of offense
but of total irritation that the Linux literature at all levels is saturated
with the debasing of others and their operating system.
<P>
There are forums where people can vent their dislikes but they do a disservice to
the Linux community by littering Linux literature all of types their personal
dislikes of others and their efforts.
<P>
Linux is being touted as the operating system of the future and it could very
well be that some day it will mature to this status. However, the Linux community
will have to mature with it if they expect this to happen. The type of article
will only repel people rather than attract them. Sell the features and benefits
of the Linux operating system and people will use it, denigrate others and their
efforts and Linux will languish.
<P>
Perhaps, it would be timely to include the 'Advocacy Mini How-to' by Paul L.
Rogers in a future edition in an effort help Linux users understand that tirades
and even snide remarks are counter to their goal of promoting Linux and are
destructive instead.
<P>
Thank you for lending an ear.<BR>
Robert E. Lee
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 07 Jul 1998 20:00:20 -0400<BR>
From: "Donald N. McKay", <A HREF="mailto:fstop@a-znet.com">
fstop@a-znet.com</A> <BR>
Subject: <B>Promoting Linux</B>
<P>
I listened intently to the Internet audio broadcast when Steve Jobs
supplied the voice over to the great race between a 333 MHz Pentium II
and Apple's G3. Of course, for those who did listen, we were to learn
that G3 ate Pentium's lunch when the two processors 'drag raced' through
a run-time application of Photoshop followed by animation, courtesy of
Macromedia Director. After listening to the Inter-cast, the world
suddenly became aware of the power of G3.
<P>
So.... Why not host a drag race on the Internet between Win 95, Win NT 4
and Win 98 and Linux? Hell, throw OS/2 Warp and Novell in there also.
(of course, using identical computers - processors, networking cards,
etc.). Ballyhoo the event with home page and search engine banner ads
(paid for by Red Hat, Caldera, and anyone else who'll make a buck out of
the event). Invite C|NET, Andover Net and ZDNet to cover the event. Run
Linux on Apache or however the Linux-meisters see fit, but let's see
once and for all just what this OS can do not only for speed but for
reliability. Then, and only then, will people not only take notice of
the product, but will, in fact, try it (buy it in some cases) and use
it.
<P>
What do you think?
<P>
Don McKay
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Tue, 14 Jul 1998 13:18:39 -0300<BR>
From: Michael Rasmusson, <A HREF="mailto:miker@bdamicro.com">
miker@bdamicro.com</A> <BR>
Subject: <B>the cruel reality</B>
<P>
Note: This essay assumes that the DoJ (Department of Justice) is nonexistent.
<P>
While I am a vocal Linux (and Unix) advocate and am deeply alarmed at
the thought of a Redmond controlled world, once in a while it helps to
sit down and examine reality.
<P>
Linux, at this point in its development, is still too much of a learning
curve for the majority of PC users. Most of the Linux users I know,
including myself, are software engineers, systems programmers, system
administrators, or some other variant of systems professional. All but
one use a commercial Unix variant at work. Some PC aficionados showed
genuine interest in my Linux box with its various GUIs during its
lifetime. The interest seemed to fade when they saw the command line
tricks still lurking under most of the more interesting things you can
do with Linux, even if these tricks are eventually launched from the
window manager. Until the time comes that Linux can be installed,
configured and maintained from a fright free interface, it will stay in
the realm of techies.
<P>
All is not hopeless though. Looking back 20 years to the beginning of
personal computing we see that the innovators and early adopters were
overwhelmingly techies and electronic hobbyists. We also see that
traditional IT types dismissed the early PC as inappropriate for
business use. Big Iron would rule the glass tower forever. PC advocates
retorted that they would eventually take over and the centralised
systems of MIS would be phased out as dinosaurs. Even respectable
periodicals like The Economist spouted drivel about PCs replacing
mainframes. The reality that has developed since the early 80's has been
neither a continuation of Big Iron nor a clean sweep by Wintel.
Centralised computing in the form of servers, including the new
generation of mainframe class systems, is doing just fine. Wintel PCs
have occupied most of the lower niches and are rising into new ones, but
will this rise continue until Wintel everywhere is a reality?
<P>
Most of the decision makers in IT right now are either managers who were
flexible enough to allow PCs into the systems framework back in the 80's
or they rose through the ranks during the last 15 years of PC centric
computing. Many of them honestly believe in Wintel's manifest destiny.
They have either known no other reality except Wintel dominance, or if
they have, it was one of IBM dominance. In either case the mind set is
very similar. Just like in the early 80's, a closed IS mind set seems
dead against branching from the safe and tried road and into new and
fresh territory. Fortunately, similar to what happened in the 80's, a
few courageous thinkers can see the widening cracks in the Windows.
<P>
To these "aware" techies the dream of an inexorable upward rise of the
Wintel PC into the world of workhorse systems is turning into a
nightmare. More people are starting to see this. The interest in Java,
the NC concept, managed PCs, Citrix ICA, all are early signs of a
growing dissatisfaction with the legacy of DOS. Windows boxes are
notoriously troublesome, but where are the alternatives? Linux is
showing itself to be promising, but it is _not_ yet ready to be adopted
by the herd. PC makers are aware of this and continue to bundle MS OSes,
you're better off with the devil you know.
<P>
The great hope of the Windows world is NT. With Windows98 showing itself
to be a yet another troublesome incarnation of DOS/Windows, NT is the
last refuge.
<P>
Strangely, instead of making NT the solid crash proof system people
crave, Redmond hacks and bloats up NT in hopes of getting it into higher
margin roles that are still too much for it to handle. Redmond pushes,
and reacts to criticism of its baby with patches, hacks and bloat.
Redmond keeps pushing, and NT continues to show itself as being unready
for the big leagues. Redmond say, "Wait! NT version 5.0 will have all
sorts of new features and capabilities that will make it perfect for
enterprise computing." More likely is NT 5.0, with it's 30+ million
lines of code, 24+ million of them new and untested, may just turn out
to be the most bug ridden bloated carcass of ugly hacks we've ever seen.
Redmond will once again have egg on its face, but this time will it be a
permanent stain?
<P>
If NT 5.0 turns out to be a huge disappointment, then the alternatives
will have to be ready to entice a growing pool of would-be defectors.
Linux will have to be more usable and manageable by the WinHerd. It will
have to be viable enough to convince OEMs that they can afford to break
their devil's bargains with Microsoft. If Redmond trips and once again
the lack of viable alternatives allows it to get on its feet and
continue building its empire, we have only ourselves to blame. We have
two years, can we do it?
<P>
Regards,<BR>
Mike
<P> <HR> <P>
<!--====================================================================-->
<IMG ALT=" " SRC="../gx/envelope.gif">
Date: Wed, 22 Jul 1998 10:37:33 -0500<BR>
From: "Pronovici, Kenneth", <A HREF="mailto:Kenneth.Pronovici@mchugh.com">
Kenneth.Pronovici@mchugh.com</A> <BR>
Subject: <B>CHAOS</B>
<P>
Please pass on my congratulations on a wonderful
article to Alex - his CHAOS system apparently caused
my coworkers to think of me, and my WHOPPeRS (Wacky
Hastily Organized Parallel Processesing Research Scheme)
system, which looks a lot like CHAOS. Only difference
is that mine is sitting on my bedroom floor... ;-)
<P>
Ken Pronovici
<P> <hr> <P>
<!--================================================================-->
<center>Published in <i>Linux Gazette</i> Issue 31, August 1998</center>
<!--====================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
CONTENTS ]"></A>
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
PAGE ]"></A>
<A HREF="./lg_tips31.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P>
<h5>This page written and maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
Copyright &copy; 1998 Specialized Systems Consultants, Inc. </H5>
<P>
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <hr> <P>
<!-- QUICK TIPS SECTION ================================================== -->
<center>
<H1><A NAME="tips"><IMG ALIGN=MIDDLE ALT="" SRC="../gx/twocent.gif">
More 2&#162; Tips!</A></H1> <BR>
Send Linux Tips and Tricks to <A HREF="mailto:gazette@ssc.com">
gazette@ssc.com
</A></center>
<p><hr><p>
<H3>Contents:</H3>
<ul>
<li><a HREF="./lg_tips31.html#brindle">
RE: Photogrammetry tools for Linux? in Issue 30</A>
<li><a HREF="./lg_tips31.html#esser">
Re: Suggestion for Article, simultaneous versions of Kernels</A>
<li><a HREF="./lg_tips31.html#reith">
Secondary IDE interface CDROM detection/automounting tip</A>
<li><a HREF="./lg_tips31.html#hornby">
Re ext2 partitions</A>
<li><a HREF="./lg_tips31.html#hegbloom">
pdf resumes: pdflatex</A>
<li><a HREF="./lg_tips31.html#mitchell">
Re: CHAOS</A>
<li><a HREF="./lg_tips31.html#leon">
Re: 3com network cards</A>
<li><a HREF="./lg_tips31.html#rudder">
ext2 Partitions</A>
<li><a HREF="./lg_tips31.html#lussier1">
RE: Searching (somewhat in vain) for sources on shell scripting</A>
<li><a HREF="./lg_tips31.html#lussier2">
Re: $.02 tips on ext2 Partitions </A>
<li><a HREF="./lg_tips31.html#huggie">
LG30 ext2 Partition tip</A>
<li><a HREF="./lg_tips31.html#np">
Modem Connecting Speed</A>
<li><a HREF="./lg_tips31.html#carlson">
Short Article on upgrading to SMP</A>
<li><a HREF="./lg_tips31.html#gushee">
Cross-platform Text Conversions</A>
</ul>
<P> <hr> <P>
<!--================================================================-->
<a name="brindle"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
RE: Photogrammetry tools for Linux? in Issue 30
</H3>
Date: Wed, 29 Jul 1998 10:01:14 -0500<BR>
From: John Prindle, <A HREF="mailto:jprindle@mail.eden.com">
jprindle@mail.eden.com</A> <BR>
<P>
In the July 1998 issue of LG, this message was listed in the "Help Wanted"
section.
<blockquote> <font color="navy">
From: Maurizio Ferrari, Maurizio.Ferrari@tin.it <BR>
I am looking for a Linux program to do some close-range photogrammetry.
Close range photogrammetry is a technique that enables to reconstruct 3D
images from a series
of 2D pictures. There are a few powerful (and relatively inexpensive)
tools for Windows but none so far for Linux, that I know of. There was
something once upon a time
called Photo4D. Despite my massive Internet search, any occurrence of
Photo4D seems to have been wipe erased from the face of earth. It is
listed in SAL but all the links
fail.
I don't want to resort to buy and use Windows software for this. Help,
anyone?
</font></blockquote>
I have tried to e-mail the user back at his given address with some info
found on the company and product, but the address given is not valid.
So, here it is:
<P>
CompInt <BR>
712 Seyton Drive <BR>
Nepean, Ontario K2H 9R9 <BR>
Canada <BR>
General e-mail : <A HREF="mailto:compint@igs.net">compint@igs.net</A> <BR>
<A HREF="http://www.igs.net/~compint/">http://www.igs.net/~compint/ </A><BR>
This page updated 8/15/97 at 5:45:19 AM ET. <BR>
<P>
I found this article about the product on Computer Graphics World's site.
<P>
<A HREF="http://www.cgw.com/cgw/Archives/1996/09/09prod1_05.html">
http://www.cgw.com/cgw/Archives/1996/09/09prod1_05.html</A>
<P>
Product Spotlight<BR>
New Motion-Capture Tool <BR>
CGW Magazine - September 1996 <BR>
<P>
With CompInt's Photo4D-Pro, animators can now capture 2D and 3D
motion based on video recordings. The Windows 95/NT-based program,
available for $490, features auto-detection and auto-marking tools which
use pattern recognition technology to automatically detect and mark similar
feature points in images, making it possible to effectively digitize a large
number of points. The software enables users to capture accurate 3D
motion from multiple video recordings of a subject by tracking the feature
points in videos and computing their x, y, and z coordinates in each frame.
Furthermore, its advanced algorithms can synchronize recorded videos to
sub-frame accuracy, allowing the use of low-cost home video cameras.
<P>
Coinciding with this product launch, the company is also releasing
Photo4D-Lite V2.0, a $99 product designed for users who require only
3D digitizing and modeling capabilities. Both products will be available on
Windows 95/NT, SGI, Sun, HP, and Linux platforms. (Nepean, Ontario;
613-721-1643)
<P>
The web page that is listed is not valid, but hopefully this may help
people trying to locate this product.
<P>
John
<P> <hr> <P>
<!--================================================================-->
<a name="esser"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: Suggestion for Article, simultaneous versions of Kernels
</H3>
Date: Wed, 01 Jul 1998 10:39:21 +0100<BR>
From: Hans-Georg Esser, <A
HREF="mailto:esser@i2.informatik.rwth-aachen.de">
esser@i2.informatik.rwth-aachen.de</A>
<P>
<blockquote> <font color="navy">
From: Renato Weiner, reweiner@yahoo.com <BR>
Recently I was looking at the Gazette and I think I have a good suggestion of an
article that will be very useful for the Linux community.
I have had some technical difficulties of having two simultaneous versions of Kernels in my system. I mean a stable one and a developing one.
I searched the net looking for information of how to co-exist both but it's completely fragmented.
If somebody more experienced could put all this information together, it will certainly help a lot of people from kernels developers to
end-users.
</font></blockquote>
Let me state the following:
<P>
HOW TO HAVE COEXISTING KERNELS
<P>
First let me assume that, with "coexisting kernels", you meant to have several different
kernels (with different kernel numbers such as 2.0.34 and 2.1.101) each of which can
be chosen at boot time to be started. (The point is: I suppose, you don't want to
simultaneously __run__ different kernels, which of course is impossible.)
<P>
So, all you have to do is this:
<P>
For each kernel you want to use, get the kernel sources, e.g. as .tgz file, cd to
/usr/src, do a
<PRE>
tar xzf ../where/ever/it/is/package.tgz
</PRE>
then cd to /usr/src/linux-2.0.34 (e.g.)
and do the ordinary kernel configuration / compilation, i.e.
<PRE>
make config (or menuconfig or xconfig, whatever you like)
make zImage modules modules_install
cp arch/i386/boot/zImage /linux-2.0.34 (e.g.)
</PRE>
The last bit of the make will generate a directory /lib/modules/2.0.34 (e.g.) where
the modules are put.
<P>
Then edit the /etc/lilo.conf. Copy the parts that configure your "normal" system
start and change the name of the configuration. Also change the name of the
kernel binary to /linux-2.0.34 (e.g.).
<P>
Then proceed with the next kernel in identic behaviour. Nothing can be overwritten
during this process, because all of the kernel compilation is done in its separate
directory /usr/src/linux-2.x.y, and all the generated modules will be put in a
separate directory /lib/modules/2.x.y, and your zImage copy (residing in /) will
have a new name, as you have used an other kernel version.
<P>
When you're through with all your kernel versions and have added the last portion
to the /etc/lilo.conf file do a
<PRE>
lilo
</PRE>
at the prompt which will make lilo reinstall the boot manager with the changed
values. Now reboot, press [TAB] at the LiLo prompt and choose a kernel to use.
If you followed these steps, you will not have deleted your original entry in
/etc/lilo.conf, so if none of your newly compiled kernels can boot properly, you
can still boot the old kernel.
<P>
Hope it helps,
<P>
H.-G. Esser
<P> <hr> <P>
<!--================================================================-->
<a name="reith"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Secondary IDE interface CDROM detection/automounting tip
</H3>
Date: Wed, 1 Jul 1998 14:09:24 -0400<BR>
From: Jim Reith, <A HREF="mailto:reith@racores.com">reith@racores.com</A>
<blockquote> <font color="navy">
In the Linux Gazette #28 the question was asked:<BR>
Hello.I have the Linux Slackware 2.0.30 Walnut Creek.I installed it on
a Pentium 200 MMX with a 24x CD-ROM. During the installation I had to
write "ramdisk hdd=cdrom" for reading the CD-ROM, but after the
installation Linux doesn't see the CD-ROM. I have an atapi CD-ROM,
and when I tried to compile my kernel another time, I saw that atapi is
the default !!! So I don't understand where is the problem . What can I do?
</font></blockquote>
I ran into this same problem on my home machine. I found that the rc.cdrom
script wasn't checking for my drive properly. It couldn't find /dev/hdc and
I had to change/add in /dev/hd1a in order to get the master on the
secondary IDE interface. Once I put that in the list it worked fine. I
would suspect you should use /dev/hd1b for the slave?
<P>
Jim Reith
reith@racores.com
<P> <hr> <P>
<!--================================================================-->
<a name="hornby"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re ext2 partitions
</H3>
Date: Thu, 2 Jul 1998 21:25:27 +0100<BR>
From: Alex Hornby, <A HREF="mailto:ahornby@plasma.ddns.org">
ahornby@plasma.ddns.org</A>
<P>
A much simpler solution to Albert T. Croft's file finding troubles of
only wanting to look at ext2 drives so as to exclude the vfat
partitions is:
<PRE>
find . -fstype ext2 -name foo
</PRE>
Replacing foo with whatever you are looking for.
<P>
Cheers,
Alex.
<P> <hr> <P>
<!--================================================================-->
<a name="hegbloom"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
pdf resumes: pdflatex
</H3>
Date: 04 Jul 1998 11:42:17 -0700<BR>
From: Karl M. Hegbloom, <A HREF="mailto:karlheg@inetarena.com">
karlheg@inetarena.com</A>
<P>
Dave Cook, the man who wrote the 2cent tip about createing a .pdf
file of a resume, must not have the latest TeTeX installed. Either
that, or he's not explored it much. ;-)
<P>
There is a `pdflatex' now, that creates .pdf files directly. It
works really well. There is also `pdftex', and `pdftexinfo'. You
can typeset texinfo documents with `info2pdf' now.
<P>
Last time I tried it, there was an off by one bug, apparently...
When you click a section heading in the table of contents panel, it
would jump to one section lower than the one you click. The bug has
been reported to the Debian bug tracking system.
<P>
Karl
<P> <hr> <P>
<!--================================================================-->
<a name="mitchell"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: CHAOS
</H3>
Date: Fri, 03 Jul 1998 16:07:14 +0100<BR>
From: Dom Mitchell, <A HREF="mailto:dom@phmit.demon.co.uk">
dom@phmit.demon.co.uk</A>
<P>
A point to note: the IP addresses used for the network should probably
be modified to be in one of the ranges set aside in RFC 1918. In
summary, they are:
<PRE>
10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)
</PRE>
These addresses are guaranteed to not be in use on the Internet, should
you get connected later. See the RFC for the full rational.
<P>
Dom Mitchell
<P> <hr> <P>
<!--================================================================-->
<a name="leon"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: 3com network cards
</H3>
Date: Fri, 03 Jul 1998 20:33:13 +1000<BR>
From: leon, <A HREF="mailto:leon@desiin.com">leon@desiin.com</A>
<P>
Re: complaint about 3com network card being slow
in 2c tips.
<P>
3com 3c590 3c900 and 3c905 cards have a
setting stored into them.
Unlike traditional settings like
IO port , Interrupt, or media type, these cards
just take one setting ...
<P>
They actually have a setting that slows down
the card so that the CPU time isnt chewed up
with a flood of network traffic.
<P>
There is also a maximum throughput setting
and a medium setting.
<P>
leon
<P> <hr> <P>
<!--================================================================-->
<a name="rudder"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
ext2 Partitions
</H3>
Date: Thu, 2 Jul 1998 17:58:32 -0700 (PDT)<BR>
From: David Rudder, <A
HREF="mailto:drig@noses.org">drig@noses.org</A>
<P>
In your 30th issue, Albert Croft wrote in with a script to search only
ext2 partitions. I believe you can do the same thing by using
<PRE>
find / -fstype ext2
</PRE>
David Rudder
<P> <hr> <P>
<!--================================================================-->
<a name="lussier1"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
RE: Searching (somewhat in vain) for sources on shell scripting
</H3>
Date: Mon, 06 Jul 1998 12:37:05 -0400<BR>
From: "Paul L. Lussier", <A HREF="mailto:plussier@BayNetworks.COM">
plussier@BayNetworks.COM</A>
<P>
Well, my 2 sec search turned this up. In addition, www.oreilly.com is the
only site you need for the definitive source on anything related to Unix.
<P>
Unix Shell Programming Revised Ed.<BR>
Kochan, Stephen G.; Wood, Patrick H.<BR>
0-672-48448-X<BR>
Hayden Books<BR>
<P>
Korn Shell Programming Tutorial<BR>
Rosenberg, Barry<BR>
0-201-56324-X<BR>
Addison Wesley<BR>
<P>
AWK Language Programming; A User's Guide for GNU AWK<BR>
Robbins, Arnold D.<BR>
1-882114-26-4<BR>
Free Software Foundation<BR>
<P>
Learning Perl, 2nd Edition<BR>
2nd Edition July 1997<BR>
Randal L. Schwartz & Tom Christiansen Foreword by Larry Wall<BR>
1-56592-284-0<BR>
302 pages, $29.95<BR>
<P>
Programming Perl, 2nd Edition<BR>
Larry Wall, Tom Christiansen & Randal L. Schwartz<BR>
2nd Edition September 1996<BR>
1-56592-149-6<BR>
670 pages, $39.95<BR>
<P>
Advanced Perl Programming<BR>
By Sriram Srinivasan<BR>
1st Edition August 1997<BR>
1-56592-220-4<BR>
434 pages, $34.95<BR>
<P>
Paul
<P> <hr> <P>
<!--================================================================-->
<a name="lussier2"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Re: $.02 tips on ext2 Partitions
</H3>
Date: Mon, 06 Jul 1998 13:23:42 -0400<BR>
From: "Paul L. Lussier", <A HREF="mailto:plussier@BayNetworks.COM">
plussier@BayNetworks.COM</A>
<blockquote> <font color="navy">
In the July 1998 issue of Linux Gazette, Albert T. Croft said:<BR>
We knew the files we were looking for would only be on the ext2 partitions.
We tried writing a batch file, using grep and gawk to get the mount points
for the ext2 partitions and handing them to find. This proved unworkable if
we were looking for patterns, such as h2*. We then tried to write just a find
command, using gawk and grep to get the mount points. This was somewhat
better, but using a print statement in gawk to get the names of the mount
points wouldn't work. Some help came with remembering that gawk has a printf
statement,allow.
Our final product, which we found quite useful and now have in our .bashrc >
files as linuxfind, is the following:<BR>
<tt>
find `mount|grep ext2|gawk '{printf "%s ", $3}'` -name
</tt>
</font></blockquote>
A quick perusal of the mount man page would have revealed the -t flag
obviating the necessity of the grep and gawk in the above command.
Therefore the command could have been shortened to:
<PRE>
find `mount -t ext2` -name
</PRE>
Also, the "locate" command is also available on linux (and has been documented
within the pages of LG and LJ a number of times). From the man page:
<blockquote>
locate searches one or more databases of file names
and displays the file names that contain the pattern.
</blockquote>
In addition, one could use 'which', 'whence' and 'whereis' to assist in the
location of files.
<P>
Paul
<P> <hr> <P>
<!--================================================================-->
<a name="huggie"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
LG30 ext2 Partition tip
</H3>
Date: Fri, 10 Jul 1998 21:31:03 +0100 (BST)<BR>
From: Simon Huggins, <A HREF="mailto:huggie@dial.pipex.com">
huggie@dial.pipex.com</A>
<P>
Thanks for your tip which I saw in the Linux Gazette.
<P>
I think you may want to add the -mount switch to your command line though.
<P>
That way find won't go onto other filesystems except those listed.
<P>
Since on my system, / is ext2 and /hdd/c is vfat, without the mount switch,
find *WOULD* search the vfat partitions too. The mount switch limits it to
those partitions which you list with your grep/gawk combination
<P>
Hope that helps.
<P> <hr> <P>
<!--================================================================-->
<a name="np"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Modem Connecting Speed
</H3>
Date: Wed, 22 Jul 1998 23:06:27 +0000<BR>
From: NP, <A HREF="mailto:np@cableinet.co.uk">np@cableinet.co.uk</A>
<P>
What speed is my modem connecting at ?
<P>
Got a new 56K modem and wondering how it's doing ?
Fed up with seeing "115200" ?
<P>
(This assumes Red Hat 5.0)...
<P>
Edit /etc/sysconfig/network-scripts/chat-ppp1
(or whatever chat file you use)
Insert a line:
<PRE>
'REPORT' 'CONNECT'
</PRE>
Edit /etc/sysconfig/network-scripts/ifup-ppp
<P>
Change this line:
<PRE>
connect "/usr/sbin/chat $chatdbg -f $CHATSCRIPT"
</PRE>
to:
<PRE>
connect "/usr/sbin/chat $chatdbg -f $CHATSCRIPT" 2>/dev/console
</PRE>
- to log to the console,
or:
<PRE>
connect "/usr/sbin/chat $chatdbg -r /var/log/modem-speed -f $CHATSCRIPT"
</PRE>
- to log to a file /var/log/modem-speed
<P>
You'll see entries like:
<PRE>
chat: Jul 22 22:31:06 CONNECT 52000/ARQ/V90/LAPM/V42BIS
</PRE>
(If you're lucky!)
<P>
NP
<P> <hr> <P>
<!--================================================================-->
<a name="carlson"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Short Article on upgrading to SMP
</H3>
Date: Mon, 27 Jul 1998 16:06:08 -0500 (CDT)<BR>
From: Andy Carlson, <A HREF="mailto:andyc@andyc.carenet.org">
andyc@andyc.carenet.org</A>
<P>
My son and I upgraded to an SMP machine this last weekend. We
encountered some problems, and thought it might make an interesting
short article. Use it if you can :).
<P>
About a month ago, I acquired two 4.3GB UW SCSI drives from IBM. At the time, I was running an old Adaptec 1542 SCSI card (with no problems I might add), but it does not support Ultra Wide, and it was an ISA card. In the process of looking at PCI Ultra Wide SCSI Cards (I was going to purchase an Adaptec 2940UW since I had some experience with them), I came across a Micronics W6-LI motherboard, dual Pentium Pro, with builtin Adaptec AIC7880 SCSI UW chip. This is the story of that project.
<P>
My son and I started at 8:00 Saturday morning. We took my existing ATX machine, which housed an Intel VS440 motherboard, 2GB IDE drive, 2GB SCSI drive, and SCSI cdrom apart. We removed everything - Motherboard, Drives, Powersupply, etc. This is because the Micronics board is big, and we wanted as few obstructions as possible while we put the motherboard in. We put the motherboard, two 4.3GB UW drives, CDROM, and powersupply back in. I only needed the data from the IDE drive, so we hooked that up also, but did not install it in the case. We booted into the bios, and set a few things, including setting it to use the MP1.4 spec. We inserted the Slackware 3.4 boot and root disks, and it booted just fine. The hardware portion was a snap.
<P>
We set up the partitions on the two UW drives, and copied the data from the IDE drive to a partition on the frist UW drive. We then started the installation of Linux. We installed the Slackware 3.4, with kernel 2.0.30. This went well. We booted, and this came up. We were anxious to try SMP, so we compiled a kernel with SMP, and this was where the problems started. The machine would hang after running about a minute in SMP mode. We decided to download a newer kernel, so we tried 2.0.34. There is apparently a nasty bug in 2.0.34 on SMP machines. The SCSI chip could not be reset, and was looping trying to do this. We also tried 2.0.35, with no luck. This behaviour happened whether we compiled for single or multiple processor. The next step was to try a development kernel (this was the first time for me). We downloaded 2.1.107, and installed it. We also found that to use this kernel, we need updated binutils, modutils, libc, ld.so, procps, procinfo, and mount. The upshot of this was, that 17 hours after we started, we had a running multiprocessor machine.
<P>
Some things to keep in mind:
<ul>
<li>SMP is turned on by uncommenting the SMP=1 line in the kernel Makefile (this was unnecessary in the developement kernel - it was on by default)
<li>Have as many things downloaded as you can think of. It never occurred to me that it would be handy to have some newer kernels already on the hard drive.
<li>Read the doc for the development kernels carefully - we missed some of the software that needed to be upgraded.
<li>Starting with 2.1.102 development kernel, IP Masquerading was changed. The doc for the new IPCHAINS program is at http://www.adelaide.net.au/~rustcorp/ipfwchains
</ul>
<P> <hr> <P>
<!--================================================================-->
<a name="gushee"></a>
<H3><IMG ALIGN=BOTTOM ALT="" SRC="../gx/lil2cent.gif">
Cross-platform Text Conversions
</H3>
Date: Thu, 30 Jul 1998 14:28:37 +0900<BR>
From: Matt Gushee, <A HREF="mailto:matt@it.osha.sut.ac.jp">
matt@it.osha.sut.ac.jp</A>
<P>
Well, I had some text files that I needed to convert from UNIX to DOS
format. Downloaded the 'unix2dos' program ... and discovered to my
horror that it was an A.OUT BINARY! Thought they'd purged all of those
from the archives ;-) But seriously, I couldn't run the program, so I
came up with a Tcl script to do the job. It can convert text files in
any direction between UNIX, DOS and Mac formats. It has only been
tested w/ Tcl 8.0, but since it's very simple, I imagine it'll work
with earlier versions too. It has a small bug: when converting from
DOS format, it adds one extra newline at the end of the file.
<P>
Why Tcl? Well ...
<ul>
<li>I'm sure it's possible to do these conversions with sed or even
bash; it might even be simple once you know the trick. But after
several hours of reading man pages and experimenting, I couldn't
figure out how.
<li>Didn't feel like dusting off my old Perl book.
<li>Tcl is cool.
<li>It turned out to be really easy to do this in Tcl.
</ul>
To use the script, you should:
<ol>
<li>If necessary, edit the pathname for tclsh.
<li>Save it wherever you want to, with any name (I call it
textconv.tcl), and make it executable.
<li>symlink it to any or all of the following names, depending on which
conversions you want to do, in a directory in $PATH:
<pre>
d2m d2u m2d m2u u2d u2m
</pre>
These names must be exactly as shown in order for the script to work.
<li>To use, type the appropriate command with a source file and
destination file as arguments. For example, to convert a Mac text file
to UNIX format:
<pre>
$ m2u macintosh.txt unix.txt
</PRE>
</ol>
That's it! Hope you find it useful.
<pre>
------ cut below this line ------------------------------
#!/usr/bin/tclsh
# capture the command name that invoked us and the
# source and destination filenames
set convtype $argv0
set infile [lindex $argv 0]
set outfile [lindex $argv 1]
set inchannel [open $infile "r"]
set outchannel [open $outfile "w"]
# according to the command name, set the end-of-line
# and end-of-file characters to the appropriate values
switch -glob -- $convtype {
*2d {
fconfigure $outchannel -translation "crlf" -eofchar "\x1a"
}
*2m {
fconfigure $outchannel -translation cr
}
*2u {
fconfigure $outchannel -translation lf -eofchar ""
}
default {
error "Invalid command name. This script must be \n\
invoked through a symbolic link with\n one of the following \
names:\n d2m, d2u, m2d, m2u, u2d, or u2m."
}
}
while {[gets $inchannel line] &gt;= 0} {
# if converting from DOS, lose the end-of-file character
if {[string match "*d2*" $convtype]} {
set line [string trimright $line "\x1a"]
}
puts $outchannel $line
}
close $inchannel
close $outchannel
#------------ end Tcl script--------------------------------
</pre>
Matt Gushee
Oshamanbe, Hokkaido, Japan
<P> <hr> <P>
<!--================================================================-->
<center>Published in <I>Linux Gazette</I> Issue 31, August 1998</center>
<P> <hr> <P>
<!--================================================================-->
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
CONTENTS ]"></A> <A HREF="../index.html"><IMG SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A> <A HREF="./lg_mail31.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
<A HREF="./lg_bytes31.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H5>This page maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
Copyright &copy; 1998 Specialized Systems Consultants, Inc. </H5>
<P>
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"</H4>
<HR>
<center>
<table cellpadding=7><tr><td>
<IMG SRC="../gx/bytes.gif" border=1 ALT="News Bytes">
</td><td>
<H3>Contents:</H3>
<ul>
<li><a HREF="./lg_bytes31.html#general">News in General</a>
<li><a HREF="./lg_bytes31.html#software">Software Announcements</a>
</ul>
</td></tr></table>
</center>
<a name="general"></a>
<p><hr><p>
<!-- =================================================================== -->
<center><H3><font color="green">News in General</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<center><IMG ALT=" " SRC="./gx/cover53.gif"></center>
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
September <I>Linux Journal</I>
</H3>
<P>
The September issue of <A HREF="http://www.linuxjournal.com/"><I>Linux
Journal</I></A> will be hitting the newsstands August 7.
The focus of this issue is Graphics and Multimedia and we have feature articles
on LibGGI, Open Inventor, XIE, VTK, SGI audio applications and more.
Check out the Table of Contents at
<A HREF="http://www.linuxjournal.com/issue53/index.html">
http://www.linuxjournal.com/issue53/index.html</A>.
To subscribe to <I>Linux Journal</I>, go to <A
HREF="http://www.linuxjournal.com/ljsubsorder.html">
http://www.linuxjournal.com/ljsubsorder.html</A>.
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
StarOffice Promotional Price
</H3>
<P>
Date: Fri, 17 Jul 1998 09:49:44 GMT<BR>
Caldera is pleased to announce that for a limited time, the Office
Suite StarOffice 4.0 for Linux is on sale for $49 (regularly $99).
<P>
This price is for a commercial license to the most popular and full-
featured application suite on Linux. StarOffice 4.0 includes:
<ul>
<li>Word processor
<li>Spreadsheet
<li>Graphic and presentation package
<li>Web browser with HTML editor
<li>Graphical desktop interface
</ul>
In a recent product review, SCO World declared StarOffice "better than MS
Office", and with "No crashing and no waiting, the only reason people are
still using other office packages is they haven't tried StarOffice yet!"
(June/July 1998, page 34)
<P>
For more information:
<A HREF="http://www.caldera.com/">http://www.caldera.com/</A> <BR>
Bryan Standley, <A HREF="mailto:bryanst@caldera.com">
bryanst@caldera.com</A> <BR>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Atlanta Linux Showcase Registration is Open
</H3>
<P>
Date: Fri, 17 Jul 1998 10:30:48 GMT<BR>
Online registration for the 2nd Annual Atlanta Linux Showcase is now
open!
<P>
The registration process has been automated this year, and
pre-registration for the conference sessions will require payment with
a credit-card from our secure web server. Prices for the showcase are
as follows:
<P>
Exhibition Hall Admission: FREE! (A registration is required)<BR>
Conference pre-registration: $60/day ($35/day for students/seniors)<BR>
Conference after October 1: $75/day ($50/day for students/seniors)<BR>
<P>
The 2nd Annual Atlanta Linux Showcase will be held October 23rd and
24th at the Atlanta Apparel Mart and is presented by the Atlanta Linux
Enthusiasts and Linux International. The showcase will feature an
exhibition hall for vendors of Linux related hardware, software, and
services, live demonstrations of Linux related products, and
conference sessions featuring some of the most respected members of
the Linux community.
<P>
For more information:<BR>
<A HREF="http://www.ale.org/showcase/">http://www.ale.org/showcase/</A>
<BR>
<A HREF="mailto:registration@ale.org">registration@ale.org</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
The Antarctic Project - OpenSource WWW/FTP/mailing list hosting
</H3>
<P>
Date: Mon, 20 Jul 1998 10:40:15 GMT<BR>
Have a killer OpenSource application, but no where to host the web pages?
Want to let the world read your Perl tutorial? Need a home for your
Linux Users Group?
<P>
Penguin Computing is proud to announce the Antarctic Project, an internet
server specifically for OpenSource/Linux web pages, mailing lists and ftp
sites. If you have a site that needs a home, we may be able to host it on
the Antarctic Server. This service is completely free.
<P>
The Antarctic Project is limited to sites having to do with Linux or other
OpenSource projects. All sites must be non-commercial. Internet
connectivity is provided by Penguin Computing ISP services. The
Antarctica Server is located in Silicon Valley, and has a 100 Megabit
connection to Mae-West and CIX-PAIX.
<P>
For more information:
<A HREF="mailto:isp@penguincomputing.com">isp@penguincomputing.com</A> <BR>
<A HREF="http://www.penguincomputing.com/antarctic.html">
http://www.penguincomputing.com/antarctic.html</A> <BR>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Microsoft ordered to show Windows95 source with Caldera (fwd)
</H3>
<P>
Date: Wed, 29 Jul 1998 10:42:11 -0700 (PDT)
<P>
<A HREF="http://www.sltrib.com/07291998/utah/45304.htm">
http://www.sltrib.com/07291998/utah/45304.htm</A>
<P>
"Microsoft Corp. must hand over the computer source code for
Windows 95 to Caldera Inc., a small Orem software company suing it for
alleged antitrust violations, a Utah federal judge ruled Tuesday. "
<P>
[...]
<P>
"The judge did agree to warn the Caldera experts and lawyers the code
cannot be used for any purpose other than the litigation. Jardine said
Microsoft will provide the code within five days. "
<P>
Three Point's Linux News --- <A HREF="http://www.threepoint.com/">
http://www.threepoint.com/</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Linux Links
</H3>
<P>
"Choice is Not a Four Letter Word" by Joshua Galun,
<A HREF="http://www.shawmag.com/archive/0105/01.html">
http://www.shawmag.com/archive/0105/01.html</A>
<P>
Oracle and inofrmix now on Linux:
<A
HREF="http://www.infoworld.com/cgi-bin/displayStory.pl?980717.whorlinux.htm">
http://www.infoworld.com/cgi-bin/displayStory.pl?980717.whorlinux.htm</A>
<P>
"Engineers and Linux": <A HREF="./matsumoto.txt">matsumoto.txt</A>
<P>
Linux in the Enterprise? (Wired News Daily):
<A
HREF="http://www.wired.com/news/news/email/explode-infobeat/technology/story/13621.html">
http://www.wired.com/news/news/email/explode-infobeat/technology/story/13621.html</A>
<P>
Pre-installation checklistnini-HOWTO:
<A HREF="http://members.tripod.com/~algolog/lnxchk.htm">
http://members.tripod.com/~algolog/lnxchk.htm</A>
<P>
SmallEiffel is a GPL implementation of Eiffel, a simple yet
full-featured object-oriented programming language:
<A HREF="http://sunsite.unc.edu/pub/Linux/devel/lang/eiffel/">
http://sunsite.unc.edu/pub/Linux/devel/lang/eiffel/</A> <BR>
<A
HREF="http://www.loria.fr/SmallEiffel/">http://www.loria.fr/SmallEiffel
</A>
<P>
Linux questionnaire: <A HREF="http://aachen.heimat.de/alug/fragebogen/">
http://aachen.heimat.de/alug/fragebogen/</A>
<P>
Beowulf questionnaire: <A HREF="http://aachen.heimat.de/alug/beowulf/">
http://aachen.heimat.de/alug/beowulf/</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Digital Library Project
</H3>
<P>
Date: Fri, 17 Jul 1998 10:30:19 GMT<BR>
Announcing a new Linux project: The Digital Image Library Project (DILP).
DLIP is an online image database that would be used to archive images for
searching and viewing. Currently slide libraries used by art historians
consist of tens of thousands of individual 35 mm slides. These slides are
organized, and sometimes there information is index in a computer. But
never all of images and there information. The goal of this project is to
create a database with a web interface that can be used from multiple
locations to allow researchers access a digital index.
<P>
For more information:<BR>
<a
href="http://www.hp.uab.edu/digital-library">http://www.hp.uab.edu/digital-library</a><BR>
Ed Kujawski, <A HREF="mailto:kujawski@cter.eng.uab.edu">
kujawski@cter.eng.uab.edu</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Subject: Linux Hardware Certification Laboratory Announced
</H3>
<P>
July 1, 1998, Dallas, Texas<BR>
<P>
Aegis Data Systems and Best4u Internet Services today announced a joint
collaboration to establish a testing center for Linux hardware
compatibility. The focal point of the center will be a web site at <A
HREF="http://Linux.Best4u.com/">http://Linux.Best4u.com/</A>, which will be online
by August 1, 1998. The web site will be used to publish results of tests and provide a central registration for hardware manufacturers and Linux device driver programmers.
<P>
For more information:<BR>
Mark Stingley, <A HREF="mailto:sarge@AegisData.com">sarge@AegisData.com</A>
<a name="software"></a>
<P> <hr> <P>
<!-- =================================================================== -->
<center><H3><font color="green">Software Announcements</font></H3></center>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Informix SE on Linux
</H3>
<P>
Informix Corporation has announced the release of Informix SE on Linux.
Informix SE is a SQL-based database engine for small to medium-range
applications. It is a solution for businesses that want the power of SQL
without the complex database administration requirements. Linux application
developers are now able to download a free developer<\#146>s kit that includes
Informix SE, ESQL/C for Linux, Informix<\#146>s SQL toolkit, I-Connect (the
runtime version of ESQL/C). Informix SE and ESQL/C in Linux is available
from Caldera and S.u.S.E on the Intel platform.
<P>
For more information:<BR>
Informix Software, Inc.,
<A HREF="http://www.informix.com/">http://www.informix.com/</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
CALDERA ANNOUNCES SUPPORT OF KDE TECHNOLOGY
</H3>
<P>
OREM, UT July 16, 1998 Caldera, Inc. today announced the adoption
and support of KDE technology. Caldera will include the K Desktop
Environment in the OpenLinux 1.2.2 maintenance release due out the end
of September. KDE will be the default desktop in the Caldera OpenLinux
2.0 product, scheduled for release the fourth quarter of this year.
<P>
Caldera is supporting KDE technology by hosting the official KDE U.S.
FTP site at ftp.us.kde.org. Provided by Caldera, KDE 1.0 binary and
source rpms for OpenLinux 1.2 are available for download from the site.
<P>
The K Desktop Environment is an international Internet based volunteer
project which develops the freely available graphical desktop
environment for the UNIX platform.
<P>
For more information:<BR>
Caldera, Inc., <A HREF="http://www.caldera.com/">http://www.caldera.com/</A>
<BR>
KDE, <A HREF="http://www.kde.org/">http://www.kde.org</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Ingres port to Linux
</H3>
<P>
Date: Thu, 9 Jul 1998 12:32:13 -0700<BR>
The NAIUA (North American Ingres Users Association) would like to
announce that Computer Associates has committed to porting the Ingres
II RDBMS to Linux by the end of Q3 1998. It will be included on the
UNIX Software Development Kit which will be available for free on the
CA Web site at <A HREF="http://www.cai.com/">http://www.cai.com/</A>.
(Note: the SDK currently available on CA's web site is for Windows
NT only and does not yet include Ingres for Linux)
<P>
Ingres II for Linux was demoed with Red Hat at CA-World 98 and will be
available for Linux platforms running Red Hat 2.0 pl27 as well as other
compatible versions. It will be free with the Ingres II SDK for UNIX.
Support structures have not been determined by CA at this time.
<P>
For more information:
Bob Griffith, <A HREF="mailto:tech_tools@naiua.org">tech_tools@naiua.org</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Java Released Under Open Source
</H3>
<P>
Date: Tue, 14 Jul 1998 14:34:03 -0700<BR>
Berkeley, CA - Transvirtual Technologies, Inc. announces the release of
Kaffe OpenVM(TM), the first complete independent implementation of Java(TM)
available under the ``Open Source'' initiative. Unlike other third-party
VMs, Kaffe comes with a "just-in-time" compiler and a complete set of
class libraries, including Beans and AWT.
<P>
Kaffe was designed from day one to be highly portable and to provide a
complete Java environment in the smallest possible memory footprint. It has
already been ported to a number of processors, including the x86, StrongARM,
MIPs, 68K and Alpha, and can provide a full graphical environment in as
little as 500K (including VM and class libraries).
<P>
For more information:<BR>
<A HREF="http://www.transvirtual.com/">http://www.transvirtual.com/</A>
<BR>
Tim Wilkinson, <A HREF="mailto:tim@transvirtual.com">
tim@transvirtual.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Game Textures CD1
</H3>
<P>
Date: Tue, 21 Jul 1998 19:52:04 -0500<BR>
AUSTIN, TX- Crack dot Com, developer of the cult-hit Abuse and the
anticipated 3D real-time strategy title Golgotha, has made available
a CD specifically tailored for game artists titled "Game Textures CD1".
<P>
Crack dot Com released "Game Textures CD1" today for sale. CD1 is a
compilation of textures gathered from outdoor environments, buidling
faces, and military and civilian vehicles. These high-resolution textures
were specifically designed by Crack artist Kevin Tyler for use by game
artists who demand high-detail tileable textures for use in 3D games,
and many of the textures appear in Crack's upcoming title Golgotha.
<P>
CD1 is currently available only directly through Crack dot Com.
An order form and index of the textures is available at
<A HREF="http://crack.com/">http://crack.com/</A>.
<P>
For more information:<BR>
<A HREF="mailto:textures@crack.com">textures@crack.com</A> <BR>
Dave Taylor, <A HREF="mailto:ddt@crack.crack.com">ddt@crack.crack.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
JPython-1.0 Provides a Powerful Companion to Java
</H3>
<P>
Date: Thu, 23 Jul 1998 08:59:43 -0700 (PDT)<BR>
Reston, VA -- The Corporation for National Research Initiatives has
announced the release of JPython-1.0. JPython is a freely available
implementation of the high-level, dynamic, object-oriented language
Python -- integrated seamlessly with the Java(TM) platform and
certified as 100% Pure Java(TM).
<P>
JPython's integration with Java draws on the strengths of the Java
platform. JPython code can easily access any existing Java libraries
and JavaBeans. The Java virtual machine allows JPython to statically
compile Python source code to Java bytecodes that will run anywhere
that Java does. Through Java's support for dynamic class loading,
JPython can dynamically compile Python code to allow interactive use
while still achieving the performance of a true compiler.
<P>
Guido van Rossum created the Python language in the early 1990s, and it
has been used successfully in many interesting software projects since
then.
<P>
JPython completely implements the Python language in 100% Pure Java,
and is freely available in both source and binary form. In order to
implement Python's Perl5-compatible regular expressions, JPython
includes the outstanding OROMatcher(TM) regular expression engine
developed by Original Reusable Objects(TM) at <A
HREF="http://www.oroinc.com/">http://www.oroinc.com/</A>
By
agreement, this regular expression engine is only distributed in binary
form. JPython can be found at <A HREF="http://www.python.org/jpython/">
http://www.python.org/jpython/</A>.
<P>
For more information:<BR>
Jim Hugunin, <A HREF="mailto:hugunin@python.org">hugunin@python.org</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
NetStreamer 0.16 available: Streame audio over 28k8, ISDN or LAN
</H3>
<P>
Date: Thu, 9 Jul 1998 10:48:02 GMT<BR>
NetStreamer offers the possibility to stream audio over your 28k8 modem
or ISDN at a sample rate of 8 or 16 kHz. It offers a fancy radio-alike
frontend that allows you to tune in on "radio-programs" that are offered
by the NetStreamer Server, which is a kind of reflector that passes on
audio that may be offered by several transmitters.
<P>
Currently NetStreamer-0.16 is available.
You can download the NetStreamer software (The Server, Receiver and
Transmitter) from:
<P>
<A HREF="http://flits102-126.flits.rug.nl/~rolf/NetStreamer.html">
http://flits102-126.flits.rug.nl/~rolf/NetStreamer.html</A>
<P>
The software is distributed in source and binary form under GPL.
<P>
For more information:<BR>
Rolf Fokkens, <A HREF="mailto:rolf@flits102-126.flits.rug.nl">
rolf@flits102-126.flits.rug.nl</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
CurVeS 0.8.3 -- console UI for CVS
</H3>
<P>
Date: Thu, 9 Jul 1998 10:41:51 GMT<BR>
CurVeS performs two functions. It provides a menu and
command completion interface to CVS so that
inexperienced users can learn the features of CVS
without documentation. This also involves adding some
meta-features that are built from CVS commands which
are used together in some common-use circumstances.
The second function of Curves is to provide visual
presentation of a project directory so that the status
of each file is comprehensible at a glance. CurVeS
uses color, when available, to accent the file
classification marks.
<P>
<A HREF="ftp://ftp.netcom.com/pub/el/elf/curves/">
ftp://ftp.netcom.com/pub/el/elf/curves/</A> in the file
curves-0.8.3.tar.gz and curves-0.8.3.lsm
<P>
Runs on any UN*X. Tested on GNU/Linux and Solaris.
C++ necessary to build from source.
CVS and possibly RCS to use.
<P>
For more information:<BR>
Marc Singer, <A HREF="mailto:elf@netcom.com">elf@netcom.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
urlmon 3.0 -- URL monitoring software
</H3>
<P>
Date: Thu, 9 Jul 1998 10:50:08 GMT<BR>
urlmon version 3.0 is released, now with ability to filter out portions
of HTML data so that things like rotating advertisements don't give false
positives. The filtering capability is quite flexible, and it
user-extensible. The code has been cleaned up, making it much more
elegant and simple. The format of the urlmonrc database file has
changed, and this causes problems addressed in the various
documentation files. Some enhancements have been made to make urlmon
more conducive to scripting.
<P>
urlmon is the URL Monitor. It reports changes to web sites (and ftp
sites, too).
<P>
<A
HREF="http://sunsite.unc.edu/pub/Linux/apps/www/mirroring/urlmon-3.0.tgz">
http://sunsite.unc.edu/pub/Linux/apps/www/mirroring/urlmon-3.0.tgz</A> (soon)
<BR>
<A HREF="http://source.syr.edu/~jdimpson/proj/urlmon-3.0.tgz">
http://source.syr.edu/~jdimpson/proj/urlmon-3.0.tgz</A>
<P>
For more information:<BR>
<A HREF="http://source.syr.edu/~jdimpson/urlmon/">
http://source.syr.edu/~jdimpson/urlmon/</A> <BR>
Jeremy D. Impson, <A HREF="mailto:jdimpson@acm.org">jdimpson@acm.org</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
GramoFile 1.1 - Gramophone records to CDs
</H3>
<P>
Date: Wed, 15 Jul 1998 11:28:30 GMT<BR>
GramoFile is a computer program, running under the Linux operating
system, with the main goal of putting the sound of gramophone
records on CDs. The program is not finished yet (and maybe never),
but it is able to do a lot of useful things already. Like removing
ticks and splitting a long sound file into separate tracks.
This program was originally written by Anne Bezemer and Ton Le as
a study project at the department of Information Technology and
Systems (sub-department of Electrical Engineering) of the
Delft University of Technology, The Netherlands. However,
development has continued after the end of the project, resulting
in the program as it is now (read: much more functional :).
<P>
The new version 1.1 is available at the GramoFile Home Page:<BR>
<A HREF="http://cardit.et.tudelft.nl/~card06/">
http://cardit.et.tudelft.nl/~card06/</A>
<P>
For more information:<BR>
J.A. Bezemer, <A
HREF="mailto:J.A.Bezemer@ITS.TUDelft.NL">J.A.Bezemer@ITS.TUDelft.NL</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
WavPlay/GnuWave Update
</H3>
<P>
Date: Wed, 15 Jul 1998 09:39:55 GMT<BR>
WavPlay-1.0 was the last LINUX sound play/record program that
was released to the net, with 2 levels of patches.
<P>
This a short note to announce that the "home web page" for the
WavPlay software is moving (since I am also moving, and will
change ISP + email addresses etc.)
<P>
To find out what is currently happening with the new WavPlay
software, visit the new "home page" at:
<P>
<A HREF="http://members.tripod.com/~ve3wwg/">
http://members.tripod.com/~ve3wwg/</A>
<P>
For more information: <BR>
Warren Gay VE3WWG, <A HREF="mailto:ve3wwg@yahoo.com">ve3wwg@yahoo.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
aumix 1.9: adjust an audio mixer
</H3>
<P>
Date: Wed, 15 Jul 1998 10:33:10 GMT<BR>
I've uploaded aumix 1.9, a program for adjusting an audio mixer from the
console, a terminal, the command line or scripts. Here's what's new:
<P>
* interactive screen won't show channels that don't exist
* should build without automake or autoconf
* might compile under FreeBSD
* muting function should work for everyone now
* left and right levels shown with "L" and "R" in interactive screen
* fixed small bug with adjustment by mouse
* usage text printed when mixer file can't be opened
<P>
WWW access: <A HREF="http://jpj.net/~trevor/aumix.html">
http://jpj.net/~trevor/aumix.html</A> <BR>
Primary-site: <A
HREF="http://sunsite.unc.edu/pub/Linux/apps/sound/mixers/">
http://sunsite.unc.edu/pub/Linux/apps/sound/mixers/</A>
Files: 40898 aumix-1.9.tar.gz and 638 aumix-1.9.lsm
<P>
For more information:<BR>
Trevor Johnson, <A HREF="mailto:trevor@jpj.net">trevor@jpj.net</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
locus 0.85 - a fulltext database
</H3>
<P>
Date: Mon, 20 Jul 1998 10:22:43 GMT<BR>
locus lets you find words in your texts: newsgroup messages,
Web page mirrors, electronic books - whatever you have. It uses word
patterns (order, locality etc.) to match queries to texts, makes
reasonable choices by default yet does exactly what you want when
you specify it.
<P>
locus homepage: <A
HREF="http://www.cermak.cz/~vbarta/">http://www.cermak.cz/~vbarta/</A>
<P>
For more information:<BR>
Vaclav Barta, <A HREF="mailto:vbar@comp.cz">vbar@comp.cz</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
S-PLUS 5.0 for UNIX & LINUX
</H3>
<P>
Date: Mon, 27 Jul 1998 11:53:59 -0700<BR>
On August 10, MathSoft will be announcing/shipping a new version of
S-PLUS called S-PLUS 5.0 for UNIX and LINUX, a key new addition to MathSoft's statistical data mining family. This addition to the broadest line of statistical data mining software for business and academia comes with several significant upgrades, including:
<ol>
<li>next generation S language, designed specifically for data visualization and exploration from Lucent Technologies,
<li>improved memory resourcing for large, rapid data set analysis,
<li>import & export data from virtually any source (SAS, SPSS, Excel, Lotus, and more),
<li>more statistical modeling and analysis functions,
<li>complete system for calender time series analysis and
<li>support for additional UNIX operating systems, such as HP, IBM and SGI.
</ol>
For more information:<BR>
Lisa Hiland, <A
HREF="mailto:lisah@schwartz-pr.com">lisah@schwartz-pr.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
NetBeans Developer 2.0, Beta 2
</H3>
<P>
Date: Tue, 28 Jul 1998 12:02:08 +0200<BR>
Prague, Czech Republic, July 28, 1998 - NetBeans, Inc. today released the second Beta version of its well-received Integrated Development Environment (IDE) written entirely in the Java(TM) language and based on Sun's Java Foundation Classes framework. NetBeans Developer 2.0 - Beta 2 is available for free download from the company's web site, http://www.netbeans.com. NetBeans IDE is a full-featured visual programming environment that allows flexible development on any platform which supports JDK 1.1.x, including NT, Win95, Linux, OS/2, Solaris, HP-UX, and others.
<P>
NetBeans IDE will ship in two versions - Developer and Enterprise. NetBeans Developer was created for the single developer working on a desktop PC. NetBeans Enterprise was designed as a multi-user, multi-platform product. Users can fully exploit the object-oriented nature of the IDE, design distributed applications based on RMI/CORBA, share virtual filesystems, debug remotely, and access source control systems.
<P>
The second beta version of NetBeans Developer 2.0 is now available and can be downloaded from the NetBeans Website at http://www.netbeans.com. NetBeans Developer 2.0 is scheduled for release in the third quarter of 1998, and will retail for approximately $149. Pricing and availability of NetBeans Enterprise will be announced in September, 1998.
<P>
For more information:<BR>
NetBeans, Inc.
Helena Stolka, <A HREF="mailto:helena.stolka@netbeans.com">
helena.stolka@netbeans.com</A>
<P> <hr> <P>
<!-- =================================================================== -->
<H3><IMG ALT=" " SRC="../gx/bolt.gif">
Caldera Releases NetWare for Linux 1.0
</H3>
<P>
OREM, Utah, July 30 /PRNewswire/ -- Caldera(R), Inc. today announced the
release of NetWare(R) for Linux 1.0. Caldera NetWare
for Linux provides NetWare file, print and directory services ready to run
(native) on a Linux distribution. With NetWare for Linux,
Caldera brings the most-widely used networking operating system to Linux
with full client support and integrated administration utilities.
NetWare for Linux is a component of the Caldera Small Business Server
scheduled for release later this year.
<P>
A NetWare for Linux three-user version is now available for download at no
cost from the Caldera Web site
(http://www.caldera.com/products/netware). Bump packs can be purchased in
user license increments of 1 ($95), 5 ($450), 25 ($1,875),
or 50 ($2,750). A $59 two-CD jewel case version offering a complete
NetWare solution including NetWare for Linux, NetWare utilities
and OpenLinux Lite 1.2 will be available mid-August.
<P>
For more information:<BR>
Caldera, Inc., <A HREF="http://www.caldera.com/">http://www.caldera.com/</A>
<P> <hr> <P>
<!--================================================================-->
<center>Published in <i>Linux Gazette</i> Issue 31, August 1998</center>
<P> <HR> <P>
<!-- =================================================================== -->
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
CONTENTS ]"></A>
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
PAGE ]"></A>
<A HREF="./lg_tips31.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
<A HREF="./lg_answer31.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P><HR><P>
<h5>This page written and maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto: gazette@ssc.com">gazette@ssc.com</A><BR>
Copyright &copy; 1998 Specialized Systems Consultants, Inc. </H5>
<P>
<H4>"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <hr> <P>
<!-- =============================================================== -->
<center>
<H1><A NAME="answer">
<img src="../gx/dennis/qbubble.gif" alt="(?)" border="0" align="middle">
<font color="#B03060">The Answer Guy</font>
<img src="../gx/dennis/bbubble.gif" alt="(!)" border="0" align="middle">
</A></H1> <BR>
<H4>By James T. Dennis,
<a href="mailto:linux-questions-only@ssc.com">linux-questions-only@ssc.com</a><BR>
Starshine Technical Services,
<A HREF="http://www.starshine.org/">http://www.starshine.org/</A> </H4>
</center>
<p><hr><p>
<H3>Contents:</H3>
<p><A HREF="#tag_greeting"><img src="../gx/dennis/bbub.gif" height="28" width="50" alt="(?)" border="0">Greetings From Jim Dennis</a></p>
<DL>
<!-- index_text begins -->
<dt><A HREF="#tag_backup"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>Remote Backups (Yet Again)
--or--
<dd><A HREF="#tag_backup"><STRONG>Remote Backups: GNU 'tar' through 'rsh'</STRONG></A>
<dt><A HREF="#tag_uidgid"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>Assigning UID/GID
--or--
<dd><A HREF="#tag_uidgid"><STRONG>UID/GID Synchronization and Management</STRONG></A>
<dt><A HREF="#tag_connect"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>How to check your modems connect speed?</STRONG></A>
<dt><A HREF="#tag_95slow"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>win95 slowdown
--or--
<dd><A HREF="#tag_95slow"><STRONG>Win '95 Hesitates After Box Has Run Linux?
</STRONG></A>
<dt><A HREF="#tag_badblock"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>Bad Cluster</STRONG></A>
<dt><A HREF="#tag_trident"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>XFree86 on Trident Providia 9685</STRONG></A>
<dt><A HREF="#tag_sound"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>redhat linux 5.0 and reveal sc400 rev a sound card
--or--
<dd><A HREF="#tag_sound"><STRONG>Reveal SC400 Sound Card: OSS/Linux and OSS/Free Supported?</STRONG></A>
<dt><A HREF="#tag_kernel"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>Kernel Overview needed....</STRONG></A>
<dt><A HREF="#tag_solprint"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>Printing Solaris -&gt; Linux --or--
<dd><A HREF="#tag_solprint"><STRONG>Remote lpd Solaris to Linux</STRONG></A>
<dt><A HREF="#tag_idescsi"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>Lilo not working on SCSI when IDE drives installed</STRONG></A>
<dt><A HREF="#tag_distrib"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>Yggdrasil: A Breath of Life for the Root of the Linux Distributions?</STRONG></A>
...and what about OpenLinux Base?
<dt><A HREF="#tag_modem"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>115K Baud from a Modem: In your dreams!</STRONG></A>
<dt><A HREF="#tag_NDS"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></a>Linux NDS --or--
<dd><A HREF="#tag_NDS"><STRONG>Linux as a Netware Directory Srvices Printer Client?</STRONG></A>
<dt><A HREF="#tag_rpm"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>What is an RPM?</STRONG></A>
<dt><A HREF="#tag_guy"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
></A>Stupid question --or--
<dd><A HREF="#tag_guy"><STRONG>AnswerGUY? Who is Heather?</STRONG></A>
<dt><A HREF="#tag_maildns"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>'<tt>sendmail</tt>' requires DNS ... won't use <tt>/etc/hosts</tt></STRONG></A>
<dt><A HREF="#tag_memleak"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0" ></a>Question on Memory Leak --or--
<dd><A HREF="#tag_memleak"><STRONG>Memory Leaks and the OS that Allows Them</STRONG></A>
<dt><A HREF="#tag_multihead"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>X Window with two monitors...</STRONG></A>
<dt><A HREF="#tag_cdr"><img src="../gx/dennis/qbub.gif" height="28" width="50" alt="(?)" border="0"
><STRONG>DAO software for linux? </STRONG></A>
<!-- index_text ends -->
</DL>
<p><hr width="70%" align="center"></p>
<h3><A NAME="tag_greeting"><img src="../gx/dennis/bbub.gif" height="28" width="50" alt="(?)" border="0">Greetings From Jim Dennis, August 1998</a></H3>
<p>By now you've probably heard it a dozen times:</p>
<p align="center"><a href="http://www.oracle.com/">Oracle</a>
Announces Intent to Support Linux
<br><a href="http://www.informix.com/">Informix</a>
Releases Linux version of their SQL Engine</p>
<p>... so, what does that mean.</p>
<p>Well, the good part is that Linux will get more respect from many IT
departments. It will be easier for sysadmins to recommend Linux,
FreeBSD, and similar solutions. There also will be a flurry of other
software companies that will also jump in and port their software to
this new, upstart Unix implementation. The Informix announcement
was re-iterated at just about the same time and Inprise (formerly
Borland) had already made Interbase available awhile back). I expect
that Lotus Notes and Domino aren't too far behind, and I wouldn't be
surprised to hear that SAP (publishers of the R/3 ERP system) were
quietly talking to <a href="http://www.suse.com/">S.u.S.E.</a>
(I seem to have heard that Adabas is one
of the supported db engines for SAP R/3, and that has been available
for Linux for some time).</p>
<p>There's also an interesting teaser at the Caldera website
(<a href="http://www.caldera.com/openlinux/index.html"
>http://www.caldera.com/openlinux/index.html</a>)
regarding an impending
"Netware for Linux" --- which should be an interesting server
platform (Netware's implementation of ACL's, access control lists --
always seemed better then the others I've seen. So, if you really
need them on a fileserver, this might be the way to go).</p>
<p>We've also heard that the server software isn't the only niche that's
discovering Linux. Regulars of Slashdot
(<a href="http://www.slashdot.org/"
<http://www.slashdot.org</a>)
and the Linux Weekly News (<a href="http://www.lwn.net/"
>http://www.lwn.net</a>), and any of the major
Linux newsgroups and mailing lists are also probably aware that
<a href="http://www.corel.com/">Corel</a>
has announced projects to port their whole office suite to Linux
(they've had versions of WordPerfect available for awhile, and one of
their affiliates,
Corel Computing
--- a hardware concern --- is using
a StrongARM port of Linux which they helped develop as the core of
their NC --- network computer). Presumably they will also consider
porting their flagship CorelDraw package, which has been been
available for some other Unix platforms for some time).</p>
<blockquote><code>
<a href=">http://www.corel.com/news/1998/may/linux.htm"
>http://www.corel.com/news/1998/may/linux.htm</a></code></blockquote>
<p>Of course it's already joining the fray with Applixware, StarOffice,
Cliq Suite, Wingz, XessLite, and NeXS, among others.</p>
<p>So, the commercial software is coming. Linux will take yet another
step from hobbyist "do-it-yourself" project towards a widespread
platform for the masses. </p>
<p>Is there a downside to all of this? Naturally there are some
risks. While I welcome the availability of Oracle, Informix and
other major players to the Linux world --- I'd like to remind
everyone that there are alternatives. See Christopher B. Browne's
excellent list of these under his website at:</p>
<blockquote><code><a href="http://www.hex.net/~cbbrowne/"
>http://www.hex.net/~cbbrowne/</a></code></blockquote>
<p>... Some of the commercial SQL engines for Linux that I've heard good
reports about are Solid, JustLogic, and Infoflex. That's not to
mention the free and shareware packages like PostgreSQL, mSQL, MySQL,
and Beagle. </p>
<p>(There are differences in capacity and scalability --- many of these
are currently limited to table locking rather than being able to
lock individual records).</p>
<p>The big risk we now face is that we'll adopt and promote (or
perpetuate) some application suite or tool with a proprietary set
of file formats or interfaces. If Microsoft were to ship MS
Office for Linux tomorrow --- we'd have the same essential problem
that we have today. When someone sends you a Word .DOC, an Excel
.XLS or a PowerPoint .PPT you're expected (by an alarming percentage
of your correspondents) to be able to handle those files. </p>
<p>Everyone, (freeware and commercial third party vendors alike) is
has been playing "catch-up" to this tune for far too long. </p>
<p>This issue of "open document formats" is far more important than
choice of operating systems. What you run on your machine is
none of my business. What you send to me in our business transactions
is. Applix and StarOffice (and the free 'catdoc' and LAOLA filters)
make a truly valiant effort to deal with some of these proprietary
formats. They do so with some success (Word 2.0 seems fine, Word
6.x might be a bit dicey --- Word '97 documents die a horrible death).</p>
<p>If Microsoft moved quickly they might be able to "take over the
Linux desktop" by providing "MS Office '98 for Linux." Personally
I think that would be a shame. I think it would squelch some of the
interesting work being done on LyX and Cicero, and various other
"word processor" and desktop publishing interfaces for Linux.</p>
<p>So, before you rush out to embrace Oracle, and buy one of their
servers --- take a look at some of the other DBMS packages that
are out there. Give them a real try (feasibility and capacity
test) before you commit.</p>
<p>On another note: I'd like to grant the first "Answer Guy
Support Award" of the month to Sam Trenholme. He practically
owns the <a href="news:comp.linux.misc">comp.linux.misc</a>
newsgroups and answers alot more questions
there than I get to in a month here. Thanks, Sam. We all owe, ya!</p>
<p>(I'll try to give these out about once a month --- to someone,
somewhere, who answers lots of questions in some Linux tech support
venue).</p>
<p>One final tidbit: I guess the press isn't getting all mushy on us.
Either someone at Miller-Freeman's _sysadmin_Magazine_ doesn't
like Linux or they were typing too fast when they wrote:</p>
<p>.... Linux is a 2-bit multi-user, multitasking variant
of the UNIX operating system.
(p 68, August, 1998; vol. 7 no. 8)</p>
<p>Can anyone find an extra 30-bits to send them?</p>
<p><A NAME="tag_backup"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Remote Backups: GNU '<tt>tar</TT>' through '<TT>rsh</tt>'</h3>
<p><strong>From Ken Plumbly on 18 Jul 1998
in the</strong>
<a href="news:comp.unix.questions">comp.unix.questions</a>
<strong>newsgroup</strong></p>
<!-- begin body -->
<p><strong>
Hi :
</strong></p>
<p><strong>
I'm sure this one will probably drive you crazy, I read your
<a href="http://www.linuxgazette.com/issue29/tag_betterbak.html">answer
in LG issue 29 for remote backups</a>, and did what the article said,
but I get the response back from the server with the tape drive:
</strong></p>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>Getting things like this working for the first
time have driven me crazy in the past. So, it's
certainly possible for them to do so again.
</blockquote>
<blockquote>
(Some friends might say that "crazy" is a state they've come to expect of me).
</blockquote>
<STRONG><P><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)" width="50" height="28" border="0" lign="bottom"
><code>permission denied.
<br>tar: Cannot open user@host.our.domain:/dev/st0: I/O error
</code></p></strong>
<STRONG><P>
and in the messages file on the tape host is:
</p></strong>
<STRONG><P><code>
pam_rhosts_auth[7300]: denied to root@hostname.our.domain as user:
<br>access not allowed
</code></p></strong>
<STRONG><P>
We are running redHat 4.2 with a connor 4gb tape drive.
</p></strong>
<STRONG><P>
I created a user on the tape server, and put a <tt>.rhosts</tt> file in
the <tt>~user</tt> directory but still no joy.
</p></strong>
<STRONG><P>
Any Ideas?
<br>Ken
</p></strong>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>Can you just run a command like:
</blockquote>
<blockquote><blockquote><code>
rsh -l operator tapehost "id; pwd; ls -l /dev/st0"
</code></blockquote></blockquote>
<blockquote>... and get the desired results?
</blockquote>
<blockquote>In my example I make some assumptions:
</blockquote>
<blockquote>I'd run this command from root on the client
and use the "<tt>-l operator</tt>" switch and argument
to specify that I want <tt>rsh</tt> to access the "<tt>operator</tt>"
account on the tapehost.
</blockquote>
<blockquote>I'd create an account named "<tt>operator</tt>" on the
tapehost machine. It would have no special
privileges except that it would be a member of
the "<tt>tape</tt>" group.
</blockquote>
<blockquote>My copy of <TT>/dev/st0</TT> on the tapehost would be
owned by <tt>root.tape</tt> (the "tape" group) and
would be mode <tt>770</tt> (writable by group).
</blockquote>
<blockquote>This should allow what you want. Until you can
use stock '<tt>rsh</tt>' commands through this context --- your
'<tt>tar</tt>' commands are doomed. (Since
<a href="http://www.gnu.org/">GNU</a> tar actually
calls '<tt>rsh</tt>' for that part of this work).
</blockquote>
<blockquote>For more security you can use '<tt>ssh</TT>' instead of
'<TT>rsh</tt>'
</blockquote>
<blockquote>Next I would not use the command as you described it.
</blockquote>
<blockquote>Tape drives are very sensitive to inconsistent latency (caused
by transport of the data over a network and by any compression
you attempt to do). If the data is not fed to the interface
fast enough <tt>and at an even rate</tt> then the drive will have to
stop, rewind a bit, and restart to get back to the right speed
and tape position to continue writing.
</blockquote>
<blockquote>This is called "shoeshining."
</blockquote>
<blockquote>To prevent shoeshining we run a program called 'buffer' (Lee
McLoughlin) on the "tapehost" (the machine that recieves the
data over the network and writes it to the tape drive).
</blockquote>
<blockquote>So that command would look like:
</blockquote>
<blockquote><blockquote><code>
# tar czSf - .... | rsh -l operator tapehost
"buffer -o <TT>/dev/st0</TT>"
</code></blockquote></blockquote>
<blockquote>Note the <tt>-S</tt> switch that we use to preserve "sparsity"
in files --- that is to detect cases where the data
blocks have not be continously allocated to the file
--- where there are "holes" in the allocation map for
the "empty" parts of the file's data. These sorts of
files are commonly created with dbm libraries and
other "hashing" algorithms that use file seek offsets
as "indexes" into a file --- your <TT>/etc/aliases.pag</TT>
file might be one of them. If you don't understand
"holes" and "sparse" files (which are features of the
Unix filesystem that aren't supported in some others
--- though I know that Netware had them) --- don't
worry about it. Just add the <tt>-S</tt> and it won't hurt
anything even if there are no such files in the
data set that you're working with.
</blockquote>
<blockquote>Note that I use the <tt>c</tt> (create), <tt>z</tt> (compress)
and <tt>f</tt> (file target) flags, and that the file target I specify
is "<tt>-</tt>" (a dash). In Unix this usually indicates that
the "standard output" device should be used. In other
words, "<tt>-</tt>" (dash) is an idiom in a number of Unix/Linux
commands. So, this command will write all of the
tar file into the pipe.
</blockquote>
<blockquote>On the recieving side of the pipe we have a local copy
of '<tt>rsh</tt>' that will try to connect to the "tapehost" as the
user named "operator" and thereon try to run a command
named "buffer" with the <tt>-o</tt> (output) of that pointed
to the tape device.
</blockquote>
<blockquote>How much difference does 'buffer' make? About an order of
magnitude. Yes. You read that right --- on my network
(which was completely idle at the time) I ran experiements
with and without buffer (and with and without compression)
and it would take <em>10 times longer</em> to write the tape
without '<tt>buffer</tt>'. On top of all of that the tapes created
without '<tt>buffer</tt>' are <em>much</em> less reliable. So, failing to
use that can be harmful to your data, and add immense amounts
of wear and tear to the drive (shortening its useful life).
</blockquote>
<blockquote>The '<tt>buffer</tt>' command came with my copies of
<A HREF="http://www.suse.com/">S.u.S.E.</A> and
might come with your copy of RH 5.x (although I don't think
4.2 had it). You can find that at:
</blockquote>
<blockquote><blockquote><code>
<A HREF="http://src.doc.ic.ac.uk/public/public/packages/buffer"
>http://src.doc.ic.ac.uk/public/public/packages/buffer</A>
</code></blockquote></blockquote>
<blockquote>Imperial College, U.K./Great Britain where Lee McLoughlin is a
a system manager, and programmer.
</blockquote>
<blockquote>Lee McLoughlin is also known for an FTP mirror package he
wrote and maintained in PERL a few years ago. He maintains a web page
(<A HREF="http://www.doc.ic.ac.uk/~lmjm/">http://www.doc.ic.ac.uk/~lmjm/</A>)
which doesn't mention this or the '<tt>buffer</tt>' program but highlights
some of his other work.
</blockquote>
<blockquote>With RH 4.2 you might also be suffering from some
confusion with your PAM configuration. You might have to
change that around a bit or upgrade it to a new version.
</blockquote>
<blockquote>If you were trying to access the root or any "root equivalent"
account -- that is anyone with a UID of 0 (zero) you might
have been bumping into the "<tt>/etc/securettys</tt>" problem. This
is one of the other reasons why I configure my systems with
an "<tt>operator</tt>" account and give that account access to the
'<tt>buffer</tt>' program and to the <TT>/dev/st0</TT> node.
</blockquote>
<blockquote>If you did tests with '<tt>rlogin</tt>' that seemed successful
(you were able to '<tt>rlogin</tt>' to the account but not to
run '<tt>rsh</tt>' commands, keep in mind that these are separately
configurable services in PAM.
</blockquote>
<blockquote>Another constraint that is a bit more subtle: you
cannot access '<tt>rsh</TT>' and '<TT>rlogin</tt>' commands through IP
Masquerading. This is because the source IP port for an
<tt>rsh</tt> or <tt>rlogin</tt> connection must be set to specific values
</blockquote>
<blockquote>It's a <em>very</em> weak form of "authentication" on the part of
the protocol, it was intended to ensure that the
process on the client side of the machine was running
with 'root's authority --- that it wasn't a random
user's process just claiming to be anybody. That was
almost reasonably 20 years ago before people had
TCP/IP capable workstation on their desktops --- back when
all of the "computers" were locking in server rooms and
you wanted to create loosely coupled computing clusters
within your domain. It is <em>wholly</em> inadequate and
inappropriate on today's networks. That's why we have
'i<tt>ssh</tt>' and why I spend all night <em>last</em> night playing
with the "Linux Free S/WAN" project (just search Yahoo!
on that phrase).
</blockquote>
<blockquote>(Free S/WAN is a project to implement secure, network level IP
--- so that we can use transparent cryptography to protect
applications layer protocols like <tt>rsh</tt>, and so many others.
It's being developed internationally --- so that it will
have to be <em>imported</em> into the U.S. --- this is because
we're a "free nation" except when it comes to the practical
application of advanced mathematics as a medium of expression).
</blockquote>
<blockquote>In any event --- I really doubt that you're trying to
access your tapehost through a masquerading router --- but
if you are, you can expect that to fail.
</blockquote>
<blockquote>From the error messages you show it looks like you do have the
appropriate <TT>/etc/services</TT> entry and the appropriate entries in
the <TT>/etc/inetd.conf</TT>. It also looks like you are not having
a TCP wrappers problem in this case (since that would have
given a different error message in the tapehost's syslog).
</blockquote>
<!-- end body -->
<p><A NAME="tag_uidgid"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>UID/GID Synchronization and Management</H3><p><strong>From Gordon Haverland on 16 Jul 1998
in the</strong>
<a href="news:comp.unix.questions">comp.unix.questions</a>
<strong>newsgroup</strong></p>
<!-- begin body -->
<strong><p>Hi:
</p></strong>
<strong><p>I inherited sys admin stuff as part of a job. At first, this
wasn't a problem: GIS work on a single Linux machine. I did
development and analysis, others did just analysis. Soon we got
another Linux machine, so development moved to there. To share
printing, Ethernet was installed and LPRng. Then a Solaris 2.5.1
machine was added. So, the 2 linux machines have a handful of
users, the Sun has those plus a few other groups of users, and I
plan to add a Beowulf cluster "real soon now". Is there any
rationale out there for assigning UID and GID in a hetrogeous
cluster/network like this? It sure looks like users common among
machines have to have the same UID and GIDs. The Solaris has NIS
on it, so I guess whatever I do should get administered from
there. Thanks for any light you might shed on this.
</p></strong>
<P><STRONG>
Gordon Haverland
</strong></p>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>I'm not sure what you mean by "rationale" on this context.
</blockquote>
<blockquote>Do you mean:
</blockquote>
<blockquote>"Why should I co-ordinate and synchronize the account
management on the systems throughout my network?"
</blockquote>
<blockquote>... or do you mean:
</blockquote>
<blockquote>"How should I ....."
</blockquote>
<blockquote>... or do you mean something else entirely?
</blockquote>
<blockquote>I'll answer the first two questions (probably in
far more detail than you wanted):
</blockquote>
<blockquote>There are two principle reasons why you <em>want</em>
to co-ordinate the user/UID and group/GID management across your network.
The first is relatively obvious --- it has to do with user
and administrative convenience.
</blockquote>
<blockquote>If each of your users are expected to have relatively uniform
access to the systems throughout the network, then they'll
expect the same username and password to work on each system
that they are supposed to use. If they change their password
they will expect that change to be global.
</blockquote>
<blockquote>When you --- as the admin --- add, remove, disable, or change
an account, you want to do it once, in one place. You don't
want to have to manually copy those changes to every system.
</blockquote>
<blockquote>Of course these reasons don't require that the UID/GID's
match. As you probably know names and group names in Unix and
Linux are mapped into numeric forms (UID's and GID's respectively).
All file ownership (inodes) and processes use these numerics for
all access and identity determination throughout the kernel and
drivers. These numeric values are reverse mapped back to their
corresponding principle symbolic representations (the names) by
the utilities that display or process that information. Thus
the 'ls -l' command is doing a lookup on each directory entry to
find the name that corresponds to the the owner and group ID's.
</blockquote>
<blockquote>Most of the commands you use actually do this through library
calls. In deed most of these commands are "dynamically linked"
(use shared libraries) which perform the calls through common
external files (the <tt>libc</tt>). As we'll see this is very important
as we look at the implications of consolidating the account
mapping information into a networked model (such as NIS).
</blockquote>
<blockquote>As I said, you could maintain a network of systems which
co-ordinated username/password data, and group membership
lists without synchronizing the UID's and GID's across the
systems. Most network protocols and utilities (the r* gang:
rsh, rlogin, rcp, and things like telnet, ftp, etc) exchange
this data in "text" (symbolic) form.
</blockquote>
<blockquote>However, we then come to NFS!
</blockquote>
<blockquote>The NFS protocols use numeric forms to represent ownership.
Therefore an NFS server provides access based on an implicit
trust that the NFS client is providing a compatible and
legimate mapping of the cient's UID/GID to the server's.
</blockquote>
<blockquote>It is possible in Linux' NFS implementation to run a ugidd
(a UID/GID mapping daemon). Thus you could create maps for
every NFS server to map each client<TT>s UID</TT>s to this server's
UID's, etc. Yes, that idea is as ugly as it sounds!
</blockquote>
<blockquote>I won't go into the security implications of NFS' mechanism
here. I'll just point out that my pet expansion of NFS is
"no flippin' security." I'm told that it is possible to enable
a "secure RPC" portmapper which implements host-to-host
authentication. I'd like to know more about that.
</blockquote>
<blockquote>However, it is still the case that any users who can get root
access to any trusted NFS client can impersonate any non-root
user so far as the NFS servers in that domain are concerned.
Since "sufficient" physical access virtually guarantees that
workstation users <em>can</em> get root access (possibly by resorting
to a screwdriver and CMOS battery jumper) I come to the
conclusion that NFS hopelessly insecure in today's common
network configurations (which workstations and PC's at
everyone's desks).
</blockquote>
<blockquote>(In defense of NFS I should point out that its security
model, and the one's we see in the r* gang were not
unreasonable when most Unix installations had a small
cluster of multi-user systems locked in a server room ---
and all user access was via terminals and X-terminals.
This suggests that there are some situations where they
are still justified).
</blockquote>
<blockquote>Despite these limitations and implications, NFS is the
most commonly deployed networked filesystem between Unix
and Linux systems. I have high hopes for CODA, but
even the most optimistic dreams reveal that it will take
a long time to be widely adopted.
</blockquote>
<blockquote>So, it is in your best interests to synchronize your UID/GID
to user/group name mappings throughout your enterprise. It is
also recommended that you adopt a policy that UID's are not
re-used. When a user leaves your organization you "retire"
their UID (disabling their access by *'ing out their passwd,
removing them from the groups maps, setting their "shell" to
some <TT>/bin/denied</TT> binary and their "home" directory to a
secured "graveyard" --- I use <TT>/home/.graveyard</TT> on my systems).
The reason for this may not be obvious. However, if you are
maintaining archival backups for several years (or indefinitely)
you'll want to avoid any ambiguities and confusion that might
result from restoring one (long gone) user's files and finding
them owned by one of your new users.
</blockquote>
<blockquote>(This "UID retirement" policy is obviously not feasible for
larger ISP's and usually difficult for Universities and other
high turnover environments. You can still make it a policy to
cycle all the way around the UID/GID space before re-use).
</blockquote>
<blockquote>That should answer the questions about "why" we want to
co-ordinate account information (user/password, and
group/membership data) and why many (most) of us want to
synchronize the UID's and GID's that the accounts map to.
</blockquote>
<blockquote>Now, we think about "how" to do so.
</blockquote>
<blockquote>One common method is to use '<tt>rdist</tt>' to distribute a set of
files (usually <TT>/etc/passwd</TT>, <TT>/etc/group</TT>, and
<TT>/etc/hosts</TT>) to every machine in a "domain" (this being the
"administrative" sense of the term, which might or might not match a DNS
domain or subdomain). For this to work we have to declare one system
to be the "master" and we have to ensure that all account
changes occur on that system.
</blockquote>
<blockquote>This can be done by manually training everyone to always issue
their '<tt>passwd</TT>' '<TT>chfn</tt>' '<tt>chsh</tt>' and similar
commands from a shell on that system, or you can create wrappers for each
of the affected commands (replacing the client copies of these
commands with a script that doesn't something like: '<tt>ssh
$master "$0"</tt>' for example).
</blockquote>
<blockquote>The nice things about this approach are:
</blockquote>
<blockquote>It works for just about any Unix and any Linux
(regardless of the libraries and programs running
on the client).
</blockquote>
<blockquote>The new risks and protocols are explicitly put
in place by the sysadmin --- we don't introduce
new protocols that might affect our security.
</blockquote>
<blockquote>There is no additional network latency and
overhead for most programs running most of
the time. You are never waiting for '<tt>ls</tt>' to
resolve user and group names over the network!
</blockquote>
<blockquote>The concerns about this method are:
</blockquote>
<blockquote>You have to ensure the integrity and security of
the master --- I'd suggest requiring '<TT>ssh</tt>' access
to it and using PAM and possibly a chroot jail to
limit the access of most users to just the
appropriate commands.
</blockquote>
<blockquote>All clients must "trust" the master -- they
must allow that system to "push" new <em>root owned</em>
system configuration files to them. I'd use
'<tt>rdist</TT>' or '<TT>rsync</tt>' over '<tt>ssh</tt>' for this as well.
</blockquote>
<blockquote>You may have unacceptable propagation delays
(a user's new password may take hours to get
propagated to all systems).
</blockquote>
<blockquote>It doesn't "scale" well and it doesn't conform
to any standards. You (as the sysadmin) will
have to do your own scripting to deploy it. Any
bugs in your scripts are quite likely to take
down the entire administrative domain.
</blockquote>
<blockquote>Then there's NIS.
</blockquote>
<blockquote>NIS is a protocol and a set of utilities and libraries which
basically implement exactly the features we've just described.
I've deliberately used several NIS terms in my preceding discussion.
</blockquote>
<blockquote>NIS distributes various sorts of "maps" (different "maps" for
passwords, groups, hosts, etc). The primary NIS server for a
domain is called the "master" --- and secondary <em>servers</em> are
called "slaves." Nodes (hosts, workstations, etc) that request
data from these "maps" are called "clients."
</blockquote>
<blockquote>One of the big features of glibc (the
<a href="http://www.gnu.org/">GNU</a> libc version 2.x
which is being integrated into Linux distributions as <tt>libc.6.x</tt>)
is support for NIS. It used to be the case that supporting
NIS on a Linux <em>client</em> required a special version of the
shared libraries (a variant compilation of libc.5).
</blockquote>
<blockquote>In <A HREF="http://www.redhat.com/">Red Hat</A> 5.x and
<A HREF="http://www.debian.org/">Debian</A> 2.x this will not be
necessary. We expect that most other Linux distributions will follow suit
in their next major releases. (This transition is similar to
the a.out to ELF transition we faced a couple of years ago,
and much less of a hassle than the infamous "<tt>procps</tt>" fiasco
that we went through between the 1.x and 2.x kernels. Notably
it is possible to have <tt>libc.5</tt> and <tt>glibc</tt> concurrently
installed on a system --- the major issue is which way your base system
binaries and utilities are linked).
</blockquote>
<blockquote>The advantages of NIS:
</blockquote>
<blockquote>It's a standard. Most modern forms of Unix support it.
</blockquote>
<blockquote>It's scaleable and robust. It automatically
deals with capacity and availability issues
by having two tiers of servers (master and slave).
</blockquote>
<blockquote>It's already been written. You won't be
re-inventing this wheel. (At the same time
it is more generalized --- so this wheel may
have more spokes, lug nuts, and axle trimmings
than you needed or wanted).
</blockquote>
<blockquote>The disadvantages of NIS:
</blockquote>
<blockquote>NIS is designed to do more than you might
want. It will default to providing host
mapping services (which might conflict with
your DNS scheme and might give you a bit of
extra grief while configuring '<tt>sendmail</tt>'
--- at least the Solaris default version of
'<tt>sendmail</tt>'). These are relatively easy
issues to resolve --- once you understand
the underlying model. However they are
cause for sysadmin confusion and frustration
in the early stages.
</blockquote>
<blockquote>It's not terribly secure. There is a NIS+ which
uses cryptographic means to tighten up some of
that. However, NIS+ doesn't seem to be available
for Linux yet. That is probably largely the result
of the U.S. federal government's unpopular and idiotic
attitudes towards cryptography --- which has a generally
chilling effect on the development and deployment of
robust security. The fact that U.S. policy also recognizes
patents on software and algorithms (particularly the
very broad RSA held patents on public key cryptography)
also severely constrains our programmers (they are liable
if they <em>re-invent</em> any protected algorithm --- no matter how
"obvious" it seemed to them nor how "independently" their
derivation). Regardless of these political issues, I still
have technical concerns about NIS security.
</blockquote>
<blockquote>Hybrid:
</blockquote>
<blockquote>You can use NIS within your domain, and you can distribute
your NIS maps out to systems that are on the periphery (for
example out to your web servers and bastion/proxy systems
out on the "firewall" or "perimeter network segment." This
can be combined with some custom filtering (to disable
shell access by most users to these machines --- helping to
ensure that the UID/GID mappings are used solely for marking
file ownership --- for example).
</blockquote>
<blockquote>NIS maps are is the same format as the files to which they
correspond. Thus the NIS passwd map is a regular looking
passwd file, and the NIS group map is in the conventional
format you'd expect in your <TT>/etc/group</TT> file.
</blockquote>
<blockquote>You might have to fuss with these files a bit to
"shadow" them (or "star out" the passwords on accounts
that shouldn't be give remote access to a given host).
</blockquote>
<blockquote>Ideally I'd like to see a hybrid of NIS and Kerberos.
We'd see NIS used to provide the names/UID's --- and Kerberos
used for the authentication. However, I haven't yet heard
of any movement to do this. I have heard rumblings of
LDAP used in a way that might overlap with NIS quite a bit
(and I'd hope that there'd be an LDAP to NIS gateway so we
wouldn't have to transition all those libraries <em>again</em>).
</blockquote>
<blockquote>Back to your case.
</blockquote>
<blockquote>NIS sounds like a natural choice. However, you don't have to
pick the Solaris system for the administration. You can use
any of the Linux systems or any Solaris system (among others)
as the NIS master. Since your Solaris system is probably
installed on more expensive SPARC hardware, and it probably
was purchased to run some services or applications that aren't
readily available on your Linux systems --- it would probably
be wiser to put up an extra Linux box as a dedicated NIS
master and administrative console.
</blockquote>
<blockquote>It doesn't sound like internal security is even on your
roadmap. That's fine and fairly common. All the members
of your team probably have <em>sufficient physical access</em> to
all of the systems in your group that significant efforts at
intranet (internal) security in software would probably be pointless.
</blockquote>
<blockquote>I'd still recommend that you use "private net" addressing
(RFC1918 --- <tt>10.*.*.*</tt>, <tt>192.168.*.*</tt> and the range of
class B's from <tt>172.16.*.*</tt> through <tt>172.31.*.*</tt>) --- and
make your systems go through a masquerading router (Linux or any of several
others) or a set of proxies or some combination of these.
</blockquote>
<blockquote>In fact I highly recommend that you fire up a DNS caching
server on at least one system --- and point all of your
clients at that, and that you install a caching web proxy
(<A HREF="http://www.apache.org/">Apache</A> can be configured for this,
or you can use Squid --- which is my personal favorite). These caches
can save a significant amount of bandwidth for even a small workgroup and
they only cost a little bit of installation and configuration
time and a bit of disk space and memory.
</blockquote>
<blockquote>(The default <A HREF="http://www.redhat.com/">Red Hat</A>
configuration for their '<tt>named</tt>' rc file
is to just run in caching mode. So that's truly a no brainer
--- just distribute a new <tt>resolv.conf</tt> file to all the clients
so that it refers *first* to the host that runs the cache. My
squid configuration on a <A HREF="http://www.suse.com/">S.u.S.E.</A>
machine and has run, unmodified, for months. I vaguely remember having
to edit a configuration file. It must not have been <em>too</em> bad.
Naturally you have to get users to point their web browsers at
the proxy --- that might be a hassle. With '<tt>lynx</tt>' I just edit
the global <tt>lynx.cfg</tt> file and send it to each host. Similar
features are available in Netscape Navigator --- but you have
to touch everyone's configuration at least once).
</blockquote>
<blockquote>Once you have your workgroup/LAN isolated on its own group of
addresses and working through proxies --- it is relatively
easy to configure your router to filter most sorts of traffic
that should not be trusted across domains and, especially, to
prevent "address spoofing" (<em>incoming</em> packets that claim to
be <em>from</em> some point inside of your domain).
</blockquote>
<blockquote>You can certainly spend <em>all</em> of your time learning about
and implementing security. However, the cost of that effort
may exceed your management's valuation of the resources that
are accessible on your LAN. Obviously they'll have to do their
own risk and cost/benefit analyses on those issues.
</blockquote>
<blockquote>I pay an undue amount of attention to systems security because
it is my hobby. As a consultant it turns out to be useful since
I can explain these concerns and concepts to my customers, and
refer to them to specialists when they want "real" security.
</blockquote>
<blockquote>To learn more details about how to setup and use NIS under
Linux read the &quot;The Linux NIS(YP)/NYS/NIS+ HOWTO&quot; at:
(<A HREF="http://www.ssc.com/linux/LDP/HOWTO/NIS-HOWTO.html"
>http://www.ssc.com/linux/LDP/HOWTO/NIS-HOWTO.html</A>). This
was just updated a couple of weeks ago.
</blockquote>
<blockquote>I guess there is support for NIS+ <em>clients</em> in glibc
--- so that's new to me. I've copied Thorsten Kukuk
(the author of this HOWTO) so he can correct any errors
I've made or otherwise comment.
</blockquote>
<blockquote>By the way: What is GIS? I've heard references to it
--- and I gather that it has to do with geography and
informations systems. Would you consider writing an
overview of how Linux is being used in GIS related
work for <a href="http://www.ssc.com/lj/">LJ</a> or
<a HREF="http://www.linuxgazette.com/">LG</a>?
</blockquote>
<!-- end body -->
<p><A NAME="tag_connect"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Modem Connect Speed</H3><p><strong>From James R. Ebright on 15 Jul 1998
in the</strong>
<a href="news:comp.unix.questions">comp.unix.questions</a>
<strong>newsgroup</strong></p>
<!-- begin body -->
<p><strong>
Dear Answer Guy,
</strong></p>
<p><strong>
I have a question that I can't seem to find any refernce to in any
of the regular documentation, (though I must admit, I only searched
for about an hour this time, and sporadically over the last month or so).
</strong></p>
<p><strong>
How can you tell the connection speed that a modem auto-negotiates
when dialing an ISP? My system log (<tt>/var/log/messages</tt> in RH5.1) does
tell me the line speed I have set in the chat script, but I would
like to know the connect speed as well (56K, 33.6, etc). I know this
info must be available somewhere/somehow.
</strong></p>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>I've gotten questions like this before and I never
did find an answer. Indeed I actually beg the question
itself.
</blockquote>
<blockquote>My problem with the question amounts to a couple of
rhetorical questions in return:
</blockquote>
<blockquote>Who cares?
</blockquote>
<blockquote>What are you going to do based on this metric?
</blockquote>
<blockquote>At first these questions may seem hostile. But
they aren't intended in that sense. There are both
practical and philosophical aspects to this.
</blockquote>
<blockquote>Are you going to return the modem to your vendor
or retailer if it doesn't "live up to" some speed?
</blockquote>
<blockquote>Are you going to switch to a different ISP if
their connect speed is better than your current average?
</blockquote>
<blockquote>Are you going to force the phone company to
pull new wire to your home, resplice their cables, or replace equipment
in their CO based on these results?
</blockquote>
<blockquote>You used the term "info" --- the "info must be
available somewhere" --- but what is the real informational
content of this number. Let's say you connect at 49000 bps
--- your effective throughput is likely to vary throughout
the duration of each call. The factors involved may be
quite different but they all have one thing in common ---
they are probably not anything you can effectively do anything about.
</blockquote>
<blockquote>Certainly you can do metrics on latency and throughput
by running scripts between two hosts (after synchronizing
their clocks). That could give you highly accurate <em>data</em>.
</blockquote>
<blockquote>I personally still question the <em>informational</em> content of
that data.
</blockquote>
<blockquote>So, I'm going to sound like a curmudgeon and say:
</blockquote>
<blockquote>I don't know how to get that data, and
I don't care to spend more time trying to find out.
</blockquote>
<blockquote>... However, I'll forward this for publication in
this months LG --- and I'll forward any responses
back to you. (To respect your privacy we normally
don't publish your e-mail addresses in LG. That does
result in a bit of extra work on my part --- but I don't mind).
</blockquote>
<blockquote>On an academic level I'm curious what answers and
suggestions we'll see. I'll be curious where this
number comes from and what it "means."
</blockquote>
<blockquote>On a practical level I try to configure my systems
and my work habits so I just don't have to care if
my modem is working at 28.8, 33.6, 14.4 or whatever.
</blockquote>
<blockquote>If you search the Answer Guy archives on the terms
"modem" or "benchmark and you'll probably also find
some other choice comments I've made about the marketing
claims of modem vendors (and CPU vendors for that matter).
</blockquote>
<blockquote>I have similar opinions about most claims of "speed"
as a feature.
</blockquote>
<STRONG><P><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)" width="50" height="28" border="0" lign="bottom"
>PS, I am using the standard RH5.1 "if-up" scripts, but have used my
own "ppp-on" style script in the past. I currently wrap my "if-up"
script with a ppp-on script that looks like:
</p></strong>
<pre>
>-------------------------------------------------
#!/bin/bash
cd /etc/sysconfig/network-scripts
./ifup-ppp ifcfg-ppp0 &amp;
-------------------------------------------------
</pre>
<STRONG><P>
and "ppp-off" looks like:
</p></strong>
<pre>
>-------------------------------------------------
#!/bin/bash
cd /etc/sysconfig/network-scripts
./ifdown-ppp ifcfg-ppp0 &amp;
-------------------------------------------------
</pre>
<STRONG><P>
I can offer more information if needed. Thank you for any light you
can shed on this issue.
</p></strong>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>I don't think these have anything to do with how
fast or slow your modems are. If you want to
reduce the amount of traffic that flows over these
lines while running PPP --- run a caching <tt>named</tt< (and
point the first entry in your <TT>/etc/resolv.conf</TT> to
the localhost address: <tt>127.0.0.1</tt>) and a copy of Squid
or <A HREF="http://www.apache.org/">Apache</A>'s cache proxy
and configure your browsers to use this WWW cache.
</blockquote>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)" width="50" height="28" border="0" lign="bottom"
>James R. Ebright
<br>IT Professional, <a href="http://www.coastalnet.com/">CoastalNet</a>
</strong></p>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>Sorry if I sound grumpy on this issue.
</blockquote>
<BLOCKQUOTE>
Your frustration with slow modems seems palpable
--- and the great backward regulatory morass that
is our telecommunications infrastructure doesn't
leave you (or me) many alternatives.
</blockquote>
<blockquote>(Cable modems are currently a pipe dream in my area).
</blockquote>
<!-- end body -->
<p><A NAME="tag_95slow"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Win '95 Hesitates After Box Has Run Linux?</H3>
<H4 align="center"></H4>
<p><strong>From Frank & Mary Veldkamp on 15 Jul 1998
in the</strong>
<a href="news:comp.unix.questions">comp.unix.questions</a>
<strong>newsgroup</strong></p>
<!-- begin body -->
<p><strong>
Hi Jim;
</strong></p>
<p><strong>
To let you in on what I have done:-
</strong></p>
<p><strong>
I have an AMD 586/133 processor, 24M RAM, 2 x HDD (2.5G and 635M)
run Linux off the 635M and boot in with floppy using LILO.
</strong></p>
<p><strong>
Win95 is resident on the main 2.5G which is formatted as C: and D:,
</strong></p>
<p><strong>
The problem occurrs any time that Win is run from a restart, be it a
warm boot (Ctrl-Alt-Del), full power off, or reset button.
</strong></p>
<p><strong>
Its as if its trying to ascertain what is on the second drive and
can't. It finally allocates it as a 2nd CDRom drive. You can't
access it or get any more info from it.
</strong></p>
<p><strong>
I've tried re-installing the OP/SYS and have tried it with Win95 on
its own but the same thing happens.
</strong></p>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>It sounds like this problem occurs with Win '95 regardless
of whether Linux has been installed or not.
</blockquote>
<BLOCKQUOTE>
What sort of controller are you using? Is it IDE? SCSI?
If it is IDE you'll want to double-check the settings
with regards to "master/slave/standalone." If you have
two IDE channels (pretty common these days) you might
try putting the second drive on its own cable, on the
other controller channel.
</blockquote>
<BLOCKQUOTE>
If this is a SCSI controller, double and triple check the
ID's, any pin settings and options on the drives and
the termination settings/resistor packs on the drives and
on the controller, and any settings on the controller or
accessible via its "setup program" (firmware or software).
</blockquote>
<BLOCKQUOTE>
In either case, try replacing the cables.
</blockquote>
<BLOCKQUOTE>
The 635Mb drive is pretty small these days. You might
consider setting it aside and springing for an extra
2 or 4 Gb drive.
</blockquote>
<STRONG><P><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)" width="50" height="28" border="0" lign="bottom"
>If you can't help maybe you know of some one who can. I'm in no
hurry and can manage other things without the solution, but any help
you can give would be greatfully accepted.
</p></strong>
<strong><p>Kind regards
Frank.
</p></strong>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>At 01:43 11/07/98 -0700, you wrote:
</blockquote>
<STRONG><P><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)" width="50" height="28" border="0" lign="bottom"
><font color="navy"><em>
Hi,
</em></font></p></strong>
<strong><p><font color="navy"><em>
I'm sorry if you've had this one before and I don't want to waste
your time but I've put Linux on for the first time and have no
previous experience. I really put it on because I would like to
learn something new. Anyway the problem is that when I boot to Win95
in which I have most of my programs, the first time that I try to do
anything that requires reading of the hard-drives the computer stops
responding for a considerable period. Some times up to 10 mins. Is
this normal or can I bypass this problem with some sort of
configuration. It's not too big a problem because it only happens
once during any session but it is a pain in the @$#%^$. Your help
would be greatly appreciated.
</em></font></p></strong>
<strong><p><font color="navy"><em>
Many thanks
<br>Frank.
</em></font></p></strong>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>
If I understand you correctly you're saying that,
since you installed Linux when you reboot into Win '95
your first subsequent access of the hard drive causes
a hestitation of several minutes.
</blockquote>
<BLOCKQUOTE>
Is that a proper understanding?
</blockquote>
<BLOCKQUOTE>
If so I'd just simply be baffled.
</blockquote>
<BLOCKQUOTE>
Does that only happen after a "vulcan PC pinch"
warm boot (Ctrl-Alt-Del), or after a hard boot (reset
button on the case), or does it happen after a
full power cycle (wait about 15 to 30 seconds between
power off and powering back up)?
</blockquote>
<BLOCKQUOTE>
Does this happen only once? Or does it happen periodically?
</blockquote>
<BLOCKQUOTE>
I've seen some devices (ether cards mostly) that could
"stay confused" through a hard boot. However, I can't
imagine anything that Linux would do to your hardware
that would cause this behaviour.
</blockquote>
<BLOCKQUOTE>
In cases like this (where something inexplicable is
going on and the secondary OS <EM>seems</EM> to be involved)
I suggest removing the new software (Linux) and testing
again. If that doesn't work try backing up all of your
data and doing an IPL (initial program load --- i.e. a
complete re-installation of your system software).
</blockquote>
<BLOCKQUOTE>
Please note that Linux can run off of removable drives
and can be loaded from a DOS prompt (Win '95 "Safe mode").
So, once you have your system behaving properly again you
can explore alternative ways to access Linux that are even
less likely to affect the rest of your system.
</blockquote>
<BLOCKQUOTE>
If you're really motivated, and you can isolate it to a
particular module, driver, or application <EM>under</EM> Linux that
is causing the problem, it will be very helpful. If you're
<EM>really</EM> motivated, and more of a programmer than I, you
might even track down and fix the bug --- since that's what
the sources are for. At least you might try building a
couple of different kernels (try stripping out everything
except the disk/controller driver that applies to the
controller on which you've installed your root filesystem --
leave out the the sound, and ether drivers, and boot up
into single-user mode --- don't start X or xdm and just
reboot back If the problem never occurs in this configuration
then you can keep adding things back until the problem recurs
--- or you've got Linux running the way you want).
</blockquote>
<!-- end body -->
<p><A NAME="tag_badblock"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)"width="50" height="28"
align="left" border="0">Bad Cluster </H3>
<p><strong>From Ron Bautista on 13 Jul 1998
<br>in the</strong>
<a href="news:comp.unix.questions">comp.unix.questions</a>
<strong>newsgroup</strong></p>
<!-- begin body -->
<p><strong>Hi..
</strong></p>
<p><strong>I have a
<a href="http://www.toshiba.com/">toshiba</a> laptop...1.2gig. has like 10
bad cluster. Do I have to say goodbye to this one, and buy a new one If
not--- what software or downloadable app can I get to get it fix.... I would
very much appreciate your help.
</strong></p>
<p><strong>
Thank you,
Ron Bautista
</strong></p>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>I thought I answered this awhile ago. But I don't find it
in my archives and I do find it in my inbox. So,
</blockquote>
<BLOCKQUOTE>
You usually can't "fix" bad clusters --- though you can
instruct your OS to "map them out" (refuse to use them).
There used to be a software package for MS-DOS called
Spinrite (Gibson Software?) which would do surface analysis
of many types of drives and might be able to restore
bad clusters to use (although it was never recommended).
</blockquote>
<BLOCKQUOTE>
There used to also be procedures for many ST-506 (MFM and RLL)
hard drives and some SCSI drives which would allow the
user to do a "low level format" of the drive. However with
modern IDE and SCSI drives this option is generally unavailable
--- some drives will let you sent the low-level format command
to them, and their electronics will blithely ignore your command
and send a "success" signal back (I've even heard that some will
use a suitable delay factor).
</blockquote>
<BLOCKQUOTE>
The point is that modern drives are much more sophisticated than
the old ST-506 drives. Their electronics usually already
manage a number of extra blocks per track (cylinder) and
automatically map the extra blocks into use. Thus you usually
don't see any bad blocks on a modern drive until you have enough
errors on some of the tracks that the are no extras for them.
</blockquote>
<BLOCKQUOTE>
Thus, when you see "10" back blocks on a drive, it might be that
there are many more that have been automatically mapped out by
the drives electronics (and are thus not visible to the OS, even
at the device driver layer).
</blockquote>
<BLOCKQUOTE>
For using such a drive with Linux you simply use the
-c option to '<tt>mke2fs</tt>' when you make (format) new filesystems.
This will call the '<tt>badblocks</tt>' program and make the
appropriate adjustments to the filesystems tables. I think
these adjustments amount to permanently marking those blocks
as unavailable by adding them to a special 'inode' that's
maintained by the fs --- they'll never appear in the free list.
</blockquote>
<BLOCKQUOTE>
To add more/new bad blocks you can use the <tt>-c</tt> option to
<tt>e2fsck</tt>. You can also run '<tt>badblocks</tt>' by hand, save it's
output/report to a file, and use that as input to e2fsk's
<tt>-l</tt> switch.
</blockquote>
<BLOCKQUOTE>
That's about all there is to say about bad blocks under Linux.
</blockquote>
<blockquote>Obviously you want to maintain good backup procedures
--- and knowing that you have bad blocks on this drive
may encourage you to be extra careful about your data
on that system.
</blockquote>
<!-- end body -->
<p><A NAME="tag_trident"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>XFree86 on Trident Providia 9685</H3><p><strong>From Simon Zlachevsky on 13 Jul 1998
in the</strong>
<a href="news:comp.unix.questions">comp.unix.questions</a>
<strong>newsgroup</strong></p>
<!-- begin body -->
<p><strong>Hi, kind of linux guru,
I was tring to configure my X window manager for
about two weeks using XFree86, but i didn't get results....
I have a trident providia 9685 vga card, and a view sonic E51 monitor,
any advice?
</strong></p>
<p><strong>I also download the latest version of xfree86 and ipgrade my own but
still without results, so any advice?, hint?, tip? or such
</strong></p>
<p><strong>
Simon Zlachevsky
</strong></p>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>Technically you don't configure your window manager for the
video card, you configure the X server for the combination
of video card and monitor that you have, then you configure
the window manager to suit your prefences within any constraints
imposed by you X server (and the underlying hardware).
</blockquote>
<blockquote>This card is listed as "supported" by recent versions of
XFree86 (though the support is listed as "limited" or
"not maintained). It's also been listed on the
"<A HREF="http://www.redhat.com/">Red Hat</A> Linux Hardware Compatibility List for Intel"
(<A HREF="http://www.redhat.com/support/docs/rhl/intel/rh42-hardware-intel-10.html"
>http://www.redhat.com/support/docs/rhl/intel/rh42-hardware-intel-10.html</A>)
since at least version 4.2.
</blockquote>
<blockquote>You don't give any clue as to what the problem is or
what steps you've taken. Also, as I've pointed out many
times I'm not much of an eXpert. I'm sorry that the
XFree86 crew doesn't have an "answer" crew of their own
--- but you should at least read throught their FAQ
at: <A HREF="http://www.xfree86.org">http://www.xfree86.org</A>
</blockquote>
<blockquote>Unfortunately there don't even appear to be any vendors
providing commercial technical support for XFree86. That
might be subsumed in some of the vendors that will sell
you support for Linux (I would think it would).
</blockquote>
<blockquote>You can also read through the LDP &quot;XFree86 Video Timings HOWTO&quot;
by Eric S. Raymond
(<A HREF="http://sunsite.unc.edu/LDP/HOWTO/XFree86-Video-Timings-HOWTO.html"
>http://sunsite.unc.edu/LDP/HOWTO/XFree86-Video-Timings-HOWTO.html</A>)
and the more general: XFree86 HOWTO
(<A HREF="http://sunsite.unc.edu/LDP/HOWTO/XFree86-HOWTO.html"
>http://sunsite.unc.edu/LDP/HOWTO/XFree86-HOWTO.html</A>).
</blockquote>
<!-- end body -->
<p><A NAME="tag_sound"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)"
width="50" height="28" align="left" border="0"
>Reveal SC400 Sound Card: OSS/Linux and OSS/Free Supported?</H3>
<p><strong>From kifox on 13 Jul 1998
in the</strong>
<a href="news:comp.unix.questions">comp.unix.questions</a>
<strong>newsgroup</strong></p>
<!-- begin body -->
<strong><p>
Do you know if the Reveal SC400 rev 4a soundcard is directly
supported by Redhat 5.0 and how would I go about setting it up under
Linux if it isn't?
</p></strong>
<strong><p>
I'm not really sure but I think this card was manufactured by Aztech
for Reveal if it helps any
</p></strong>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>Sound drivers is one area that I know less about than
X. I've never used them much (under Linux, DOS, or Windows)
and I know nothing special about them.
</blockquote>
<blockquote>You might try a 2.1.xxx kernel (since there was a quite a
bit of work done on those drivers back in the 2.1.70's
or 2.1.80's). You could also look at the OSS/Linux
(open sound system), which is at:
</blockquote>
<blockquote><blockquote><code>
<A HREF="http://www.4front-tech.com/linux.html"
>http://www.4front-tech.com/linux.html</A>
</code></blockquote></blockquote>
<blockquote>... this is unusual in the Linux community in that the
authors of this commercial (shareware?) package are also
the principle authors of the sound drivers that are built
into the Linux kernel (called OSS/Free). This oddity has
been debated a bit --- but the widely held opinion is
that the overall benefits outweigh the concerns.
</blockquote>
<blockquote>Anyone who really doesn't like this arrangement is
free to derive their own version and enhancements
off of the code that has been contributed to the the
Linux kernel --- which is why it is still in compliance
with the GPL.
</blockquote>
<blockquote>The commercial OSS only costs $20 and the authors seem to
contribute as much back to the freeware/GPL code as they
reasonably can (they have to sign NDA's --- non-disclosure
agreements to get the specs for some cards).
</blockquote>
<blockquote>Looking at their web site I note that the Reveal SC300
is listed --- which suggests that the SC400 is not
currently supported (unless it is also known as the
Wave Extreme Pro).
</blockquote>
<blockquote>In any event, check out their web site yourself for details.
</blockquote>
<blockquote>And, once again, remember, if you want it supported under
Linux, you have your choices --- and if you buy it despite
the lack of support then you are <em>failing</em> to communicate
your prefences back to the hardware vendors in any meaningful way.
</blockquote>
<blockquote>I've taken the liberty of copying the
<A HREF="mailto:support@opensound.com">support@opensound.com</A>
(the OSS support people) on this request so that they can
comment on, or clarify anything that I've said.
</blockquote>
<!-- end body -->
<p><A NAME="tag_kernel"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)"width="50" height="28"
align="left" border="0">Kernel Overview needed.... </H3><p><strong>From The Saint (mlkong) on 13 Jul 1998
the</strong>
<a href="news:comp.unix.questions">comp.unix.questions</a>
<strong>newsgroup</strong></p>
<!-- begin body -->
<strong><p>Hello Answer Guy,
</p></strong>
<strong><p>I need infos on:-
<ul>
<li>the specialized startup routines of Linux.
</ul>
</p></strong>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>There are several ways to start up a Linux kernel.
</blockquote>
<BLOCKQUOTE>The most common is to use a package called LILO
which involves using a Linux program called <TT>/sbin/lilo</TT>
to read a configuration program (usually <TT>/etc/lilo.conf</TT>)
and use the directives and declarations therein to build
a "boot record." A LILO boot record can be written to
the "master boot record" (MBR) of a hard drive, to a
floppy or to a "logical boot record" (a Linux filesystem's
"superblock").
</blockquote>
<BLOCKQUOTE>Using LILO you can prompt the user for options (multi-boot
and others), and even password protect specific boot
modes. LILO is pretty flexible and allows one to define
upto sixteen different boot configurations.
</blockquote>
<BLOCKQUOTE>It is also possible to write a Linux kernel directly to
a floppy diskette. If this is done (using a Unix/Linux
command like: <tt>dd if=./kenelimage of=/dev/fd0</tt>, or using
the appropriate "rawrite" commands for your OS) than
the floppy will boot the kernel. However, the major
limitation of this technique is that no parameters can
be passed to the kernel, making it very inflexible.
</blockquote>
<BLOCKQUOTE>Another method involves the use of the DOS program
<tt>LOADLIN.EXE</tt>. I'm told there is also an NT native version
of this program. <tt>LOADLIN</tt> allows you to load a Linux
kernel which is stored in a normal DOS file. Once it
is loaded it effectively kicks the previously loaded
OS out of memory underneath it. This is very similar
to the way that one loads Netware 3.x (<tt>SERVER.EXE</tt>).
</blockquote>
<BLOCKQUOTE><tt>LOADLIN</tt> can be called via a DOS batch file, or it can
be configured as at <tt>SHELL=</tt> or <tt>INSTALL=</tt> directive in
the MS-DOS <tt>CONFIG.SYS</tt>. This allows one to use the
multi-boot features of MS-DOS 6.x and later to boot
Linux.
</blockquote>
<BLOCKQUOTE><tt>LOADLIN</tt> also allows you to pass parameters to your
kernels. You can have as many kernels and configurations
as you can fit on your MS-DOS filesystems.
</blockquote>
<BLOCKQUOTE>Note that the Linux kernel is not required to "be on"
its root filesystem. You can use a boot record on
one device to load a Linux kernel from another device
which in turns mounts its root filesystem from some
other device (or even from "no device" --- the kernel
can have a RAM disk and use the <tt>initrd</tt> feature which
we'll cover in a few more paragraphs).
</blockquote>
<BLOCKQUOTE>It is also possible to create "El Torito" CD's for
Linux. The "El Torito" format for CD's allows many
of the newer systems and CD-ROM controllers to boot
an OS directly off of the drive.
<A HREF="http://www.redhat.com/">Red Hat</A> Inc.'s
CD's have been for the last few versions (at least
since 4.2 if I recall correctly). Note that this
only works if your BIOS or CD-ROM controller includes
the right features.
</blockquote>
<BLOCKQUOTE>There is also a program called <tt>SYSLINUX</tt> which allows
a Linux kernel to be written to an MS-DOS formatted
floppy and booted therefrom. I've never used that.
</blockquote>
<BLOCKQUOTE>On the PowerPC (Macintosh compatible systems, and
others) there are different mechanisms. These systems
use an "OpenBoot Firmware" which allows one to specify
things like boot devices, usually through an interactive
process, possibly involving a serial terminal connected
to the "modem" (RS-422?) port on these systems). There are
different versions of the OpenBoot firmware in different
Macs and Mac clones. This can be used to boot
<A HREF="http://www.linuxppc.org/">LinuxPPC</A>
(the "monolithic" kernel). It is also possible to use
a MacOS "Finder" application to boot
<A HREF="http://www.mklinux.apple.com/">MkLinux</A> (the
microkernel implementation of Linux for that platform).
</blockquote>
<BLOCKQUOTE>SPARC Linux uses SILO (and all SPARC machines that I've
ever heard of use OpenBoot --- or its predecessor "FCODE"
--- Sun introduced and published the whole OpenBoot
specification, which is essentially a small Forth kernel
in ROM for doing diagnostics, booting, and device
initialization and configuration). OpenBoot is used
on a number of workstation platforms --- I think recent
HP workstations all use it, too.
</blockquote>
<BLOCKQUOTE>On Alphas there are a couple of different (hardware
level) monitors that lead to the OS boot. I haven't
played with any of them, yet, but I'm told that MILO
is used on some (most?).
</blockquote>
<blockquote>As we move away from the question of "how does it get
into memory" we can ask what other features are unique
to the Linux start-up. On unusual feature is "<tt>initrd</tt>"
the option to create an "initial RAM disk image" ---
this is a compressed archive that is extracted into
a RAM disk, and it allows one to have a modular kernel
and a script that loads the desired modules from the
RAM disk. It is also possible to create multi-volume
"boot/root" and "boot/init/root" sets of Linux.
</blockquote>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)" width="50" height="28" border="0" lign="bottom">
<ul>
<li>a move toward totally modulat kernel? What does it means?
</ul>
</strong></p>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>I don't know what a "totally modular kernel" means.
You still have the option to compile a Linux kernel
with various options "built-in" and others built as
separate modules. You can do this in many combinations.
</blockquote>
<BLOCKQUOTE>With <tt>initrd</tt> you can create a kernel that doesn't even have
the driver for its primary drive controllers built-in
(it would be a module in the initrd image and would be
auto loaded by either the "<tt>kerneld</tt>" (or "<tt>kmod</tt>") feature
or by using an "<tt>insmod</tt>" or "<tt>modprobe</tt>" command from the
<tt>/initrc</tt> script that's extracted unto the RAM disk).
</blockquote>
<blockquote>I personally don't do this. I build my primary
disk controller driver and my primary ethernet card
drivers directly into my kernels.
</blockquote>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)" width="50" height="28" border="0" lign="bottom">
<ul>
<li>overview of the basic kernel organization.
</ul>
</strong></p>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>see below.
</blockquote>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)" width="50" height="28" border="0" lign="bottom"
><ul>
<li>important differences found in tak oriented splinter splinter trees.
</ul>
</strong></p>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>I have no idea what a "task oriented 'splinter, splinter' tree"
would be.
</blockquote>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)" width="50" height="28" border="0" lign="bottom"
>For your information i'm an undergraduate doing a research on this
topics. Please help cause i'm in a dark over Linux operating
system!!
</strong></p>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom"
>These last two questions are far deeper into the Linux
kernel code that I have gone.
</blockquote>
<blockquote>You'll probably want to start by reading:
</blockquote>
<dl>
<dt>Linux Kernel Internals, 2nd Ed. (ISBN: 0-201-33143-8)
<dd>by:
<br>Beck, M. <br>B\"ohme, H
<br>Dziadzka, M <br>Kunitz, U.
<br>Magnus, R. and <br>Verworner, D.
<br>Published by Addison-Wesley in 1997
</dl>
<blockquote>... you'll want to look at the LDP KHG (the Linux
Documentation Project's <em>Kernel Hacker's Guide</em>)
(<A HREF="http://sunsite.unc.edu/LDP/">http://sunsite.unc.edu/LDP/</A>
and many mirrors).
</blockquote>
<blockquote>You'll undoubtedly want to also extract a copy of
the sources, possible for several versions of the
Linux kernel, and look at the directory structures
and read some of the code. That will reveal <em>everything
that's important</em> about the organization of the kernel.
</blockquote>
<blockquote>One of these days I'd like to see a "Linux Kernel
Sources Annoted Study Guide" --- telling me where to
start (<tt>/usr/src/linux/arch/i386/boot</tt> --- <tt>bootsect.S</tt> or
<tt>setup.S</tt>?) and walks through all of the code until a
simple, hypothetical system completes a shutdown.
Of course it would be nice to see the video, too!
</blockquote>
<blockquote>Another thing you could do is look through the archives
of the kernel mailing list, even join it and read through
some of the traffic that flows through there. That is the
principle medium of communications for the developers who
collaborate on the Linux kernel.
</blockquote>
<blockquote>For comparison you might also look for overviews of the
<a href="http://www.freebsd.org/'>FreeBSD<a>,
<a href="http://www.netbsd.org/">NetBSD</a>, and
<a href="http://www,openbed.org/">OpenBSD</a> development projects.
</blockquote>
<P><STRONG><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)" width="50" height="28" border="0" lign="bottom"
>Thanks.
Email me back ASAP please...
</strong><p>
<!-- end body -->
<p><A NAME="tag_solprint"><hr width="70%" align="center"</A></p>
<p>The original thread appeared in Issue 30,
<a href="../issue30/tag_solprint.html">Solaris -&gt; Linux</a>.
The entire thread below was also posted in the</strong>
<a href="news:comp.unix.questions">comp.unix.questions</a>
newsgroup.</p>
<p><hr width="40%"><p>
<H3><img src="../gx/dennis/bbub.gif" alt="(!)"
width="50" height="28" align="left" border="0"
>Remote lpd from Solaris to Linux</H3>
<p><strong>From <em>The Answer Guy</em> on 08 Jul 1998 </strong></p>
<!-- begin body -->
<blockquote>Kuksi,
</blockquote>
<blockquote>
Here's another suggestion forwarded from one of
my readers:
</blockquote>
<strong><p><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)" width="50" height="28" border="0" lign="bottom">
I like to print from Solaris to Linux.
(...repeat of <a href="../issue30/tag_solprint.html">thread</a>...)
</p></strong>
<blockquote><IMG SRC="../gx/dennis/bbub.gif" ALT="(!)" width="50" height="28" border="0" lign="bottom">
To which "Joe Ellis" adds:
</blockquote>
<blockquote><font color="navy"><em>
Wasn't sure how to reply to this (no email address that I saw) but
whoever had this question:
</em></font></blockquote>
<blockquote><font color="navy"><em>
You have to (under redhat 5.0 anyway) add an account for each
username on the remote system whom you wish to be able to print.
I.E. if user '<tt>foo</tt>' on the Solaris machine wants to remote print to
the Linux box, you have to add a user account '<tt>foo</tt>' to the Linux
box. This is in addition to the host/ip in the <tt>/etc/hosts.lpd</tt>
file. I haven't figured out WHY but I know in a stock redhat 5 box
thats how it works. I cannot validate this for other Linux systems
other than redhat as thats the only dist. I have access to at the
moment.
</em></font></blockquote>
<blockquote><font color="navy"><em>
-joe
</em></font></blockquote>
<blockquote>
That makes sense. You could probably edit the
appropriate PAM (pluggable authentication module)
configuration to allow anonymous access --- but I
don't know, just off hand, which file that would be
or what the magic configuration would look like.
</blockquote>
<blockquote>
I suppose we could ask on the PAM mailing list...
</blockquote>
<blockquote>
I've been meaning to install LPRng (the "next
generation" print spooling suite) but haven't taken
the time to do it. For now I actually rcp and
print my files manually. I've had lpd working on
some of my systems, sometimes. But I hardly ever
print anything, so there's little inconvenience and
not nearly enought to track it down.
</blockquote>
<blockquote>For the first few years I used Linux I printed everything
by preparing a file and using:
</blockquote>
<blockquote><code>'cat ... &gt; /dev/lp0'
</code></blockquote>
<blockquote>... on that.
</blockquote>
<blockquote>Let's just say, I don't like printers very much.
</blockquote>
<!-- end body -->
<p><hr width="40%"></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)"width="50" height="28"
align="left" border="0">printing Solaris->Linux</H3>
<p><strong>From kuksi on 13 Jul 1998 </strong></p>
<!-- begin body -->
<strong><p><font color="navy"><em>
You have to (under redhat 5.0 anyway) add an account for each
username on the remote system whom you wish to be able to print.
</em></font></p></strong>
<strong><p><font color="navy"><em>
--: joe
</em></font></p></strong>
<p><strong>There is no need to add an account, but thanks to Joe for the answer
</strong></p>
<p><strong>Now it is working !!!! Yeahuj!! *** The problem was idiocity... :
I installed the remote printer under Solaris:
</strong></p>
<pre>1. #lpsystem -t bsd linux_machine_name
/Identifies the print server system and its type(bsd for BSD)/
2. #lpadmin -p printer_name -s linux_machine_name -T unknown -I any
/Identifies the printer on the printer server./
3. #accept printer_name
#enable printer_name
^^^^^^^^^^^^^^^^^^^
/Specifies that the print client can send print request to the printer./
4. #lpadmin -d printer_name
/Set's the printer as the system's default printer destination./
</pre>
<strong><p>BUT! In the point 3. "enable printer_name" it isn't enough, because:
</p></strong>
<pre>5. #lpstat -t
scheduler is running
system default destination: printer_name
system for printer_name: linux_machine_name
printer_name accepting request since Mon Jul 13 10:25:43 MET DST 1988
printer printer_name is ready. disabled since Mon Jul 13 10:25:55 MET
^^^^^^^^
DST 1988
new printer
/Verifies that the printer is ready./
</pre>
<strong><p>It needs a second "#enable printer_name" command, and after this
it is working...
</p></strong>
<strong><p>Shhhhh.. ! ***
</p></strong>
<strong><p>Otherwise..
</p></strong>
<strong><p>= (think i am <IMG SRC="../gx/dennis/smily.gif" ALT="" height="24" width="20" align="middle">
</p></strong>
<strong><p>Thank for your answers
</p></strong>
<strong><p>kuksi
</p></strong>
<!-- end body -->
<p><hr width="40%"></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)"width="50" height="28"
align="left" border="0">printing Solaris->Linux </H3>
<p><strong>From kuksi on 14 Jul 1998 </strong></p>
<!-- begin body -->
<STRONG><P><IMG SRC="../gx/dennis/qbub.gif" ALT="(?)" width="50" height="28" border="0" lign="bottom"
><font color="navy"><em>
You have to (under redhat 5.0 anyway) add an account for each
username on the remote system whom you wish to be able to print.
</em></font></p></strong>
<strong><p><font color="navy"><em>
--: joe
</em></font></p></strong>
<strong><p>However joe has right....the linux account to be a must.
</p></strong>
<p><strong>(gondolom en
<IMG SRC="../gx/dennis/smily.gif" ALT="" height="24" width="20"
align="middle">
</strong></p>
<p><strong>kuksi
</strong></p>
<BLOCKQUOTE><IMG SRC="../gx/dennis/bbub.gif" alt="(!)"width="50" height="28"
align="left" border="0"
>Well, if that's a problem you could always try
<a href="http://ftp.gts.cz/FTP/pub/MIRRORS/ftp.astart.com/pub/LPRng/HOWTO/LPRng.html">LPRng</a>.
Otherwise you might want to set up Linux as a NIS
client on this LAN (if you're using NIS) --- or
configure it so that it's passwd files are kept in
sync with the others (assuming you're maintaining
synchronized passwd files, which you really want if
you're running any NFS throughout that site).
</blockquote>
<!-- end body -->
<p><A NAME="tag_idescsi"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">Lilo not working on SCSI when IDE drives installed </H3>
<p><strong>From Timm Gleason on Wed, 08 Jul 1998
in Newsgroups:
<a href="news:comp.unix.questions">comp.unix.questions</a>
<br><br>
We have several <a href="http://www.debian.org/">Debian</a>/Linux
workstations around the office that
contain both SCSI and IDE devices. Now we almost exclusively use
SCSI hard drives but occasionally we will stick an extra IDE drive
into a box when more disk space is needed. My problem is this, when
we recompile a new kernel after a security patch of fix, and then
run lilo it gives the error `Warning:/dev/sda2 is not the first
disk`. So then I have to halt the machine, physically remove the IDE
device, boot with a rescue disk, rerun lilo, halt the machine,
reinstall the IDE device and reboot. Now while I admit that this
does work, it can be a real pain to have to do that to every
workstation we have that has mixed devices installed.
<br><br>
Thanks
<br>Timm Gleason
</strong></p>
<blockquote><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
Normally there is no problem with integrating SCSI and
IDE drives in a system (under Linux).
<br><br>
However I think I have a hint as to your problem.
A normal PC BIOS will boot off of the first IDE drive
on a system. It will <em>only</em> look at the MBR (master
boot record) on the first hard drive (usually after
looking for a boot record on <em>only</em> the first floppy).
<br><br>
The normal consequence of this is that you usually have
to install your OS on the first hard drive. IDE drives
conform to an interface which is built into the BIOS.
With SCSI there is a BIOS extension on the controller's
ROM that allows the system to boot.
<br><br>
BIOS extensions are code that's contained on the ROM's of any
expansion card -- so long as it contains a specified header
and calling convention. Part of a normal PC boot process is
to scan the reserved address space between A0000 and E0000 (or
so -- it might be from B0000 through D0000, I don't have a
BIOS reference handy) for this "BIOS extension signature" ---
and then to call setup routines an give offsets from any of
these signature blocks that it finds. That is how SCSI
controllers and ethernet boot PROMS (and other "bootable"
devices) work.
<br><br>
The problem is that most SCSI controllers and PC BIOS' will
give the IDE drives precedence over any SCSI drives.
<br><br>
One approach would be to let the system have "its" way
and let lilo write the MBR to the IDE drive. So long
as your BIOS (with extensions) can <em>see</em> the SCSI drives
it doesn't matter that the lilo boot block refers to another
drive.
<br><br>
An odd and confusing thing about Linux is that the boot
block, the kernel, and the root filesystem can all be
on different devices. In fact you don't need a "boot block"
at all --- you can use LOADLIN.EXE to start a Linux kernel
(I've heard it can be used to load a FreeBSD kernel, too ---
but they have their own program for that anyway).
<br><br>
So, if you have a <tt>/etc/lilo.conf</tt> that looks like:
<pre>
boot=/dev/hda
read-only
prompt
timeout=200
image = /vmlinuz
root = /dev/sda1
label = example
</pre>
... and you run <tt>/sbin/lilo</tt> to "compile" this set of
configuration directives into a boot block here's what
it will do:
<blockquote>
Write the boot block to <tt>/dev/hda</tt>
<br><br>
note: we use the raw device, so it goes to the MBR,
if we use <tt>/dev/hda1</tt>, it goes to the "logical boot
record" or "superblock" of the specified (first)
partition.
<br><br>
The 'read-only' directive is passed to any Linux
kernels that you load --- it specifies that the
root filesystem will be initially mounted read-only
to allow the fsck to work properly on it.
<br><br>
The 'prompt' directive is used to control the behavior
of the LILO boot program at it's runtime (it forces it
to print an interactive prompt to the console during boot)
and the 'timeout' directive specifies how long the
prompt will wait before continuing to the default
boot "stanza" (the first, and in this case, only one).
<br><br>
The image directive points <tt>/sbin/lilo</tt> to the location
of a kernel image (file). Note the distinction between
/sbin/lilo's "compile time" and the lilo boot code's
"run time" (that's why I push this analogy of treating
the lilo package as a "boot block compiler" --- it
helps put these distinctions in familiar terms).
<br><br>
This directive causes <tt>/sbin/liloi</tt> to "map" the device
number and address of the image file. That address can
be in different formats depending on whether the
"linear" directive is used to inform <tt>/sbin/lilo</tt> that the
device is being accessed through "sector translation."
<br><br>
The 'root' directive specifies where the root filesystem
for this "stanza" is located. That is passed to the
kernel unless over-ridden by parameters that are entered
interactively at the prompt.
<br><br>
Obviously the 'label' directive allows the user to
select different boot stanzas by name at the lilo
prompt. (Not that the "lilo prompt" refers to <em>run-time</em>
rather than "compile-time" --- it is the "boot block code"
that is doing the prompting and <tt>/sbin/lilo</tt> is utterly
uninvolved at that point).
</blockquote>
I've played with a number of configurations of lilo.conf over
the years. I've written boot blocks to floppies, specified
image files that were on mounted (non-root) filesystems,
and done other silly things. Lilo's flexibility can be
very confusing and I've tried many things that didn't work
(usually for good reason --- Lilo is constrained by the
limitations and conventions employed by your BIOS).
<br><br>
If you try this and it doesn't work you might need to
put a tiny partition on that drive. You can put a
very small minix filesystem on that (conceptually you
could put a kernel and no fs in a single track ---
but <tt>/sbin/lilo</tt> doesn't have a way to "find" that).
<br><br>
For that matter you can put a Linux kernel file on
<em>any</em> fs that you put on that IDE drive. If you
put a kernel image on an MS-DOS filesystem and
run <tt>/sbin/lilo</tt> <em>while that fs is mounted</em> (it will
complain if it cant find the kernel images at
"compile time") you should be fine (until you run a
DOS defrag utility!).
<br><br>
A wholly different approach is to to lie to your CMOS
setup and tell <em>it</em> that you have no IDE drives
installed.
<br><br>
Linux doesn't rely on your CMOS settings or BIOS to
detect or use IDE drives. So, once Linux is loaded
you should be able to see your IDE drives even if they
are not listed in your CMOS configuration.
<br><br>
(I'm pretty sure I did that once and I don't remember
having to do any tweaking to get it to work. It might
be dependent on your kernel version and compilation
options, though).
<br><br>
Obviously, you're doing something a little different
--- most people who mix IDE and SCSI drives start with
the IDE's and always let them be the boot devices. That's
the path of least resistance. However, you can try
the tricks I've described --- let me know if removing
the CMOS parameters for the drives works (or if I'm
suffering from delusional memories).
</blockquote>
<p><hr width="40%"><p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">Lilo not working on SCSI when IDE drives installed </H3>
<p><strong>From Timm Gleason on Fri, 10 Jul 1998
in the</STRONG>
<a href="news:comp.unix.questions">comp.unix.questions</a>
<STRONG>newsgroup</Strong>
<br><br>
Thanks for your prompt reply. Many of the things you mentioned we have tried
at one time or another with limited results. We are suing Asus P2L97
motherboards which have the ability to set in the BIOS which drive type you
want it to look at first. We have even removed the IDE drive from the BIOS
settings. The problem is that since Linux does not rely on BIOS settings for
IDE drives it always detects them first. And typically we are adding old
extra IDE drives for expanding storage or the CD-ROM drive in the machine is
an IDE.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
It's true that Linux doesn't rely on BIOS settings.
However, the lilo boot loader <em>does</em>. It is the boot loader
that is looking in the wrong place. This is probably a
bug in your BIOS (or still in your configuration of that
BIOS, as it sits in the CMOS registers).
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
I have yet to try setting boot=/dev/hda and root=/dev/sda in the lilo.conf.
I was under the impression (mistakenly I guess) that the MBR and root disks
had to be on the same partition.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
The fact that this is a very common misconception explains
why I take such pains to explain it in so much detail.
I must have gone over this about twenty times in LG and
about a hundred in the newsgroups.
<br><br>
Also, a nitpick, don't think of them as "root disks" ---
think of them as root filesystems.
<br><br>
An MBR consists of a boot record and a partition table. The
boot loader points to a kernel (or several) --- or it might
point to a secondary boot loader. The Linux kernel contains a
pointer to the default root fs. The LILO boot loader (from
the MBR or from a floppy or any logical boot record) may pass
parameters (such as video mode and root fs parameters) to the
kernel to over-ride the one that's built-in. The '<tt>rdev</tt>'
command can write a new rootfs string into a kernel (and it
can tweak other values like "video mode" --- look at the
'<tt>rdev</tt>' man page for details).
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">Thanks Again</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
You're welcome.
</blockquote>
<p><A NAME="tag_distrib"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">Yggdrasil:
A Breath of Life for the Root of CD Linux Distributions?</H3>
<p><strong>From Mike on Sun, 05 Jul 1998
in the </strong>
<a href="news:comp.unix.questions">comp.unix.questions</a>
<strong>newsgroup</strong></p>
<p><strong>
What do you know about
<a http://www.yggdrasil.com/">Yggdrasil</a> linux distribution?
They purport
significant advances in OS/SOFTWARE/DOCUMENTATION not achieved by
others. Is it real or make believe or worthy of mention? I was
impressed by what I read, however I am not all knowing but just
researching linux to find the best distribution/version to begin
learning yet have an os that is versatile enough to keep using once
abilities exceed beginner/amateur. Mike
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
Yggdrasil's ``Plug and Play'' Linux was the first CD-ROM
distribution ever produced. They also developed and released
the first CDR recording software that was available under
Linux. Yggdrasil was also one of the earliest companies to
compile, print and bind "dead tree" versions of the LDP (Linux
Documentation Project). Back near the beginning of 1997 they
released an 8-CD set of Linux archives (not including their
own distribution). They are the only company that I know of
which has produced a video documentary on using Linux.
<br><br>
Adam Richter, founder of Yggdrasil, is still active in the
community. He frequently shows up and local user group
meetings (<A HREF="http://www.svlug.org">http://www.svlug.org</A>)
and he occasionally
participates in discussions on the 'Linux-kernel' mailing
list. In fact I saw him at the "midnight rally" that the
SVLUG and some other bay area Linux enthusiasts hosted in
front of Fry's and CompUSA on the night that Microsoft
officially shipped Win '98(*).
<br><br>
<ul><li>Specifically he and I discussed the fact that the
rally had just run out of the 500 S.u.S.E. CD's that
had been donated to us for promotional purposes.
He joked that he could drive over to his offices
--- a couple of miles from there --- and get a case or
two of old sets of the "archives" --- but also expressed
the concern that they were probably a little too old to
be of interest to new Linux users.
</ul>
Recently (just last February --- a few months ago), he
announced his experimental "Ground Zero" repository --- which
is an effort to provide a comprehensive and dynamic repository
of all of the available Linux packages in tarball (Slackware
compatible .tar.gz), RPM (Red Hat), and .deb formats.
<br><br>
Apparently Adam also has some interesting processes running
at his site --- based on some custom programming he's done.
It monitors certain FTP sites (and some other sites?) and
automatically fetches, builds and tests new kernels (and
some other packages?). I don't know the details --- but it
sounds very cool.
<br><br>
One of the things I really liked about Yggdrasil's distribution
was that it had an integrated source tree. You could easily
find the sources for anything in the distribution (I think it
included a '<tt>whence</tt>' command which was similar to the '<tt>which</tt>'
command except in that it pointed you to the source code for
a command, rather than just to the binary).
<br><br>
I mention that in the past tense since I haven't used
"Plug and Play" Linux in a number of years --- it hasn't
been updated recently. In response to your note I raced
over to the Yggdrasil web site
(<A HREF="http://www.yggdrasil.com/">http://www.yggdrasil.com/</A>)
in the hopes that they actually have a new release.
<br><br>
(I keep asking Adam and he just quietly assures me not to
worry about it!).
<br><br>
So, I'd like to know what you've read (and if there was a
date on it).
<br><br>
As for the relative merits of Yggdrasil's "Plug and Play"
vs. <a href="http://redhat.com/">Red Hat</a>,
<a href="http://www.suse.com/">S.u.S.E</a>.,
<a href="http://www.debian.org/">Debian</a>,
<a href="http://www.caldera.com/">Caldera</a>, and the most recent
<a href="http://www.slackware.org/">Slackware</a>
--- it's not a fair comparison. All of these other
major, general purpose distributions have been updated several
times since the last "Plug and Play" release.
<br><br>
So, I cannot recommend the old Yggdrasil version except for
historical (almost archealogical) purposes. That's why I want
them to release a new version.
<br><br>
(Meanwhile the "Ground Zero" effort is very up-to-date and
completely independent of your distribution --- so you should
definitely bookmark their site and check on it regularly).
</blockquote>
<p><hr width="40%"></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">More on Distribution Preferences</H3>
<p><strong>
Answerguy,
What do you think of this distribution?
OpenLinux Base
</strong></p>
<font color="navy"><em>
<p><strong>
OpenLinux<75>: A complete Linux operating
system with all the system tools you<6F>ll need.
Plus valuable add-ons, like Netscape<70>
Communicator and backup utilities.
</strong></p>
<p><strong>
US and Canadian orders can take advantage of a $20.00
rebate from Caldera, bringing the price of OpenLinux
Base to $31.95
</strong></p>
</em></font>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
I haven't used any of the <a href="http://www.caldera.com/">Caldera</a> distributions
recently. This is a much more recent version the those
that I've used. So, I don't have an informed opinion on
them.
<br><br>
Since you just asked about Yggdrasil yesterday I'm wondering
if this is a pattern. I hope you aren't going to send me
of these every day.
<br><br>
My opinion about Caldera <em>Standard</em> is that it is the best
choice for a site that has existing Netware servers or
clients. It was also the first distribution that was
supported by WordPerfect for Linux. There are a number of
other commercial software companies that work with Caldera
for releasing Linux versions of their product.
<br><br>
If the Caldera Base includes a copy of
<a href="http://www.stardivision.com/">Star</a>Office (as your
press release says it does) than that is a very good reason
to try it. (The installation of StarOffice that I have from
an early 4.0 CD is very unstable --- it dies quickly and
horribly under my
<a href="http://www.suse.com/">S.u.S.E.</a> 5.1 system.
I've heard that that
there are new libraries and releases that fix that --- but I
haven't been particularly motivated to go get them since I
still mostly live in text consoles).
<br><br>
StarOffice is a very promising product --- and the competition
between it Corel Office, and Applixware should be
interesting. The most important feature of either is to
provide me with stable, reliable access to MS Office .DOC and
.XLS files. The first one to successfully do that with MS
Office '97 wins my vote. (Since that is one of the few
reasons for me to get out of a text console and into X --- the
others being Netscape Navigator (when I need something that
just doesn't look right in Lynx), 'xfig' (to draw diagrams for
the book that I'm working on), and 'xdvi', and 'gv' (to
preview the LaTeX and dvips output for same).
<br><br>
At the same time I recognize the potential of these office
suites (and some others). As these get better we see Linux as
a more serious contender on the desktops of home and corporate
users. According to some surveys we're already winning against NT
in a number of server categories (including web, mail, DNS, and
SMB/<a href="http://samba.anu.edu.au/">Samba</a>). We've gained a
lot of ground in the technical and scientific workstation market
(although the push to get EDA and CAD/CAM suites ported is just barely
started). But all the "mom's" and "pop's" out there that have
their college kids buying systems for them need something a
bit less intimidating than 'emacs' and 'vi' --- and TeX and
friends.
<br><br>
<a href="http://www.kde.org/">KDE</a> and
<a href="http://www.gnome.org/">GNOME</a>
will provide the main interface and many of the
toys and widgets. StarOffice,
<a href="http://www.applix.com/">Applix</a>ware,
<a href="http://www.corel.com/">Corel</a> Office, SIAG,
LyX, Wingz, Xess, and others are all vying to provide the
main user applications.
<br><br>
(I personally think we'll also need multi-media GUI "Welcome to
Linux/XFree86/KDE" and "Welcome to Linux/XFree86/GNOME"
interactive tutorials --- with sound, music, via, and a
dancing, talking Tux. I want a system I can install on a
box and send to my Mom!).
<br><br>
<dl><dt>
Getting back to your implicit question:
<dd> Which Linux distribution should you try?
<dt> ... the answer is:
<dd> I have no idea!
</dl>
Unlike the marketeering weenies that you encounter in
every magazine, and newspaper, on every TV and radio
show and on billboard and busses every time you drive
anywhere ... unlike them, I don't want to push a bunch
of <em>features</em> on you and I have nothing to sell you
(except my time --- which is pretty expensive).
<br><br>
Helping someone select a Linux distribution (or anything
else) is a matter of requirements analysis. What do
you need? What do you want? How much are you willing to
spend? (Time and money). It is quite possible that I
would recommend FreeBSD, NetBSD, OpenBSD, BSDI/OS, or
even Win '95, NT, or MS-DOS --- <em>if</em> I understood your
requirements sufficiently.
<br><br>
Before you send me a list or essay on your requirements
consider that the Answer Guy is time I volunteer to show
my appreciation for all the work that people like Richard
Stallman, Linus Torvalds, Alan Cox, Arnold Robbins, and
so many others have put into the GNU project, Linux and
other freeware. I try to answer questions that I think
are of broad interest to many Linux users and potential
Linux users. (And possibly of interest to *BSD'ers
and eventually GNU HURD'ers).
<br><br>
The easy answer to selecting a distribution is: pick one!
Since many of them are freely distributable you might want
to start with one of those. Debian and Red Hat are definitely
freely accessible. I think Slackware is still available online
--- and I suspect that it's perfectly O.K. to borrow a friend's
copy of the CD. Walnut Creek might have exclusive rights on
CD distribution of Slackware --- I don't know. I think S.u.S.E.
is free for "personal" use (although it is a bit unclear my
S.u.S.E. 5.2 manual says:
<blockquote><code>
Copyright
This work is copyrighted [sic] by S.u.S.E. GmbH and
is placed under conditions of the GNU General Public
License.
You may copy it in whole or in part as long as the
copies retain this copyright statement.
</code></blockquote>
... (overleaf of the title page). It's not clear whether
"this work" is intended to refer to the book or to the
distribution that included it. The box and CD case (4CD's)
don't list any other copyright or licensing notices that I
can find. The only index entry under the term "license"
points that the Appendix of their manual that contains the
full text of the FSF GPL. That would suggest that you can
borrow my set of S.u.S.E. CD's and install it, and would
even suggest that someone could start creating derivative
works (other CD sets) to sell in competition with S.u.S.E.
<br><br>
However, I've always been under the impression that S.u.S.E.
is a commercial distribution. I purchased both of my copies
for it -- 5.1 and 5.2 --- and I've purchased many copies of
various Red Hat versions (the boxed set and the lower-priced
archives sets). So, you might want to ask a S.u.S.E. rep
before you go into production against them. However, I doubt
that they'd even want you to waste their time asking if it's
O.K. to install from a friend's set on an evaluation basis.
<br><br>
You're clearly willing to buy some distribution once you
find one you like. Personally I usually select Red Hat
for my customers (after I've considered their needs) simply
because Red Hat has a pretty good balance of the various
factors they care about.
<br><br>
Debian has more packages (slightly) -- but the last copy of
dpkg that I used was very convoluted (I'm hoping to get a 2.0
CD as soon as it goes out of beta). Slackware was nice when
I needed it --- but most of my customers aren't interested
in fussing with tarballs --- they want something with a
decent package manager (one that can be operated easily
from command lines as well as throught a GUI).
<br><br>
Under RH it's pretty simple to write a script to poll an
internal FTP site for package updates and automatically apply
any of them that appear. (I think there's a package called
'rpmwatch' floating around some 'contrib' directories somewhere
that does precisely that). I haven't looked at RH 5.1 yet.
<br><br>
S.u.S.E. and Caldera both use the RPM format.
<br><br>
S.u.S.E. includes more packages that the last couple RH CD's
I used (4.2 and 5.0). It seems to have a pretty good
installation interface though I have mixed feelings about
their interpretation of the SysV init scripts. They have a
large shell script named /etc/rc.config (mine is about 770
lines long --- of which about 500 are comments). This file
contains a long list of shell variables and values. You
can edit this file by hand or you can use YaST (Yet another
Setup Tool) which is their curses based system's administration
interface. The idea is that the other scripts all "source"
this one file and use the variables that apply to their
operation.
<br><br>
On the one hand this is very nice. Concievably I could
create a particular installation profile (which they support
via their installation interface), install the system,
configure it via YaST and put it into production.
<br><br>
Let's assume I use the 'chattr +i +d' (immutable and no-dump)
flags on all the files that came with the distribution and
unset them as a pair whenever I change any of them; this would
allow me to use the 'dump' program and <em>never</em> backup files
that were from the initial installation off of the CD). This
is for a "data+config" backup strategy.
<br><br>
If I've stored the rescue floppy they created, and the
rc.config file --- I should be able to restore the whole
system to its configuration with just my installation
CD's, my rescue diskette, and the rc.config file. (Naturally,
I'll have to restore all my data as well).
<br><br>
Another nice thing is that I might be able to create
a little script to generate new rc.config files from a
master form and a couple of other data files. If I have
<em>lots</em> of new machine trickling in I might have a few
files that contain lists of IP addresses, hostnames,
NIS domain names, shared printers, and other local (LAN)
data. I might conceivably be able to generate a new custom
rc.config file for each new box and automate even more
of the deployment.
<br><br>
Under other distributions I have to mess with over a dozen
separate files. Unfortunately it's not that easy even under
S.u.S.E. If you use NFS you really want to use NIS or synchronize
the 'passwd' and 'group' files across your systems (since
maintaining ugidd maps is not scaleable and NFS relies on
the uid/gid values to determine access and permissions.
<br><br>
None of the distributions I've seen prompt me for a
passwd/group file set prior to installation. So, if I use
Red Hat on one system and S.u.S.E. on another (I do)
--- there will be some base files that differ between them
(most of the uid's created by most of the distributions
<em>do</em> match -- there were only a couple that I had to
run through a "masschown" script). (Distribution Dudes!:
This is my enhancement plea for the month! Please let me
hand you a passwd/group file set --- from floppy or over
ftp/nfs/http --- and use that to map the ownership as you
install).
<br><br>
These days, for large sites, I recommend creating one
"template" installation one a typical box, cutting that whole
installation to tape or CDR after configuration but <em>before</em>
any <em>use</em> (data). Now you can do all new system installations
as "restores" from your backups. You can also take that
opportunity to make sure that your recovery plans, rescue
diskettes and backup media are all in working order. One
reason I recommend that is that it takes me about
four hours to fix various permissions and configurations
(hosts.allow, hosts.deny, etc) after I've completed a new
installation.
<br><br>
One final note about choosing a distribution: don't just
ask me. I'm only one person. I've only used about a half
dozen Linux distributions (some of which no longer exist!).
Don't just go to the newsgroups and mailings lists and ask
"Which is best?"
<br><br>
Ask questions that relate to your situation: Will you be
integrating this into a Novell network? Do you have friends
or family that will be working on your Linux box? Do any of
them have experience with a Linux distribution? Do any of them
use some other form of Unix (free or otherwise)? Do you have
any particular applications preferences? Is system security
a concern? What are the risk profiles that are acceptable to
you? What is your native language (German speakers will probably
be much happier with the German S.u.S.E. or the DLD (?)
distributions, Japanese users seem to prefer FreeBSD, the French
have their own distribution, etc.)?
</blockquote>
<p><A NAME="tag_modem"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">115K Baud from a Modem: In your dreams!</H3>
<p><strong>From WEMehl on Fri, 03 Jul 1998
<br><br>
I purchased an <a href="http://www.ibm.com/">IBM</a> Aptiva last fall.
It came with a LTwin modem installed. It tells me that its max speed is
115K, but I never seem to be able to run at more than 34K. Is it the
modem (if so can I upgrade) or is it something to do with
<a href="http://www.aol.com/">AOL</a>? Thanks.
</strong></p>
<blockquote><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
I think that this is a shameful bit of marketeering on the part of
whatever docs tell you this. They probably mean "115K if you get
better than average compression under ideal phone line conditions."
<br><br>
Currently the highest speeds attainable by modems over traditional
telephone lines is about 56Kbps --- and that is asymetric. In other
words you can download stuff at close to 56K under ideal line
conditions --- but your upload speed will not approach that (a
non-issue for most Internet "web surfers" --- but it would have been
a major issue for the old BBS users who used to run their Fido boards
and use QWK messaging.
<br><br>
I have no idea what AOL is currently doing. It is likely that they
haven't upgraded all of their modems (Points of Presence) to 56K
at this point --- and it's even more unlikely that they would have
upgraded their entire infrastructure to ensure that their hosts and
LAN's would have the capacity and bandwidth to feed those thousands
of high speed modems <em>at full speed</em>.
<br><br>
As for upgrading --- you can almost certainly upgrade your modem.
I've been working with PC clones for over a decade and I've never seen
one that had a *modem* hardwired into the motherboard. I've seen some
with inferior serial ports --- serial ports with buggy and slow 16450
UART chips that couldn't be replaced or disabled. However, this is
probably a typical internal modem --- just rip it out and throw it
away. I personally recommend external modems.
<br><br>
For real speed upgrades you can get ISDN and FRAD (frame relay access
devices) for PC's that are supported by Linux and can take you past
modem speeds all the way up do T1. You can also pop in an ethernet
card (10Mbps) and get an ADSL or a cablemodem (router). Naturally
you can't use this over your existing telco lines --- and you'd probably
really hate to see how much a leased line (frame relay) or ISDN (metered
service in most areas --- a penny a minute adds up pretty quick!)
would cost. As for ADSL and cablemodem services --- the coverage
and availability are pretty spotty and the pricing isn't what an
AOL user is likely to be interested in spending.
<br><br>
What really makes me curious about your message are two things:
<blockquote>
Are you running Linux? Is that a "Winmodem"? (The model
designation certainly sounds like one).
<br><br>
If you're running Linux to access AOL --- what are you using
to do it? The AOL reps I've talked to have shown <em>no</em> interest
in making Linux, Unix, Java, or other portable versions of their
interfaces avaialable --- and hostility at the notion of
documenting their protocols and API's to the point where anyone
else could do a free implementation.
<br><br>
<em>[ Actually, their Instant Messenger is available in Java, and
a recent note I sent their web staff asking after a Linux version of
the main client got a friendly "we've forwarded that suggestion"
note back, from two different people. So, times change? Meanwhile
<a href="http://www.winehq.com/">WINE</a> is
rumored to have some success with AOL. But if you're using something
Linux native, I'd really like to know what it is. -- Heather ]</em>
<br><br>
If you're not running Linux, and you're not asking about
anything that's even vaguely Linux or Unix related... why are
you posting a message to the
<em><a href="http://www.linuxgazette.com/">Linux Gazette</a></em> "Answer Guy"?
(No, I didn't pick the title --- my editors did that).
</blockquote>
As a final comment, I usually don't care much about questions like
this one. People read a bit of marketing fluff on the box or in the
ads for a product --- they draw an unrealistic conclusion based on an
interpretation that's best described with the phrase "wishful thinking"
then they perform highly unscientific metrics and benchmarks on which
the fail to perform the most elementary critical analysis (of their
experimental design, their results or their conclusions) --- and then,
unsatisfied with their results they write to some unrelated support
guy hoping for a magical incantation that will make the product work
as they <em>thought it would</em> from what they <em>thought</em> the marketers
meant in the <em>advertising</em> that they read.
<br><br>
If you're getting unsatisfactory results from this product --- talk
to your vendor. You paid them for it. If you're just trying to see
if your "missing out" (that some other people might actually be getting
consistent 115K throughput on these) --- don't worry, it's not happening.
</blockquote>
<p><A NAME="tag_NDS"><hr width="70%" align="center"</a></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0"
>Linux as an NDS (Netware Directory Services) Printer Client</H3>
<p><strong>From Phill Kenoyer on Fri, 03 Jul 1998
<br><br>
I use linux at work, but I can not print to the Netware 4.0 servers.
They are using NDS and I have found out that Linux does not have any
NDS clients. Is there a way I can print to the netware printers?
<br><br>
I know that MIS is not going to help me because the MIS manager
hates unix or something. Linux is like very bad in MIS land.
<br><br>
Phill Kenoyer
<br><a href="http://www.microprose.com/">MicroProse</a>, Inc.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
Linux maybe "very bad" in your MIS jungle -- but
out here we are find the IS guys sneaking it in behind
them M's backs at just about every turn.
<br><br>
In any event the simple solution for you is to go
get a copy of <a href="http://www.caldera.com/">Caldera</a>.
Caldera's "OpenLinux" (I forget
which release --- Standard and <em>not</em> Base, if I recall
correctly, I've copied their sales department) includes
a set of Netware bindery and NDS clients that allow you
to connect your Linux client for file and print services.
<br><br>
This particular component is not free --- it is covered
under some licenses (I think the licenses are imposed on
Caldera by their vendors). So plan on spending a couple
hundred bucks.
<br><br>
However, it is possible. I've used this --- and I recommend
Caldera for any Linux installation that's got to interoperate
with any Netware systems!
</blockquote>
<p><A NAME="tag_rpm"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">What is an RPM?</H3>
<p><strong>From Andre Solheim on Fri, 03 Jul 1998
<br><br>
I am in the process og getting hold of Linux. Could you please tell
me what RPM is, and what it does?
<br><br>
I hope you can mail the answer to me directly
<br>Andr<EFBFBD> L Solheim
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
RPM is the <a href="http://www.redhat.com/">Red Hat</a> Package Management system.
This is an freely published set of specifications and
tools to allow Linux and Unix vendors to package their
software in a way that is amenable to automated installation
upgrade, removable and administration.
<br><br>
Although it has Red Hat's name in it --- it has been
adopted by most of the major Linux distribution maintainers.
The only to major holdouts are <a href="http://www.debian.org/">Debian</a>
and <a href="http://www.slackware.org/">Slackware</a>.
(There are a number of small, special purpose Linux
distributions that don't use any package management ---
many fit on a single diskette or designed to be installed
into a DOS subdirectory and run via <tt>LOADLIN</tt>).
<br><br>
Debian has developed their own package management format
(usually seen with the .deb extension) and Slackware
continues to use the tried and true "tarball" format with
pkgadd (?) and some other tools to help a little bit.
<br><br>
However, you can easily install the RPM subsystem into
any Linux that you want. You can also use RPM on some
packages and continue to manually build others from
tarballs (.tar.gz files). You can also convert between
package formats using tools like '<tt>alien</tt>' and
'<tt>rpm2cpio</tt>'
(or you can just use
<a href="http://www.gnome.org/mc/">Midnight Commander</a>
to open and work with .rpm files, just as you would any directory,
.zip or .tar file etc --- what how I usually delve into
RPM files if I'm not going to install them).
<br><br>
The RPM system as been ported to several flavors of Unix
and is no longer a purely "Linux" thing. Some sites are
using it to help maintain their Solaris, and HP-UX systems.
<br><br>
In the simplest form you can use commands like:
<blockquote><code>
rpm -i foo-1.2.rpm
</code></blockquote>
... to install a package (foo version 1.2 in this example).
<br><br>
There are also GUI and menu drive frontends to using RPM
.... but I usually use the command line.
<br><br>
You can also let rpm do the FTP for you with a
command like:
<blockquote><code>
rpm -U ftp://myserver.myorg.net/upgrades/bar-2.2.rpm
</code></blockquote>
... and this will upgrade the bar version 2.2 package off
of an internal ftp server (where I presumably have
placed it after testing it on one of my sacrificial admin
systems).
<br><br>
Another trick I've used is to get the description of an
rpm file without bothering to get the whole file
(to decide which files I wanted to fetch). I do this
with a command like:
<blockquote><code>
rpm -qpi ftp://ftp.redhat.com/..../contrib/.....rpm
</code></blockquote>
(I don't have a specific path and filename handy ---
but this should show the idea). You can also get a
list of the contents of a package with:
<blockquote><code>
rpm -qpl $SOME_RPM_FILE
</code></blockquote>
... or a list of files from an installed package with
<blockquote><code>
rpm -ql $SOME_INSTALLED_PACKAGE
</code></blockquote>
You can also do things like list all of the packages that
you have installed on the whole system (at least those that
you've installed using RPM) with a command like:
<blockquote><code>
rpm -qa
</code></blockquote>
... and you can verify a package with a command like:
<blockquote><code>
rpm -V foobar
</code></blockquote>
... which will give you a summary of every change to
the checksums, ownership, permission, timestamp, etc ---
of every file that was part of the "foobar" package.
<br><br>
Combining these in a relatively obvious way you can
check every package on your system with the following:
<blockquote><code>
rpm -qa | xargs rpm -V
</code></blockquote>
You can also find out which package a given file "belongs to"
with a command like:
<blockquote><code>
rpm -qf /some/file/that/was/installed/by/something
</code></blockquote>
You can learn more about the RPM system by looking at their
very own web site: <A HREF="http://www.rpm.org">http://www.rpm.org</A>.
<br><br>
So, good luck on your new adventure. Have fun with Linux.
</blockquote>
<p><A NAME="tag_guy"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">AnswerGUY? Who is Heather?</H3>
<p><strong>From Thomas L. Gossard on Fri, 03 Jul 1998
</strong></p>
<p><strong>
Answerguy,
<br><br>
Forgive me if I'm about to insult you. All the replies I've read
seem to be answered by Heather. Is Heather not a girls name? If
so, why is this column called the answerGUY, not person or girl?
<br><br>
Tom Gossard
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
Heather is my wife. She usually doesn't answer any
of the questions (though sometimes she helps --- she's
been using Unix longer than I have --- and she's a professional
sysadmin).
<br><br>
However, Heather does convert my mail into HTML and she
does all the links and graphics (I just answer the e-mail,
do the web research and find URL's to point my correspondents
at for more information).
<br><br>
As for why this is called the "Answer Guy" --- I just volunteered
to help out with the occasional stray technical question that
I knew would find it's way to SSC when they took over the
editorial duties of the Linux Gazette from John Fisk (its
creator). Marjorie Richardson and her crew decided to post
my answers and picked the name. I'd wanted to start doing the
HTML (at least to wrap the URL's in anchor tags) since I noticed
that these were going up --- but I never had the time.
<br><br>
Finally Heather stepped in, pulled down a couple of mail to
HTML filters (like MHOnArc, hypermail, and babymail) and
played with them --- tweaking one of them until it suited
her tastes in HTML and my style of e-mail (text). She
still hand massages the messages for a bit, too.
<br><br>
The other advantage to this way of doing it is that I don't
see the whole column going up as one big page --- it's broken
into lots of separate pages, like HTML is meant to be. This
is hopefully going to help quite a bit in my future since I
was starting to hit my own column every time I did a Yahoo
search --- usually those were false hits because I'm usually
trying to find "something for Linux" (and I'd find sets of
keywords in one LG article -- that were in no way related
to one another in the article).
<br><br>
So, hopefully the new format will be more "search engine
friendly" (for everyone).
</blockquote>
<P> <hr width="40%"> <P>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">Heather replied too.</H3>
<p><strong>From Tom Grossard on Mon, 6 Jul 1998
in the </strong>
<a href="news:comp.unix.questions">comp.unix.questions</a>
<strong>newsgroup</strong></p>
<br><br>
Heather,
<br><br>
Thank you for the reply. I hope I wasn't rude in my question, just nosey.
<br><br>
Thank you
<br>Tom
<br><br>
Thomas L. Gossard
</strong></p>
<blockquote><img src="../gx/dennis/smily.gif" alt=":D" width="50" height="28"
align="left" border="0">
No problem, really. Glad we could clarify.
<br><br>
Oh yeah, I'd like to add for our lynx-using readers, or those reading
the text of TWDT, I plan to improve the textmode result. But
not this time, I just started a new job (still sysadmin'ing) and
didn't have time.
<br><br>
For web visitors, the interesting parts:
<br><em>I ate the fortune cookie first, then read what Jim Dennis copied me on:</em>
<br><font color="navy"><em>
However, Heather does convert my mail into HTML and she
does all the links and graphics (I just answer the e-mail,
do the web research and find URL's to point my correspondents
at for more information).
</em></font><br><br>
The confusion probably arises from the one message (Love the New Look!!!,
<A HREF="http://www.linuxgazette.com/issue30/tag_newlook.html"
>http://www.linuxgazette.com/issue30/tag_newlook.html</A>)
where I answered someone who loves the new format... since I am responsible
for formatting... and linked my name there so respondents on that question
could reply to me instead.
<br><br>
Jim answers all the Linux questions; in the original mail to the querent,
he has his Answer Guy .sig, but the dressed up column doesn't need that also,
so it is trimmed for clarity. Most querent's .sigs are trimmed to enhance
their privacy. So seeing most messages .sig-less might be affecting you.
<br><br>
"just answer and research" is plenty, but he loves to do it, and every new
discovery could add to his book, so he plays it down. I don't think the
column would be nearly as good if our roles were reversed :)
<br><br>
<font color="navy"><em>
Finally Heather stepped in, pulled down a couple of mail to
HTML filters (like MHOnArc, hypermail, and babymail) and
played with them --- tweaking one of them until it suited
her tastes in HTML and my style of e-mail (text). She
still hand massages the messages for a bit, too.
</em></font><br><br>
I merged some perl fragments, and added some of my own, to a script I use
to preprocess the month's load of Answers. However, I also
<strong>read</strong> his messages, and try to maintain the original
"look and feel" of Jim's reply.
<br><br>
Sometimes this means a list type or a blockquote where my script doesn't
know any better. Each month I improve it but I will probably never trust
it to do the whole job ... cleaning .sigs for privacy, clearing up levels
of indirection when Jim draws in a message from mailing lists, and posting a
thread as one file are specific examples.
<br><br>
There is also a little bit extra that I add. Most of the URL's I add
after-the-fact are things that aren't really special overall (such as
hotlinking vendor names) so someone reading the plaintext TWDT
version isn't really missing anything; they are simply seeing the reply
pretty much as Jim sent it. (It's not exactly as Jim sent it -- it's the
posted column run through lynx.) If I actually say anything that Jim didn't,
it is <em>emphasized</em> and in brackets [] , as I have been taught editors'
comments should be. I haven't seen Jim use brackets, except in example code.
</blockquote>
<p><A NAME="tag_maildns"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">'<tt>sendmail</tt>' requires DNS ...
won't use /etc/hosts</H3>
<p><strong>From Carlos Javier Castro Pe\qa on Fri, 03 Jul 1998
Hi,
<br><br>
I have been looking for an answer for my question for a long time,
but I could find no useful solution. I am building a Linux LAN and I
cannot send mail with <tt>sendmail</tt> ! I do not have a DNS server. I have
found a lot of people with the same problem and no answer.
<br><br>
I am using Red Hat 5 with the version of sendmail distributed by
them. My kernel 2.0.33 and networking enabled. The mails don't get
delivered because a 'hostname lookup failure'. The manual of Red Hat
5 says how to configure <tt>sendmail</tt>, but that does not work if you
don't have a DNS server. I was also suggested to change the
<tt>/etc/nsswitch.conf</tt> file, but it didn't work. Can you help me,
please?
<br><br>
Regards, javier
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
I understand your problem and feel your pain.
<br><br>
The problem is that '<tt>sendmail</tt>' is conforming to the
SMTP standards --- which require that it look up the
MX record for any host prior to sending mail to it.
<br><br>
This sort of record (MX) can only be served over DNS (there
isn't any way that I know of to mark an <tt>/etc/hosts</tt> entry as an
"MX" record) (There might be some weird NIS or NIS+ way to do it
-- but I don't know much about those protocols).
<br><br>
I've worked around that here at my house (I don't run DNS
internally --- I just point to a caching DNS server on my
gateway router (a Linux box doing masquerading for
<strong>external</strong> references).
<br><br>
Internally I just use a mailertable that relays all mail from my
systems to the mail router (which then spools them out over
uucp). That mailertable refers to the gateway system using its
IP address (which forces <tt>sendmail</tt> to skip the DNS MX query). On
another system I just use uucp over TCP (for outgoing mail) and
POP (for incoming).
<br><br>
It would be much easier for me to set up DNS and leave it at
that -- but I can be incredibly stubborn sometimes and my main
mail feed is over uucp in any event --- so it's just as easy to
use that internally.
<br><br>
The reason modifying your <tt>/etc/nsswitch.conf</tt> (or
<tt>/etc/host.conf</tt>
--- as it's usually done under the Linux resolvers) doesn't work
for <tt>sendmail</tt> --- but does work for normal programs using other
protocols is that other protocols are normally only interested
in address and reverse address records (using the
<tt>gethostbyname()</tt> and
<tt>gethostbyadd()</tt> library calls). '<tt>sendmail</tt>'
is looking for MX records since it is common to require special
routing for mail.
<br><br>
As I said --- the easiest solution is to create a local DNS
domain or subdomain for yourself. For example I'd create the
<tt>lan.starshine.org</tt> domain and name my local systems things like
<tt>antares.lan.starshine.org</tt> etc. This would allow me to set up an
"authoritive" set of records on my internal LAN and still defer
to my ISP for the virtually hosted <tt>www.starshine.org</tt>
<tt>ftp.starshine.org</tt>, and <tt>mail.starshine.org</tt> (I'd
list myself as an
"unregistered secondary" to my ISP's nameservers for the
<tt>starshine.org</tt> zone).
<br><br>
(I could also just copy his records into my own db and
essentially <strong>lie</strong> to my system about being
authoritative for the
whole zone. This would break any time my ISP changed any of my
publicly accessible address records --- but that would probably
only be a minor issue. It would only affect my systems while
they were resolving my virtual hosts. My ISP would never refer
to my name servers as authorities or secondaries --- and I could
use IPFW (now IPChains) to prevent any such requests from
getting through to my internal nameserver in any event).
<br><br>
The point is that SMTP (the mail transport protocol to which
sendmail defaults) relies on DNS --- and it is not trivial to
get SMTP working with DNS disabled. You can use a different
transport protocol (such as I do with uucp) or you can configure
your systems to use direct IP addresses rather than names
in their configuration files. This last option isn't so
bad if your plan is to set up masquerading and null clients
(a sort of sendmail client that forward <strong>all</strong> of its mail
to a hub, even the local addressed items -- and lets the
hub deal with it).
<br><br>
Naturally I'm glossing over the details here. I have the
<a href="http://www.ora.com/">O'Reilly</a>
'sendmail' and 'DNS & BIND' books here at my side
--- and I have the notes from a week long seminar I took
on these topics (Robert Harker ---
<A HREF="http://www.harker.com">http://www.harker.com</A>)
--- which are also about 1000 pages. It is basically
impossible to comprehensively explain DNS and <tt>sendmail</tt> in
this column, or on the newsgroups and mailing lists.
<br><br>
I hope though that this helps. If you like I'll post
(sanitized) copies of my <tt>sendmail.mc</tt> files and my
uucp configuration files to show a couple of examples of
how I do it --- with the warning that my configuration is
uniquely atypical!
</blockquote>
<p><hr width="40%"></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">More on:
'sendmail' requires DNS ... won't use /etc/hosts</H3>
<p><strong>From Carlos Javier Castro Pe\qa on Thu, 09 Jul 1998
in the</strong>
<a href="news:comp.unix.questions">comp.unix.questions</a>
<strong>newsgroup
</strong></p>
<p><strong>
Dennis,
</strong></p>
<p><strong>
Thank you for your answer. Maybe the most important thing is that
you let me know that I cannot use sendmail for my purpouses wihthout
a DNS server. If I knew that from the beginning, I would have spared
a lot of time trying different configurations. If you don't mind,
I'll post your answer in some Linux mailing lists, because a lot of
people has the same question, and there is no usefull answer.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
Like the rest of the Linux Gazette all of my articles
are covered by the LDP GPL (the variation of the GNU
General Public License that is applied to the Linux
Documentation Project). Please feel free to post, copy,
modify, publish, sell, spindle, mutilate, cite it to
your heart's content.
</blockquote>
<blockquote>
I hope it helps. I don't get into the newsgroups as much
as I'd like (and I spend a bit more of my time in the
<a href="news:comp.text.tex">comp.text.tex</a> and
<a href="news:comp.unix.security">comp.unix.security</a> and
<a href="news:comp.unix.admin">comp.unix.admin</a>
groups when I do make it out there).
</blockquote>
<blockquote>
Over the years I've always drifted from one newsgroup
and mailing list to another (except for the security stuff
--- I always stay up on that, though mostly as a "lurker").
For awhile I was the most frequent poster on the
<a href="news:comp.lang.awk">comp.lang.awk</a>
(formerly the alt.lang.awk) newsgroup. About 5 years ago
I was in the top 5 or 10 posted on
<a href="http://www.compuserve.com/">Compuserve</a>'s "UNIXFORUM"
</blockquote>
<blockquote>
I start by reading and lurking. When I've read for a few
weeks (and usually done some experimentation and other research)
I start to recognize the common questions, and start to piece
things together. After about a month I start answering questions.
For a few months I'll answer questions in the NG or ML. Eventually,
I move on.
</blockquote>
<blockquote>
That turns out to have been good experience for answering
questions in LG --- since the run the gamut of Unix, Linux,
and PC related questions.
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
<font color="navy"><em> You can use a different
transport protocol (such as I do with uucp) or you can configure
your systems to use direct IP addresses rather than names
in their configuration files. This last option isn't so
bad if your plan is to set up masquerading and null clients
(a sort of sendmail client that forward <em>all</em> of its mail
to a hub, even the local addressed items -- and lets the
hub deal with it).
</em></font></strong></p>
<p><strong>
Is it possible to make that sendmail uses IP addresses. I need to
forward the mail of the Linux host, to the Linux gateway. The users
of the Linux host can download the mail from the gateway with POP
and IMAP.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
I think the one time I did this was with a slight variant
of the "<tt>clientproto.mc</tt>" file that ships with
'<tt>sendmail</tt>'
</blockquote>
<blockquote>
It looks like this:
</blockquote>
<pre>
divert(-1)
divert(0)dnl
VERSIONID(`@(#)clientproto.mc 8.7 (Berkeley) 3/23/96')
OSTYPE(linux)
FEATURE(nullclient, `[192.168.1.1]')
</pre>
<blockquote>
... replacing the IP address with the one for your
smart hub or gateway. You use the m4 package (also
include with all recent versions of sendmail) to generate
a cf file from this using a command like:
</blockquote>
<blockquote><blockquote><code>
m4 ../m4/cf.m4 betel.mc &gt; /etc/sendmail.cf
</code></blockquote></blockquote>
<blockquote>
(after making backups of your existing cf file, of course).
</blockquote>
<blockquote>
The important thing is that is will define a line like:
</blockquote>
<pre>
DM[192.168.64.1.1]
</pre>
<blockquote>
... which should prevent '<tt>sendmail</tt>' from using DNS to
do any resolution.
</blockquote>
<blockquote>
Try that and see if it works. I really can't set up a test
environment for that at the moment. If that doesn't work, try
changing the address to an arbitrary name, adding the
"mailertable" <tt>FEATURE</tt> and creating a small mailertable that
points the name at the IP address using the syntax:
</blockquote>
<blockquote><blockquote><code>
myhub: smtp:[192.168.1.1]
</code></blockquote></blockquote>
<blockquote>
Please let me know how it goes.
</blockquote>
<p><A NAME="tag_memleak"><hr width="70%" align="center"</a></p>
<p>The original message in this thrread appeared in Issue 30,
<a href="http://www.linuxgazette.com/issue30/tag_memleak.html"
>Linux Memory Usage vs. Leakage</a></p>
<p><hr width="40%"><p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">Memory Leaks and the OS that Allows Them</H3>
<p><strong>From Thomas L. Gossard on Fri, 03 Jul 1998
<br><br>
Answerguy,
<br><br>
Regarding the recent question you received on memory leakage under
2.0.29. I don't believe it is a memory leakage under the normal
sense where a program quits and won't give the memory back to the OS.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
Once a program has <strong>quit</strong> (exited) it is the OS'
responsibility to reclaim all RAM and normalize all
other resources (process table entries, filed descriptors
and handles, etc) that were allocated to that process.
<br><br>
If it fails to do so, that is a bug in the OS (the kernel
and/or its drivers or core user space processes, like
'<tt>init</tt>'). Under Linux (and Unix in general) it is very
rare to see this sort of bug. (I've never heard of any
kernel memory leaks in Linux).
<br><br>
Under NT there is apparently a problem because the system is
very complex and so much of the programming doesn't respect
the intended modularity between "kernel" and "user space" ---
so DLLs and drivers, (particularly video drivers) will end up
locked into memory with no references. Since I'm not an NT
programmer (and not a systems programmer of any sort I'll have
to accept the considered opinions of others who've said that
this is why NT has a notorious poor stability record compared
to any form of Unix. The fact that they've added some process
memory protection and imposed some modularity and process
isolation means that NT's stability is orders of magnitude
better than MS-DOS, Windows 3.x, and Windows '95 ever were.
However, it's reported to be very poor compared to any of the
multi-user OS' like Unix or VMS.
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
I also use .29 and saw the same problem. I sent out several e-mails
and found out that what is really happening is the OS has the memory
but is not reporting it as free but has saved it for cache purposes.
Notice the guy with the question said "<tt>ls</tt>" the first time took
memory but not the second time. A memory leak will take the memory
each time. The OS is keeping the memory for itself. The real
problem is in the way the OS or <tt>top</tt> or whatever is reporting the
memory usage and the way we expect to see it.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
The way that memory is used by the Linux cache is
fairly complex. Consequently the output from '<tt>top</tt>' and
'<tt>free</tt>' and '<tt>vmstat</tt>' are not easy to interpret (and I
don't consider myself to be an expert in them by any
means).
<br><br>
The intended design is supposed to use all "available"
free memory for disk caching (and I guess the 2.2 kernels
will implement disk and directory entry caching ---
which should yield much better performance for several
reasons). It is certainly possible that there were bugs
in the caching and memory management code in some of the
2.0.x kernels. You could certainly go to the Linux
kernel mailing list archives and read through the various
change summaries to see. Or you could ugrade to a
newer kernel and look for symptoms.
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
The only true way to check on the problem seems to be to execute
some memory hog routines, like graphics and watch the swap useage.
In particular my mail program seemed to suck up 8 or 9 megs at a
time yet even going in and out of that and xv my swap was barely
touched. With a sufficient memory leak after a period of time the
swap should see a great deal of activity due to the lack of memory.
<br><br>
Tom G
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
Most memory leaks are in user space --- in long running
daemons like '<tt>named</tt>', a web server, '<tt>sendmail</tt>', X, etc.
Your test doesn't isolate the cuase of the memory leak.
I think my message covered some suggestions to do that
(like run with init=/bin/sh and run some tests from there)
<br><br>
If exiting doesn't return your memory to availability for
cache/free space --- you have a problem in your kernel.
However, it can be deceiving. For example --- I remember
a situation where BIND ('<tt>named</tt>') was leaking --- and it
looked like '<tt>sendmail</tt>' was the culprit. In actuality
'<tt>sendmail</tt>' was making DNS queries on the named, causing
<strong>it</strong> to lose it's cookies. (At the same time that
'<tt>sendmail</tt>' was segfaulting (dying a horrible death) because
the old resolver libraries (against which it was linked)
were return <strong>lots</strong> of MX records for sites
like <a href="http://www.compuserve.com/">Compuserve</a>
and <a href="http://aol/com/">AOL</a> (which back then had
just started deploying
dozens of mail servers each --- so that one DNS request
would return more records than the resolver could handle).
<br><br>
At first I thought someone had discovered a new remote
<tt>sendmail</tt> exploit and was hacking into my site (this was
actually on an old SunOS box). Then I realized that it
was related to DNS --- and finally I upgraded to a newer
DNS and set of resolver libraries. The newer version of
<tt>named</tt> still had a memory leak back then --- but my other
sysadmin friends said "Oh yeah! It's been doing that ---
just set up a '<tt>cron</tt>' job to kill it once a day or so"
(I'd been sure that it was my fault and that I'd built
and installed it incorrectly).
<br><br>
As for the "true way" to look for memory leaks ---
I think most programmers would disagree with your
analysis on this one. They might suggest Electric Fence
(a debugging form of the malloc() and new() calls that's
designed to catch the sorts of allocation and reference
problems that '<tt>lint</tt>' won't --- and that might not be
immediately fatal). Another option might be for someone
to link this with Insure++
(<A HREF="http://www.linuxjournal.com/issue51/2951.html"
>http://www.linuxjournal.com/issue51/2951.html</A>) and do
their testing with that.
<br><br>
Certainly, we, as sysadmins are usually constrained
to more hueristic and less "invasive" approaches ---
but we definitely want to isolate the problem to a
specific component (program, module, kernel configuration
whatever) or combination. That's what "tech support"
is all about.
</blockquote>
<p><A NAME="tag_multihead"><hr width="70%" align="center"</A></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">X Window with two monitors...</H3>
<p><strong>From Mark Thomas Mercado on Tue, 30 Jun 1998 in the
<a href="news:comp.unix.questions">comp.unix.questions</a>
newsgroup
<br><br>
I've looked around on the web, and couldn't find any documentation
on setting up X with two monitors (myhost:0 and myhost:1)... I would
love to RTFM if anyone could point me in the right direction...
<br><br>
Thanks,
<br>Mark.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
This would usually be called "multi-headed" mode and
the different screens would be addressed as "<tt>myhost:0.0</tt>"
and "<tt>myhost:0.1</tt>" -- "<tt>myhost:1.0</tt>" and
"<tt>myhost:1.1</tt>" (etc) would refer to a different server or
instance running on the same machine.
<br><br>
I don't know what this means on other forms of Unix
--- but I think you'd usually see it on a system that
was hosting multiple X Terminals via XDMCP. On my Linux
boxes I usually see it as an extra instance of the X server
running on a different virtual console (so my wife and
I can each have a running copy on any of the systems
around the house without having to disturb the other's).
<br><br>
In our case we run <tt>startx -- :1</tt> to start the 2nd instance
of our X server. We can then switch between them with
the [Ctrl]+[Alt]+[Fx] sequence (or the [Alt]+[Fx] sequence
to get to either of them from any of our text mode virtual
consoles. (If you don't use a PC Unix that supports
VC's this probably won't make any sense -- don't worry
about it).
<br><br>
Getting back to multi-headed support:
<br><br>
This depends on your X server. Last I heard XFree86 servers
(the suite of X servers that's most commonly used with Linux
<a href="http://www.freebsd.org/">FreeBSD</a>,
<a href="http://www.netbsd.org/">NetBSD</a> (PC) etc) don't
currently support multi-headed operation.
<br><br>
I know that some of the commercial X servers for Linux
(and presumably FreeBSD, etc) support it. Unfortunately
I've never used a PC or Mac Unix that was configured
this way. So, I don't know how it works. I've used an
old Sun system set up this was --- but I didn't configure
it or even look at it very closely --- it was just used
for some compatability at a place where I was working,
so I barely touched it.
<br><br>
I've used Macs that were multi-headed. That was a piece
of cake to configure. I also noticed that Win '98 has
this feature available --- so it might become much more
common in the next year or so.
<br><br>
Anyway, check out the XFree86 FAQ at
<A HREF="http://www.xfree86.org/">http://www.xfree86.org/</A>
for more pointers.
</blockquote>
<p><A NAME="tag_cdr"><hr width="70%" align="center"</A></p>
<p>The beginning of this thread was published in Issue 30,
<a href="http://www.linuxgazette.com/issue30/tag_cdr.html">DAO
(Disk At Once) CDR? Stump Me!</a></p>
<p><hr width="40%"></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">DAO software for linux? </H3>
<p><strong>From Mark Heath on Sat, 27 Jun 1998
<br><br>
On Thu, 25 Jun 1998, Jim Dennis wrote:
<br><br>
<font color="navy"><em>
Well, you have me stumped.
<br><br>
I don't know anything about the difference between DAO and
other forms of CDR recording. Normally, I'd spend an</em></font>
<br><br>
There are 3 different types of cd recording:
Track at once, Disk at once and session at once.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
I figured it was probably something like that.
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
cdrecord, cdwrite and many others do Track at once.
<br><br>
Its where the software writes a track turns off the laser, turns it
back on then writes the next track, after all the tracks are done it
writes the leadin and lead out tracks.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
I've always been curious about multi-session CD's and
how they maintain the directory/indices on them. But never
curious enough to look for the rainbow of books that define
the spec. --- more of a "layperson's armchair" curiousity
that would be satisfied with a five minute description and
a couple of diagrams.
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
With disk at once, the laser is turned on, the leadin is written,
then the first track, second track etc, then te lead out and then
the laser is turned off.
<br><br>
The has the advantage of being able to master music disks which have
no pauses in between the tracks, which is manditory for TAO.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
I think you mean "which is an avoidable result when using
TAO." It's just a semantic nitpick --- but I had to read
this statement several times to guess what you (probably)
meant.
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
Session at once is basically multi session DAO.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
Huh? I am also a bit foggy on multi-session CD's ---
but I'd thought that the sessions on multi-session CD's
were supposed to be on track boundaries. Are you saying
there's a multi-session per track option?
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
<font color="navy"><em>
hour or two hunting around on Alta Vista, Yahoo!, Savvy
Search, DejaNews, etc and pulling out more of my hair to
find out. However, I have a book to write and a wife to
feed, and it is just too close to my deadline for me to
wait until tomorrow.
<br><br>
So, what is DAO and why would you need it? What is the
difference between cdrecord and cdwrite (the one I use
with my Ricoh CDR)? Have you tried them both? What is
MMC? Who is Jeff Arnold? Who are HyCD and should we
</em></font>
<br><br>
cdrecord is the replacement for cdwrite, Jorg Schilly supports every
unix platform that can have a cdr plugged into.
<br><br>
MMC is the latest multi media specification for CDRs so that all
drives have the same command set for recording.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
I did guess that MMC stood for "multi-media CD" or
"multi-media CDR." I take it that MMC doesn't define
a standard for DAO mode recording? (Or were you simply
saying that your HP SureStore CDR doesn't support the
MMC CDR spec?).
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
Jeff Arnold is synonimous (sp?) with DAO software he wrote the First
and most widely used DAO software for DOS. Its a pity that he won't
support Unix because his tools are very unix like.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
Maybe he could be bribed. Does he distribute his package
as shareware? Would he be willing to license the code
and let someone else do the port?
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
HyCD are who alta vista turned up when I did A search for +unix +cdr
+software. They support mixed mode disk duplication, which why I
thought it did DAO. Unfortunately it does not.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
I'm afraid to ask.... what is the difference between
"mixed mode" and DAO? Is it that HyCD can duplicate CD's
that have mixed data and audio (etc?), and/or that it can
read tracks that were laid down in TAO and DAO (and other?)
modes but it must write them in TAO?
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
I was trying to eliminate a need for my Windows box but things keep
popping onto it.
<br><br>
I use it for 3 things:
<ol>
<li>Audio manipulation. I'm waiting for a good tool (Atech is being
developed) to do this under Linux ala Cooledit (not to be confused
with the Linux text editor)
<li>DAO writing.
<li>Epson Stylus colour printing. Ghostscript just doesn't match the
quality.
</ol>
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
Well, hopefully this will inspire someone out there to
"raise the bar" and help you purge Windows from your system
at long last.
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
I did use it for Playstation development but now I have the tools for Linux.
<br><br>
Thank you very much for your help.
<br>Mark.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
Well, I obviously wasn't much help --- but we'll see if
our readership will give us a scoop...
</blockquote>
<p><hr width="40%"></p>
<H3><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">Mark Heath fills us in...</H3>
<p><strong>From <em>The Answer Guy</em> on Mon, 29 Jun 1998
<br><br>
On Sat, 27 Jun 1998, Jim Dennis wrote:
<br><br>
<font color="navy"><em>
Its where the software writes a track turns off the laser, turns it
back on then writes the next track, after all the tracks are done it
writes the leadin and lead out tracks.</em></font>
<br><br>
I've always been curious about multi-session CD's and
how they maintain the directory/indices on them. But never
curious enough to look for the rainbow of books that define
the spec. --- more of a "layperson's armchair" curiousity
that would be satisfied with a five minute description and
a couple of diagrams.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
I've never successfully written a multisession CD either. I've made a
few open disks but never managed to import the previous session properly
so I didn't bother trying to continue writing to them. Just in case I
lost the first session.
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
<font color="navy"><em>Session at once is basically multi session DAO.</em></font>
<br><br>
Huh? I am also a bit foggy on multi-session CD's ---
but I'd thought that the sessions on multi-session CD's
were supposed to be on track boundaries. Are you saying
there's a multi-session per track option?
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
This is correct. For example you can write 3 tracks multisession using
DAO. Then come back later and write a few more tracks using DAO.
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
<font color="navy"><em>
MMC is the latest multi media specification for CDRs so that all
drives have the same command set for recording.</em></font>
<br><br>
I did guess that MMC stood for "multi-media CD" or
"multi-media CDR." I take it that MMC doesn't define
a standard for DAO mode recording? (Or were you simply
saying that your HP SureStore CDR doesn't support the
MMC CDR spec?).
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
The 4020i doesn't support MMC. Only new drives do (most of the IDE
CD-Rs do, and the CD-RW do)
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
<font color="navy"><em>
Jeff Arnold is synonimous (sp?) with DAO software he wrote the First
and most widely used DAO software for DOS. Its a pitty that he wont
support Unix because his tools are very unix like.</em></font>
<br><br>
Maybe he could be bribed. Does he distribute his package
as shareware? Would he be willing to license the code
</strong></p>
<dl><dt><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
He does. The downloadable version is available at:
<dd><code><A HREF="http://www.goldenhawk.com/"
>http://www.goldenhawk.com/</A></code>
</dl>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
and let someone else do the port?
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
I'd really like that but I dont know how Jeff feels about Linux.
<br><br>
He seemed rather hostile when I asked about doing a linux port.
All his reply was: no.
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
<font color="navy"><em>
HyCD are who alta vista turned up when I did A search for
<tt>+unix +cdr +software</tt>. They support mixed mode disk
duplication, which why I thought it did DAO. Unfortunately it
does not.</em></font>
<br><br>
I'm afraid to ask.... what is the difference between
"mixed mode" and DAO? Is it that HyCD can duplicate CD's
that have mixed data and audio (etc?), and/or that it can
read tracks that were laid down in TAO and DAO (and other?)
modes but it must write them in TAO?
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
Mixed mode is simply multiple tracks with different data formats.
The most common is Computer games with 1 data track followed by several
Audio tracks, these can be written with TAO.
<br><br>
The main difference between DAO and TAO is that for DAO the laser is
never turned off during the recording. You can even do a single track in
DAO mode. The difference here is that DAO disks can be taken to CD
publishing company while TAO disks can not (due to gaps in the track
data, where the laser has been turned off)
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
Well, hopefully this will inspire someone out there to
"raise the bar" and help you purge Windows from your system
at long last.
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
Well I did this some time ago, purge windows. Then a piece of hardware
came out which was built into the motherboard so I built a new machine and
put both Linux and 95 on it.
<br><br>
My primary box is Linux only.
</blockquote>
<p><strong><img src="../gx/dennis/qbub.gif" alt="(?)" width="50" height="28"
align="left" border="0">
Well, I obviously wasn't much help --- but we'll see if
our readership will give us a scoop...
</strong></p>
<blockquote><img src="../gx/dennis/bbub.gif" alt="(!)" width="50" height="28"
align="left" border="0">
Well Its always good to hear that someone understands and says Lets see
what we can do.
</blockquote>
<!--================================================================-->
<P> <hr> <P>
<H5 align="center"><a href="http://www.linuxgazette.com/copying.html"
>Copyright &copy;</a> 1998, James T. Dennis <BR>
Published in <I>Linux Gazette</I> Issue 31 August 1998</H5>
<P> <hr> <P>
<!--================================================================-->
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif"
ALT="[ Table Of Contents ]"></A>
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif"
ALT="[ Front Page ]"></A>
<A HREF="lg_bytes31.html"><IMG SRC="../gx/back2.gif"
ALT="[ Previous Section ]"></A>
<A HREF="./searls.html"><IMG SRC="../gx/fwd.gif"
ALT="[ Next Section ]"></A>
<P> <hr> <P>
<!--================================================================-->
<P> <hr> <P>
<H5 align="center"><a href="http://www.linuxgazette.com/copying.html"
>Copyright &copy;</a> 1998, James T. Dennis <BR>
Published in <I>Linux Gazette</I> Issue 31 August 1998</H5>
<P> <hr> <P>
<!--================================================================-->
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif"
ALT="[ Table Of Contents ]"></A>
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif"
ALT="[ Front Page ]"></A>
<A HREF="lg_bytes31.html"><IMG SRC="../gx/back2.gif"
ALT="[ Previous Section ]"></A>
<A HREF="./searls.html"><IMG SRC="../gx/fwd.gif"
ALT="[ Next Section ]"></A>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P>
<!--===================================================================-->
<CENTER>
<img height=3 width=100% src="./gx/searls/srlzline.gif">
<H2><FONT SIZE=+3>B</FONT>ETTING ON <FONT SIZE=+3>D</FONT>ARWIN, <FONT SIZE=+3>P</font>ART <FONT SIZE=+3>2</FONT>: <FONT SIZE=+3>W</FONT>ATCHING THE <FONT SIZE=+3>M</FONT>UCK<BR>
<FONT SIZE=4>MARC ANDREESSEN AND TOM PAQUIN ON NETSCAPE'S OPEN SOURCE STRATEGY, ONE MONTH LATER</FONT></H2>
<BIG><A HREF="http://www.linuxjournal.com/issue52/2984.html">PART 1</A></BIG>
</CENTER>
<img height=3 width=100% src="./gx/searls/srlzline.gif">
By Doc Searls<BR>
May 16, 1998<BR>
<P>
<CENTER><I><IMG SRC="./gx/searls/srlzline.gif" WIDTH="432" HEIGHT="2">
<BR>
</I></CENTER>
<P>
On May 13, I followed up on the April 8 interview, just before the photo shoot for the June issue of Linux Journal, where the first interview would run. While little more than a month isn't much time to measure distance on an evolutionary path, I thought Internet Time might accelerate things a bit, so I began by asking Tom how things now stood.
<p>
<hr>
<H4 ALIGN=CENTER>Waiting for tyranosaurs</H4>
<p>
DOC: I'm interested in seeing how the conversation looks different than it did a month ago when we still had muzzle blast. Back then we were talking in evolutionary terms: "betting on Darwin" was how you put it. Have you seen any new life forms start to emerge?
<p>
TOM: Some life forms have begun to emerge, but there haven't been too many tyrannosaurs stomping out of the muck. There have been <I>some</I> interesting life forms, though. I'm really happy with the XML parser that was donated. I'm pretty happy with a couple of low-hanging fruit for external ownership. I think that's moving along. On the whole it's been very pleasing; but I don't think it's fair to say the initiation phase is complete. We haven't really gotten the entire Communicator out there yet. For example, the Messenger source &#151; mail, news and all that &#151; is just flowing out now, starting yesterday.
<p>
MARC: There hasn't been a snapshot of the code that's ... done, or anything like that. A fully stable release. So we're still early here.
<p>
TOM: We're way, way away from a fully stable release.
<p>
See, most public sources work by a process of piling on to something that works but isn't complete. Somebody goes out and says &quot;Here's something that works, everybody. Let's all pile on.&quot; As opposed to &quot;Here's a pile of code that's early in its development, that we're going to turn into something.&quot;
<p>
So some people are piling on, diving in, and what we're seeing at this early stage are chunks of code that are not tightly interwoven with the existing code. The XML parser is a perfect example. A guy writes an XML parser on the side, and says &quot;Here it is. It parses XML. It produces a data structure. You can take the data structure and do stuff with it.&quot; Okay, that's really valuable and straightforward. It contributes, and it's a good thing.
<p>
What we haven't had is, say, ten guys from IBM popping up and saying &quot;Okay, we thoroughly understand this product now. We're ready to do everything we can to make it do what we want it to do.&quot; It's too early for that. And it's a little hard to say when and how that will happen. What I've been beating on in my shop is: &quot;Let's get this thing to a point where people feel like it's a product that needs polishing, as opposed to a pile of code that needs to be turned into a product.&quot; When we're at that stage, we'll get more people contributing.
<p>
Meanwhile, we're not starving for contribution; but we're working on a chicken/egg problem that has to be solved one way or another. Our goal is to to toss a chicken in the ring and give it away. And that's pretty much what we've been doing all along, though not all at once. We've got parts of the source out, and we're finishing other parts. The Communicator 5.0 team is working away.
<H4 ALIGN=CENTER>The world of all possibilities</H4>
<p>
DOC: Let's take an example of something that might come from the outside that we touched on in our last talk. At that point you didn't have an ORB (Object Request Broker). Has anybody come up and created one?
<p>
TOM: I don't think anybody has done an ORB yet.
<p>
MARC: We had the Visigenic ORB, but I think it's gone now. We've been trying to keep the client pretty small.
<p>
TOM: The problem wouldn't be the ORB, it would be getting it to behave in a useful manner.
<p>
DOC: In a world of all possibilities, and this may not be possible, what would happen if somebody came along and created a DCOM (Microsoft) ORB? Would you care?
<p>
MARC: Contribute it.
<p>
DOC: So you're agnostic about object models at this point.
<p>
MARC: On the application server side, it's both DCOM and CORBA.
<p>
TOM: I'm not agnostic if you produce an object model that binds me to a platform. So, when any proposal is made to Mozilla that is not going to migrate to a cross-platform universe, including platforms I don't know about today, I won't take it on. For example, if somebody says, &quot;I want to contribute this thing to Mozilla; but I don't want to contribute the source. I only want to give you a binary. It'll run on all the platforms you're currently supporting.&quot; That's not really what Mozilla is all about. I may have to make trade-offs I can't see today; but that's not really what we're for. What we're for is platform independence. Any suggestion, object model or otherwise, we're open to. If you've got a platform issue, I want to solve it. But guess what: we can pile a million people on solving it.
<p>
Now the Raptor thing that was contributed halfway through April, they have a thing they call XP/COM, which is a small, lightweight component model thing... I really don't know what kind of mapping that has; but I think it tries to solve the same kind of problems: load a module, unload a module, interrogate a module for supported interfaces, blah blah blah.
<p>
MARC: But it's not OLE, it's just COM. That is, it's built on the COM primitives. It uses the COM ideas, but it's not OLE.
<p>
TOM: He knows more about it than I do.
<p>
MARC: Barely.
<p>
DOC: This interests me because this is one of those areas where we've got a large delta between the real and the ideal. A year ago we were all talking about how the world was going to be objects, and that one object model would take care of that, and it looked like a big argument was brewing between two different object models. Now we're you're saying it's still too early in the evolution toward this thing even to talk very much about it.
<p>
MARC: I would argue that it's happening, but from the bottom up. Much as to say that C++ and Java intrinsically programs to consist of objects; but it's a programming tool more than a concern right now. But a distributed object world is quite a ways off. It presumes the existence of everything from management systems to application servers, a whole new generation of APIs and many other things that still don't, for the most part, exist. So it has to be built incrementally.
<p>
DOC: And you expect the Open Source world to deliver that.
<p>
MARC: It could, but it's a little bit tricky. There are sort of three worlds that are relevant here. One is the Open Source world. Another is the professional commercial software development world. The third is the theoretical world where you find most of the people who are passionate about creating a world full of distributed objects. Most of these guys are coming from a relatively intellectual orientation. And so there needs to be an intersection between those three worlds. The intellectuals have traditionally tried to appeal to the commercial software developers, with limited success. They could attempt to appeal to the Open Source developers, perhaps with more success. We'll see.
<p>
Meanwhile the main problem is that your average commercial software developer is far too busy trying to put products out the door to try to create a world full of distributed objects.
<p>
TOM: On the other hand, there are some objects that they find themselves constantly revisiting. So if they could agree on a nomenclature and interface and get it well-known that, okay, a color-picker is a color-picker, and we can spell it &quot;c-o-l-o-r&quot; or &quot;c-o-l-o-u-r&quot; so let's make a decision move on with it. That's how it could grow up. Incremental agreement based on the need for everybody to move on. But when you sit down and say &quot;let's come up with an object model to solve the planet's problems,&quot; it ain't gonna happen in an afternoon.
<p>
DOC: Since the dawn of time there have been ideals, and this is the one of the latest of these, I suppose. Looking back, I can remember when &quot;machine independent software&quot; was one of those. It's still with us.
<p>
MARC: Machine independent software happened with FORTRAN.
<p>
DOC: I remember it from, like, 1980.
<p>
MARC: At one of these Java events somebody played a video of an IBM promotional film from 1954, about one of the structured programming languages of the time, and the pitch was that you could write it once and run it anywhere. (laughter)
<p>
DOC: Let's look at the Open Source thing for a moment. There's a population out there of Open Source guys that you say is moving toward, or already has, critical mass. The statistics work such that somewhere in this larger population there will emerge some original solutions to problems. But solving problems and pursuing ideals are very different things. One tends to be incremental and trial-and-error while the other tends to be theoretical. Now I'm curious about what brings the Open Source world &#151; this practically-oriented problem-solving population &#151; into the market conversation.
<p>
I just saw <A HREF="http://www.zdnet.com/intweek/printhigh/51198/nt511.html">an interesting story in Interactive Week</A> (http://www.zdnet.com/intweek/printhigh/51198/nt511.html) about how Linux is in the intranet OS conversation, but not at the top executive level. It tells how this IDC guy went to the chief financial officer at a bank in New York, and the guy said they weren't using Linux, because &quot;they didn't want to run the bank on unsupported software.&quot; But when the guy talked to the IS staff, they said they had a hundred servers running on Linux. So when this guy told the staffers what the CFO said, they said he's the guy who gave them a mandate with no budget, so they went out and got Linux.&quot; That kind of thing got no coverage before, and now it's getting some.
<p>
So where has the browser conversation moved? Has it changed from &quot;hey, they've released the family jewels&quot; to &quot;Hey, isn't it interesting what's happening with those jewells?"
<p>
MARC: People are still trying to figure it out. There's quite a bit more knowledge of the product that needs to gather before the understanding breaks through.
<p>
TOM: There are some cutting edge people who we'd rather not name who get it, and who are saying &quot;Netscape did that? Yup. Let's go.&quot; But they're still in the minority.
<p>
MARC: And there are some people at the Department of Defense who are responsible for some of their investment directions. Internally they find a lot of this highly attractive. Because historically they've built all their own systems, and they can fix them if something goes wrong. But since that's prohibitively expensive, they've moved to commercial off-the-shelf hardware and software. The problem with that, however, is that when it needs fixing they have to call a Microsoft 800 hotline just like everyone else. And they're not happy about the idea of building the entire U.S. military infrastructure just on Microsoft products, for obvious reasons. So the prospect of an Open Source world for them is a very exciting one. The prospect of Linux specifically is exciting because it gives them something that gets them the benefit of commercial off-the-shelf software without the risks they see with single commercial sourcing.
<p>
The whole point of commercial off-the-shelf for the military is a much broader base of investment happening by a broader community that they can take advantage of, rather than having do it all themselves. Open Source gives them many of those benefits, plus some new ones, like: they can fix it when it breaks, and they're not dependent on an outside vendor. And they certainly have the technical ability to do what they need to do to an existing piece of code. <p>
All of which is why they are getting <i>extremely</i> interested in this development, and in Linux especially. Which is why I think we are going to see the intelligence community be an early adopter of this stuff.
<p>
DOC: How much do the Linux and Open Source conversations overlap?
<p>
MARC: The Open Source conversation is mostly around specific examples. Linux, Mozilla, Apache. Because the world doesn't yet know is how to extrapolate Mozilla, Linux and Apache to more things. So your commercial IT world looks at it and says "this is never gonna fly with an Oracle database, or with SAP manufacturing applications. So we say fine, let's concentrate on the areas where it's easy to apply the kinds of things we can do today.
<H4 ALIGN=CENTER>Burning cash</H4>
<p>
DOC: This conversation is so far away from what's going on at Microsoft that it might be worth visiting the difference. Marc, tell me more about how you understand Microsoft's vertical integration strategy &#151; especially since what you said about it last time got munged by my tape recorder.
<p>
MARC: Well, what I said before was spontaneous. I'm not sure I can repeat it exactly.
<p>
TOM: Maybe we can reconstruct from what led into it.
<p>
DOC: Okay, I remember a scenario. What would happen if the whole client world is running on Explorer?
<p>
MARC: Yeah, if the world goes 100% Microsoft clients, then Microsoft locks down the protocols and the APIs and the access methods to the servers, and then takes over the servers.
<p>
TOM: As well as the content creation tools.
<p>
MARC: &#151;As well as the tools, and then the next step is the content services themselves. Basically I think what we were talking about was, you see over and over again in unrelated industries, a pattern. Historically, computer industries were totally vertically integrated. IBM, DEC, Apple and other companies all built verticalized businesses and then found they were under attack by vendors like Intel and Microsoft and Dell and others that came in with a more open approach at some horizontal level. So if you've got someone who's a vertical provider, with the cost structure implied by that, in a rapidly exploding market, and it's not able to fulfill the market demand fast enough, then that vendor is subject to attack by horizontal providers who are coming in with fundamentally better economics, such as Microsoft with commodity software and Intel with commodity chips, and Dell with commodity PCs.
<p>
But then what happens is you get into these situations &#151; specifically the one Microsoft is in today &#151; where, due to increasing returns and a series of other developments, you have a monopoly, for example with the operating system. So, at that point, for to grow faster than the market's growing, the logical thing is to leverage your monopoly vertically up into adjacent spaces in the stack.
<p>
TOM: It's required.
<p>
MARC: It's required. They have to, or at least they have to try, to grow faster than the market is growing. That is Microsoft's big problem right now. And they thought they were well on their way to doing exactly that. They thought they were going to leverage the client straignt onto the server. If the world was using a Windows desktop and not all these browsers, they would have been done with this by now. But this browser thing came along between Windows and the user, so they have to establish control of what turned out to be a new level: the browser level, the network user interface level. If they can successfully go to 100% on that, then they can by inference lock down the protocols on 100% of the servers.
<p>
In a networked environment, the desktop/browser is the moral equivalent of the TV tuner for content and services. They're going to leverage up into those spaces exactly the same way. So what they're basically doing is going from a horizontal strategy to a vertical one: from a position of monopoly in one horizontal slice &#151; where they have monopoly profits &#151; and using those monopoly profits to subsidize verticalizing.
<p>
And they have a fundamental economic advantage in that they have all this monopoly cash coming in. So they can arbitrarily subsidize losses in other markets.
<p>
DOC: Which is why they could nail the KMPG/Peat Marwick deal. (Essentially giving away something at a loss &#151; in this case service &#151; that Netscape needed to charge for, and winning the business that way.)
<p>
MARC: Right. They can write a check to get whatever business they want in a new market, because they have all these monopoly profits coming in from existing markets where their control is absolute. Which is why in the Senate hearings, Senator Cole's questions to Gates about his profit margins were actually very relevant. One of the ways you can tell when a company really has a monopoly is by their profit margins. Because normally competitive technology markets tend to have ten, twenty, twenty-five percent profit margins, net profits. Not forty to sixty percent. So that's one of the ways to see if a monopoly exists.
<p>
They actually have so much cash coming in the door now that they actually have a problem nobody has ever had before in this market, which is to find ways to burn as much cash as fast as possible, and in as many creative ways as possible: ways that are going to lose money in the short term. So it is in their interest to burn cash. This is an interesting position to be in.
<p>
DOC: And they can do it.
<p>
MARC: Yes, but it isn't just that they can, it's that they <U>need</U> to. Because if they don't they'll report even bigger profit margins and the regulators will get real interested. They don't want to prove they have a monopoly. Burning cash is one way to reduce the appearance of monopoly.
<p>
Now, this strategy only works as long as you have your core monopoly. The minute you lose that monopoly, you have to compete in that core horizontal slice, and your margins go down. And every other part of your stack becomes vulnerable to attack because you can't sustain your tactics. You don't have all this cash coming in, subsidizing everything.
<p>
DOC: I see you compete with that monopoly by changing the game. You did that with the browser in the first place. You made the browser the network interface; and since most of the real business of computing happened on the network, you changed everything. Suddenly what you saw at every trade show, regardless of platform, was a sea of monitors all with browsers that masked the OS in each case.
<p>
MARC: Right.
<p>
DOC: And in '96 you did the same thing with LDAP. Changed the game.
<p>
MARC: Um hmm.
<p>
DOC: The way things were headed before that, Microsoft was going to squeeze the world into the Cairo directory.
<p>
MARC: Right. ODSI. Open Directory Services Interface (a Microsoft protocol), was going to be the way everybody was going to do it. Same with mail: MAPI on one side versus POP and SMTP on the other.
<p>
DOC: So I'm wondering if you imagine something will arise out of the Mozilla conversation that's a game-changer like the browser itself was, or LDAP was.
<p>
TOM: It certainly will. It's a question of when.
<p>
MARC: My guess is that there will be a grad student somewhere, say the Netherlands, who's doing a Ph.D. dissertation on a new advanced user interface. And instead of just building something that nobody will ever see, they'll build it on the Mozilla source code base and release it to the Net. Why not? It's not going to sell anyway &#151; it's a Ph.D. dissertation, after all. They're going to want as many people as possible to see it, and to get as many job offers as possible. And it's going to change the world. So my guess is we're going to see stuff like that popping up over the next couple of years. No reason not to. We've got something like critical mass here. We have virtually the entire world of computer professionals, especially in the highly creative areas of research and computer science.
<p>
TOM: And imagine the alternatives. Here we're going to have this public source and all these people will have the freedom to work in this space, in a space that a hundred million people use in their daily lives all the time. Can you say there won't be any such innovations in the next five years? That's almost ludicrous.
<H4 ALIGN=CENTER>The free world</H4>
<p>
MARC: It's interesting that one of the changes that has happened in the market over the last five years is that client software is now free. Not just browser software and email software, but personal organizers and word processors, spreadsheets. It is now impossible in the software market to make money doing client software of any kind for anything. Microsoft Outlook, for example, is wiping out the independent personal information management (PIM) market.
<p>
So you can't expect new innovations to emerge out of the commercial software world that will be highly relevant to end users that come in the form of client software. You can expect them to come as on-line services, perhaps. Or as server software, perhaps, because you can still make money on those without being Microsoft. But innovation in end user software is only going to come out of the Open Source community. It's not going to come out of Microsoft. They don't do innovation here, and they don't have to. And you know the venture capitalists are not going to fund the next company to do the next computer interface, because there's no way to make money on that. And that could end up being the biggest threat to Microsoft two, four, five, ten years from now. Because that's when its core monopoly comes under attack by something that is technologically far superior, with a business model that's far superior. That's when they're really in trouble. Because free is a pretty good business model.
<p>
DOC: And you're counting on that grad student out there, writing in Mozilla code, to come up with the killer paradigm shift on the client side.
<p>
MARC: First, it would be better for that to happen than for it not to happen, regardless of whether or not we benefit directly. De-stabilization and the heterogeneity of the market is good for us. Stabilization and homogeneity is bad for us. So that's the first part of the decision tree. The next part of the tree is that as these things happen presumably there will be ways for us to make money, either through online service offerings or server software offerings or programming tools or something that wraps around that and provides commercial support.
<p>
DOC: So it's wrong to believe it was ever in Netscape's interest to have stabilization occurring around itself.
<p>
MARC: That could be true.
<p>
DOC: People default to thinking that every company wants a stable situation where they've locked something down and don't need to do anything new in that space for a long time &#151; until something comes along that changes the business so totally that they have to start all over again.
<p>
MARC: Yeah. Let me put it this way. Every company would like to be in Microsoft's situation, a completely stable situation, with abundant money flowing in. But if that's not reasonable, then the next best thing is to have a constantly de-stabilized situation. It means you have to keep running and doing new things. But that's what makes it fun.
<p>
DOC: And you want Microsoft's tractor trailer to chase your four-wheel drive all over new landscape.
<p>
MARC: Sure. Definitely.
<H4 ALIGN=CENTER>Links</H4>
<p>
The <a href="http://home.netscape.com/comprod/products/communicator/white_papers/source.html">Netscape Open Source White Paper</a> provides an excellent background on Netscape's approach to the open source movement.
<p>"<A HREF="http://www.wired.com/wired/5.09/newrules.html">New Rules for a New Economy</A>" is an outstanding piece that ran recently in <A HREF="http://www.wired.com/">WIRED</A>.Most of Netscape's moves have been in complete alignment with Kelly's rules &#151; which makes sense because in many ways Netscape wrote them. Or at least discovered them.
<p><A HREF="http://www.scripting.com/davenet/94/10/platformischinesehousehold.html">A Platform is a Chinese Household</A> gives<A HREF="http://www.scripting.com/dwiner/">Dave Winer</A>'s alternative software community metaphor.
<p>
<hr align=center width=70%>
<img height=3 width=100% src="./gx/searls/srlzline.gif">
<!--===================================================================-->
<P>
<center><H5>Copyright &copy; 1998, Doc Searls <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./lg_answer31.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./canal.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Copying Red Hat Legalities</font></H1>
<H4>By <a href="mailto:eric.canal@supelec.fr">Eric Canal</a></H4>
</center>
<P> <HR> <P>
I posted a question last month and I received help from some people and
some others asked me to send them my results. I think that this article can
interest some of your readers that's why I send it to you. You can make all
the arrangements you want and I don't care for the mention of my name. Do
what you want... I just want to collaborate at my level to the fantastic
Linux Community.
<P>
I insist on only one thing : thanking all the people that helped me about
this topic : the burning of a RedHat CD ROM.
<P>
<P>
Here is a sum up of all the information I received and some additional one
that I discovered in my experiments.
<P>
As I am Francophone, i hope that you won't find to many English mistakes. :(
<P>
1. It is legal to make his own RedHat CD ROM if you mention all the
copyrighted stuff and the different owners of trademarks, etc.
2. It is cheaper to buy a CD from different organizations such as RedHat,
InfoMagic or CheapBytes if you are connected to the Internet with a modem
and if you pay your communications. The only interesting way to burn a
RedHat CD ROM is when you have a fast Internet connection and above all if
you don't pay for it (for example in an university or at work (your boss
will be happy for the bill ;p))).
3. You need all the RPMS files, all the "instimage" directory and the file
"i386". With this email you will find an attached text file that describes
all the directories involved in a RedHat CD ROM, but most of them are
facultative. You have to respect the hierarchy between the directories you
want to put on your own CD ROM.
4. When you burn your CD ROM you must have an ISO 9660 file system with
Rock Ridge Extensions (to let Linux recognize the long filenames). That
implies that you must burn it from Linux with "mkisofs", "mkhybrid" (using
option -r for RR extensions) with a former Linux system or a minimal Linux
system (see the corresponding HowTo for that) because most of Windows
burners don't do Rock Ridge extensions.
5. With RedHat 5.1 and only with this version you can burn your CD ROM with
a ISO9660 / Joliet file system which is more comfortable if you don't
already have a Linux system. It doesn't work at all with RedHat 5.0 and
former versions (this is due to the kernel 2.0.34 which is the first stable
version to directly recognize Joliet extensions).
6. I didn't try a bootable CD, but I know it is feasible. In this case you
need the autoboot directory. The file system you have to use is "El Torito".
7. You can take all the updates and put them in the RPMS directory in order
to replace the deficient ones. I did it for all the RPMS except the ones
involved with the kernel and the libs (libc5 and glibc), all the funny
things that are at the heart of the system. When I first tried all the
updates without any care, it didn't work at all (system halted). In my
second try, I didn't copy the files I mentioned above and it worked... But
the problem can be elsewhere (deficient burned image, etc.).
<P>
Two more advices :
a. Linux is case sensitive, so be careful with that. In particular you must
have the RPMS directory name in capital letters. The hierarchy of
directories joined with this message indicates the where the capital
letters must be.
b. Some CD burners might not work with Linux. In order to know that you
must have the firmware version of your burner and see if it is compatible
with mkisofs or mkhybrid or cdrecord. You can check it at
http://www.guug.de:8080/cgi-bin/winni/lsc.pl. If it is not the case, you
can upgrade it from the CD burner manufacturer (see their website).
<P>
In any case you can have a look on the CD Writing HowTo at your favorite
mirror (I personaly use www.freenix.fr which is in french, but I guess that
not everybody might want to go there ;p)).
<P>
Good luck and thank you very much for the support i received
<P>
May be the (Linux) Force be with you (and do go to the dark (NT) side of
the Force) ;p)
<P>
and long life to the Linux Gazette.
<P>
<P>
Eric CANAL
<P>
.<BR>
|-- COPYING<BR>
|-- DOCS.FR<BR>
| |-- 41REDHAT<BR>
| | |-- TRANS.TBL<BR>
| | |-- a4<BR>
| | | |-- 300-dpi<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- complet.zip<BR>
| | | | |-- impaires.zip<BR>
| | | | `-- paires.zip<BR>
| | | |-- 600-dpi<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- complet.zip<BR>
| | | | |-- impaires.zip<BR>
| | | | `-- paires.zip<BR>
| | | `-- TRANS.TBL<BR>
| | |-- index.htm<BR>
| | |-- lf-pdf.htm<BR>
| | |-- manuel.tgz<BR>
| | |-- rh4-.htm<BR>
| | |-- rh4-01.gif<BR>
| | |-- rh4-01.htm<BR>
| | |-- rh4-02.gif<BR>
| | |-- rh4-02.htm<BR>
| | |-- rh4-03.gif<BR>
| | |-- rh4-03.htm<BR>
| | |-- rh4-04.gif<BR>
| | |-- rh4-04.htm<BR>
| | |-- rh4-05.gif<BR>
| | |-- rh4-05.htm<BR>
| | |-- rh4-06.gif<BR>
| | |-- rh4-06.htm<BR>
| | |-- rh4-07.gif<BR>
| | |-- rh4-07.htm<BR>
| | |-- rh4-08.gif<BR>
| | |-- rh4-08.htm<BR>
| | |-- rh4-09.gif<BR>
| | |-- rh4-09.htm<BR>
| | |-- rh4-10.gif<BR>
| | |-- rh4-10.htm<BR>
| | |-- rh4-11.gif<BR>
| | |-- rh4-11.htm<BR>
| | |-- rh4-12.gif<BR>
| | |-- rh4-12.htm<BR>
| | |-- rh4-13.gif<BR>
| | |-- rh4-13.htm<BR>
| | |-- rh4-14.gif<BR>
| | |-- rh4-14.htm<BR>
| | |-- rh4-15.gif<BR>
| | |-- rh4-15.htm<BR>
| | |-- rh4-16.gif<BR>
| | |-- rh4-16.htm<BR>
| | |-- rh4-17.gif<BR>
| | |-- rh4-17.htm<BR>
| | |-- rh4-18.gif<BR>
| | |-- rh4-18.htm<BR>
| | |-- rh4-19.gif<BR>
| | |-- rh4-19.htm<BR>
| | |-- rh4-20.gif<BR>
| | |-- rh4-20.htm<BR>
| | |-- rh4-21.gif<BR>
| | |-- rh4-21.htm<BR>
| | |-- rh4-22.gif<BR>
| | |-- rh4-22.htm<BR>
| | |-- rh4-23.gif<BR>
| | |-- rh4-23.htm<BR>
| | |-- rh4-24.gif<BR>
| | |-- rh4-24.htm<BR>
| | |-- rh4-25.gif<BR>
| | |-- rh4-25.htm<BR>
| | |-- rh4-26.gif<BR>
| | |-- rh4-26.htm<BR>
| | |-- rh4-27.gif<BR>
| | |-- rh4-27.htm<BR>
| | |-- rh4-28.gif<BR>
| | |-- rh4-28.htm<BR>
| | |-- rh4-29.gif<BR>
| | |-- rh4-29.htm<BR>
| | |-- rh4-30.gif<BR>
| | |-- rh4-30.htm<BR>
| | |-- rh4-31.gif<BR>
| | |-- rh4-31.htm<BR>
| | |-- rh4-32.gif<BR>
| | |-- rh4-32.htm<BR>
| | |-- rh4-33.gif<BR>
| | |-- rh4-33.htm<BR>
| | |-- rh4-34.gif<BR>
| | |-- rh4-34.htm<BR>
| | |-- rh4-35.gif<BR>
| | |-- rh4-35.htm<BR>
| | |-- rh4-36.gif<BR>
| | |-- rh4-36.htm<BR>
| | |-- rh4-37.gif<BR>
| | |-- rh4-37.htm<BR>
| | |-- rh4-38.gif<BR>
| | |-- rh4-38.htm<BR>
| | |-- rh4-39.gif<BR>
| | |-- rh4-39.htm<BR>
| | |-- rh4-40.gif<BR>
| | |-- rh4-40.htm<BR>
| | |-- rh4-41.gif<BR>
| | |-- rh4-41.htm<BR>
| | |-- rh4-42.gif<BR>
| | |-- rh4-42.htm<BR>
| | |-- rh4-43.gif<BR>
| | |-- rh4-43.htm<BR>
| | |-- rh4-44.gif<BR>
| | |-- rh4-44.htm<BR>
| | |-- rh4-45.gif<BR>
| | |-- rh4-45.htm<BR>
| | |-- rh4-46.gif<BR>
| | |-- rh4-46.htm<BR>
| | |-- rh4-47.htm<BR>
| | |-- rh4-48.htm<BR>
| | |-- rh4-49.htm<BR>
| | |-- rh4-50.htm<BR>
| | |-- rh4-51.htm<BR>
| | |-- rh4-52.htm<BR>
| | |-- rh4-53.htm<BR>
| | |-- rh4-54.htm<BR>
| | |-- rh4-55.htm<BR>
| | |-- rh4-56.htm<BR>
| | |-- rh4-57.htm<BR>
| | |-- rh4-58.htm<BR>
| | |-- rh4-59.htm<BR>
| | |-- rh4-60.htm<BR>
| | |-- rh4-61.htm<BR>
| | |-- rh4-62.htm<BR>
| | |-- rh4-63.htm<BR>
| | |-- rh4-64.htm<BR>
| | |-- rh4-65.htm<BR>
| | |-- rh4-66.htm<BR>
| | |-- rh4-67.htm<BR>
| | |-- rh4-68.htm<BR>
| | |-- rh4-69.htm<BR>
| | |-- rh4-70.htm<BR>
| | |-- rh4-71.htm<BR>
| | |-- rh4-72.htm<BR>
| | |-- rh4-73.htm<BR>
| | |-- rh4-74.htm<BR>
| | |-- rh4-75.htm<BR>
| | |-- rh4-76.htm<BR>
| | |-- rh4-77.htm<BR>
| | |-- rh4-78.htm<BR>
| | |-- rh4-79.htm<BR>
| | |-- rh4-80.htm<BR>
| | `-- rh4-_c.htm<BR>
| |-- FAQ<BR>
| | |-- HTML<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- meta-faq.fr-1.html<BR>
| | | |-- meta-faq.fr-2.html<BR>
| | | |-- meta-faq.fr-3.html<BR>
| | | |-- meta-faq.fr-4.html<BR>
| | | |-- meta-faq.fr-5.html<BR>
| | | |-- meta-faq.fr-6.html<BR>
| | | |-- meta-faq.fr-7.html<BR>
| | | |-- meta-faq.fr-8.html<BR>
| | | |-- meta-faq.fr-9.html<BR>
| | | `-- meta-faq.fr.html<BR>
| | |-- TRANS.TBL<BR>
| | `-- meta-faq.fr<BR>
| |-- FDISK-Linux<BR>
| | |-- MANUEL.TXT<BR>
| | `-- TRANS.TBL<BR>
| |-- FIPS-15<BR>
| | |-- MANUEL.TXT<BR>
| | `-- TRANS.TBL<BR>
| |-- HOWTO<BR>
| | |-- Boot-disk-HOWTO<BR>
| | |-- BootPrompt-HOWTO<BR>
| | |-- Busmouse-HOWTO<BR>
| | |-- CDROM-HOWTO<BR>
| | |-- Commercial-HOWTO<BR>
| | |-- DOSEMU-HOWTO<BR>
| | |-- Distribution-HOWTO<BR>
| | |-- ELF-HOWTO<BR>
| | |-- Firewall-HOWTO<BR>
| | |-- Ftape-HOWTO<BR>
| | |-- GCC-HOWTO<BR>
| | |-- HAM-HOWTO<BR>
| | |-- HOWTO-Index<BR>
| | |-- HTML<BR>
| | | |-- Boot-disk-HOWTO-html.tar.gz<BR>
| | | |-- BootPrompt-HOWTO-html.tar.gz<BR>
| | | |-- Busmouse-HOWTO-html.tar.gz<BR>
| | | |-- CDROM-HOWTO-html.tar.gz<BR>
| | | |-- Commercial-HOWTO-html.tar.gz<BR>
| | | |-- DOSEMU-HOWTO-html.tar.gz<BR>
| | | |-- Distribution-HOWTO-html.tar.gz<BR>
| | | |-- ELF-HOWTO-html.tar.gz<BR>
| | | |-- Firewall-HOWTO-html.tar.gz<BR>
| | | |-- Ftape-HOWTO-html.tar.gz<BR>
| | | |-- GCC-HOWTO-html.tar.gz<BR>
| | | |-- HAM-HOWTO-html.tar.gz<BR>
| | | |-- HOWTO-Index-html.tar.gz<BR>
| | | |-- Hardware-HOWTO-html.tar.gz<BR>
| | | |-- IPX-HOWTO-html.tar.gz<BR>
| | | |-- Installation-HOWTO-html.tar.gz<BR>
| | | |-- Java-HOWTO-html.tar.gz<BR>
| | | |-- Kernel-HOWTO-html.tar.gz<BR>
| | | |-- Keyboard-HOWTO-html.tar.gz<BR>
| | | |-- MGR-HOWTO-html.tar.gz<BR>
| | | |-- Mail-HOWTO-html.tar.gz<BR>
| | | |-- Modems-HOWTO-html.tar.gz<BR>
| | | |-- NIS-HOWTO-html.tar.gz<BR>
| | | |-- Net2-HOWTO-html.tar.gz<BR>
| | | |-- PCI-HOWTO-html.tar.gz<BR>
| | | |-- PPP-FAQ-html.tar.gz<BR>
| | | |-- PPP-HOWTO-html.tar.gz<BR>
| | | |-- Printing-HOWTO-html.tar.gz<BR>
| | | |-- SCSI-HOWTO-html.tar.gz<BR>
| | | |-- SCSI-Programming-HOWTO-html.tar.gz<BR>
| | | |-- Serial-HOWTO-html.tar.gz<BR>
| | | |-- Slip-ProxyARP-html.tar.gz<BR>
| | | |-- Sound-HOWTO-html.tar.gz<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- Term-HOWTO-html.tar.gz<BR>
| | | |-- Tips-HOWTO-html.tar.gz<BR>
| | | |-- UPS-HOWTO-html.tar.gz<BR>
| | | |-- UUCP-HOWTO-html.tar.gz<BR>
| | | |-- Video-HOWTO-html.tar.gz<BR>
| | | |-- Win95-Win3x-Linux-html.tar.gz<BR>
| | | `-- XFree86-HOWTO-html.tar.gz<BR>
| | |-- Hardware-HOWTO<BR>
| | |-- IPX-HOWTO<BR>
| | |-- Installation-HOWTO<BR>
| | |-- Java-HOWTO<BR>
| | |-- Kernel-HOWTO<BR>
| | |-- Keyboard-HOWTO<BR>
| | |-- MGR-HOWTO<BR>
| | |-- Mail-HOWTO<BR>
| | |-- Modems-HOWTO<BR>
| | |-- NIS-HOWTO<BR>
| | |-- Net2-HOWTO<BR>
| | |-- PCI-HOWTO<BR>
| | |-- PPP-FAQ<BR>
| | |-- PPP-HOWTO<BR>
| | |-- Printing-HOWTO<BR>
| | |-- SCSI-HOWTO<BR>
| | |-- SCSI-Programming-HOWTO<BR>
| | |-- Serial-HOWTO<BR>
| | |-- Slip-ProxyARP<BR>
| | |-- Sound-HOWTO<BR>
| | |-- TRANS.TBL<BR>
| | |-- Term-HOWTO<BR>
| | |-- Tips-HOWTO<BR>
| | |-- UPS-HOWTO<BR>
| | |-- UUCP-HOWTO<BR>
| | |-- Video-HOWTO<BR>
| | |-- Win95-Win3x-Linux<BR>
| | `-- XFree86-HOWTO<BR>
| |-- HOWTO-mini<BR>
| | |-- Anon-ftp<BR>
| | |-- Assembleur<BR>
| | |-- Colour-ls<BR>
| | |-- HTML<BR>
| | | |-- Anon-ftp-html.tar.gz<BR>
| | | |-- Assembleur-html.tar.gz<BR>
| | | |-- Colour-ls-html.tar.gz<BR>
| | | |-- IO-Port-html.tar.gz<BR>
| | | |-- JAZ-drive-html.tar.gz<BR>
| | | |-- LILO-html.tar.gz<BR>
| | | |-- Large-IDE-html.tar.gz<BR>
| | | |-- Man-Page-html.tar.gz<BR>
| | | |-- NFS-Root-html.tar.gz<BR>
| | | |-- Postgres-html.tar.gz<BR>
| | | |-- Proxy-ARP-html.tar.gz<BR>
| | | |-- Slip+ProxyARP-html.tar.gz<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- Term-Firewall-html.tar.gz<BR>
| | | |-- Token-Ring-html.tar.gz<BR>
| | | |-- X-Terminal-html.tar.gz<BR>
| | | `-- ZipIomega-html.tar.gz<BR>
| | |-- IO-Port<BR>
| | |-- JAZ-drive<BR>
| | |-- LILO<BR>
| | |-- Large-IDE<BR>
| | |-- Man-Page<BR>
| | |-- NFS-Root<BR>
| | |-- Postgres<BR>
| | |-- Proxy-ARP<BR>
| | |-- Slip+ProxyARP<BR>
| | |-- TRANS.TBL<BR>
| | |-- Term-Firewall<BR>
| | |-- Token-Ring<BR>
| | |-- X-Terminal<BR>
| | `-- ZipIomega<BR>
| |-- INFO-sht<BR>
| | |-- HTML<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- info-sheet.fr-1.html<BR>
| | | |-- info-sheet.fr-10.html<BR>
| | | |-- info-sheet.fr-11.html<BR>
| | | |-- info-sheet.fr-12.html<BR>
| | | |-- info-sheet.fr-2.html<BR>
| | | |-- info-sheet.fr-3.html<BR>
| | | |-- info-sheet.fr-4.html<BR>
| | | |-- info-sheet.fr-5.html<BR>
| | | |-- info-sheet.fr-6.html<BR>
| | | |-- info-sheet.fr-7.html<BR>
| | | |-- info-sheet.fr-8.html<BR>
| | | |-- info-sheet.fr-9.html<BR>
| | | `-- info-sheet.fr.html<BR>
| | |-- TRANS.TBL<BR>
| | `-- info-sht.fr<BR>
| |-- INTRO-Linux<BR>
| | |-- HTML<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- intro-1.html<BR>
| | | |-- intro-2.html<BR>
| | | |-- intro-3.html<BR>
| | | |-- intro-4.html<BR>
| | | |-- intro-5.html<BR>
| | | |-- intro-6.html<BR>
| | | |-- intro-7.html<BR>
| | | `-- intro.html<BR>
| | |-- TRANS.TBL<BR>
| | `-- intro<BR>
| |-- KERNEL-2.0<BR>
| | |-- 00-INDEX<BR>
| | |-- CHASSE-AUX-BOGUES<BR>
| | |-- Changements<BR>
| | |-- Configure.help<BR>
| | |-- SMP.txt<BR>
| | |-- StyleDuCodage<BR>
| | |-- TRANS.TBL<BR>
| | |-- chiendegarde.txt<BR>
| | |-- digiboard.txt<BR>
| | |-- disqueram.txt<BR>
| | |-- ide.txt<BR>
| | |-- initrd.txt<BR>
| | |-- java.txt<BR>
| | |-- logo.gif<BR>
| | |-- logo.txt<BR>
| | |-- modules.txt<BR>
| | |-- numero-ioctl.txt<BR>
| | |-- numero-magique.txt<BR>
| | |-- obligatoire.txt<BR>
| | |-- oups-trace.txt<BR>
| | |-- racinenfs.txt<BR>
| | |-- riscom8.txt<BR>
| | |-- rtc.txt<BR>
| | |-- scsi.txt<BR>
| | |-- smp.tex<BR>
| | |-- svga.txt<BR>
| | |-- unicode.txt<BR>
| | `-- verrous.txt<BR>
| |-- LINUX-FACILE<BR>
| | |-- TRANS.TBL<BR>
| | |-- a4<BR>
| | | |-- 300-dpi<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- complet.pdf<BR>
| | | | |-- impaires.pdf<BR>
| | | | `-- paires.pdf<BR>
| | | |-- 600-dpi<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- complet.pdf<BR>
| | | | |-- impaires.pdf<BR>
| | | | `-- paires.pdf<BR>
| | | `-- TRANS.TBL<BR>
| | `-- html<BR>
| | |-- TRANS.TBL<BR>
| | |-- images<BR>
| | | |-- 002.gif<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- blankg.gif<BR>
| | | |-- contg.gif<BR>
| | | |-- dbledag.gif<BR>
| | | |-- indexg.gif<BR>
| | | |-- leftg.gif<BR>
| | | |-- linuxf.gif<BR>
| | | |-- noleftg.gif<BR>
| | | |-- norightg.gif<BR>
| | | |-- notopg.gif<BR>
| | | |-- noupg.gif<BR>
| | | |-- points.gif<BR>
| | | |-- r2harc1.gif<BR>
| | | |-- r2harc2.gif<BR>
| | | |-- r2harc3.gif<BR>
| | | |-- r2harc4.gif<BR>
| | | |-- r2harch.gif -> 002.gif<BR>
| | | |-- rightg.gif<BR>
| | | |-- sectmark.gif<BR>
| | | |-- sigma_.gif<BR>
| | | |-- square.gif<BR>
| | | |-- topg.gif<BR>
| | | |-- trait.gif<BR>
| | | `-- upg.gif<BR>
| | `-- linux-f<BR>
| | |-- TRANS.TBL<BR>
| | |-- index.htm -> lf2.htm<BR>
| | |-- lf2.htm<BR>
| | |-- lf201.gif<BR>
| | |-- lf201.htm<BR>
| | |-- lf202.gif<BR>
| | |-- lf202.htm<BR>
| | |-- lf203.gif<BR>
| | |-- lf203.htm<BR>
| | |-- lf204.gif<BR>
| | |-- lf204.htm<BR>
| | |-- lf205.gif<BR>
| | |-- lf205.htm<BR>
| | |-- lf206.gif<BR>
| | |-- lf206.htm<BR>
| | |-- lf207.gif<BR>
| | |-- lf207.htm<BR>
| | |-- lf208.gif<BR>
| | |-- lf208.htm<BR>
| | |-- lf209.gif<BR>
| | |-- lf209.htm<BR>
| | |-- lf210.gif<BR>
| | |-- lf210.htm<BR>
| | |-- lf2100.htm<BR>
| | |-- lf2101.htm<BR>
| | |-- lf2102.htm<BR>
| | |-- lf2103.htm<BR>
| | |-- lf2104.htm<BR>
| | |-- lf2105.htm<BR>
| | |-- lf2106.htm<BR>
| | |-- lf2107.htm<BR>
| | |-- lf2108.htm<BR>
| | |-- lf2109.htm<BR>
| | |-- lf211.gif<BR>
| | |-- lf211.htm<BR>
| | |-- lf2110.htm<BR>
| | |-- lf2111.htm<BR>
| | |-- lf2112.htm<BR>
| | |-- lf2113.htm<BR>
| | |-- lf2114.htm<BR>
| | |-- lf2115.htm<BR>
| | |-- lf2116.htm<BR>
| | |-- lf2117.htm<BR>
| | |-- lf2118.htm<BR>
| | |-- lf2119.htm<BR>
| | |-- lf212.gif<BR>
| | |-- lf212.htm<BR>
| | |-- lf2120.htm<BR>
| | |-- lf2121.htm<BR>
| | |-- lf2122.htm<BR>
| | |-- lf2123.htm<BR>
| | |-- lf2124.htm<BR>
| | |-- lf2125.htm<BR>
| | |-- lf2126.htm<BR>
| | |-- lf2127.htm<BR>
| | |-- lf2128.htm<BR>
| | |-- lf2129.htm<BR>
| | |-- lf213.gif<BR>
| | |-- lf213.htm<BR>
| | |-- lf2130.htm<BR>
| | |-- lf2131.htm<BR>
| | |-- lf2132.htm<BR>
| | |-- lf2133.htm<BR>
| | |-- lf2134.htm<BR>
| | |-- lf2135.htm<BR>
| | |-- lf2136.htm<BR>
| | |-- lf2137.htm<BR>
| | |-- lf2138.htm<BR>
| | |-- lf2139.htm<BR>
| | |-- lf214.gif<BR>
| | |-- lf214.htm<BR>
| | |-- lf2140.htm<BR>
| | |-- lf2141.htm<BR>
| | |-- lf2142.htm<BR>
| | |-- lf2143.htm<BR>
| | |-- lf2144.htm<BR>
| | |-- lf2145.htm<BR>
| | |-- lf2146.htm<BR>
| | |-- lf2147.htm<BR>
| | |-- lf2148.htm<BR>
| | |-- lf2149.htm<BR>
| | |-- lf215.gif<BR>
| | |-- lf215.htm<BR>
| | |-- lf2150.htm<BR>
| | |-- lf2151.htm<BR>
| | |-- lf2152.htm<BR>
| | |-- lf2153.htm<BR>
| | |-- lf216.gif<BR>
| | |-- lf216.htm<BR>
| | |-- lf217.gif<BR>
| | |-- lf217.htm<BR>
| | |-- lf218.gif<BR>
| | |-- lf218.htm<BR>
| | |-- lf219.gif<BR>
| | |-- lf219.htm<BR>
| | |-- lf220.gif<BR>
| | |-- lf220.htm<BR>
| | |-- lf221.gif<BR>
| | |-- lf221.htm<BR>
| | |-- lf222.gif<BR>
| | |-- lf222.htm<BR>
| | |-- lf223.gif<BR>
| | |-- lf223.htm<BR>
| | |-- lf224.gif<BR>
| | |-- lf224.htm<BR>
| | |-- lf225.gif<BR>
| | |-- lf225.htm<BR>
| | |-- lf226.gif<BR>
| | |-- lf226.htm<BR>
| | |-- lf227.gif<BR>
| | |-- lf227.htm<BR>
| | |-- lf228.gif<BR>
| | |-- lf228.htm<BR>
| | |-- lf229.gif<BR>
| | |-- lf229.htm<BR>
| | |-- lf230.gif<BR>
| | |-- lf230.htm<BR>
| | |-- lf231.gif<BR>
| | |-- lf231.htm<BR>
| | |-- lf232.gif<BR>
| | |-- lf232.htm<BR>
| | |-- lf233.gif<BR>
| | |-- lf233.htm<BR>
| | |-- lf234.gif<BR>
| | |-- lf234.htm<BR>
| | |-- lf235.gif<BR>
| | |-- lf235.htm<BR>
| | |-- lf236.gif<BR>
| | |-- lf236.htm<BR>
| | |-- lf237.gif<BR>
| | |-- lf237.htm<BR>
| | |-- lf238.gif<BR>
| | |-- lf238.htm<BR>
| | |-- lf239.gif<BR>
| | |-- lf239.htm<BR>
| | |-- lf240.gif<BR>
| | |-- lf240.htm<BR>
| | |-- lf241.gif<BR>
| | |-- lf241.htm<BR>
| | |-- lf242.gif<BR>
| | |-- lf242.htm<BR>
| | |-- lf243.gif<BR>
| | |-- lf243.htm<BR>
| | |-- lf244.gif<BR>
| | |-- lf244.htm<BR>
| | |-- lf245.gif<BR>
| | |-- lf245.htm<BR>
| | |-- lf246.htm<BR>
| | |-- lf247.htm<BR>
| | |-- lf248.htm<BR>
| | |-- lf249.htm<BR>
| | |-- lf250.htm<BR>
| | |-- lf251.htm<BR>
| | |-- lf252.htm<BR>
| | |-- lf253.htm<BR>
| | |-- lf254.htm<BR>
| | |-- lf255.htm<BR>
| | |-- lf256.htm<BR>
| | |-- lf257.htm<BR>
| | |-- lf258.htm<BR>
| | |-- lf259.htm<BR>
| | |-- lf260.htm<BR>
| | |-- lf261.htm<BR>
| | |-- lf262.htm<BR>
| | |-- lf263.htm<BR>
| | |-- lf264.htm<BR>
| | |-- lf265.htm<BR>
| | |-- lf266.htm<BR>
| | |-- lf267.htm<BR>
| | |-- lf268.htm<BR>
| | |-- lf269.htm<BR>
| | |-- lf270.htm<BR>
| | |-- lf271.htm<BR>
| | |-- lf272.htm<BR>
| | |-- lf273.htm<BR>
| | |-- lf274.htm<BR>
| | |-- lf275.htm<BR>
| | |-- lf276.htm<BR>
| | |-- lf277.htm<BR>
| | |-- lf278.htm<BR>
| | |-- lf279.htm<BR>
| | |-- lf280.htm<BR>
| | |-- lf281.htm<BR>
| | |-- lf282.htm<BR>
| | |-- lf283.htm<BR>
| | |-- lf284.htm<BR>
| | |-- lf285.htm<BR>
| | |-- lf286.htm<BR>
| | |-- lf287.htm<BR>
| | |-- lf288.htm<BR>
| | |-- lf289.htm<BR>
| | |-- lf290.htm<BR>
| | |-- lf291.htm<BR>
| | |-- lf292.htm<BR>
| | |-- lf293.htm<BR>
| | |-- lf294.htm<BR>
| | |-- lf295.htm<BR>
| | |-- lf296.htm<BR>
| | |-- lf297.htm<BR>
| | |-- lf298.htm<BR>
| | |-- lf299.htm<BR>
| | `-- lf2_c.htm<BR>
| |-- LOADLIN16<BR>
| | |-- TRANS.TBL<BR>
| | |-- initrd.txt<BR>
| | |-- manuel.txt<BR>
| | `-- params.doc<BR>
| |-- LOCALE<BR>
| | |-- TRANS.TBL<BR>
| | `-- locale.fr<BR>
| |-- MAN-FR-0.3<BR>
| | |-- LISEZ_MOI<BR>
| | |-- TRANS.TBL<BR>
| | |-- changements<BR>
| | |-- html<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- icones<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- blanc.gif<BR>
| | | | |-- contg.gif<BR>
| | | | |-- fond-bl.gif<BR>
| | | | |-- logokh.gif<BR>
| | | | |-- point-bl.gif<BR>
| | | | |-- topg.gif<BR>
| | | | `-- upg.gif<BR>
| | | |-- index.htm<BR>
| | | |-- man1<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- basename.1.html<BR>
| | | | |-- cat.1.html<BR>
| | | | |-- chgrp.1.html<BR>
| | | | |-- chmod.1.html<BR>
| | | | |-- chown.1.html<BR>
| | | | |-- cksum.1.html<BR>
| | | | |-- comm.1.html<BR>
| | | | |-- cp.1.html<BR>
| | | | |-- csplit.1.html<BR>
| | | | |-- cut.1.html<BR>
| | | | |-- date.1.html<BR>
| | | | |-- dd.1.html<BR>
| | | | |-- dirname.1.html<BR>
| | | | |-- du.1.html<BR>
| | | | |-- echo.1.html<BR>
| | | | |-- env.1.html<BR>
| | | | |-- expand.1.html<BR>
| | | | |-- expr.1.html<BR>
| | | | |-- false.1.html<BR>
| | | | |-- find.1.html<BR>
| | | | |-- fmt.1.html<BR>
| | | | |-- fold.1.html<BR>
| | | | |-- free.1.html<BR>
| | | | |-- grep.1.html<BR>
| | | | |-- groups.1.html<BR>
| | | | |-- head.1.html<BR>
| | | | |-- id.1.html<BR>
| | | | |-- index.html<BR>
| | | | |-- join.1.html<BR>
| | | | |-- logname.1.html<BR>
| | | | |-- ls.1.html<BR>
| | | | |-- md5sum.1.html<BR>
| | | | |-- mkdir.1.html<BR>
| | | | |-- mkfifo.1.html<BR>
| | | | |-- mknod.1.html<BR>
| | | | |-- mv.1.html<BR>
| | | | |-- nice.1.html<BR>
| | | | |-- nl.1.html<BR>
| | | | |-- nohup.1.html<BR>
| | | | |-- od.1.html<BR>
| | | | |-- paste.1.html<BR>
| | | | |-- pathchk.1.html<BR>
| | | | |-- pr.1.html<BR>
| | | | |-- printenv.1.html<BR>
| | | | |-- printf.1.html<BR>
| | | | |-- pwd.1.html<BR>
| | | | |-- rm.1.html<BR>
| | | | |-- rmdir.1.html<BR>
| | | | |-- sleep.1.html<BR>
| | | | |-- sort.1.html<BR>
| | | | |-- split.1.html<BR>
| | | | |-- stty.1.html<BR>
| | | | |-- su.1.html<BR>
| | | | |-- sum.1.html<BR>
| | | | |-- tac.1.html<BR>
| | | | |-- tail.1.html<BR>
| | | | |-- tee.1.html<BR>
| | | | |-- test.1.html<BR>
| | | | |-- touch.1.html<BR>
| | | | |-- tr.1.html<BR>
| | | | |-- true.1.html<BR>
| | | | |-- tty.1.html<BR>
| | | | |-- uname.1.html<BR>
| | | | |-- unexpand.1.html<BR>
| | | | |-- uniq.1.html<BR>
| | | | |-- users.1.html<BR>
| | | | |-- wc.1.html<BR>
| | | | |-- who.1.html<BR>
| | | | |-- whoami.1.html<BR>
| | | | `-- yes.1.html<BR>
| | | |-- man2<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- _exit.2.html<BR>
| | | | |-- accept.2.html<BR>
| | | | |-- access.2.html<BR>
| | | | |-- acct.2.html<BR>
| | | | |-- adjtimex.2.html<BR>
| | | | |-- afs_syscall.2.html<BR>
| | | | |-- alarm.2.html<BR>
| | | | |-- bdflush.2.html<BR>
| | | | |-- bind.2.html<BR>
| | | | |-- break.2.html<BR>
| | | | |-- brk.2.html<BR>
| | | | |-- cacheflush.2.html<BR>
| | | | |-- chdir.2.html<BR>
| | | | |-- chmod.2.html<BR>
| | | | |-- chown.2.html<BR>
| | | | |-- chroot.2.html<BR>
| | | | |-- clone.2.html<BR>
| | | | |-- close.2.html<BR>
| | | | |-- connect.2.html<BR>
| | | | |-- creat.2.html<BR>
| | | | |-- create_module.2.html<BR>
| | | | |-- delete_module.2.html<BR>
| | | | |-- dup.2.html<BR>
| | | | |-- dup2.2.html<BR>
| | | | |-- execve.2.html<BR>
| | | | |-- fchdir.2.html<BR>
| | | | |-- fchmod.2.html<BR>
| | | | |-- fchown.2.html<BR>
| | | | |-- fcntl.2.html<BR>
| | | | |-- fdatasync.2.html<BR>
| | | | |-- flock.2.html<BR>
| | | | |-- fork.2.html<BR>
| | | | |-- fstat.2.html<BR>
| | | | |-- fstatfs.2.html<BR>
| | | | |-- fsync.2.html<BR>
| | | | |-- ftruncate.2.html<BR>
| | | | |-- get_kernel_syms.2.html<BR>
| | | | |-- getdents.2.html<BR>
| | | | |-- getdomainname.2.html<BR>
| | | | |-- getdtablesize.2.html<BR>
| | | | |-- getegid.2.html<BR>
| | | | |-- geteuid.2.html<BR>
| | | | |-- getgid.2.html<BR>
| | | | |-- getgroups.2.html<BR>
| | | | |-- gethostid.2.html<BR>
| | | | |-- gethostname.2.html<BR>
| | | | |-- getitimer.2.html<BR>
| | | | |-- getpagesize.2.html<BR>
| | | | |-- getpeername.2.html<BR>
| | | | |-- getpgid.2.html<BR>
| | | | |-- getpgrp.2.html<BR>
| | | | |-- getpid.2.html<BR>
| | | | |-- getppid.2.html<BR>
| | | | |-- getpriority.2.html<BR>
| | | | |-- getrlimit.2.html<BR>
| | | | |-- getrusage.2.html<BR>
| | | | |-- getsid.2.html<BR>
| | | | |-- getsockname.2.html<BR>
| | | | |-- getsockopt.2.html<BR>
| | | | |-- gettimeofday.2.html<BR>
| | | | |-- getuid.2.html<BR>
| | | | |-- gtty.2.html<BR>
| | | | |-- idle.2.html<BR>
| | | | |-- index.html<BR>
| | | | |-- init_module.2.html<BR>
| | | | |-- intro.2.html<BR>
| | | | |-- ioctl.2.html<BR>
| | | | |-- ioctl_list.2.html<BR>
| | | | |-- ioperm.2.html<BR>
| | | | |-- iopl.2.html<BR>
| | | | |-- ipc.2.html<BR>
| | | | |-- kill.2.html<BR>
| | | | |-- killpg.2.html<BR>
| | | | |-- link.2.html<BR>
| | | | |-- listen.2.html<BR>
| | | | |-- llseek.2.html<BR>
| | | | |-- lock.2.html<BR>
| | | | |-- lseek.2.html<BR>
| | | | |-- lstat.2.html<BR>
| | | | |-- mkdir.2.html<BR>
| | | | |-- mknod.2.html<BR>
| | | | |-- mlock.2.html<BR>
| | | | |-- mlockall.2.html<BR>
| | | | |-- mmap.2.html<BR>
| | | | |-- modify_ldt.2.html<BR>
| | | | |-- modules.2.html<BR>
| | | | |-- mount.2.html<BR>
| | | | |-- mprotect.2.html<BR>
| | | | |-- mpx.2.html<BR>
| | | | |-- mremap.2.html<BR>
| | | | |-- msgctl.2.html<BR>
| | | | |-- msgget.2.html<BR>
| | | | |-- msgop.2.html<BR>
| | | | |-- msgrcv.2.html<BR>
| | | | |-- msgsnd.2.html<BR>
| | | | |-- msync.2.html<BR>
| | | | |-- munlock.2.html<BR>
| | | | |-- munlockall.2.html<BR>
| | | | |-- munmap.2.html<BR>
| | | | |-- nanosleep.2.html<BR>
| | | | |-- nice.2.html<BR>
| | | | |-- obsolete.2.html<BR>
| | | | |-- oldfstat.2.html<BR>
| | | | |-- oldlstat.2.html<BR>
| | | | |-- oldolduname.2.html<BR>
| | | | |-- oldstat.2.html<BR>
| | | | |-- olduname.2.html<BR>
| | | | |-- open.2.html<BR>
| | | | |-- outb.2.html<BR>
| | | | |-- pause.2.html<BR>
| | | | |-- personality.2.html<BR>
| | | | |-- phys.2.html<BR>
| | | | |-- pipe.2.html<BR>
| | | | |-- prof.2.html<BR>
| | | | |-- profil.2.html<BR>
| | | | |-- ptrace.2.html<BR>
| | | | |-- quotactl.2.html<BR>
| | | | |-- read.2.html<BR>
| | | | |-- readdir.2.html<BR>
| | | | |-- readlink.2.html<BR>
| | | | |-- readv.2.html<BR>
| | | | |-- reboot.2.html<BR>
| | | | |-- recv.2.html<BR>
| | | | |-- recvfrom.2.html<BR>
| | | | |-- recvmsg.2.html<BR>
| | | | |-- rename.2.html<BR>
| | | | |-- rmdir.2.html<BR>
| | | | |-- sbrk.2.html<BR>
| | | | |-- sched_get_priority_max.2.html<BR>
| | | | |-- sched_get_priority_min.2.html<BR>
| | | | |-- sched_getparam.2.html<BR>
| | | | |-- sched_getscheduler.2.html<BR>
| | | | |-- sched_rr_get_interval.2.html<BR>
| | | | |-- sched_setparam.2.html<BR>
| | | | |-- sched_setscheduler.2.html<BR>
| | | | |-- sched_yield.2.html<BR>
| | | | |-- select.2.html<BR>
| | | | |-- semctl.2.html<BR>
| | | | |-- semget.2.html<BR>
| | | | |-- semop.2.html<BR>
| | | | |-- send.2.html<BR>
| | | | |-- sendmsg.2.html<BR>
| | | | |-- sendto.2.html<BR>
| | | | |-- setdomainname.2.html<BR>
| | | | |-- setegid.2.html<BR>
| | | | |-- seteuid.2.html<BR>
| | | | |-- setfsgid.2.html<BR>
| | | | |-- setfsuid.2.html<BR>
| | | | |-- setgid.2.html<BR>
| | | | |-- setgroups.2.html<BR>
| | | | |-- sethostid.2.html<BR>
| | | | |-- sethostname.2.html<BR>
| | | | |-- setitimer.2.html<BR>
| | | | |-- setpgid.2.html<BR>
| | | | |-- setpgrp.2.html<BR>
| | | | |-- setpriority.2.html<BR>
| | | | |-- setregid.2.html<BR>
| | | | |-- setreuid.2.html<BR>
| | | | |-- setrlimit.2.html<BR>
| | | | |-- setsid.2.html<BR>
| | | | |-- setsockopt.2.html<BR>
| | | | |-- settimeofday.2.html<BR>
| | | | |-- setuid.2.html<BR>
| | | | |-- setup.2.html<BR>
| | | | |-- shmat.2.html<BR>
| | | | |-- shmctl.2.html<BR>
| | | | |-- shmdt.2.html<BR>
| | | | |-- shmget.2.html<BR>
| | | | |-- shmop.2.html<BR>
| | | | |-- shutdown.2.html<BR>
| | | | |-- sigaction.2.html<BR>
| | | | |-- sigblock.2.html<BR>
| | | | |-- sigmask.2.html<BR>
| | | | |-- signal.2.html<BR>
| | | | |-- sigpause.2.html<BR>
| | | | |-- sigpending.2.html<BR>
| | | | |-- sigprocmask.2.html<BR>
| | | | |-- sigreturn.2.html<BR>
| | | | |-- sigsuspend.2.html<BR>
| | | | |-- sigvec.2.html<BR>
| | | | |-- socket.2.html<BR>
| | | | |-- socketcall.2.html<BR>
| | | | |-- socketpair.2.html<BR>
| | | | |-- stat.2.html<BR>
| | | | |-- statfs.2.html<BR>
| | | | |-- stime.2.html<BR>
| | | | |-- stty.2.html<BR>
| | | | |-- swapoff.2.html<BR>
| | | | |-- swapon.2.html<BR>
| | | | |-- symlink.2.html<BR>
| | | | |-- sync.2.html<BR>
| | | | |-- sysctl.2.html<BR>
| | | | |-- sysfs.2.html<BR>
| | | | |-- sysinfo.2.html<BR>
| | | | |-- syslog.2.html<BR>
| | | | |-- time.2.html<BR>
| | | | |-- times.2.html<BR>
| | | | |-- truncate.2.html<BR>
| | | | |-- umask.2.html<BR>
| | | | |-- umount.2.html<BR>
| | | | |-- uname.2.html<BR>
| | | | |-- undocumented.2.html<BR>
| | | | |-- unimplemented.2.html<BR>
| | | | |-- unlink.2.html<BR>
| | | | |-- uselib.2.html<BR>
| | | | |-- ustat.2.html<BR>
| | | | |-- utime.2.html<BR>
| | | | |-- vfork.2.html<BR>
| | | | |-- vhangup.2.html<BR>
| | | | |-- vm86.2.html<BR>
| | | | |-- wait.2.html<BR>
| | | | |-- wait3.2.html<BR>
| | | | |-- wait4.2.html<BR>
| | | | |-- waitpid.2.html<BR>
| | | | |-- write.2.html<BR>
| | | | `-- writev.2.html<BR>
| | | |-- man3<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- abort.3.html<BR>
| | | | |-- abs.3.html<BR>
| | | | |-- acos.3.html<BR>
| | | | |-- acosh.3.html<BR>
| | | | |-- addmntent.3.html<BR>
| | | | |-- alloca.3.html<BR>
| | | | |-- alphasort.3.html<BR>
| | | | |-- asctime.3.html<BR>
| | | | |-- asin.3.html<BR>
| | | | |-- asinh.3.html<BR>
| | | | |-- assert.3.html<BR>
| | | | |-- atan.3.html<BR>
| | | | |-- atan2.3.html<BR>
| | | | |-- atanh.3.html<BR>
| | | | |-- atexit.3.html<BR>
| | | | |-- atof.3.html<BR>
| | | | |-- atoi.3.html<BR>
| | | | |-- atol.3.html<BR>
| | | | |-- bcmp.3.html<BR>
| | | | |-- bcopy.3.html<BR>
| | | | |-- bsearch.3.html<BR>
| | | | |-- bstring.3.html<BR>
| | | | |-- byteorder.3.html<BR>
| | | | |-- bzero.3.html<BR>
| | | | |-- calloc.3.html<BR>
| | | | |-- catclose.3.html<BR>
| | | | |-- catgets.3.html<BR>
| | | | |-- catopen.3.html<BR>
| | | | |-- cbrt.3.html<BR>
| | | | |-- ceil.3.html<BR>
| | | | |-- cfgetispeed.3.html<BR>
| | | | |-- cfgetospeed.3.html<BR>
| | | | |-- cfmakeraw.3.html<BR>
| | | | |-- cfsetispeed.3.html<BR>
| | | | |-- cfsetospeed.3.html<BR>
| | | | |-- clearerr.3.html<BR>
| | | | |-- clock.3.html<BR>
| | | | |-- closedir.3.html<BR>
| | | | |-- closelog.3.html<BR>
| | | | |-- confstr.3.html<BR>
| | | | |-- copysign.3.html<BR>
| | | | |-- cos.3.html<BR>
| | | | |-- cosh.3.html<BR>
| | | | |-- crypt.3.html<BR>
| | | | |-- ctermid.3.html<BR>
| | | | |-- ctime.3.html<BR>
| | | | |-- cuserid.3.html<BR>
| | | | |-- difftime.3.html<BR>
| | | | |-- div.3.html<BR>
| | | | |-- dn_comp.3.html<BR>
| | | | |-- dn_expand.3.html<BR>
| | | | |-- drand48.3.html<BR>
| | | | |-- drem.3.html<BR>
| | | | |-- ecvt.3.html<BR>
| | | | |-- endgrent.3.html<BR>
| | | | |-- endhostent.3.html<BR>
| | | | |-- endmntent.3.html<BR>
| | | | |-- endnetent.3.html<BR>
| | | | |-- endprotoent.3.html<BR>
| | | | |-- endpwent.3.html<BR>
| | | | |-- endservent.3.html<BR>
| | | | |-- endusershell.3.html<BR>
| | | | |-- endutent.3.html<BR>
| | | | |-- erand48.3.html<BR>
| | | | |-- erf.3.html<BR>
| | | | |-- erfc.3.html<BR>
| | | | |-- errno.3.html<BR>
| | | | |-- exec.3.html<BR>
| | | | |-- execl.3.html<BR>
| | | | |-- execle.3.html<BR>
| | | | |-- execlp.3.html<BR>
| | | | |-- exect.3.html<BR>
| | | | |-- execv.3.html<BR>
| | | | |-- execvp.3.html<BR>
| | | | |-- exit.3.html<BR>
| | | | |-- exp.3.html<BR>
| | | | |-- expm1.3.html<BR>
| | =20| | |-- fabs.3.html<BR>
| | | | |-- fclose.3.html<BR>
| | | | |-- fcvt.3.html<BR>
| | | | |-- fdopen.3.html<BR>
| | | | |-- feof.3.html<BR>
| | | | |-- ferror.3.html<BR>
| | | | |-- fflush.3.html<BR>
| | | | |-- ffs.3.html<BR>
| | | | |-- fgetc.3.html<BR>
| | | | |-- fgetgrent.3.html<BR>
| | | | |-- fgetpos.3.html<BR>
| | | | |-- fgetpwent.3.html<BR>
| | | | |-- fgets.3.html<BR>
| | | | |-- fileno.3.html<BR>
| | | | |-- finite.3.html<BR>
| | | | |-- floor.3.html<BR>
| | | | |-- fmod.3.html<BR>
| | | | |-- fnmatch.3.html<BR>
| | | | |-- fopen.3.html<BR>
| | | | |-- fpathconf.3.html<BR>
| | | | |-- fprintf.3.html<BR>
| | | | |-- fpurge.3.html<BR>
| | | | |-- fputc.3.html<BR>
| | | | |-- fputs.3.html<BR>
| | | | |-- fread.3.html<BR>
| | | | |-- free.3.html<BR>
| | | | |-- freopen.3.html<BR>
| | | | |-- frexp.3.html<BR>
| | | | |-- fscanf.3.html<BR>
| | | | |-- fseek.3.html<BR>
| | | | |-- fsetpos.3.html<BR>
| | | | |-- ftell.3.html<BR>
| | | | |-- ftime.3.html<BR>
| | | | |-- ftok.3.html<BR>
| | | | |-- ftw.3.html<BR>
| | | | |-- fwrite.3.html<BR>
| | | | |-- gcvt.3.html<BR>
| | | | |-- get_current_dir_name.3.html<BR>
| | | | |-- getc.3.html<BR>
| | | | |-- getchar.3.html<BR>
| | | | |-- getcwd.3.html<BR>
| | | | |-- getdirentries.3.html<BR>
| | | | |-- getenv.3.html<BR>
| | | | |-- getgrent.3.html<BR>
| | | | |-- getgrgid.3.html<BR>
| | | | |-- getgrnam.3.html<BR>
| | | | |-- gethostbyaddr.3.html<BR>
| | | | |-- gethostbyname.3.html<BR>
| | | | |-- getlogin.3.html<BR>
| | | | |-- getmntent.3.html<BR>
| | | | |-- getnetbyaddr.3.html<BR>
| | | | |-- getnetbyname.3.html<BR>
| | | | |-- getnetent.3.html<BR>
| | | | |-- getopt.3.html<BR>
| | | | |-- getopt_long.3.html<BR>
| | | | |-- getopt_long_only.3.html<BR>
| | | | |-- getpass.3.html<BR>
| | | | |-- getprotobyname.3.html<BR>
| | | | |-- getprotobynumber.3.html<BR>
| | | | |-- getprotoent.3.html<BR>
| | | | |-- getpw.3.html<BR>
| | | | |-- getpwent.3.html<BR>
| | | | |-- getpwnam.3.html<BR>
| | | | |-- getpwuid.3.html<BR>
| | | | |-- gets.3.html<BR>
| | | | |-- getservbyname.3.html<BR>
| | | | |-- getservbyport.3.html<BR>
| | | | |-- getservent.3.html<BR>
| | | | |-- getusershell.3.html<BR>
| | | | |-- getutent.3.html<BR>
| | | | |-- getutid.3.html<BR>
| | | | |-- getutline.3.html<BR>
| | | | |-- getw.3.html<BR>
| | | | |-- getwd.3.html<BR>
| | | | |-- glob.3.html<BR>
| | | | |-- globfree.3.html<BR>
| | | | |-- gmtime.3.html<BR>
| | | | |-- hasmntopt.3.html<BR>
| | | | |-- hcreate.3.html<BR>
| | | | |-- hdestroy.3.html<BR>
| | | | |-- herror.3.html<BR>
| | | | |-- hsearch.3.html<BR>
| | | | |-- htonl.3.html<BR>
| | | | |-- htons.3.html<BR>
| | | | |-- hypot.3.html<BR>
| | | | |-- index.3.html<BR>
| | | | |-- index.html<BR>
| | | | |-- inet.3.html<BR>
| | | | |-- inet_addr.3.html<BR>
| | | | |-- inet_aton.3.html<BR>
| | | | |-- inet_lnaof.3.html<BR>
| | | | |-- inet_makeaddr.3.html<BR>
| | | | |-- inet_netof.3.html<BR>
| | | | |-- inet_network.3.html<BR>
| | | | |-- inet_ntoa.3.html<BR>
| | | | |-- infnan.3.html<BR>
| | | | |-- initgroups.3.html<BR>
| | | | |-- initstate.3.html<BR>
| | | | |-- insque.3.html<BR>
| | | | |-- intro.3.html<BR>
| | | | |-- isalnum.3.html<BR>
| | | | |-- isalpha.3.html<BR>
| | | | |-- isascii.3.html<BR>
| | | | |-- isatty.3.html<BR>
| | | | |-- isblank.3.html<BR>
| | | | |-- iscntrl.3.html<BR>
| | | | |-- isdigit.3.html<BR>
| | | | |-- isgraph.3.html<BR>
| | | | |-- isinf.3.html<BR>
| | | | |-- islower.3.html<BR>
| | | | |-- isnan.3.html<BR>
| | | | |-- isprint.3.html<BR>
| | | | |-- ispunct.3.html<BR>
| | | | |-- isspace.3.html<BR>
| | | | |-- isupper.3.html<BR>
| | | | |-- isxdigit.3.html<BR>
| | | | |-- j0.3.html<BR>
| | | | |-- j1.3.html<BR>
| | | | |-- jn.3.html<BR>
| | | | |-- jrand48.3.html<BR>
| | | | |-- killpg.3.html<BR>
| | | | |-- labs.3.html<BR>
| | | | |-- lcong48.3.html<BR>
| | | | |-- ldexp.3.html<BR>
| | | | |-- ldiv.3.html<BR>
| | | | |-- lfind.3.html<BR>
| | | | |-- lgamma.3.html<BR>
| | | | |-- localeconv.3.html<BR>
| | | | |-- localtime.3.html<BR>
| | | | |-- log.3.html<BR>
| | | | |-- log10.3.html<BR>
| | | | |-- log1p.3.html<BR>
| | | | |-- longjmp.3.html<BR>
| | | | |-- lrand48.3.html<BR>
| | | | |-- lsearch.3.html<BR>
| | | | |-- malloc.3.html<BR>
| | | | |-- mblen.3.html<BR>
| | | | |-- mbstowcs.3.html<BR>
| | | | |-- mbtowc.3.html<BR>
| | | | |-- memccpy.3.html<BR>
| | | | |-- memchr.3.html<BR>
| | | | |-- memcmp.3.html<BR>
| | | | |-- memcpy.3.html<BR>
| | | | |-- memfrob.3.html<BR>
| | | | |-- memmem.3.html<BR>
| | | | |-- memmove.3.html<BR>
| | | | |-- memset.3.html<BR>
| | | | |-- mkfifo.3.html<BR>
| | | | |-- mkstemp.3.html<BR>
| | | | |-- mktemp.3.html<BR>
| | | | |-- mktime.3.html<BR>
| | | | |-- modf.3.html<BR>
| | | | |-- mrand48.3.html<BR>
| | | | |-- nrand48.3.html<BR>
| | | | |-- ntohl.3.html<BR>
| | | | |-- ntohs.3.html<BR>
| | | | |-- on_exit.3.html<BR>
| | | | |-- opendir.3.html<BR>
| | | | |-- openlog.3.html<BR>
| | | | |-- pathconf.3.html<BR>
| | | | |-- pclose.3.html<BR>
| | | | |-- perror.3.html<BR>
| | | | |-- popen.3.html<BR>
| | | | |-- pow.3.html<BR>
| | | | |-- printf.3.html<BR>
| | | | |-- psignal.3.html<BR>
| | | | |-- putc.3.html<BR>
| | | | |-- putchar.3.html<BR>
| | | | |-- putenv.3.html<BR>
| | | | |-- putpwent.3.html<BR>
| | | | |-- puts.3.html<BR>
| | | | |-- pututline.3.html<BR>
| | | | |-- putw.3.html<BR>
| | | | |-- qsort.3.html<BR>
| | | | |-- raise.3.html<BR>
| | | | |-- rand.3.html<BR>
| | | | |-- random.3.html<BR>
| | | | |-- re_comp.3.html<BR>
| | | | |-- re_exec.3.html<BR>
| | | | |-- readdir.3.html<BR>
| | | | |-- readv.3.html<BR>
| | | | |-- realloc.3.html<BR>
| | | | |-- realpath.3.html<BR>
| | | | |-- regcomp.3.html<BR>
| | | | |-- regerror.3.html<BR>
| | | | |-- regexec.3.html<BR>
| | | | |-- regfree.3.html<BR>
| | | | |-- remove.3.html<BR>
| | | | |-- remque.3.html<BR>
| | | | |-- res_init.3.html<BR>
| | | | |-- res_mkquery.3.html<BR>
| | | | |-- res_query.3.html<BR>
| | | | |-- res_querydomain.3.html<BR>
| | | | |-- res_search.3.html<BR>
| | | | |-- res_send.3.html<BR>
| | | | |-- resolver.3.html<BR>
| | | | |-- rewind.3.html<BR>
| | | | |-- rewinddir.3.html<BR>
| | | | |-- rindex.3.html<BR>
| | | | |-- rint.3.html<BR>
| | | | |-- scandir.3.html<BR>
| | | | |-- scanf.3.html<BR>
| | | | |-- seed48.3.html<BR>
| | | | |-- seekdir.3.html<BR>
| | | | |-- setbuf.3.html<BR>
| | | | |-- setbuffer.3.html<BR>
| | | | |-- setenv.3.html<BR>
| | | | |-- setgrent.3.html<BR>
| | | | |-- sethostent.3.html<BR>
| | | | |-- setjmp.3.html<BR>
| | | | |-- setlinebuf.3.html<BR>
| | | | |-- setlocale.3.html<BR>
| | | | |-- setmntent.3.html<BR>
| | | | |-- setnetent.3.html<BR>
| | | | |-- setprotoent.3.html<BR>
| | | | |-- setpwent.3.html<BR>
| | | | |-- setservent.3.html<BR>
| | | | |-- setstate.3.html<BR>
| | | | |-- setusershell.3.html<BR>
| | | | |-- setutent.3.html<BR>
| | | | |-- setvbuf.3.html<BR>
| | | | |-- sigaddset.3.html<BR>
| | | | |-- sigdelset.3.html<BR>
| | | | |-- sigemptyset.3.html<BR>
| | | | |-- sigfillset.3.html<BR>
| | | | |-- siginterrupt.3.html<BR>
| | | | |-- sigismember.3.html<BR>
| | | | |-- sigsetops.3.html<BR>
| | | | |-- sin.3.html<BR>
| | | | |-- sinh.3.html<BR>
| | | | |-- sleep.3.html<BR>
| | | | |-- snprintf.3.html<BR>
| | | | |-- sprintf.3.html<BR>
| | | | |-- sqrt.3.html<BR>
| | | | |-- srand.3.html<BR>
| | | | |-- srand48.3.html<BR>
| | | | |-- srandom.3.html<BR>
| | | | |-- sscanf.3.html<BR>
| | | | |-- stdarg.3.html<BR>
| | | | |-- stdio.3.html<BR>
| | | | |-- stpcpy.3.html<BR>
| | | | |-- strcasecmp.3.html<BR>
| | | | |-- strcat.3.html<BR>
| | | | |-- strchr.3.html<BR>
| | | | |-- strcmp.3.html<BR>
| | | | |-- strcoll.3.html<BR>
| | | | |-- strcpy.3.html<BR>
| | | | |-- strcspn.3.html<BR>
| | | | |-- strdup.3.html<BR>
| | | | |-- strerror.3.html<BR>
| | | | |-- strfry.3.html<BR>
| | | | |-- strftime.3.html<BR>
| | | | |-- string.3.html<BR>
| | | | |-- strlen.3.html<BR>
| | | | |-- strncasecmp.3.html<BR>
| | | | |-- strncat.3.html<BR>
| | | | |-- strncmp.3.html<BR>
| | | | |-- strncpy.3.html<BR>
| | | | |-- strpbrk.3.html<BR>
| | | | |-- strptime.3.html<BR>
| | | | |-- strrchr.3.html<BR>
| | | | |-- strsep.3.html<BR>
| | | | |-- strsignal.3.html<BR>
| | | | |-- strspn.3.html<BR>
| | | | |-- strstr.3.html<BR>
| | | | |-- strtod.3.html<BR>
| | | | |-- strtok.3.html<BR>
| | | | |-- strtol.3.html<BR>
| | | | |-- strtoul.3.html<BR>
| | | | |-- strxfrm.3.html<BR>
| | | | |-- swab.3.html<BR>
| | | | |-- sysconf.3.html<BR>
| | | | |-- syslog.3.html<BR>
| | | | |-- system.3.html<BR>
| | | | |-- tan.3.html<BR>
| | | | |-- tanh.3.html<BR>
| | | | |-- tcdrain.3.html<BR>
| | | | |-- tcflow.3.html<BR>
| | | | |-- tcflush.3.html<BR>
| | | | |-- tcgetattr.3.html<BR>
| | | | |-- tcgetpgrp.3.html<BR>
| | | | |-- tcsendbreak.3.html<BR>
| | | | |-- tcsetattr.3.html<BR>
| | | | |-- tcsetpgrp.3.html<BR>
| | | | |-- tdelete.3.html<BR>
| | | | |-- telldir.3.html<BR>
| | | | |-- tempnam.3.html<BR>
| | | | |-- termios.3.html<BR>
| | | | |-- tfind.3.html<BR>
| | | | |-- tmpfile.3.html<BR>
| | | | |-- tmpnam.3.html<BR>
| | | | |-- toascii.3.html<BR>
| | | | |-- tolower.3.html<BR>
| | | | |-- toupper.3.html<BR>
| | | | |-- tsearch.3.html<BR>
| | | | |-- ttyname.3.html<BR>
| | | | |-- twalk.3.html<BR>
| | | | |-- tzset.3.html<BR>
| | | | |-- undocumented.3.html<BR>
| | | | |-- ungetc.3.html<BR>
| | | | |-- unsetenv.3.html<BR>
| | | | |-- usleep.3.html<BR>
| | | | |-- utmpname.3.html<BR>
| | | | |-- va_arg.3.html<BR>
| | | | |-- va_end.3.html<BR>
| | | | |-- va_start.3.html<BR>
| | | | |-- vfprintf.3.html<BR>
| | | | |-- vfscanf.3.html<BR>
| | | | |-- vprintf.3.html<BR>
| | | | |-- vscanf.3.html<BR>
| | | | |-- vsnprintf.3.html<BR>
| | | | |-- vsprintf.3.html<BR>
| | | | |-- vsscanf.3.html<BR>
| | | | |-- wcstombs.3.html<BR>
| | | | |-- wctomb.3.html<BR>
| | | | |-- writev.3.html<BR>
| | | | |-- y0.3.html<BR>
| | | | |-- y1.3.html<BR>
| | | | `-- yn.3.html<BR>
| | | |-- man4<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- charsets.4.html<BR>
| | | | |-- console.4.html<BR>
| | | | |-- console_codes.4.html<BR>
| | | | |-- fd.4.html<BR>
| | | | |-- hd.4.html<BR>
| | | | |-- index.html<BR>
| | | | |-- intro.4.html<BR>
| | | | |-- kmem.4.html<BR>
| | | | |-- lp.4.html<BR>
| | | | |-- mem.4.html<BR>
| | | | |-- mouse.4.html<BR>
| | | | |-- null.4.html<BR>
| | | | |-- port.4.html<BR>
| | | | |-- ram.4.html<BR>
| | | | |-- sd.4.html<BR>
| | | | |-- st.4.html<BR>
| | | | |-- tty.4.html<BR>
| | | | |-- ttys.4.html<BR>
| | | | |-- vcs.4.html<BR>
| | | | |-- vcsa.4.html<BR>
| | | | |-- wavelan.4.html<BR>
| | | | `-- zero.4.html<BR>
| | | |-- man5<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- environ.5.html<BR>
| | | | |-- exports.5.html<BR>
| | | | |-- fs.5.html<BR>
| | | | |-- fstab.5.html<BR>
| | | | |-- group.5.html<BR>
| | | | |-- index.html<BR>
| | | | |-- intro.5.html<BR>
| | | | |-- ipc.5.html<BR>
| | | | |-- issue.5.html<BR>
| | | | |-- lilo.conf.5.html<BR>
| | | | |-- motd.5.html<BR>
| | | | |-- nfs.5.html<BR>
| | | | |-- nologin.5.html<BR>
| | | | |-- passwd.5.html<BR>
| | | | |-- protocols.5.html<BR>
| | | | |-- securetty.5.html<BR>
| | | | |-- services.5.html<BR>
| | | | |-- shells.5.html<BR>
| | | | |-- ttytype.5.html<BR>
| | | | |-- utmp.5.html<BR>
| | | | `-- wtmp.5.html<BR>
| | | |-- man6<BR>
| | | | |-- *.html<BR>
| | | | |-- TRANS.TBL<BR>
| | | | `-- index.html<BR>
| | | |-- man7<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- ascii.7.html<BR>
| | | | |-- bootparam.7.html<BR>
| | | | |-- hier.7.html<BR>
| | | | |-- index.html<BR>
| | | | |-- intro.7.html<BR>
| | | | |-- iso_8859_1.7.html<BR>
| | | | |-- latin1.7.html<BR>
| | | | |-- locale.7.html<BR>
| | | | |-- mailaddr.7.html<BR>
| | | | |-- man.7.html<BR>
| | | | |-- signal.7.html<BR>
| | | | |-- suffixes.7.html<BR>
| | | | |-- unicode.7.html<BR>
| | | | `-- utf-8.7.html<BR>
| | | `-- man8<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- index.html<BR>
| | | |-- intro.8.html<BR>
| | | `-- lilo.8.html<BR>
| | |-- liste_section_1<BR>
| | |-- liste_section_2<BR>
| | |-- liste_section_3<BR>
| | |-- liste_section_4<BR>
| | |-- liste_section_5<BR>
| | |-- liste_section_7<BR>
| | |-- liste_section_8<BR>
| | |-- man-fr-0.3-Annonce<BR>
| | |-- man-fr03.tgz<BR>
| | |-- man1<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- basename.1<BR>
| | | |-- cat.1<BR>
| | | |-- chgrp.1<BR>
| | | |-- chmod.1<BR>
| | | |-- chown.1<BR>
| | | |-- cksum.1<BR>
| | | |-- comm.1<BR>
| | | |-- cp.1<BR>
| | | |-- csplit.1<BR>
| | | |-- cut.1<BR>
| | | |-- date.1<BR>
| | | |-- dd.1<BR>
| | | |-- dirname.1<BR>
| | | |-- du.1<BR>
| | | |-- echo.1<BR>
| | | |-- env.1<BR>
| | | |-- expand.1<BR>
| | | |-- expr.1<BR>
| | | |-- false.1<BR>
| | | |-- find.1<BR>
| | | |-- fmt.1<BR>
| | | |-- fold.1<BR>
| | | |-- free.1<BR>
| | | |-- grep.1<BR>
| | | |-- groups.1<BR>
| | | |-- head.1<BR>
| | | |-- id.1<BR>
| | | |-- join.1<BR>
| | | |-- logname.1<BR>
| | | |-- ls.1<BR>
| | | |-- md5sum.1<BR>
| | | |-- mkdir.1<BR>
| | | |-- mkfifo.1<BR>
| | | |-- mknod.1<BR>
| | | |-- mv.1<BR>
| | | |-- nice.1<BR>
| | | |-- nl.1<BR>
| | | |-- nohup.1<BR>
| | | |-- od.1<BR>
| | | |-- paste.1<BR>
| | | |-- pathchk.1<BR>
| | | |-- pr.1<BR>
| | | |-- printenv.1<BR>
| | | |-- printf.1<BR>
| | | |-- pwd.1<BR>
| | | |-- rm.1<BR>
| | | |-- rmdir.1<BR>
| | | |-- sleep.1<BR>
| | | |-- sort.1<BR>
| | | |-- split.1<BR>
| | | |-- stty.1<BR>
| | | |-- su.1<BR>
| | | |-- sum.1<BR>
| | | |-- tac.1<BR>
| | | |-- tail.1<BR>
| | | |-- tee.1<BR>
| | | |-- test.1<BR>
| | | |-- touch.1<BR>
| | | |-- tr.1<BR>
| | | |-- true.1<BR>
| | | |-- tty.1<BR>
| | | |-- uname.1<BR>
| | | |-- unexpand.1<BR>
| | | |-- uniq.1<BR>
| | | |-- users.1<BR>
| | | |-- wc.1<BR>
| | | |-- who.1<BR>
| | | |-- whoami.1<BR>
| | | `-- yes.1<BR>
| | |-- man2<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- _exit.2<BR>
| | | |-- accept.2<BR>
| | | |-- access.2<BR>
| | | |-- acct.2<BR>
| | | |-- adjtimex.2<BR>
| | | |-- afs_syscall.2<BR>
| | | |-- alarm.2<BR>
| | | |-- bdflush.2<BR>
| | | |-- bind.2<BR>
| | | |-- break.2<BR>
| | | |-- brk.2<BR>
| | | |-- cacheflush.2<BR>
| | | |-- chdir.2<BR>
| | | |-- chmod.2<BR>
| | | |-- chown.2<BR>
| | | |-- chroot.2<BR>
| | | |-- clone.2<BR>
| | | |-- close.2<BR>
| | | |-- connect.2<BR>
| | | |-- creat.2<BR>
| | | |-- create_module.2<BR>
| | | |-- delete_module.2<BR>
| | | |-- dup.2<BR>
| | | |-- dup2.2<BR>
| | | |-- execve.2<BR>
| | | |-- fchdir.2<BR>
| | | |-- fchmod.2<BR>
| | | |-- fchown.2<BR>
| | | |-- fcntl.2<BR>
| | | |-- fdatasync.2<BR>
| | | |-- flock.2<BR>
| | | |-- fork.2<BR>
| | | |-- fstat.2<BR>
| | | |-- fstatfs.2<BR>
| | | |-- fsync.2<BR>
| | | |-- ftruncate.2<BR>
| | | |-- get_kernel_syms.2<BR>
| | | |-- getdents.2<BR>
| | | |-- getdomainname.2<BR>
| | | |-- getdtablesize.2<BR>
| | | |-- getegid.2<BR>
| | | |-- geteuid.2<BR>
| | | |-- getgid.2<BR>
| | | |-- getgroups.2<BR>
| | | |-- gethostid.2<BR>
| | | |-- gethostname.2<BR>
| | | |-- getitimer.2<BR>
| | | |-- getpagesize.2<BR>
| | | |-- getpeername.2<BR>
| | | |-- getpgid.2<BR>
| | | |-- getpgrp.2<BR>
| | | |-- getpid.2<BR>
| | | |-- getppid.2<BR>
| | | |-- getpriority.2<BR>
| | | |-- getrlimit.2<BR>
| | | |-- getrusage.2<BR>
| | | |-- getsid.2<BR>
| | | |-- getsockname.2<BR>
| | | |-- getsockopt.2<BR>
| | | |-- gettimeofday.2<BR>
| | | |-- getuid.2<BR>
| | | |-- gtty.2<BR>
| | | |-- idle.2<BR>
| | | |-- init_module.2<BR>
| | | |-- intro.2<BR>
| | | |-- ioctl.2<BR>
| | | |-- ioctl_list.2<BR>
| | | |-- ioperm.2<BR>
| | | |-- iopl.2<BR>
| | | |-- ipc.2<BR>
| | | |-- kill.2<BR>
| | | |-- killpg.2<BR>
| | | |-- link.2<BR>
| | | |-- listen.2<BR>
| | | |-- llseek.2<BR>
| | | |-- lock.2<BR>
| | | |-- lseek.2<BR>
| | | |-- lstat.2<BR>
| | | |-- mkdir.2<BR>
| | | |-- mknod.2<BR>
| | | |-- mlock.2<BR>
| | | |-- mlockall.2<BR>
| | | |-- mmap.2<BR>
| | | |-- modify_ldt.2<BR>
| | | |-- modules.2<BR>
| | | |-- mount.2<BR>
| | | |-- mprotect.2<BR>
| | | |-- mpx.2<BR>
| | | |-- mremap.2<BR>
| | | |-- msgctl.2<BR>
| | | |-- msgget.2<BR>
| | | |-- msgop.2<BR>
| | | |-- msgrcv.2<BR>
| | | |-- msgsnd.2<BR>
| | | |-- msync.2<BR>
| | | |-- munlock.2<BR>
| | | |-- munlockall.2<BR>
| | | |-- munmap.2<BR>
| | | |-- nanosleep.2<BR>
| | | |-- nice.2<BR>
| | | |-- obsolete.2<BR>
| | | |-- oldfstat.2<BR>
| | | |-- oldlstat.2<BR>
| | | |-- oldolduname.2<BR>
| | | |-- oldstat.2<BR>
| | | |-- olduname.2<BR>
| | | |-- open.2<BR>
| | | |-- outb.2<BR>
| | | |-- pause.2<BR>
| | | |-- personality.2<BR>
| | | |-- phys.2<BR>
| | | |-- pipe.2<BR>
| | | |-- prof.2<BR>
| | | |-- profil.2<BR>
| | | |-- ptrace.2<BR>
| | | |-- quotactl.2<BR>
| | | |-- read.2<BR>
| | | |-- readdir.2<BR>
| | | |-- readlink.2<BR>
| | | |-- readv.2<BR>
| | | |-- reboot.2<BR>
| | | |-- recv.2<BR>
| | | |-- recvfrom.2<BR>
| | | |-- recvmsg.2<BR>
| | | |-- rename.2<BR>
| | | |-- rmdir.2<BR>
| | | |-- sbrk.2<BR>
| | | |-- sched_get_priority_max.2<BR>
| | | |-- sched_get_priority_min.2<BR>
| | | |-- sched_getparam.2<BR>
| | | |-- sched_getscheduler.2<BR>
| | | |-- sched_rr_get_interval.2<BR>
| | | |-- sched_setparam.2<BR>
| | | |-- sched_setscheduler.2<BR>
| | | |-- sched_yield.2<BR>
| | | |-- select.2<BR>
| | | |-- semctl.2<BR>
| | | |-- semget.2<BR>
| | | |-- semop.2<BR>
| | | |-- send.2<BR>
| | | |-- sendmsg.2<BR>
| | | |-- sendto.2<BR>
| | | |-- setdomainname.2<BR>
| | | |-- setegid.2<BR>
| | | |-- seteuid.2<BR>
| | | |-- setfsgid.2<BR>
| | | |-- setfsuid.2<BR>
| | | |-- setgid.2<BR>
| | | |-- setgroups.2<BR>
| | | |-- sethostid.2<BR>
| | | |-- sethostname.2<BR>
| | | |-- setitimer.2<BR>
| | | |-- setpgid.2<BR>
| | | |-- setpgrp.2<BR>
| | | |-- setpriority.2<BR>
| | | |-- setregid.2<BR>
| | | |-- setreuid.2<BR>
| | | |-- setrlimit.2<BR>
| | | |-- setsid.2<BR>
| | | |-- setsockopt.2<BR>
| | | |-- settimeofday.2<BR>
| | | |-- setuid.2<BR>
| | | |-- setup.2<BR>
| | | |-- shmat.2<BR>
| | | |-- shmctl.2<BR>
| | | |-- shmdt.2<BR>
| | | |-- shmget.2<BR>
| | | |-- shmop.2<BR>
| | | |-- shutdown.2<BR>
| | | |-- sigaction.2<BR>
| | | |-- sigblock.2<BR>
| | | |-- sigmask.2<BR>
| | | |-- signal.2<BR>
| | | |-- sigpause.2<BR>
| | | |-- sigpending.2<BR>
| | | |-- sigprocmask.2<BR>
| | | |-- sigreturn.2<BR>
| | | |-- sigsuspend.2<BR>
| | | |-- sigvec.2<BR>
| | | |-- socket.2<BR>
| | | |-- socketcall.2<BR>
| | | |-- socketpair.2<BR>
| | | |-- stat.2<BR>
| | | |-- statfs.2<BR>
| | | |-- stime.2<BR>
| | | |-- stty.2<BR>
| | | |-- swapoff.2<BR>
| | | |-- swapon.2<BR>
| | | |-- symlink.2<BR>
| | | |-- sync.2<BR>
| | | |-- sysctl.2<BR>
| | | |-- sysfs.2<BR>
| | | |-- sysinfo.2<BR>
| | | |-- syslog.2<BR>
| | | |-- time.2<BR>
| | | |-- times.2<BR>
| | | |-- truncate.2<BR>
| | | |-- umask.2<BR>
| | | |-- umount.2<BR>
| | | |-- uname.2<BR>
| | | |-- undocumented.2<BR>
| | | |-- unimplemented.2<BR>
| | | |-- unlink.2<BR>
| | | |-- uselib.2<BR>
| | | |-- ustat.2<BR>
| | | |-- utime.2<BR>
| | | |-- vfork.2<BR>
| | | |-- vhangup.2<BR>
| | | |-- vm86.2<BR>
| | | |-- wait.2<BR>
| | | |-- wait3.2<BR>
| | | |-- wait4.2<BR>
| | | |-- waitpid.2<BR>
| | | |-- write.2<BR>
| | | `-- writev.2<BR>
| | |-- man3<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- abort.3<BR>
| | | |-- abs.3<BR>
| | | |-- acos.3<BR>
| | | |-- acosh.3<BR>
| | | |-- addmntent.3<BR>
| | | |-- alloca.3<BR>
| | | |-- alphasort.3<BR>
| | | |-- asctime.3<BR>
| | | |-- asin.3<BR>
| | | |-- asinh.3<BR>
| | | |-- assert.3<BR>
| | | |-- atan.3<BR>
| | | |-- atan2.3<BR>
| | | |-- atanh.3<BR>
| | | |-- atexit.3<BR>
| | | |-- atof.3<BR>
| | | |-- atoi.3<BR>
| | | |-- atol.3<BR>
| | | |-- bcmp.3<BR>
| | | |-- bcopy.3<BR>
| | | |-- bsearch.3<BR>
| | | |-- bstring.3<BR>
| | | |-- byteorder.3<BR>
| | | |-- bzero.3<BR>
| | | |-- calloc.3<BR>
| | | |-- catclose.3<BR>
| | | |-- catgets.3<BR>
| | | |-- catopen.3<BR>
| | | |-- cbrt.3<BR>
| | | |-- ceil.3<BR>
| | | |-- cfgetispeed.3<BR>
| | | |-- cfgetospeed.3<BR>
| | | |-- cfmakeraw.3<BR>
| | | |-- cfsetispeed.3<BR>
| | | |-- cfsetospeed.3<BR>
| | | |-- clearerr.3<BR>
| | | |-- clock.3<BR>
| | | |-- closedir.3<BR>
| | | |-- closelog.3<BR>
| | | |-- confstr.3<BR>
| | | |-- copysign.3<BR>
| | | |-- cos.3<BR>
| | | |-- cosh.3<BR>
| | | |-- crypt.3<BR>
| | | |-- ctermid.3<BR>
| | | |-- ctime.3<BR>
| | | |-- cuserid.3<BR>
| | | |-- difftime.3<BR>
| | | |-- div.3<BR>
| | | |-- dn_comp.3<BR>
| | | |-- dn_expand.3<BR>
| | | |-- drand48.3<BR>
| | | |-- drem.3<BR>
| | | |-- ecvt.3<BR>
| | | |-- endgrent.3<BR>
| | | |-- endhostent.3<BR>
| | | |-- endmntent.3<BR>
| | | |-- endnetent.3<BR>
| | | |-- endprotoent.3<BR>
| | | |-- endpwent.3<BR>
| | | |-- endservent.3<BR>
| | | |-- endusershell.3<BR>
| | | |-- endutent.3<BR>
| | | |-- erand48.3<BR>
| | | |-- erf.3<BR>
| | | |-- erfc.3<BR>
| | | |-- errno.3<BR>
| | | |-- exec.3<BR>
| | | |-- execl.3<BR>
| | | |-- execle.3<BR>
| | | |-- execlp.3<BR>
| | | |-- exect.3<BR>
| | | |-- execv.3<BR>
| | | |-- execvp.3<BR>
| | | |-- exit.3<BR>
| | | |-- exp.3<BR>
| | | |-- expm1.3<BR>
| | | |-- fabs.3<BR>
| | | |-- fclose.3<BR>
| | | |-- fcvt.3<BR>
| | | |-- fdopen.3<BR>
| | | |-- feof.3<BR>
| | | |-- ferror.3<BR>
| | | |-- fflush.3<BR>
| | | |-- ffs.3<BR>
| | | |-- fgetc.3<BR>
| | | |-- fgetgrent.3<BR>
| | | |-- fgetpos.3<BR>
| | | |-- fgetpwent.3<BR>
| | | |-- fgets.3<BR>
| | | |-- fileno.3<BR>
| | | |-- finite.3<BR>
| | | |-- floor.3<BR>
| | | |-- fmod.3<BR>
| | | |-- fnmatch.3<BR>
| | | |-- fopen.3<BR>
| | | |-- fpathconf.3<BR>
| | | |-- fprintf.3<BR>
| | | |-- fpurge.3<BR>
| | | |-- fputc.3<BR>
| | | |-- fputs.3<BR>
| | | |-- fread.3<BR>
| | | |-- free.3<BR>
| | | |-- freopen.3<BR>
| | | |-- frexp.3<BR>
| | | |-- fscanf.3<BR>
| | | |-- fseek.3<BR>
| | | |-- fsetpos.3<BR>
| | | |-- ftell.3<BR>
| | | |-- ftime.3<BR>
| | | |-- ftok.3<BR>
| | | |-- ftw.3<BR>
| | | |-- fwrite.3<BR>
| | | |-- gcvt.3<BR>
| | | |-- get_current_dir_name.3<BR>
| | | |-- getc.3<BR>
| | | |-- getchar.3<BR>
| | | |-- getcwd.3<BR>
| | | |-- getdirentries.3<BR>
| | | |-- getenv.3<BR>
| | | |-- getgrent.3<BR>
| | | |-- getgrgid.3<BR>
| | | |-- getgrnam.3<BR>
| | | |-- gethostbyaddr.3<BR>
| | | |-- gethostbyname.3<BR>
| | | |-- getlogin.3<BR>
| | | |-- getmntent.3<BR>
| | | |-- getnetbyaddr.3<BR>
| | | |-- getnetbyname.3<BR>
| | | |-- getnetent.3<BR>
| | | |-- getopt.3<BR>
| | | |-- getopt_long.3<BR>
| | | |-- getopt_long_only.3<BR>
| | | |-- getpass.3<BR>
| | | |-- getprotobyname.3<BR>
| | | |-- getprotobynumber.3<BR>
| | | |-- getprotoent.3<BR>
| | | |-- getpw.3<BR>
| | | |-- getpwent.3<BR>
| | | |-- getpwnam.3<BR>
| | | |-- getpwuid.3<BR>
| | | |-- gets.3<BR>
| | | |-- getservbyname.3<BR>
| | | |-- getservbyport.3<BR>
| | | |-- getservent.3<BR>
| | | |-- getusershell.3<BR>
| | | |-- getutent.3<BR>
| | | |-- getutid.3<BR>
| | | |-- getutline.3<BR>
| | | |-- getw.3<BR>
| | | |-- getwd.3<BR>
| | | |-- glob.3<BR>
| | | |-- globfree.3<BR>
| | | |-- gmtime.3<BR>
| | | |-- hasmntopt.3<BR>
| | | |-- hcreate.3<BR>
| | | |-- hdestroy.3<BR>
| | | |-- herror.3<BR>
| | | |-- hsearch.3<BR>
| | | |-- htonl.3<BR>
| | | |-- htons.3<BR>
| | | |-- hypot.3<BR>
| | | |-- index.3<BR>
| | | |-- inet.3<BR>
| | | |-- inet_addr.3<BR>
| | | |-- inet_aton.3<BR>
| | | |-- inet_lnaof.3<BR>
| | | |-- inet_makeaddr.3<BR>
| | | |-- inet_netof.3<BR>
| | | |-- inet_network.3<BR>
| | | |-- inet_ntoa.3<BR>
| | | |-- infnan.3<BR>
| | | |-- initgroups.3<BR>
| | | |-- initstate.3<BR>
| | | |-- insque.3<BR>
| | | |-- intro.3<BR>
| | | |-- isalnum.3<BR>
| | | |-- isalpha.3<BR>
| | | |-- isascii.3<BR>
| | | |-- isatty.3<BR>
| | | |-- isblank.3<BR>
| | | |-- iscntrl.3<BR>
| | | |-- isdigit.3<BR>
| | | |-- isgraph.3<BR>
| | | |-- isinf.3<BR>
| | | |-- islower.3<BR>
| | | |-- isnan.3<BR>
| | | |-- isprint.3<BR>
| | | |-- ispunct.3<BR>
| | | |-- isspace.3<BR>
| | | |-- isupper.3<BR>
| | | |-- isxdigit.3<BR>
| | | |-- j0.3<BR>
| | | |-- j1.3<BR>
| | | |-- jn.3<BR>
| | | |-- jrand48.3<BR>
| | | |-- killpg.3<BR>
| | | |-- labs.3<BR>
| | | |-- lcong48.3<BR>
| | | |-- ldexp.3<BR>
| | | |-- ldiv.3<BR>
| | | |-- lfind.3<BR>
| | | |-- lgamma.3<BR>
| | | |-- localeconv.3<BR>
| | | |-- localtime.3<BR>
| | | |-- log.3<BR>
| | | |-- log10.3<BR>
| | | |-- log1p.3<BR>
| | | |-- longjmp.3<BR>
| | | |-- lrand48.3<BR>
| | | |-- lsearch.3<BR>
| | | |-- malloc.3<BR>
| | | |-- mblen.3<BR>
| | | |-- mbstowcs.3<BR>
| | | |-- mbtowc.3<BR>
| | | |-- memccpy.3<BR>
| | | |-- memchr.3<BR>
| | | |-- memcmp.3<BR>
| | | |-- memcpy.3<BR>
| | | |-- memfrob.3<BR>
| | | |-- memmem.3<BR>
| | | |-- memmove.3<BR>
| | | |-- memset.3<BR>
| | | |-- mkfifo.3<BR>
| | | |-- mkstemp.3<BR>
| | | |-- mktemp.3<BR>
| | | |-- mktime.3<BR>
| | | |-- modf.3<BR>
| | | |-- mrand48.3<BR>
| | | |-- nrand48.3<BR>
| | | |-- ntohl.3<BR>
| | | |-- ntohs.3<BR>
| | | |-- on_exit.3<BR>
| | | |-- opendir.3<BR>
| | | |-- openlog.3<BR>
| | | |-- pathconf.3<BR>
| | | |-- pclose.3<BR>
| | | |-- perror.3<BR>
| | | |-- popen.3<BR>
| | | |-- pow.3<BR>
| | | |-- printf.3<BR>
| | | |-- psignal.3<BR>
| | | |-- putc.3<BR>
| | | |-- putchar.3<BR>
| | | |-- putenv.3<BR>
| | | |-- putpwent.3<BR>
| | | |-- puts.3<BR>
| | | |-- pututline.3<BR>
| | | |-- putw.3<BR>
| | | |-- qsort.3<BR>
| | | |-- raise.3<BR>
| | | |-- rand.3<BR>
| | | |-- random.3<BR>
| | | |-- re_comp.3<BR>
| | | |-- re_exec.3<BR>
| | | |-- readdir.3<BR>
| | | |-- readv.3<BR>
| | | |-- realloc.3<BR>
| | | |-- realpath.3<BR>
| | | |-- regcomp.3<BR>
| | | |-- regerror.3<BR>
| | | |-- regexec.3<BR>
| | | |-- regfree.3<BR>
| | | |-- remove.3<BR>
| | | |-- remque.3<BR>
| | | |-- res_init.3<BR>
| | | |-- res_mkquery.3<BR>
| | | |-- res_query.3<BR>
| | | |-- res_querydomain.3<BR>
| | | |-- res_search.3<BR>
| | | |-- res_send.3<BR>
| | | |-- resolver.3<BR>
| | | |-- rewind.3<BR>
| | | |-- rewinddir.3<BR>
| | | |-- rindex.3<BR>
| | | |-- rint.3<BR>
| | | |-- scandir.3<BR>
| | | |-- scanf.3<BR>
| | | |-- seed48.3<BR>
| | | |-- seekdir.3<BR>
| | | |-- setbuf.3<BR>
| | | |-- setbuffer.3<BR>
| | | |-- setenv.3<BR>
| | | |-- setgrent.3<BR>
| | | |-- sethostent.3<BR>
| | | |-- setjmp.3<BR>
| | | |-- setlinebuf.3<BR>
| | | |-- setlocale.3<BR>
| | | |-- setmntent.3<BR>
| | | |-- setnetent.3<BR>
| | | |-- setprotoent.3<BR>
| | | |-- setpwent.3<BR>
| | | |-- setservent.3<BR>
| | | |-- setstate.3<BR>
| | | |-- setusershell.3<BR>
| | | |-- setutent.3<BR>
| | | |-- setvbuf.3<BR>
| | | |-- sigaddset.3<BR>
| | | |-- sigdelset.3<BR>
| | | |-- sigemptyset.3<BR>
| | | |-- sigfillset.3<BR>
| | | |-- siginterrupt.3<BR>
| | | |-- sigismember.3<BR>
| | | |-- sigsetops.3<BR>
| | | |-- sin.3<BR>
| | | |-- sinh.3<BR>
| | | |-- sleep.3<BR>
| | | |-- snprintf.3<BR>
| | | |-- sprintf.3<BR>
| | | |-- sqrt.3<BR>
| | | |-- srand.3<BR>
| | | |-- srand48.3<BR>
| | | |-- srandom.3<BR>
| | | |-- sscanf.3<BR>
| | | |-- stdarg.3<BR>
| | | |-- stdio.3<BR>
| | | |-- stpcpy.3<BR>
| | | |-- strcasecmp.3<BR>
| | | |-- strcat.3<BR>
| | | |-- strchr.3<BR>
| | | |-- strcmp.3<BR>
| | | |-- strcoll.3<BR>
| | | |-- strcpy.3<BR>
| | | |-- strcspn.3<BR>
| | | |-- strdup.3<BR>
| | | |-- strerror.3<BR>
| | | |-- strfry.3<BR>
| | | |-- strftime.3<BR>
| | | |-- string.3<BR>
| | | |-- strlen.3<BR>
| | | |-- strncasecmp.3<BR>
| | | |-- strncat.3<BR>
| | | |-- strncmp.3<BR>
| | | |-- strncpy.3<BR>
| | | |-- strpbrk.3<BR>
| | | |-- strptime.3<BR>
| | | |-- strrchr.3<BR>
| | | |-- strsep.3<BR>
| | | |-- strsignal.3<BR>
| | | |-- strspn.3<BR>
| | | |-- strstr.3<BR>
| | | |-- strtod.3<BR>
| | | |-- strtok.3<BR>
| | | |-- strtol.3<BR>
| | | |-- strtoul.3<BR>
| | | |-- strxfrm.3<BR>
| | | |-- swab.3<BR>
| | | |-- sysconf.3<BR>
| | | |-- syslog.3<BR>
| | | |-- system.3<BR>
| | | |-- tan.3<BR>
| | | |-- tanh.3<BR>
| | | |-- tcdrain.3<BR>
| | | |-- tcflow.3<BR>
| | | |-- tcflush.3<BR>
| | | |-- tcgetattr.3<BR>
| | | |-- tcgetpgrp.3<BR>
| | | |-- tcsendbreak.3<BR>
| | | |-- tcsetattr.3<BR>
| | | |-- tcsetpgrp.3<BR>
| | | |-- tdelete.3<BR>
| | | |-- telldir.3<BR>
| | | |-- tempnam.3<BR>
| | | |-- termios.3<BR>
| | | |-- tfind.3<BR>
| | | |-- tmpfile.3<BR>
| | | |-- tmpnam.3<BR>
| | | |-- toascii.3<BR>
| | | |-- tolower.3<BR>
| | | |-- toupper.3<BR>
| | | |-- tsearch.3<BR>
| | | |-- ttyname.3<BR>
| | | |-- twalk.3<BR>
| | | |-- tzset.3<BR>
| | | |-- undocumented.3<BR>
| | | |-- ungetc.3<BR>
| | | |-- unsetenv.3<BR>
| | | |-- usleep.3<BR>
| | | |-- utmpname.3<BR>
| | | |-- va_arg.3<BR>
| | | |-- va_end.3<BR>
| | | |-- va_start.3<BR>
| | | |-- vfprintf.3<BR>
| | | |-- vfscanf.3<BR>
| | | |-- vprintf.3<BR>
| | | |-- vscanf.3<BR>
| | | |-- vsnprintf.3<BR>
| | | |-- vsprintf.3<BR>
| | | |-- vsscanf.3<BR>
| | | |-- wcstombs.3<BR>
| | | |-- wctomb.3<BR>
| | | |-- writev.3<BR>
| | | |-- y0.3<BR>
| | | |-- y1.3<BR>
| | | `-- yn.3<BR>
| | |-- man4<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- charsets.4<BR>
| | | |-- console.4<BR>
| | | |-- console_codes.4<BR>
| | | |-- fd.4<BR>
| | | |-- hd.4<BR>
| | | |-- intro.4<BR>
| | | |-- kmem.4<BR>
| | | |-- lp.4<BR>
| | | |-- mem.4<BR>
| | | |-- mouse.4<BR>
| | | |-- null.4<BR>
| | | |-- port.4<BR>
| | | |-- ram.4<BR>
| | | |-- sd.4<BR>
| | | |-- st.4<BR>
| | | |-- tty.4<BR>
| | | |-- ttys.4<BR>
| | | |-- vcs.4<BR>
| | | |-- vcsa.4<BR>
| | | |-- wavelan.4<BR>
| | | `-- zero.4<BR>
| | |-- man5<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- environ.5<BR>
| | | |-- exports.5<BR>
| | | |-- fs.5<BR>
| | | |-- fstab.5<BR>
| | | |-- group.5<BR>
| | | |-- intro.5<BR>
| | | |-- ipc.5<BR>
| | | |-- issue.5<BR>
| | | |-- lilo.conf.5<BR>
| | | |-- motd.5<BR>
| | | |-- nfs.5<BR>
| | | |-- nologin.5<BR>
| | | |-- passwd.5<BR>
| | | |-- protocols.5<BR>
| | | |-- securetty.5<BR>
| | | |-- services.5<BR>
| | | |-- shells.5<BR>
| | | |-- ttytype.5<BR>
| | | |-- utmp.5<BR>
| | | `-- wtmp.5<BR>
| | |-- man7<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- ascii.7<BR>
| | | |-- bootparam.7<BR>
| | | |-- hier.7<BR>
| | | |-- intro.7<BR>
| | | |-- iso_8859_1.7<BR>
| | | |-- latin1.7<BR>
| | | |-- locale.7<BR>
| | | |-- mailaddr.7<BR>
| | | |-- man.7<BR>
| | | |-- signal.7<BR>
| | | |-- suffixes.7<BR>
| | | |-- unicode.7<BR>
| | | `-- utf-8.7<BR>
| | `-- man8<BR>
| | |-- TRANS.TBL<BR>
| | |-- intro.8<BR>
| | `-- lilo.8<BR>
| |-- PDF-UTILS<BR>
| | |-- TRANS.TBL<BR>
| | |-- acroread.311<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- acroread.exe<BR>
| | | |-- acroread.txt<BR>
| | | `-- install.txt<BR>
| | |-- xpdf-0.6-linux2.0-elf<BR>
| | | |-- CHANGES<BR>
| | | |-- README<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- pdftops<BR>
| | | |-- pdftops.1<BR>
| | | |-- xpdf<BR>
| | | `-- xpdf.1<BR>
| | `-- xpdf-0.6-sources<BR>
| | |-- ANNOUNCE<BR>
| | |-- CHANGES<BR>
| | |-- Makefile<BR>
| | |-- Makefile.config<BR>
| | |-- README<BR>
| | |-- TRANS.TBL<BR>
| | |-- goo<BR>
| | | |-- GString.cc<BR>
| | | |-- GString.h<BR>
| | | |-- Makefile<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- cover.c<BR>
| | | |-- cover.h<BR>
| | | |-- fileNames.cc<BR>
| | | |-- fileNames.h<BR>
| | | |-- gmem.c<BR>
| | | |-- gmem.h<BR>
| | | |-- gmempp.cc<BR>
| | | |-- gtypes.h<BR>
| | | |-- parseargs.c<BR>
| | | |-- parseargs.h<BR>
| | | |-- vmscomp.com<BR>
| | | `-- vmsdecccomp.com<BR>
| | |-- ltk<BR>
| | | |-- LTKAll.h<BR>
| | | |-- LTKApp.cc<BR>
| | | |-- LTKApp.h<BR>
| | | |-- LTKBorder.cc<BR>
| | | |-- LTKBorder.h<BR>
| | | |-- LTKBox.cc<BR>
| | | |-- LTKBox.h<BR>
| | | |-- LTKButton.cc<BR>
| | | |-- LTKButton.h<BR>
| | | |-- LTKCanvas.cc<BR>
| | | |-- LTKCanvas.h<BR>
| | | |-- LTKConfig.h<BR>
| | | |-- LTKDblBufCanvas.cc<BR>
| | | |-- LTKDblBufCanvas.h<BR>
| | | |-- LTKEmpty.cc<BR>
| | | |-- LTKEmpty.h<BR>
| | | |-- LTKLabel.cc<BR>
| | | |-- LTKLabel.h<BR>
| | | |-- LTKMisc.cc<BR>
| | | |-- LTKMisc.h<BR>
| | | |-- LTKResources.cc<BR>
| | | |-- LTKResources.h<BR>
| | | |-- LTKScrollbar.cc<BR>
| | | |-- LTKScrollbar.h<BR>
| | | |-- LTKScrollingCanvas.cc<BR>
| | | |-- LTKScrollingCanvas.h<BR>
| | | |-- LTKTextIn.cc<BR>
| | | |-- LTKTextIn.h<BR>
| | | |-- LTKWidget.cc<BR>
| | | |-- LTKWidget.h<BR>
| | | |-- LTKWindow.cc<BR>
| | | |-- LTKWindow.h<BR>
| | | |-- Makefile<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- ltkbuild-widgets.h<BR>
| | | |-- ltkbuild.cc<BR>
| | | |-- vmscomp.com<BR>
| | | `-- vmsdecccomp.com<BR>
| | |-- pdftops.1<BR>
| | |-- pdftops.hlp<BR>
| | |-- vmscomp.com<BR>
| | |-- vmsdecccomp.com<BR>
| | |-- xpdf<BR>
| | | |-- Array.cc<BR>
| | | |-- Array.h<BR>
| | | |-- Catalog.cc<BR>
| | | |-- Catalog.h<BR>
| | | |-- Dict.cc<BR>
| | | |-- Dict.h<BR>
| | | |-- Error.cc<BR>
| | | |-- Error.h<BR>
| | | |-- FontInfo.h<BR>
| | | |-- Gfx.cc<BR>
| | | |-- Gfx.h<BR>
| | | |-- GfxFont.cc<BR>
| | | |-- GfxFont.h<BR>
| | | |-- GfxState.cc<BR>
| | | |-- GfxState.h<BR>
| | | |-- Lexer.cc<BR>
| | | |-- Lexer.h<BR>
| | | |-- Link.cc<BR>
| | | |-- Link.h<BR>
| | | |-- Makefile<BR>
| | | |-- Object.cc<BR>
| | | |-- Object.h<BR>
| | | |-- OutputDev.cc<BR>
| | | |-- OutputDev.h<BR>
| | | |-- PDFDoc.cc<BR>
| | | |-- PDFDoc.h<BR>
| | | |-- PSOutputDev.cc<BR>
| | | |-- PSOutputDev.h<BR>
| | | |-- Page.cc<BR>
| | | |-- Page.h<BR>
| | | |-- Params.cc<BR>
| | | |-- Params.h<BR>
| | | |-- Parser.cc<BR>
| | | |-- Parser.h<BR>
| | | |-- Stream-CCITT.h<BR>
| | | |-- Stream.cc<BR>
| | | |-- Stream.h<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- XOutputDev.cc<BR>
| | | |-- XOutputDev.h<BR>
| | | |-- XOutputFontInfo.h<BR>
| | | |-- XRef.cc<BR>
| | | |-- XRef.h<BR>
| | | |-- about.xbm<BR>
| | | |-- config.h<BR>
| | | |-- dblLeftArrow.xbm<BR>
| | | |-- dblRightArrow.xbm<BR>
| | | |-- leftArrow.xbm<BR>
| | | |-- pdftops.cc<BR>
| | | |-- postscript.xbm<BR>
| | | |-- rightArrow.xbm<BR>
| | | |-- rotateCCW.xbm<BR>
| | | |-- rotateCW.xbm<BR>
| | | |-- vms_unlink.c<BR>
| | | |-- vmscomp.com<BR>
| | | |-- vmsdecccomp.com<BR>
| | | |-- xpdf-ltk.h<BR>
| | | |-- xpdf.cc<BR>
| | | |-- xpdf.ltk<BR>
| | | |-- zoomIn.xbm<BR>
| | | `-- zoomOut.xbm<BR>
| | |-- xpdf.1<BR>
| | `-- xpdf.hlp<BR>
| |-- PPP<BR>
| | |-- TRANS.TBL<BR>
| | |-- intmodem.txt<BR>
| | |-- ppp.htm<BR>
| | |-- rouge.gif<BR>
| | `-- tkppp.gif<BR>
| |-- TEX<BR>
| | |-- TRANS.TBL<BR>
| | `-- tex-book.pdf<BR>
| |-- TRANS.TBL<BR>
| |-- VI<BR>
| | |-- TRANS.TBL<BR>
| | `-- memovif.pdf<BR>
| `-- bds222<BR>
| |-- TRANS.TBL<BR>
| |-- bds222.tgz<BR>
| |-- bds_dvi.gz<BR>
| |-- bdsps.gz<BR>
| |-- html<BR>
| | |-- TRANS.TBL<BR>
| | |-- footnode.html<BR>
| | |-- gs.html<BR>
| | |-- img1.gif<BR>
| | |-- img10.gif<BR>
| | |-- img100.gif<BR>
| | |-- img101.gif<BR>
| | |-- img102.gif<BR>
| | |-- img103.gif<BR>
| | |-- img104.gif<BR>
| | |-- img105.gif<BR>
| | |-- img106.gif<BR>
| | |-- img107.gif<BR>
| | |-- img108.gif<BR>
| | |-- img109.gif<BR>
| | |-- img11.gif<BR>
| | |-- img110.gif<BR>
| | |-- img111.gif<BR>
| | |-- img112.gif<BR>
| | |-- img113.gif<BR>
| | |-- img114.gif<BR>
| | |-- img115.gif<BR>
| | |-- img116.gif<BR>
| | |-- img117.gif<BR>
| | |-- img118.gif<BR>
| | |-- img119.gif<BR>
| | |-- img12.gif<BR>
| | |-- img120.gif<BR>
| | |-- img121.gif<BR>
| | |-- img122.gif<BR>
| | |-- img123.gif<BR>
| | |-- img124.gif<BR>
| | |-- img125.gif<BR>
| | |-- img126.gif<BR>
| | |-- img127.gif<BR>
| | |-- img128.gif<BR>
| | |-- img129.gif<BR>
| | |-- img13.gif<BR>
| | |-- img130.gif<BR>
| | |-- img131.gif<BR>
| | |-- img132.gif<BR>
| | |-- img133.gif<BR>
| | |-- img134.gif<BR>
| | |-- img135.gif<BR>
| | |-- img136.gif<BR>
| | |-- img137.gif<BR>
| | |-- img138.gif<BR>
| | |-- img139.gif<BR>
| | |-- img14.gif<BR>
| | |-- img140.gif<BR>
| | |-- img141.gif<BR>
| | |-- img142.gif<BR>
| | |-- img143.gif<BR>
| | |-- img144.gif<BR>
| | |-- img145.gif<BR>
| | |-- img146.gif<BR>
| | |-- img147.gif<BR>
| | |-- img148.gif<BR>
| | |-- img149.gif<BR>
| | |-- img15.gif<BR>
| | |-- img150.gif<BR>
| | |-- img151.gif<BR>
| | |-- img152.gif<BR>
| | |-- img153.gif<BR>
| | |-- img154.gif<BR>
| | |-- img155.gif<BR>
| | |-- img156.gif<BR>
| | |-- img157.gif<BR>
| | |-- img158.gif<BR>
| | |-- img159.gif<BR>
| | |-- img16.gif<BR>
| | |-- img160.gif<BR>
| | |-- img161.gif<BR>
| | |-- img162.gif<BR>
| | |-- img163.gif<BR>
| | |-- img164.gif<BR>
| | |-- img165.gif<BR>
| | |-- img166.gif<BR>
| | |-- img167.gif<BR>
| | |-- img168.gif<BR>
| | |-- img169.gif<BR>
| | |-- img17.gif<BR>
| | |-- img170.gif<BR>
| | |-- img171.gif<BR>
| | |-- img172.gif<BR>
| | |-- img173.gif<BR>
| | |-- img174.gif<BR>
| | |-- img175.gif<BR>
| | |-- img176.gif<BR>
|=20 | |-- img177.gif<BR>
| | |-- img178.gif<BR>
| | |-- img179.gif<BR>
| | |-- img18.gif<BR>
| | |-- img180.gif<BR>
| | |-- img181.gif<BR>
| | |-- img182.gif<BR>
| | |-- img183.gif<BR>
| | |-- img184.gif<BR>
| | |-- img185.gif<BR>
| | |-- img186.gif<BR>
| | |-- img187.gif<BR>
| | |-- img188.gif<BR>
| | |-- img189.gif<BR>
| | |-- img19.gif<BR>
| | |-- img190.gif<BR>
| | |-- img191.gif<BR>
| | |-- img192.gif<BR>
| | |-- img193.gif<BR>
| | |-- img194.gif<BR>
| | |-- img195.gif<BR>
| | |-- img196.gif<BR>
| | |-- img197.gif<BR>
| | |-- img198.gif<BR>
| | |-- img199.gif<BR>
| | |-- img2.gif<BR>
| | |-- img20.gif<BR>
| | |-- img200.gif<BR>
| | |-- img201.gif<BR>
| | |-- img202.gif<BR>
| | |-- img203.gif<BR>
| | |-- img204.gif<BR>
| | |-- img205.gif<BR>
| | |-- img206.gif<BR>
| | |-- img207.gif<BR>
| | |-- img208.gif<BR>
| | |-- img209.gif<BR>
| | |-- img21.gif<BR>
| | |-- img210.gif<BR>
| | |-- img211.gif<BR>
| | |-- img212.gif<BR>
| | |-- img213.gif<BR>
| | |-- img214.gif<BR>
| | |-- img215.gif<BR>
| | |-- img216.gif<BR>
| | |-- img217.gif<BR>
| | |-- img218.gif<BR>
| | |-- img219.gif<BR>
| | |-- img22.gif<BR>
| | |-- img220.gif<BR>
| | |-- img221.gif<BR>
| | |-- img222.gif<BR>
| | |-- img223.gif<BR>
| | |-- img224.gif<BR>
| | |-- img225.gif<BR>
| | |-- img226.gif<BR>
| | |-- img227.gif<BR>
| | |-- img228.gif<BR>
| | |-- img229.gif<BR>
| | |-- img23.gif<BR>
| | |-- img230.gif<BR>
| | |-- img231.gif<BR>
| | |-- img232.gif<BR>
| | |-- img233.gif<BR>
| | |-- img234.gif<BR>
| | |-- img235.gif<BR>
| | |-- img236.gif<BR>
| | |-- img237.gif<BR>
| | |-- img238.gif<BR>
| | |-- img239.gif<BR>
| | |-- img24.gif<BR>
| | |-- img240.gif<BR>
| | |-- img241.gif<BR>
| | |-- img242.gif<BR>
| | |-- img243.gif<BR>
| | |-- img244.gif<BR>
| | |-- img245.gif<BR>
| | |-- img246.gif<BR>
| | |-- img247.gif<BR>
| | |-- img248.gif<BR>
| | |-- img249.gif<BR>
| | |-- img25.gif<BR>
| | |-- img250.gif<BR>
| | |-- img251.gif<BR>
| | |-- img252.gif<BR>
| | |-- img253.gif<BR>
| | |-- img254.gif<BR>
| | |-- img255.gif<BR>
| | |-- img256.gif<BR>
| | |-- img257.gif<BR>
| | |-- img258.gif<BR>
| | |-- img259.gif<BR>
| | |-- img26.gif<BR>
| | |-- img260.gif<BR>
| | |-- img261.gif<BR>
| | |-- img262.gif<BR>
| | |-- img263.gif<BR>
| | |-- img264.gif<BR>
| | |-- img265.gif<BR>
| | |-- img266.gif<BR>
| | |-- img267.gif<BR>
| | |-- img268.gif<BR>
| | |-- img269.gif<BR>
| | |-- img27.gif<BR>
| | |-- img270.gif<BR>
| | |-- img271.gif<BR>
| | |-- img272.gif<BR>
| | |-- img273.gif<BR>
| | |-- img274.gif<BR>
| | |-- img275.gif<BR>
| | |-- img276.gif<BR>
| | |-- img277.gif<BR>
| | |-- img278.gif<BR>
| | |-- img279.gif<BR>
| | |-- img28.gif<BR>
| | |-- img280.gif<BR>
| | |-- img281.gif<BR>
| | |-- img282.gif<BR>
| | |-- img283.gif<BR>
| | |-- img284.gif<BR>
| | |-- img285.gif<BR>
| | |-- img286.gif<BR>
| | |-- img287.gif<BR>
| | |-- img288.gif<BR>
| | |-- img289.gif<BR>
| | |-- img29.gif<BR>
| | |-- img290.gif<BR>
| | |-- img291.gif<BR>
| | |-- img292.gif<BR>
| | |-- img293.gif<BR>
| | |-- img294.gif<BR>
| | |-- img295.gif<BR>
| | |-- img296.gif<BR>
| | |-- img297.gif<BR>
| | |-- img298.gif<BR>
| | |-- img299.gif<BR>
| | |-- img3.gif<BR>
| | |-- img30.gif<BR>
| | |-- img300.gif<BR>
| | |-- img301.gif<BR>
| | |-- img302.gif<BR>
| | |-- img303.gif<BR>
| | |-- img304.gif<BR>
| | |-- img305.gif<BR>
| | |-- img306.gif<BR>
| | |-- img307.gif<BR>
| | |-- img308.gif<BR>
| | |-- img309.gif<BR>
| | |-- img31.gif<BR>
| | |-- img310.gif<BR>
| | |-- img311.gif<BR>
| | |-- img312.gif<BR>
| | |-- img313.gif<BR>
| | |-- img314.gif<BR>
| | |-- img315.gif<BR>
| | |-- img316.gif<BR>
| | |-- img317.gif<BR>
| | |-- img318.gif<BR>
| | |-- img319.gif<BR>
| | |-- img32.gif<BR>
| | |-- img320.gif<BR>
| | |-- img321.gif<BR>
| | |-- img322.gif<BR>
| | |-- img323.gif<BR>
| | |-- img324.gif<BR>
| | |-- img325.gif<BR>
| | |-- img33.gif<BR>
| | |-- img34.gif<BR>
| | |-- img35.gif<BR>
| | |-- img36.gif<BR>
| | |-- img37.gif<BR>
| | |-- img38.gif<BR>
| | |-- img39.gif<BR>
| | |-- img4.gif<BR>
| | |-- img40.gif<BR>
| | |-- img41.gif<BR>
| | |-- img42.gif<BR>
| | |-- img43.gif<BR>
| | |-- img44.gif<BR>
| | |-- img45.gif<BR>
| | |-- img46.gif<BR>
| | |-- img47.gif<BR>
| | |-- img48.gif<BR>
| | |-- img49.gif<BR>
| | |-- img5.gif<BR>
| | |-- img50.gif<BR>
| | |-- img51.gif<BR>
| | |-- img52.gif<BR>
| | |-- img53.gif<BR>
| | |-- img54.gif<BR>
| | |-- img55.gif<BR>
| | |-- img56.gif<BR>
| | |-- img57.gif<BR>
| | |-- img58.gif<BR>
| | |-- img59.gif<BR>
| | |-- img6.gif<BR>
| | |-- img60.gif<BR>
| | |-- img61.gif<BR>
| | |-- img62.gif<BR>
| | |-- img63.gif<BR>
| | |-- img64.gif<BR>
| | |-- img65.gif<BR>
| | |-- img66.gif<BR>
| | |-- img67.gif<BR>
| | |-- img68.gif<BR>
| | |-- img69.gif<BR>
| | |-- img7.gif<BR>
| | |-- img70.gif<BR>
| | |-- img71.gif<BR>
| | |-- img72.gif<BR>
| | |-- img73.gif<BR>
| | |-- img74.gif<BR>
| | |-- img75.gif<BR>
| | |-- img76.gif<BR>
| | |-- img77.gif<BR>
| | |-- img78.gif<BR>
| | |-- img79.gif<BR>
| | |-- img8.gif<BR>
| | |-- img80.gif<BR>
| | |-- img81.gif<BR>
| | |-- img82.gif<BR>
| | |-- img83.gif<BR>
| | |-- img84.gif<BR>
| | |-- img85.gif<BR>
| | |-- img86.gif<BR>
| | |-- img87.gif<BR>
| | |-- img88.gif<BR>
| | |-- img89.gif<BR>
| | |-- img9.gif<BR>
| | |-- img90.gif<BR>
| | |-- img91.gif<BR>
| | |-- img92.gif<BR>
| | |-- img93.gif<BR>
| | |-- img94.gif<BR>
| | |-- img95.gif<BR>
| | |-- img96.gif<BR>
| | |-- img97.gif<BR>
| | |-- img98.gif<BR>
| | |-- img99.gif<BR>
| | |-- node1.html<BR>
| | |-- node10.html<BR>
| | |-- node100.html<BR>
| | |-- node101.html<BR>
| | |-- node102.html<BR>
| | |-- node103.html<BR>
| | |-- node104.html<BR>
| | |-- node105.html<BR>
| | |-- node106.html<BR>
| | |-- node107.html<BR>
| | |-- node108.html<BR>
| | |-- node109.html<BR>
| | |-- node11.html<BR>
| | |-- node110.html<BR>
| | |-- node111.html<BR>
| | |-- node112.html<BR>
| | |-- node113.html<BR>
| | |-- node114.html<BR>
| | |-- node115.html<BR>
| | |-- node116.html<BR>
| | |-- node117.html<BR>
| | |-- node118.html<BR>
| | |-- node119.html<BR>
| | |-- node12.html<BR>
| | |-- node120.html<BR>
| | |-- node121.html<BR>
| | |-- node122.html<BR>
| | |-- node123.html<BR>
| | |-- node124.html<BR>
| | |-- node125.html<BR>
| | |-- node126.html<BR>
| | |-- node127.html<BR>
| | |-- node128.html<BR>
| | |-- node129.html<BR>
| | |-- node13.html<BR>
| | |-- node130.html<BR>
| | |-- node131.html<BR>
| | |-- node132.html<BR>
| | |-- node133.html<BR>
| | |-- node134.html<BR>
| | |-- node135.html<BR>
| | |-- node136.html<BR>
| | |-- node137.html<BR>
| | |-- node138.html<BR>
| | |-- node139.html<BR>
| | |-- node14.html<BR>
| | |-- node140.html<BR>
| | |-- node141.html<BR>
| | |-- node142.html<BR>
| | |-- node143.html<BR>
| | |-- node144.html<BR>
| | |-- node145.html<BR>
| | |-- node146.html<BR>
| | |-- node147.html<BR>
| | |-- node148.html<BR>
| | |-- node149.html<BR>
| | |-- node15.html<BR>
| | |-- node150.html<BR>
| | |-- node151.html<BR>
| | |-- node152.html<BR>
| | |-- node153.html<BR>
| | |-- node154.html<BR>
| | |-- node155.html<BR>
| | |-- node156.html<BR>
| | |-- node157.html<BR>
| | |-- node158.html<BR>
| | |-- node159.html<BR>
| | |-- node16.html<BR>
| | |-- node160.html<BR>
| | |-- node161.html<BR>
| | |-- node162.html<BR>
| | |-- node163.html<BR>
| | |-- node164.html<BR>
| | |-- node165.html<BR>
| | |-- node166.html<BR>
| | |-- node167.html<BR>
| | |-- node168.html<BR>
| | |-- node169.html<BR>
| | |-- node17.html<BR>
| | |-- node170.html<BR>
| | |-- node171.html<BR>
| | |-- node172.html<BR>
| | |-- node173.html<BR>
| | |-- node174.html<BR>
| | |-- node175.html<BR>
| | |-- node176.html<BR>
| | |-- node177.html<BR>
| | |-- node178.html<BR>
| | |-- node179.html<BR>
| | |-- node18.html<BR>
| | |-- node180.html<BR>
| | |-- node181.html<BR>
| | |-- node182.html<BR>
| | |-- node183.html<BR>
| | |-- node184.html<BR>
| | |-- node185.html<BR>
| | |-- node186.html<BR>
| | |-- node187.html<BR>
| | |-- node188.html<BR>
| | |-- node189.html<BR>
| | |-- node19.html<BR>
| | |-- node190.html<BR>
| | |-- node191.html<BR>
| | |-- node192.html<BR>
| | |-- node193.html<BR>
| | |-- node194.html<BR>
| | |-- node195.html<BR>
| | |-- node196.html<BR>
| | |-- node197.html<BR>
| | |-- node198.html<BR>
| | |-- node199.html<BR>
| | |-- node2.html<BR>
| | |-- node20.html<BR>
| | |-- node200.html<BR>
| | |-- node201.html<BR>
| | |-- node202.html<BR>
| | |-- node203.html<BR>
| | |-- node204.html<BR>
| | |-- node205.html<BR>
| | |-- node206.html<BR>
| | |-- node207.html<BR>
| | |-- node208.html<BR>
| | |-- node209.html<BR>
| | |-- node21.html<BR>
| | |-- node210.html<BR>
| | |-- node211.html<BR>
| =20| |-- node212.html<BR>
| | |-- node213.html<BR>
| | |-- node214.html<BR>
| | |-- node215.html<BR>
| | |-- node216.html<BR>
| | |-- node217.html<BR>
| | |-- node218.html<BR>
| | |-- node219.html<BR>
| | |-- node22.html<BR>
| | |-- node220.html<BR>
| | |-- node221.html<BR>
| | |-- node222.html<BR>
| | |-- node223.html<BR>
| | |-- node224.html<BR>
| | |-- node225.html<BR>
| | |-- node226.html<BR>
| | |-- node227.html<BR>
| | |-- node228.html<BR>
| | |-- node229.html<BR>
| | |-- node23.html<BR>
| | |-- node230.html<BR>
| | |-- node231.html<BR>
| | |-- node232.html<BR>
| | |-- node233.html<BR>
| | |-- node234.html<BR>
| | |-- node235.html<BR>
| | |-- node236.html<BR>
| | |-- node237.html<BR>
| | |-- node238.html<BR>
| | |-- node239.html<BR>
| | |-- node24.html<BR>
| | |-- node240.html<BR>
| | |-- node241.html<BR>
| | |-- node242.html<BR>
| | |-- node243.html<BR>
| | |-- node244.html<BR>
| | |-- node245.html<BR>
| | |-- node246.html<BR>
| | |-- node247.html<BR>
| | |-- node248.html<BR>
| | |-- node249.html<BR>
| | |-- node25.html<BR>
| | |-- node250.html<BR>
| | |-- node251.html<BR>
| | |-- node252.html<BR>
| | |-- node253.html<BR>
| | |-- node254.html<BR>
| | |-- node255.html<BR>
| | |-- node256.html<BR>
| | |-- node257.html<BR>
| | |-- node258.html<BR>
| | |-- node259.html<BR>
| | |-- node26.html<BR>
| | |-- node260.html<BR>
| | |-- node261.html<BR>
| | |-- node262.html<BR>
| | |-- node263.html<BR>
| | |-- node264.html<BR>
| | |-- node265.html<BR>
| | |-- node266.html<BR>
| | |-- node267.html<BR>
| | |-- node268.html<BR>
| | |-- node269.html<BR>
| | |-- node27.html<BR>
| | |-- node270.html<BR>
| | |-- node271.html<BR>
| | |-- node28.html<BR>
| | |-- node29.html<BR>
| | |-- node3.html<BR>
| | |-- node30.html<BR>
| | |-- node31.html<BR>
| | |-- node32.html<BR>
| | |-- node33.html<BR>
| | |-- node34.html<BR>
| | |-- node35.html<BR>
| | |-- node36.html<BR>
| | |-- node37.html<BR>
| | |-- node38.html<BR>
| | |-- node39.html<BR>
| | |-- node4.html<BR>
| | |-- node40.html<BR>
| | |-- node41.html<BR>
| | |-- node42.html<BR>
| | |-- node43.html<BR>
| | |-- node44.html<BR>
| | |-- node45.html<BR>
| | |-- node46.html<BR>
| | |-- node47.html<BR>
| | |-- node48.html<BR>
| | |-- node49.html<BR>
| | |-- node5.html<BR>
| | |-- node50.html<BR>
| | |-- node51.html<BR>
| | |-- node52.html<BR>
| | |-- node53.html<BR>
| | |-- node54.html<BR>
| | |-- node55.html<BR>
| | |-- node56.html<BR>
| | |-- node57.html<BR>
| | |-- node58.html<BR>
| | |-- node59.html<BR>
| | |-- node6.html<BR>
| | |-- node60.html<BR>
| | |-- node61.html<BR>
| | |-- node62.html<BR>
| | |-- node63.html<BR>
| | |-- node64.html<BR>
| | |-- node65.html<BR>
| | |-- node66.html<BR>
| | |-- node67.html<BR>
| | |-- node68.html<BR>
| | |-- node69.html<BR>
| | |-- node7.html<BR>
| | |-- node70.html<BR>
| | |-- node71.html<BR>
| | |-- node72.html<BR>
| | |-- node73.html<BR>
| | |-- node74.html<BR>
| | |-- node75.html<BR>
| | |-- node76.html<BR>
| | |-- node77.html<BR>
| | |-- node78.html<BR>
| | |-- node79.html<BR>
| | |-- node8.html<BR>
| | |-- node80.html<BR>
| | |-- node81.html<BR>
| | |-- node82.html<BR>
| | |-- node83.html<BR>
| | |-- node84.html<BR>
| | |-- node85.html<BR>
| | |-- node86.html<BR>
| | |-- node87.html<BR>
| | |-- node88.html<BR>
| | |-- node89.html<BR>
| | |-- node9.html<BR>
| | |-- node90.html<BR>
| | |-- node91.html<BR>
| | |-- node92.html<BR>
| | |-- node93.html<BR>
| | |-- node94.html<BR>
| | |-- node95.html<BR>
| | |-- node96.html<BR>
| | |-- node97.html<BR>
| | |-- node98.html<BR>
| | `-- node99.html<BR>
| `-- icones<BR>
| |-- TRANS.TBL<BR>
| |-- bdlinux.gif<BR>
| |-- contg.gif<BR>
| |-- cross_ref_motif.gif<BR>
| |-- foot_motif.gif<BR>
| |-- indexg.gif<BR>
| |-- leftg.gif<BR>
| |-- point-rg.gif<BR>
| |-- previgr.gif<BR>
| |-- rightg.gif<BR>
| |-- rouge.gif<BR>
| |-- square.gif<BR>
| |-- topg.gif<BR>
| |-- up_motgr.gif<BR>
| `-- upg.gif<BR>
|-- FAQ -> docs/misc/RedHat-FAQ.txt<BR>
|-- INSTALL<BR>
| |-- TRANS.TBL<BR>
| |-- autoboot<BR>
| | |-- TRANS.TBL<BR>
| | |-- autoboot.bat<BR>
| | |-- initrd.img<BR>
| | |-- loadlin.exe<BR>
| | `-- vmlinuz<BR>
| |-- autoboot.bat<BR>
| |-- choix.exe<BR>
| |-- flop1440.bat<BR>
| |-- images<BR>
| | |-- TRANS.TBL<BR>
| | |-- generic<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- boot.img<BR>
| | | `-- supp.img<BR>
| | |-- lisezmoi.txt<BR>
| | `-- scsi<BR>
| | |-- TRANS.TBL<BR>
| | |-- aha1540<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- aha1540.img<BR>
| | | `-- config<BR>
| | |-- aha1740<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- aha1740.img<BR>
| | | `-- config<BR>
| | |-- aic7xxx<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- aic7xxx.img<BR>
| | | `-- config<BR>
| | |-- buslogic<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- buslogic.img<BR>
| | | `-- config<BR>
| | |-- eata_dma<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- config<BR>
| | | `-- eata_dma.img<BR>
| | |-- lisezmoi.txt<BR>
| | |-- supp.img<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- readme<BR>
| | | `-- supp.img<BR>
| | `-- ultrstor<BR>
| | |-- TRANS.TBL<BR>
| | |-- config<BR>
| | `-- ultrstor.img<BR>
| |-- install.bat<BR>
| |-- man-rh41.txt<BR>
| |-- rawrite.exe<BR>
| `-- voir.com<BR>
|-- README<BR>
|-- RPM-PGP-KEY<BR>
|-- RedHat<BR>
| |-- RPMS<BR>
| | |-- ElectricFence-2.0.5-4.i386.rpm<BR>
| | |-- ImageMagick-3.7-5.i386.rpm<BR>
| | |-- ImageMagick-devel-3.7-5.i386.rpm<BR>
| | |-- MAKEDEV-2.2-9.i386.rpm<BR>
| | |-- NetKit-B-0.08-13.i386.rpm<BR>
| | |-- SysVinit-2.64-7.i386.rpm<BR>
| | |-- TRANS.TBL<BR>
| | |-- TheNextLevel-1.0-2.i386.rpm<BR>
| | |-- X11R6-contrib-3.2-1.i386.rpm<BR>
| | |-- XFree86-100dpi-fonts-3.2-4.i386.rpm<BR>
| | |-- XFree86-3.2-4.i386.rpm<BR>
| | |-- XFree86-75dpi-fonts-3.2-4.i386.rpm<BR>
| | |-- XFree86-8514-3.2-4.i386.rpm<BR>
| | |-- XFree86-AGX-3.2-4.i386.rpm<BR>
| | |-- XFree86-I128-3.2-4.i386.rpm<BR>
| | |-- XFree86-Mach32-3.2-4.i386.rpm<BR>
| | |-- XFree86-Mach64-3.2-4.i386.rpm<BR>
| | |-- XFree86-Mach8-3.2-4.i386.rpm<BR>
| | |-- XFree86-Mono-3.2-4.i386.rpm<BR>
| | |-- XFree86-P9000-3.2-4.i386.rpm<BR>
| | |-- XFree86-S3-3.2-4.i386.rpm<BR>
| | |-- XFree86-S3V-3.2-4.i386.rpm<BR>
| | |-- XFree86-SVGA-3.2-4.i386.rpm<BR>
| | |-- XFree86-VGA16-3.2-4.i386.rpm<BR>
| | |-- XFree86-W32-3.2-4.i386.rpm<BR>
| | |-- XFree86-XF86Setup-3.2-4.i386.rpm<BR>
| | |-- XFree86-devel-3.2-4.i386.rpm<BR>
| | |-- XFree86-libs-3.2-4.i386.rpm<BR>
| | |-- Xaw3d-1.3-6.i386.rpm<BR>
| | |-- Xaw3d-devel-1.3-6.i386.rpm<BR>
| | |-- Xconfigurator-2.6-5.i386.rpm<BR>
| | |-- acm-4.7-5.i386.rpm<BR>
| | |-- adduser-1.2-1.i386.rpm<BR>
| | |-- adjtimex-1.2-4.i386.rpm<BR>
| | |-- amd-920824upl102-6.i386.rpm<BR>
| | |-- anonftp-2.3-2.i386.rpm<BR>
| | |-- aout-libs-1.4-6.i386.rpm<BR>
| | |-- apache-1.1.1-8.i386.rpm<BR>
| | |-- arena-0.98.beta3-3.i386.rpm<BR>
| | |-- ash-0.2-7.i386.rpm<BR>
| | |-- at-2.9b-2.i386.rpm<BR>
| | |-- aumix-0.2-4.i386.rpm<BR>
| | |-- autoconf-2.12-1.i386.rpm<BR>
| | |-- bash-1.14.7-1.i386.rpm<BR>
| | |-- basic-1.20-7.i386.rpm<BR>
| | |-- bc-1.03-6.i386.rpm<BR>
| | |-- bdflush-1.5-5.i386.rpm<BR>
| | |-- bin86-0.3-3.i386.rpm<BR>
| | |-- bind-4.9.5-2.i386.rpm<BR>
| | |-- bind-utils-4.9.5-2.i386.rpm<BR>
| | |-- binutils-2.7.0.2-4.i386.rpm<BR>
| | |-- bison-1.25-1.i386.rpm<BR>
| | |-- blt-1.9-5.i386.rpm<BR>
| | |-- blt-devel-1.9-5.i386.rpm<BR>
| | |-- bm2font-3.0-6.i386.rpm<BR>
| | |-- bootp-2.4.3-2.i386.rpm<BR>
| | |-- bootpc-050-2.i386.rpm<BR>
| | |-- bsd-games-1.3-6.i386.rpm<BR>
| | |-- byacc-1.9-4.i386.rpm<BR>
| | |-- caching-nameserver-1.0-1.i386.rpm<BR>
| | |-- cdecl-2.5-3.i386.rpm<BR>
| | |-- cdp-0.33-6.i386.rpm<BR>
| | |-- christminster-3-2.i386.rpm<BR>
| | |-- cmu-snmp-3.2-3.i386.rpm<BR>
| | |-- cmu-snmp-devel-3.2-3.i386.rpm<BR>
| | |-- cmu-snmp-utils-3.2-3.i386.rpm<BR>
| | |-- colour-yahtzee-1.0-3.i386.rpm<BR>
| | |-- control-panel-2.6-1.i386.rpm<BR>
| | |-- cpio-2.4.2-3.i386.rpm<BR>
| | |-- cproto-4.4-4.i386.rpm<BR>
| | |-- cracklib-2.5-1.i386.rpm<BR>
| | |-- cracklib-dicts-2.5-1.i386.rpm<BR>
| | |-- crontabs-1.5-1.i386.rpm<BR>
| | |-- csh-5.2.6-5.i386.rpm<BR>
| | |-- cvs-1.8.1-1.i386.rpm<BR>
| | |-- cxhextris-1.0-5.i386.rpm<BR>
| | |-- db-1.85-10.i386.rpm<BR>
| | |-- db-devel-1.85-10.i386.rpm<BR>
| | |-- dev-2.4-1.i386.rpm<BR>
| | |-- dialog-0.6-7.i386.rpm<BR>
| | |-- diffstat-1.25-1.i386.rpm<BR>
| | |-- diffutils-2.7-5.i386.rpm<BR>
| | |-- dip-3.3.7o-8.i386.rpm<BR>
| | |-- doom-1.8-7.i386.rpm<BR>
| | |-- dosemu-0.64.1-1.i386.rpm<BR>
| | |-- dump-0.3-5.i386.rpm<BR>
| | |-- e2fsprogs-1.04-8.i386.rpm<BR>
| | |-- e2fsprogs-devel-1.04-8.i386.rpm<BR>
| | |-- ed-0.2-5.i386.rpm<BR>
| | |-- efax-0.8a-1.i386.rpm<BR>
| | |-- eject-1.4-3.i386.rpm<BR>
| | |-- elm-2.4.25-7.i386.rpm<BR>
| | |-- emacs-19.34-3.i386.rpm<BR>
| | |-- emacs-X11-19.34-3.i386.rpm<BR>
| | |-- emacs-el-19.34-3.i386.rpm<BR>
| | |-- emacs-nox-19.34-3.i386.rpm<BR>
| | |-- etcskel-1.1-1.i386.rpm<BR>
| | |-- exmh-1.6.9-2.i386.rpm<BR>
| | |-- expect-5.21-2.i386.rpm<BR>
| | |-- ext2ed-0.1-8.i386.rpm<BR>
| | |-- f2c-19960205-6.i386.rpm<BR>
| | |-- f2c-libs-19960205-6.i386.rpm<BR>
| | |-- faces-1.6.1-6.i386.rpm<BR>
| | |-- faces-devel-1.6.1-6.i386.rpm<BR>
| | |-- faces-xface-1.6.1-6.i386.rpm<BR>
| | |-- faq-4.0-1.i386.rpm<BR>
| | |-- fetchmail-2.2-2.i386.rpm<BR>
| | |-- file-3.20-3.i386.rpm<BR>
| | |-- filesystem-1.2-1.i386.rpm<BR>
| | |-- fileutils-3.13-3.i386.rpm<BR>
| | |-- findutils-4.1-9.i386.rpm<BR>
| | |-- flex-2.5.3-3.i386.rpm<BR>
| | |-- flying-6.20-3.i386.rpm<BR>
| | |-- fort77-1.11-1.i386.rpm<BR>
| | |-- fortune-mod-1.0-3.i386.rpm<BR>
| | |-- fstool-2.5-1.i386.rpm<BR>
| | |-- fvwm-1.24r-10.i386.rpm<BR>
| | |-- fvwm95-2.0.42a-6.i386.rpm<BR>
| | |-- fvwm95-icons-2.0.42a-6.i386.rpm<BR>
| | |-- fwhois-1.00-5.i386.rpm<BR>
| | |-- gawk-3.0.0-5.i386.rpm<BR>
| | |-- gcal-1.00-1.i386.rpm<BR>
| | |-- gcc-2.7.2.1-2.i386.rpm<BR>
| | |-- gcc-c++-2.7.2.1-2.i386.rpm<BR>
| | |-- gcc-objc-2.7.2.1-2.i386.rpm<BR>
| | |-- gdb-4.16-5.i386.rpm<BR>
| | |-- gdbm-1.7.3-8.i386.rpm<BR>
| | |-- gdbm-devel-1.7.3-8.i386.rpm<BR>
| | |-- gencat-022591-4.i386.rpm<BR>
| | |-- gettext-0.10-5.i386.rpm<BR>
| | |-- getty_ps-2.0.7h-3.i386.rpm<BR>
| | |-- ghostscript-3.33-4.i386.rpm<BR>
| | |-- ghostscript-fonts-4.0-2.i386.rpm<BR>
| | |-- ghostview-1.5-6.i386.rpm<BR>
| | |-- giftrans-1.11.1-4.i386.rpm<BR>
| | |-- git-4.3.11-4.i386.rpm<BR>
| | |-- glint-2.1.5-1.i386.rpm<BR>
| | |-- gn-2.24-2.i386.rpm<BR>
| | |-- gnuchess-4.0.pl77-1.i386.rpm<BR>
| | |-- gnuplot-3.5-6.i386.rpm<BR>
| | |-- gpm-1.10-8.i386.rpm<BR>
| | |-- gpm-devel-1.10-8.i386.rpm<BR>
| | |-- grep-2.0-5.i386.rpm<BR>
| | |-- groff-1.10-7.i386.rpm<BR>
| | |-- groff-gxditview-1.10-7.i386.rpm<BR>
| | |-- gzip-1.2.4-6.i386.rpm<BR>
| | |-- hdparm-3.1-2.i386.rpm<BR>
| | |-- helptool-2.2-1.i386.rpm<BR>
| | |-- howto-4.1-1.i386.rpm<BR>
| | |-- howto-dvi-4.1-1.i386.rpm<BR>
| | |-- howto-html-4.1-1.i386.rpm<BR>
| | |-- howto-ps-4.1-1.i386.rpm<BR>
| | |-- howto-sgml-4.1-1.i386.rpm<BR>
| | |-- howto-translations-4.1-1.i386.rpm<BR>
| | |-- iBCS-2.0-4.i386.rpm<BR>
| | |-- ical-2.0p2-9.i386.rpm<BR>
| | |-- imap-4.1.BETA-2.i386.rpm<BR>
| | |-- indent-1.9.1-5.i386.rpm<BR>
| | |-- indexhtml-4.0-1.i386.rpm<BR>
| | |-- inews-1.4unoff4-4.i386.rpm<BR>
| | |-- info-3.7-5.i386.rpm<BR>
| | |-- initscripts-2.81-1.i386.rpm<BR>
| | |-- inn-1.4unoff4-4.i386.rpm<BR>
| | |-- intimed-1.10-3.i386.rpm<BR>
| | |-- ipfwadm-2.3.0-2.i386.rpm<BR>
| | |-- ipxutils-1.0-1.i386.rpm<BR>
| | |-- ircii-2.8.2-7.i386.rpm<BR>
| | |-- ircii-help-2.8.2-7.i386.rpm<BR>
| | |-- ispell-3.1.20-3.i386.rpm<BR>
| | |-- jdk-1.0.2.2-2.i386.rpm<BR>
| | |-- jed-0.97.14-3.i386.rpm<BR>
| | |-- jed-xjed-0.97.14-3.i386.rpm<BR>
| | |-- joe-2.8-7.i386.rpm<BR>
| | |-- kbd-0.91-9.i386.rpm<BR>
| | |-- kbdconfig-1.3-1.i386.rpm<BR>
| | |-- kernel-2.0.27-5.i386.rpm<BR>
| | |-- kernel-headers-2.0.27-5.i386.rpm<BR>
| | |-- kernel-modules-2.0.27-5.i386.rpm<BR>
| | |-- kernel-source-2.0.27-5.i386.rpm<BR>
| | |-- kernelcfg-0.3-3.i386.rpm<BR>
| | |-- koules-1.2-2.i386.rpm<BR>
| | |-- koules-sound-1.2-2.i386.rpm<BR>
| | |-- kterm-6.1.0-6.i386.rpm<BR>
| | |-- ld.so-1.7.14-4.i386.rpm<BR>
| | |-- ldp-4.0-2.i386.rpm<BR>
| | |-- less-321-3.i386.rpm<BR>
| | |-- lha-1.00-4.i386.rpm<BR>
| | |-- libc-5.3.12-17.i386.rpm<BR>
| | |-- libc-debug-5.3.12-17.i386.rpm<BR>
| | |-- libc-devel-5.3.12-17.i386.rpm<BR>
| | |-- libc-profile-5.3.12-17.i386.rpm<BR>
| | |-- libc-static-5.3.12-17.i386.rpm<BR>
| | |-- libelf-0.5.2-5.i386.rpm<BR>
| | |-- libg++-2.7.1.4-4.i386.rpm<BR>
| | |-- libg++-devel-2.7.1.4-4.i386.rpm<BR>
| | |-- libgr-2.0.9-6.i386.rpm<BR>
| | |-- libgr-devel-2.0.9-6.i386.rpm<BR>
| | |-- libgr-progs-2.0.9-6.i386.rpm<BR>
| | |-- libpng-0.89c-1.i386.rpm<BR>
| | |-- libpng-devel-0.89c-1.i386.rpm<BR>
| | |-- libtermcap-2.0.8-4.i386.rpm<BR>
| | |-- libtermcap-devel-2.0.8-4.i386.rpm<BR>
| | |-- lilo-0.19-1.i386.rpm<BR>
| | |-- linuxdoc-sgml-1.5-6.i386.rpm<BR>
| | |-- linuxthreads-0.5-1.i386.rpm<BR>
| | |-- linuxthreads-devel-0.5-1.i386.rpm<BR>
| | |-- locale-5.3.12-17.i386.rpm<BR>
| | |-- logrotate-2.0.2-2.i386.rpm<BR>
| | |-- losetup-2.5l-1.i386.rpm<BR>
| | |-- lout-3.08-1.i386.rpm<BR>
| | |-- lout-doc-3.08-1.i386.rpm<BR>
| | |-- lpr-0.13-1.i386.rpm<BR>
| | |-- lrzsz-0.12a-7.i386.rpm<BR>
| | |-- lynx-2.6-2.i386.rpm<BR>
| | |-- m4-1.4-6.i386.rpm<BR>
| | |-- macutils-2.0b3-4.i386.rpm<BR>
| | |-- mailcap-1.0-3.i386.rpm<BR>
| | |-- mailx-5.5.kw-6.i386.rpm<BR>
| | |-- make-3.74-8.i386.rpm<BR>
| | |-- man-1.4h-4.i386.rpm<BR>
| | |-- man-pages-1.12-2.i386.rpm<BR>
| | |-- maplay-1.2-4.i386.rpm<BR>
| | |-- mars-nwe-0.98-5.i386.rpm<BR>
| | |-- mawk-1.2.2-5.i386.rpm<BR>
| | |-- mb-5.0-6.i386.rpm<BR>
| | |-- mc-3.2.11-2.i386.rpm<BR>
| | |-- metamail-2.7-6.i386.rpm<BR>
| | |-- mh-6.8.3-13.i386.rpm<BR>
| | |-- mingetty-0.9.4-3.i386.rpm<BR>
| | |-- minicom-1.75-2.i386.rpm<BR>
| | |-- mkdosfs-ygg-0.3b-4.i386.rpm<BR>
| | |-- mkinitrd-1.4-1.i386.rpm<BR>
| | |-- mkisofs-1.10b2-4.i386.rpm<BR>
| | |-- mkxauth-1.7-4.i386.rpm<BR>
| | |-- modemtool-1.1-2.i386.rpm<BR>
| | |-- modules-2.0.0-5.i386.rpm<BR>
| | |-- moonclock-1.0-6.i386.rpm<BR>
| | |-- mount-2.5l-1.i386.rpm<BR>
| | |-- mouseconfig-1.4-1.i386.rpm<BR>
| | |-- mpage-2.3-1.i386.rpm<BR>
| | |-- mt-st-0.4-2.i386.rpm<BR>
| | |-- mtools-3.0-4.i386.rpm<BR>
| | |-- multimedia-2.1-5.i386.rpm<BR>
| | |-- mxp-1.0-5.i386.rpm<BR>
| | |-- mysterious-1.0-2.i386.rpm<BR>
| | |-- ncftp-2.3.0-4.i386.rpm<BR>
| | |-- ncompress-4.2.4-7.i386.rpm<BR>
| | |-- ncpfs-2.0.5-3.i386.rpm<BR>
| | |-- ncurses-1.9.9e-4.i386.rpm<BR>
| | |-- ncurses-devel-1.9.9e-4.i386.rpm<BR>
| | |-- nenscript-1.13++-7.i386.rpm<BR>
| | |-- net-tools-1.32.alpha-2.i386.rpm<BR>
| | |-- netcfg-2.13-1.i386.rpm<BR>
| | |-- netpbm-1mar1994-10.i386.rpm<BR>
| | |-- newt-0.7-2.i386.rpm<BR>
| | |-- newt-devel-0.7-2.i386.rpm<BR>
| | |-- nfs-server-2.2beta16-5.i386.rpm<BR>
| | |-- nfs-server-clients-2.2beta16-5.i386.rpm<BR>
| | |-- nls-1.0-2.i386.rpm<BR>
| | |-- open-1.3-5.i386.rpm<BR>
| | |-- p2c-1.20-7.i386.rpm<BR>
| | |-- p2c-devel-1.20-7.i386.rpm<BR>
| | |-- pam-0.54-4.i386.rpm<BR>
| | |-- pamconfig-0.50-5.i386.rpm<BR>
| | |-- paradise-2.3p19-5.i386.rpm<BR>
| | |-- passwd-0.50-2.i386.rpm<BR>
| | |-- patch-2.1-4.i386.rpm<BR>
| | |-- pcmcia-cs-2.8.23-5.i386.rpm<BR>
| | |-- pdksh-5.2.8-1.i386.rpm<BR>
| | |-- perl-5.003-6.i386.rpm<BR>
| | |-- pidentd-2.5.1-5.i386.rpm<BR>
| | |-- pine-3.95-2.i386.rpm<BR>
| | |-- pinfocom-3.0-3.i386.rpm<BR>
| | |-- playmidi-2.3-7.i386.rpm<BR>
| | |-- playmidi-X11-2.3-7.i386.rpm<BR>
| | |-- pmake-1.0-5.i386.rpm<BR>
| | |-- portmap-4.0-3.i386.rpm<BR>
| | |-- ppp-2.2.0f-2.i386.rpm<BR>
| | |-- printtool-3.0-12.i386.rpm<BR>
| | |-- procinfo-0.9-1.i386.rpm<BR>
| | |-- procmail-3.10-9.i386.rpm<BR>
| | |-- procps-1.01-11.i386.rpm<BR>
| | |-- procps-X11-1.01-11.i386.rpm<BR>
| | |-- psacct-6.2-1.i386.rpm<BR>
| | |-- psmisc-11-4.i386.rpm<BR>
| | |-- pwdb-0.53-2.i386.rpm<BR>
| | |-- python-1.4-3.i386.rpm<BR>
| | |-- python-devel-1.4-3.i386.rpm<BR>
| | |-- python-docs-1.4-3.i386.rpm<BR>
| | |-- pythonlib-1.12-1.i386.rpm<BR>
| | |-- quota-1.55-2.i386.rpm<BR>
| | |-- rcs-5.7-4.i386.rpm<BR>
| | |-- rdate-0.960923-1.i386.rpm<BR>
| | |-- rdist-1.0-5.i386.rpm<BR>
| | |-- readline-2.0-10.i386.rpm<BR>
| | |-- readline-devel-2.0-10.i386.rpm<BR>
| | |-- redhat-release-4.1-1.i386.rpm<BR>
| | |-- rootfiles-1.3-1.i386.rpm<BR>
| | |-- rpm-2.3-1.i386.rpm<BR>
| | |-- rpm-devel-2.3-1.i386.rpm<BR>
| | |-- rxvt-2.19-1.i386.rpm<BR>
| | |-- samba-1.9.16p9-6.i386.rpm<BR>
| | |-- scottfree-1.14-2.i386.rpm<BR>
| | |-- screen-3.7.1-3.i386.rpm<BR>
| | |-- sed-2.05-6.i386.rpm<BR>
| | |-- sendmail-8.8.4-3.i386.rpm<BR>
| | |-- sendmail-cf-8.8.4-3.i386.rpm<BR>
| | |-- sendmail-doc-8.8.4-3.i386.rpm<BR>
| | |-- setup-1.7-1.i386.rpm<BR>
| | |-- seyon-2.14c-7.i386.rpm<BR>
| | |-- sh-utils-1.12-13.i386.rpm<BR>
| | |-- shadow-utils-960530-6.i386.rpm<BR>
| | |-- sharutils-4.2-5.i386.rpm<BR>
| | |-- slang-0.99.37-2.i386.rpm<BR>
| | |-- slang-devel-0.99.37-2.i386.rpm<BR>
| | |-- sliplogin-2.1.0-3.i386.rpm<BR>
| | |-- slrn-0.9.2.0-1.i386.rpm<BR>
| | |-- smbfs-0.8-1.i386.rpm<BR>
| | |-- sox-11g-5.i386.rpm<BR>
| | |-- spice-2g6-4.i386.rpm<BR>
| | |-- spider-1.0-4.i386.rpm<BR>
| | |-- stat-1.5-5.i386.rpm<BR>
| | |-- statnet-2.00-4.i386.rpm<BR>
| | |-- statserial-1.1-7.i386.rpm<BR>
| | |-- strace-3.1-3.i386.rpm<BR>
| | |-- svgalib-1.2.10-2.i386.rpm<BR>
| | |-- svgalib-devel-1.2.10-2.i386.rpm<BR>
| | |-- swatch-2.1-4.i386.rpm<BR>
| | |-- symlinks-1.0-5.i386.rpm<BR>
| | |-- sysklogd-1.3-15.i386.rpm<BR>
| | |-- taper-6.7.4-2.i386.rpm<BR>
| | |-- tar-1.11.8-9.i386.rpm<BR>
| | |-- tcl-7.6-2.i386.rpm<BR>
| | |-- tclx-7.6.0b1-2.i386.rpm<BR>
| | |-- tcp_wrappers-7.4-3.i386.rpm<BR>
| | |-- tcpdump-3.0.2-5.i386.rpm<BR>
| | |-- tcsh-6.06-9.i386.rpm<BR>
| | |-- termcap-9.12.6-5.i386.rpm<BR>
| | |-- tetex-0.4-7.i386.rpm<BR>
| | |-- tetex-afm-0.4-7.i386.rpm<BR>
| | |-- tetex-dvilj-0.4-7.i386.rpm<BR>
| | |-- tetex-dvips-0.4-7.i386.rpm<BR>
| | |-- tetex-latex-0.4-7.i386.rpm<BR>
| | |-- tetex-xdvi-0.4-7.i386.rpm<BR>
| | |-- texinfo-3.7-5.i386.rpm<BR>
| | |-- textutils-1.19-4.i386.rpm<BR>
| | |-- time-1.7-1.i386.rpm<BR>
| | |-- timeconfig-1.6-1.i386.rpm<BR>
| | |-- timetool-2.2-1.i386.rpm<BR>
| | |-- tin-1.22-5.i386.rpm<BR>
| | |-- tix-4.1.0b1-2.i386.rpm<BR>
| | |-- tk-4.2-2.i386.rpm<BR>
| | |-- tksysv-0.91-1.i386.rpm<BR>
| | |-- tmpwatch-1.1-1.i386.rpm<BR>
| | |-- traceroute-1.0.4.4bsd-2.i386.rpm<BR>
| | |-- tracker-4.3-4.i386.rpm<BR>
| | |-- transfig-3.1.2-c.i386.rpm<BR>
| | |-- tree-1.0-3.i386.rpm<BR>
| | |-- trn-3.6-8.i386.rpm<BR>
| | |-- trojka-1.1-7.i386.rpm<BR>
| | |-- tunelp-1.3-5.i386.rpm<BR>
| | |-- typhoon-1.10.3-4.i386.rpm<BR>
| | |-- umb-scheme-3.2-2.i386.rpm<BR>
| | |-- umsdos_progs-0.9-2.i386.rpm<BR>
| | |-- unarj-2.41a-3.i386.rpm<BR>
| | |-- units-1.0-5.i386.rpm<BR>
| | |-- unzip-5.12-5.i386.rpm<BR>
| | |-- usercfg-3.2-1.i386.rpm<BR>
| | |-- util-linux-2.5-33.i386.rpm<BR>
| | |-- uucp-1.06.1-6.i386.rpm<BR>
| | |-- vga_cardgames-1.3.1-6.i386.rpm<BR>
| | |-- vga_gamespack-1.3-5.i386.rpm<BR>
| | |-- vga_tetris-0.4-3.i386.rpm<BR>
| | |-- vim-4.2-8.i386.rpm<BR>
| | |-- vim-X11-4.2-8.i386.rpm<BR>
| | |-- vixie-cron-3.0.1-12.i386.rpm<BR>
| | |-- vlock-1.0-4.i386.rpm<BR>
| | |-- which-1.0-5.i386.rpm<BR>
| | |-- words-2-3.i386.rpm<BR>
| | |-- wu-ftpd-2.4.2b11-11.i386.rpm<BR>
| | |-- x3270-3.1.0.7-4.i386.rpm<BR>
| | |-- xanim-27063-2.i386.rpm<BR>
| | |-- xbill-1.1-4.i386.rpm<BR>
|=20 | |-- xbl-1.0f-5.i386.rpm<BR>
| | |-- xboard-3.2.pl0-6.i386.rpm<BR>
| | |-- xboing-2.3-4.i386.rpm<BR>
| | |-- xchomp-1.0-6.i386.rpm<BR>
| | |-- xdaliclock-2.07-2.i386.rpm<BR>
| | |-- xdemineur-1.1-5.i386.rpm<BR>
| | |-- xdosemu-0.64.1-1.i386.rpm<BR>
| | |-- xearth-1.0-5.i386.rpm<BR>
| | |-- xevil-1.5-3.i386.rpm<BR>
| | |-- xfig-3.1.4-8.i386.rpm<BR>
| | |-- xfishtank-2.0-6.i386.rpm<BR>
| | |-- xfm-1.3.2-5.i386.rpm<BR>
| | |-- xgalaga-1.6c-3.i386.rpm<BR>
| | |-- xgammon-0.98-7.i386.rpm<BR>
| | |-- xgopher-1.3.3-2.i386.rpm<BR>
| | |-- xinitrc-1.1-1.i386.rpm<BR>
| | |-- xjewel-1.6-5.i386.rpm<BR>
| | |-- xkoules-1.2-2.i386.rpm<BR>
| | |-- xlander-1.2-5.i386.rpm<BR>
| | |-- xlispstat-3.44-6.i386.rpm<BR>
| | |-- xloadimage-4.1-6.i386.rpm<BR>
| | |-- xlockmore-3.12-1.i386.rpm<BR>
| | |-- xmailbox-2.4-4.i386.rpm<BR>
| | |-- xmorph-1996.07.12-2.i386.rpm<BR>
| | |-- xmplay-1.0-7.i386.rpm<BR>
| | |-- xosview-1.4.1-3.i386.rpm<BR>
| | |-- xpaint-2.4.4-3.i386.rpm<BR>
| | |-- xpat2-1.04-3.i386.rpm<BR>
| | |-- xpilot-3.5.1-3.i386.rpm<BR>
| | |-- xpm-3.4i-1.i386.rpm<BR>
| | |-- xpm-devel-3.4i-1.i386.rpm<BR>
| | |-- xpuzzles-5.3.1-2.i386.rpm<BR>
| | |-- xrn-8.02-3.i386.rpm<BR>
| | |-- xscreensaver-1.26-4.i386.rpm<BR>
| | |-- xsnow-1.40-2.i386.rpm<BR>
| | |-- xsysinfo-1.5-2.i386.rpm<BR>
| | |-- xterm-color-1.1-3.i386.rpm<BR>
| | |-- xtetris-2.6-5.i386.rpm<BR>
| | |-- xtoolwait-0.3-3.i386.rpm<BR>
| | |-- xtrojka-1.2.2-2.i386.rpm<BR>
| | |-- xv-3.10a-6.i386.rpm<BR>
| | |-- xview-3.2p1.pl2-4.i386.rpm<BR>
| | |-- xview-clients-3.2p1.pl2-4.i386.rpm<BR>
| | |-- xview-devel-3.2p1.pl2-4.i386.rpm<BR>
| | |-- xview-devel-examples-3.2p1.pl2-4.i386.rpm<BR>
| | |-- xwpe-1.4.2-10.i386.rpm<BR>
| | |-- xwpe-X11-1.4.2-10.i386.rpm<BR>
| | |-- xwpick-2.20-5.i386.rpm<BR>
| | |-- xxgdb-1.12-1.i386.rpm<BR>
| | |-- xzip-140-4.i386.rpm<BR>
| | |-- yp-clients-2.2-7.i386.rpm<BR>
| | |-- yppasswd-0.8-6.i386.rpm<BR>
| | |-- ypserv-1.0.4-3.i386.rpm<BR>
| | |-- ytalk-3.0.2-5.i386.rpm<BR>
| | |-- zgv-2.7-5.i386.rpm<BR>
| | |-- zip-2.1-1.i386.rpm<BR>
| | |-- zlib-1.0.4-1.i386.rpm<BR>
| | |-- zlib-devel-1.0.4-1.i386.rpm<BR>
| | |-- zoneinfo-96i-4.i386.rpm<BR>
| | `-- zsh-3.0.1-2.i386.rpm<BR>
| |-- SRPMS -> ../SRPMS<BR>
| |-- TRANS.TBL<BR>
| |-- base<BR>
| | |-- TRANS.TBL<BR>
| | |-- comps<BR>
| | |-- comps.new<BR>
| | |-- comps.orig<BR>
| | |-- fsstnd.cgz<BR>
| | |-- hdlist<BR>
| | |-- rpmconvert<BR>
| | |-- skeleton.cgz<BR>
| | `-- uglist<BR>
| |-- i386<BR>
| |-- instimage<BR>
| | |-- TRANS.TBL<BR>
| | |-- etc<BR>
| | | |-- TRANS.TBL<BR>
| | | `-- X11<BR>
| | | |-- TRANS.TBL<BR>
| | | `-- fvwm<BR>
| | | |-- TRANS.TBL<BR>
| | | `-- system.fvwmrc<BR>
| | |-- lib<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- ld-linux.so.1 -> ld-linux.so.1.7.14<BR>
| | | |-- ld-linux.so.1.7.14<BR>
| | | |-- libc.so.5 -> libc.so.5.2.18<BR>
| | | |-- libc.so.5.2.18<BR>
| | | |-- libcom_err.so.2 -> libcom_err.so.2.0<BR>
| | | |-- libcom_err.so.2.0<BR>
| | | |-- libe2p.so.2 -> libe2p.so.2.1<BR>
| | | |-- libe2p.so.2.1<BR>
| | | |-- libext2fs.so.2 -> libext2fs.so.2.0<BR>
| | | |-- libext2fs.so.2.0<BR>
| | | |-- libm.so.5 -> libm.so.5.0.5<BR>
| | | |-- libm.so.5.0.5<BR>
| | | |-- libtermcap.so.2 -> libtermcap.so.2.0.5<BR>
| | | `-- libtermcap.so.2.0.5<BR>
| | `-- usr<BR>
| | |-- TRANS.TBL<BR>
| | |-- bin<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- ash<BR>
| | | |-- badblocks<BR>
| | | |-- bash<BR>
| | | |-- cat -> install2<BR>
| | | |-- chmod -> install2<BR>
| | | |-- cp<BR>
| | | |-- cpio<BR>
| | | |-- df<BR>
| | | |-- fdisk<BR>
| | | |-- gdb<BR>
| | | |-- grep<BR>
| | | |-- gunzip -> gzip<BR>
| | | |-- gzip<BR>
| | | |-- install2<BR>
| | | |-- ldd<BR>
| | | |-- ln<BR>
| | | |-- ls<BR>
| | | |-- lsmod -> install2<BR>
| | | |-- mkdir -> install2<BR>
| | | |-- mke2fs<BR>
| | | |-- mknod -> install2<BR>
| | | |-- mount -> install2<BR>
| | | |-- open<BR>
| | | |-- ping<BR>
| | | |-- ps<BR>
| | | |-- rm -> install2<BR>
| | | |-- route<BR>
| | | |-- rpm<BR>
| | | |-- runinstall2 -> install2<BR>
| | | |-- sh -> bash<BR>
| | | |-- strace<BR>
| | | |-- umount -> install2<BR>
| | | |-- vi<BR>
| | | `-- wc<BR>
| | `-- lib<BR>
| | `-- TRANS.TBL<BR>
| `-- rpmcontents.gz<BR>
|-- SRPMS<BR>
| |-- ElectricFence-2.0.5-4.src.rpm<BR>
| |-- ImageMagick-3.7-5.src.rpm<BR>
| |-- MAKEDEV-2.2-9.src.rpm<BR>
| |-- NetKit-B-0.08-13.src.rpm<BR>
| |-- SysVinit-2.64-7.src.rpm<BR>
| |-- TRANS.TBL<BR>
| |-- TheNextLevel-1.0-2.src.rpm<BR>
| |-- X11R6-contrib-3.2-1.src.rpm<BR>
| |-- X11R6.1-pl1-18.src.rpm<BR>
| |-- XFree86-3.2-4.src.rpm<BR>
| |-- Xaw3d-1.3-6.src.rpm<BR>
| |-- Xconfigurator-2.6-5.src.rpm<BR>
| |-- aboot-0.5-1.src.rpm<BR>
| |-- acm-4.7-5.src.rpm<BR>
| |-- adduser-1.2-1.src.rpm<BR>
| |-- adjtimex-1.2-4.src.rpm<BR>
| |-- amd-920824upl102-6.src.rpm<BR>
| |-- anonftp-2.3-2.src.rpm<BR>
| |-- aout-libs-1.4-6.src.rpm<BR>
| |-- apache-1.1.1-8.src.rpm<BR>
| |-- arena-0.98.beta3-3.src.rpm<BR>
| |-- ash-0.2-7.src.rpm<BR>
| |-- at-2.9b-2.src.rpm<BR>
| |-- aumix-0.2-4.src.rpm<BR>
| |-- autoconf-2.12-1.src.rpm<BR>
| |-- bash-1.14.7-1.src.rpm<BR>
| |-- bc-1.03-6.src.rpm<BR>
| |-- bdflush-1.5-5.src.rpm<BR>
| |-- bin86-0.3-3.src.rpm<BR>
| |-- bind-4.9.5-2.src.rpm<BR>
| |-- binutils-2.7.0.2-4.src.rpm<BR>
| |-- bison-1.25-1.src.rpm<BR>
| |-- blt-1.9-5.src.rpm<BR>
| |-- bm2font-3.0-6.src.rpm<BR>
| |-- bootp-2.4.3-2.src.rpm<BR>
| |-- bootpc-050-2.src.rpm<BR>
| |-- bsd-games-1.3-6.src.rpm<BR>
| |-- byacc-1.9-4.src.rpm<BR>
| |-- caching-nameserver-1.0-1.src.rpm<BR>
| |-- cdecl-2.5-3.src.rpm<BR>
| |-- cdp-0.33-6.src.rpm<BR>
| |-- christminster-3-2.src.rpm<BR>
| |-- clock-1.0-1.src.rpm<BR>
| |-- cmu-snmp-3.2-3.src.rpm<BR>
| |-- colour-yahtzee-1.0-3.src.rpm<BR>
| |-- control-panel-2.6-1.src.rpm<BR>
| |-- cpio-2.4.2-3.src.rpm<BR>
| |-- cproto-4.4-4.src.rpm<BR>
| |-- cracklib-2.5-1.src.rpm<BR>
| |-- crontabs-1.5-1.src.rpm<BR>
| |-- csh-5.2.6-5.src.rpm<BR>
| |-- cvs-1.8.1-1.src.rpm<BR>
| |-- cxhextris-1.0-5.src.rpm<BR>
| |-- db-1.85-10.src.rpm<BR>
| |-- dev-2.4-1.src.rpm<BR>
| |-- dialog-0.6-7.src.rpm<BR>
| |-- diffstat-1.25-1.src.rpm<BR>
| |-- diffutils-2.7-5.src.rpm<BR>
| |-- dip-3.3.7o-8.src.rpm<BR>
| |-- doom-1.8-7.src.rpm<BR>
| |-- dosemu-0.64.1-1.src.rpm<BR>
| |-- dump-0.3-5.src.rpm<BR>
| |-- e2fsprogs-1.04-8.src.rpm<BR>
| |-- ed-0.2-5.src.rpm<BR>
| |-- efax-0.8a-1.src.rpm<BR>
| |-- eject-1.4-3.src.rpm<BR>
| |-- elftoaout-1.0-1.src.rpm<BR>
| |-- elm-2.4.25-7.src.rpm<BR>
| |-- emacs-19.34-3.src.rpm<BR>
| |-- etcskel-1.1-1.src.rpm<BR>
| |-- exmh-1.6.9-2.src.rpm<BR>
| |-- ext2ed-0.1-8.src.rpm<BR>
| |-- f2c-19960205-6.src.rpm<BR>
| |-- faces-1.6.1-6.src.rpm<BR>
| |-- faq-4.0-1.src.rpm<BR>
| |-- fetchmail-2.2-2.src.rpm<BR>
| |-- file-3.20-3.src.rpm<BR>
| |-- filesystem-1.2-1.src.rpm<BR>
| |-- fileutils-3.13-3.src.rpm<BR>
| |-- findutils-4.1-9.src.rpm<BR>
| |-- flex-2.5.3-3.src.rpm<BR>
| |-- flying-6.20-3.src.rpm<BR>
| |-- fort77-1.11-1.src.rpm<BR>
| |-- fortune-mod-1.0-3.src.rpm<BR>
| |-- fstool-2.5-1.src.rpm<BR>
| |-- fvwm-1.24r-10.src.rpm<BR>
| |-- fvwm95-2.0.42a-6.src.rpm<BR>
| |-- fwhois-1.00-5.src.rpm<BR>
| |-- gawk-3.0.0-5.src.rpm<BR>
| |-- gcal-1.00-1.src.rpm<BR>
| |-- gcc-2.7.2.1-2.src.rpm<BR>
| |-- gccmakedep-1.0-1.src.rpm<BR>
| |-- gdb-4.16-5.src.rpm<BR>
| |-- gdbm-1.7.3-8.src.rpm<BR>
| |-- gencat-022591-4.src.rpm<BR>
| |-- gettext-0.10-5.src.rpm<BR>
| |-- getty_ps-2.0.7h-3.src.rpm<BR>
| |-- ghostscript-3.33-4.src.rpm<BR>
| |-- ghostscript-fonts-4.0-2.src.rpm<BR>
| |-- ghostview-1.5-6.src.rpm<BR>
| |-- giftrans-1.11.1-4.src.rpm<BR>
| |-- git-4.3.11-4.src.rpm<BR>
| |-- glibc-0.961212-3.src.rpm<BR>
| |-- glint-2.1.5-1.src.rpm<BR>
| |-- gn-2.24-2.src.rpm<BR>
| |-- gnuchess-4.0.pl77-1.src.rpm<BR>
| |-- gnuplot-3.5-6.src.rpm<BR>
| |-- gpm-1.10-8.src.rpm<BR>
| |-- grep-2.0-5.src.rpm<BR>
| |-- groff-1.10-7.src.rpm<BR>
| |-- gzip-1.2.4-6.src.rpm<BR>
| |-- hdparm-3.1-2.src.rpm<BR>
| |-- helptool-2.2-1.src.rpm<BR>
| |-- howto-4.1-1.src.rpm<BR>
| |-- iBCS-2.0-4.src.rpm<BR>
| |-- ical-2.0p2-9.src.rpm<BR>
| |-- imap-4.1.BETA-2.src.rpm<BR>
| |-- indent-1.9.1-5.src.rpm<BR>
| |-- indexhtml-4.0-1.src.rpm<BR>
| |-- initscripts-2.81-1.src.rpm<BR>
| |-- inn-1.4unoff4-4.src.rpm<BR>
| |-- insmod-bfd-0.2-1.src.rpm<BR>
| |-- intimed-1.10-3.src.rpm<BR>
| |-- ipfwadm-2.3.0-2.src.rpm<BR>
| |-- ircii-2.8.2-7.src.rpm<BR>
| |-- ispell-3.1.20-3.src.rpm<BR>
| |-- jdk-1.0.2.2-2.src.rpm<BR>
| |-- jed-0.97.14-3.src.rpm<BR>
| |-- joe-2.8-7.src.rpm<BR>
| |-- kbd-0.91-9.src.rpm<BR>
| |-- kbdconfig-1.3-1.src.rpm<BR>
| |-- kernel-2.0.27-5.src.rpm<BR>
| |-- kernel-sparc-2.0.27-6.src.rpm<BR>
| |-- kernelcfg-0.3-3.src.rpm<BR>
| |-- koules-1.2-2.src.rpm<BR>
| |-- kterm-6.1.0-6.src.rpm<BR>
| |-- ld.so-1.7.14-4.src.rpm<BR>
| |-- ld.so-sparc-1.8.3-2.src.rpm<BR>
| |-- ldconfig-1.8.1-3.src.rpm<BR>
| |-- ldp-4.0-2.src.rpm<BR>
| |-- less-321-3.src.rpm<BR>
| |-- lha-1.00-4.src.rpm<BR>
| |-- libc-5.3.12-17.src.rpm<BR>
| |-- libelf-0.5.2-5.src.rpm<BR>
| |-- libg++-2.7.1.4-4.src.rpm<BR>
| |-- libgr-2.0.9-6.src.rpm<BR>
| |-- libpng-0.89c-1.src.rpm<BR>
| |-- libtermcap-2.0.8-4.src.rpm<BR>
| |-- lilo-0.19-1.src.rpm<BR>
| |-- linuxdoc-sgml-1.5-6.src.rpm<BR>
| |-- linuxthreads-0.5-1.src.rpm<BR>
| |-- logrotate-2.0.2-2.src.rpm<BR>
| |-- lout-3.08-1.src.rpm<BR>
| |-- lpr-0.13-1.src.rpm<BR>
| |-- lrzsz-0.12a-7.src.rpm<BR>
| |-- lynx-2.6-2.src.rpm<BR>
| |-- m4-1.4-6.src.rpm<BR>
| |-- macutils-2.0b3-4.src.rpm<BR>
| |-- mailcap-1.0-3.src.rpm<BR>
| |-- mailx-5.5.kw-6.src.rpm<BR>
| |-- make-3.74-8.src.rpm<BR>
| |-- man-1.4h-4.src.rpm<BR>
| |-- man-pages-1.12-2.src.rpm<BR>
| |-- maplay-1.2-4.src.rpm<BR>
| |-- mars-nwe-0.98-5.src.rpm<BR>
| |-- mawk-1.2.2-5.src.rpm<BR>
| |-- mb-5.0-6.src.rpm<BR>
| |-- mc-3.2.11-2.src.rpm<BR>
| |-- metamail-2.7-6.src.rpm<BR>
| |-- mh-6.8.3-13.src.rpm<BR>
| |-- mingetty-0.9.4-3.src.rpm<BR>
| |-- minicom-1.75-2.src.rpm<BR>
| |-- minlabel-1.2-1.src.rpm<BR>
| |-- mkbb-1.0-4.src.rpm<BR>
| |-- mkdosfs-ygg-0.3b-4.src.rpm<BR>
| |-- mkinitrd-1.4-1.src.rpm<BR>
| |-- mkisofs-1.10b2-4.src.rpm<BR>
| |-- mkxauth-1.7-4.src.rpm<BR>
| |-- modemtool-1.1-2.src.rpm<BR>
| |-- modules-2.0.0-5.src.rpm<BR>
| |-- moonclock-1.0-6.src.rpm<BR>
| |-- mount-2.5l-1.src.rpm<BR>
| |-- mouseconfig-1.4-1.src.rpm<BR>
| |-- mpage-2.3-1.src.rpm<BR>
| |-- mt-st-0.4-2.src.rpm<BR>
| |-- mtools-3.0-4.src.rpm<BR>
| |-- multimedia-2.1-5.src.rpm<BR>
| |-- mxp-1.0-5.src.rpm<BR>
| |-- mysterious-1.0-2.src.rpm<BR>
| |-- ncftp-2.3.0-4.src.rpm<BR>
| |-- ncompress-4.2.4-7.src.rpm<BR>
| |-- ncpfs-2.0.5-3.src.rpm<BR>
| |-- ncurses-1.9.9e-4.src.rpm<BR>
| |-- nenscript-1.13++-7.src.rpm<BR>
| |-- net-tools-1.32.alpha-2.src.rpm<BR>
| |-- netcfg-2.13-1.src.rpm<BR>
| |-- netpbm-1mar1994-10.src.rpm<BR>
| |-- newt-0.7-2.src.rpm<BR>
| |-- nfs-server-2.2beta16-5.src.rpm<BR>
| |-- nls-1.0-2.src.rpm<BR>
| |-- open-1.3-5.src.rpm<BR>
| |-- p2c-1.20-7.src.rpm<BR>
| |-- pam-0.54-4.src.rpm<BR>
| |-- pamconfig-0.50-5.src.rpm<BR>
| |-- paradise-2.3p19-5.src.rpm<BR>
| |-- passwd-0.50-2.src.rpm<BR>
| |-- patch-2.1-4.src.rpm<BR>
| |-- pdksh-5.2.8-1.src.rpm<BR>
| |-- perl-5.003-6.src.rpm<BR>
| |-- pidentd-2.5.1-5.src.rpm<BR>
| |-- pine-3.95-2.src.rpm<BR>
| |-- pinfocom-3.0-3.src.rpm<BR>
| |-- playmidi-2.3-7.src.rpm<BR>
| |-- pmake-1.0-5.src.rpm<BR>
| |-- portmap-4.0-3.src.rpm<BR>
| |-- ppp-2.2.0f-2.src.rpm<BR>
| |-- printtool-3.0-12.src.rpm<BR>
| |-- procinfo-0.9-1.src.rpm<BR>
| |-- procmail-3.10-9.src.rpm<BR>
| |-- procps-1.01-11.src.rpm<BR>
| |-- psacct-6.2-1.src.rpm<BR>
| |-- psmisc-11-4.src.rpm<BR>
| |-- pwdb-0.53-2.src.rpm<BR>
| |-- python-1.4-3.src.rpm<BR>
| |-- pythonlib-1.12-1.src.rpm<BR>
| |-- quickstrip-1.1-2.src.rpm<BR>
| |-- quota-1.55-2.src.rpm<BR>
| |-- rcs-5.7-4.src.rpm<BR>
| |-- rdate-0.960923-1.src.rpm<BR>
| |-- rdist-1.0-5.src.rpm<BR>
| |-- readline-2.0-10.src.rpm<BR>
| |-- redhat-release-4.1-1.src.rpm<BR>
| |-- rootfiles-1.3-1.src.rpm<BR>
| |-- rpm-2.3-1.src.rpm<BR>
| |-- rxvt-2.19-1.src.rpm<BR>
| |-- samba-1.9.16p9-6.src.rpm<BR>
| |-- scottfree-1.14-2.src.rpm<BR>
| |-- screen-3.7.1-3.src.rpm<BR>
| |-- sed-2.05-6.src.rpm<BR>
| |-- sendmail-8.8.4-3.src.rpm<BR>
| |-- setup-1.7-1.src.rpm<BR>
| |-- seyon-2.14c-7.src.rpm<BR>
| |-- sh-utils-1.12-13.src.rpm<BR>
| |-- shadow-utils-960530-6.src.rpm<BR>
| |-- sharutils-4.2-5.src.rpm<BR>
| |-- silo-0.6.7-1.src.rpm<BR>
| |-- slang-0.99.37-2.src.rpm<BR>
| |-- sliplogin-2.1.0-3.src.rpm<BR>
| |-- slrn-0.9.2.0-1.src.rpm<BR>
| |-- smbfs-0.8-1.src.rpm<BR>
| |-- sox-11g-5.src.rpm<BR>
| |-- spice-2g6-4.src.rpm<BR>
| |-- spider-1.0-4.src.rpm<BR>
| |-- stat-1.5-5.src.rpm<BR>
| |-- statnet-2.00-4.src.rpm<BR>
| |-- statserial-1.1-7.src.rpm<BR>
| |-- strace-3.1-3.src.rpm<BR>
| |-- svgalib-1.2.10-2.src.rpm<BR>
| |-- swatch-2.1-4.src.rpm<BR>
| |-- symlinks-1.0-5.src.rpm<BR>
| |-- sysklogd-1.3-15.src.rpm<BR>
| |-- taper-6.7.4-2.src.rpm<BR>
| |-- tar-1.11.8-9.src.rpm<BR>
| |-- tcltk-7.6_4.2-2.src.rpm<BR>
| |-- tcp_wrappers-7.4-3.src.rpm<BR>
| |-- tcpdump-3.0.2-5.src.rpm<BR>
| |-- tcsh-6.06-9.src.rpm<BR>
| |-- termcap-9.12.6-5.src.rpm<BR>
| |-- termfiles_sparc-1.0-4.src.rpm<BR>
| |-- tetex-0.4-7.src.rpm<BR>
| |-- texinfo-3.7-5.src.rpm<BR>
| |-- textutils-1.19-4.src.rpm<BR>
| |-- time-1.7-1.src.rpm<BR>
| |-- timeconfig-1.6-1.src.rpm<BR>
| |-- timetool-2.2-1.src.rpm<BR>
| |-- tin-1.22-5.src.rpm<BR>
| |-- tksysv-0.91-1.src.rpm<BR>
| |-- tmpwatch-1.1-1.src.rpm<BR>
| |-- traceroute-1.0.4.4bsd-2.src.rpm<BR>
| |-- tracker-4.3-4.src.rpm<BR>
| |-- transfig-3.1.2-c.src.rpm<BR>
| |-- tree-1.0-3.src.rpm<BR>
| |-- trn-3.6-8.src.rpm<BR>
| |-- trojka-1.1-7.src.rpm<BR>
| |-- tunelp-1.3-5.src.rpm<BR>
| |-- typhoon-1.10.3-4.src.rpm<BR>
| |-- umb-scheme-3.2-2.src.rpm<BR>
| |-- umsdos_progs-0.9-2.src.rpm<BR>
| |-- unarj-2.41a-3.src.rpm<BR>
| |-- units-1.0-5.src.rpm<BR>
| |-- unzip-5.12-5.src.rpm<BR>
| |-- usercfg-3.2-1.src.rpm<BR>
| |-- util-linux-2.5-33.src.rpm<BR>
| |-- uucp-1.06.1-6.src.rpm<BR>
| |-- vga_cardgames-1.3.1-6.src.rpm<BR>
| |-- vga_gamespack-1.3-5.src.rpm<BR>
| |-- vga_tetris-0.4-3.src.rpm<BR>
| |-- vim-4.2-8.src.rpm<BR>
| |-- vixie-cron-3.0.1-12.src.rpm<BR>
| |-- vlock-1.0-4.src.rpm<BR>
| |-- which-1.0-5.src.rpm<BR>
| |-- words-2-3.src.rpm<BR>
| |-- wu-ftpd-2.4.2b11-11.src.rpm<BR>
| |-- x3270-3.1.0.7-4.src.rpm<BR>
| |-- xanim-27063-2.src.rpm<BR>
| |-- xbill-1.1-4.src.rpm<BR>
| |-- xbl-1.0f-5.src.rpm<BR>
| |-- xboard-3.2.pl0-6.src.rpm<BR>
| |-- xboing-2.3-4.src.rpm<BR>
| |-- xchomp-1.0-6.src.rpm<BR>
| |-- xdaliclock-2.07-2.src.rpm<BR>
| |-- xdemineur-1.1-5.src.rpm<BR>
| |-- xearth-1.0-5.src.rpm<BR>
| |-- xevil-1.5-3.src.rpm<BR>
| |-- xfig-3.1.4-8.src.rpm<BR>
| |-- xfishtank-2.0-6.src.rpm<BR>
| |-- xfm-1.3.2-5.src.rpm<BR>
| |-- xgalaga-1.6c-3.src.rpm<BR>
| |-- xgammon-0.98-7.src.rpm<BR>
| |-- xgopher-1.3.3-2.src.rpm<BR>
| |-- xinitrc-1.1-1.src.rpm<BR>
| |-- xjewel-1.6-5.src.rpm<BR>
| |-- xlander-1.2-5.src.rpm<BR>
| |-- xlispstat-3.44-6.src.rpm<BR>
| |-- xloadimage-4.1-6.src.rpm<BR>
| |-- xlockmore-3.12-1.src.rpm<BR>
| |-- xmailbox-2.4-4.src.rpm<BR>
| |-- xmorph-1996.07.12-2.src.rpm<BR>
| |-- xmplay-1.0-7.src.rpm<BR>
| |-- xosview-1.4.1-3.src.rpm<BR>
| |-- xpaint-2.4.4-3.src.rpm<BR>
| |-- xpat2-1.04-3.src.rpm<BR>
| |-- xpilot-3.5.1-3.src.rpm<BR>
| |-- xpm-3.4i-1.src.rpm<BR>
| |-- xpuzzles-5.3.1-2.src.rpm<BR>
| |-- xrn-8.02-3.src.rpm<BR>
| |-- xscreensaver-1.26-4.src.rpm<BR>
| |-- xsnow-1.40-2.src.rpm<BR>
| |-- xsysinfo-1.5-2.src.rpm<BR>
| |-- xterm-color-1.1-3.src.rpm<BR>
| |-- xtetris-2.6-5.src.rpm<BR>
| |-- xtoolwait-0.3-3.src.rpm<BR>
| |-- xtrojka-1.2.2-2.src.rpm<BR>
| |-- xv-3.10a-6.src.rpm<BR>
| |-- xview-3.2p1.pl2-4.src.rpm<BR>
| |-- xwpe-1.4.2-10.src.rpm<BR>
| |-- xwpick-2.20-5.src.rpm<BR>
| |-- xxgdb-1.12-1.src.rpm<BR>
| |-- xzip-140-4.src.rpm<BR>
| |-- yp-clients-2.2-7.src.rpm<BR>
| |-- yppasswd-0.8-6.src.rpm<BR>
| |-- ypserv-1.0.4-3.src.rpm<BR>
| |-- ytalk-3.0.2-5.src.rpm<BR>
| |-- zgv-2.7-5.src.rpm<BR>
| |-- zip-2.1-1.src.rpm<BR>
| |-- zlib-1.0.4-1.src.rpm<BR>
| |-- zoneinfo-96i-4.src.rpm<BR>
| `-- zsh-3.0.1-2.src.rpm<BR>
|-- SUPPORT<BR>
|-- TRANS.TBL<BR>
|-- UPLOADING<BR>
|-- VENDORS<BR>
|-- docs<BR>
| |-- FAQ<BR>
| | |-- ATAPI-FAQ<BR>
| | |-- Cryptographic-File-System<BR>
| | |-- FAQ<BR>
| | |-- GCC-FAQ<BR>
| | |-- GCC-FAQ.html<BR>
| | |-- GCC-SIG11-FAQ<BR>
| | |-- INDEX<BR>
| | |-- INDEX.html<BR>
| | |-- NFS-FAQ<BR>
| | |-- PPP-FAQ.txt<BR>
| | |-- README<BR>
| | |-- TRANS.TBL<BR>
| | |-- Wine.FAQ<BR>
| | |-- ext2fs-FAQ<BR>
| | |-- linux-faq.README<BR>
| | |-- linux-faq.ascii<BR>
| | `-- linux-faq.ps<BR>
| |-- HOWTO<BR>
| | |-- AX25-HOWTO<BR>
| | |-- Access-HOWTO<BR>
| | |-- BootPrompt-HOWTO<BR>
| | |-- Bootdisk-HOWTO<BR>
| | |-- Busmouse-HOWTO<BR>
| | |-- CDROM-HOWTO<BR>
| | |-- COPYRIGHT<BR>
| | |-- Commercial-HOWTO<BR>
| | |-- Cyrillic-HOWTO<BR>
| | |-- DNS-HOWTO<BR>
| | |-- DOSEMU-HOWTO<BR>
| | |-- Danish-HOWTO<BR>
| | |-- Distribution-HOWTO<BR>
| | |-- ELF-HOWTO<BR>
| | |-- Emacspeak-HOWTO<BR>
| | |-- Ethernet-HOWTO<BR>
| | |-- Finnish-HOWTO<BR>
| | |-- Firewall-HOWTO<BR>
| | |-- Ftape-HOWTO<BR>
| | |-- GCC-HOWTO<BR>
| | |-- German-HOWTO<BR>
| | |-- HAM-HOWTO<BR>
| | |-- HOWTO-INDEX<BR>
| | |-- Hardware-HOWTO<BR>
| | |-- Hebrew-HOWTO<BR>
| | |-- INDEX<BR>
| | |-- INDEX.html<BR>
| | |-- INFO-SHEET<BR>
| | |-- IPX-HOWTO<BR>
| | |-- ISP-Hookup-HOWTO<BR>
| | |-- Installation-HOWTO<BR>
| | |-- Italian-HOWTO<BR>
| | |-- JE-HOWTO<BR>
| | |-- Java-HOWTO<BR>
| | |-- Kernel-HOWTO<BR>
| | |-- Keyboard-HOWTO<BR>
| | |-- Keystroke-HOWTO<BR>
| | |-- Linux-HOWTOs.tar.gz<BR>
| | |-- META-FAQ<BR>
| | |-- MGR-HOWTO<BR>
| | |-- Mail-HOWTO<BR>
| | |-- Module-HOWTO<BR>
| | |-- NET-2-HOWTO<BR>
| | |-- NIS-HOWTO<BR>
| | |-- News-HOWTO<BR>
| | |-- PCI-HOWTO<BR>
| | |-- PCMCIA-HOWTO<BR>
| | |-- PPP-HOWTO<BR>
| | |-- Polish-HOWTO<BR>
| | |-- Portuguese-HOWTO<BR>
| | |-- Printing-HOWTO<BR>
| | |-- Printing-Usage-HOWTO<BR>
| | |-- README<BR>
| | |-- SCSI-HOWTO<BR>
| | |-- SCSI-Programming-HOWTO<BR>
| | |-- SMB-HOWTO<BR>
| | |-- Serial-HOWTO<BR>
| | |-- Shadow-Password-HOWTO<BR>
| | |-- Sound-HOWTO<BR>
| | |-- Sound-Playing-HOWTO<BR>
| | |-- Spanish-HOWTO<BR>
| | |-- TRANS.TBL<BR>
| | |-- Term-HOWTO<BR>
| | |-- Tips-HOWTO<BR>
| | |-- UMSDOS-HOWTO<BR>
| | |-- UPS-HOWTO<BR>
| | |-- UUCP-HOWTO<BR>
| | |-- XFree86-HOWTO<BR>
| | |-- mini<BR>
| | | |-- 3-Button-Mouse<BR>
| | | |-- ADSM-Backup<BR>
| | | |-- Assembly<BR>
| | | |-- Backup-With-MSDOS<BR>
| | | |-- Boca<BR>
| | | |-- BogoMips<BR>
| | | |-- Bridge<BR>
| | | |-- CD-Writer<BR>
| | | |-- Colour-ls<BR>
| | | |-- Consoles<BR>
| | | |-- Consoles-Many<BR>
| | | |-- DOS2Linux<BR>
| | | |-- Diald<BR>
| | | |-- Dip+SLiRP+CSLIP<BR>
| | | |-- Diskless<BR>
| | | |-- Dynamic-IP-Hacks<BR>
| | | |-- GUI-Development<BR>
| | | |-- Getty-ps<BR>
| | | |-- Graphics-Tools<BR>
| | | |-- Gravis-UltraSound<BR>
| | | |-- HTML-Validation<BR>
| | | |-- HTTP+Netware<BR>
| | | |-- INDEX<BR>
| | | |-- INDEX.html<BR>
| | | |-- IO-Port-Programming<BR>
| | | |-- IP-Alias<BR>
| | | |-- IP-Masquerade<BR>
| | | |-- Java-WorkShop<BR>
| | | |-- Jaz-Drive<BR>
| | | |-- Kerneld<BR>
| | | |-- Key-Setup<BR>
| | | |-- Keystroke<BR>
| | | |-- LBX<BR>
| | | |-- LF1000<BR>
| | | |-- LILO<BR>
| | | |-- Large-Disk<BR>
| | | |-- Linux+DOS+Win95+OS2<BR>
| | | |-- Linux+OS2+DOS<BR>
| | | |-- Linux+Win95<BR>
| | | |-- Linux-mini-HOWTOs.tar.gz<BR>
| | | |-- Locales<BR>
| | | |-- Mail-Queue<BR>
| | | |-- Man-Page<BR>
| | | |-- Modeline<BR>
| | | |-- Multiple-Disks-Layout<BR>
| | | |-- Multiple-Ethernet<BR>
| | | |-- NFS-Root<BR>
| | | |-- Online-Support<BR>
| | | |-- PLIP<BR>
| | | |-- PPP-over-ISDN<BR>
| | | |-- Print2Win<BR>
| | | |-- Process-Accounting<BR>
| | | |-- Proxy-ARP<BR>
| | | |-- Quota<BR>
| | | |-- README<BR>
| | | |-- Reading-List<BR>
| | | |-- SLIP+proxyARP<BR>
| | | |-- Stacker<BR>
| | | |-- Swap-Space<BR>
| | | |-- TIA<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- Term-Firewall<BR>
| | | |-- Tiny-News<BR>
| | | |-- Token-Ring<BR>
| | | |-- Upgrade<BR>
| | | |-- Virtual-Web<BR>
| | | |-- Visual-Bell<BR>
| | | |-- Win95+Win+Linux<BR>
| | | |-- WordPerfect<BR>
| | | |-- X-Notebook<BR>
| | | |-- XFree86-XInside<BR>
| | | |-- Xterminal<BR>
| | | `-- ZIP-Drive<BR>
| | `-- other-formats<BR>
| | |-- INDEX<BR>
| | |-- INDEX.html<BR>
| | |-- README<BR>
| | |-- TRANS.TBL<BR>
| | |-- dvi<BR>
| | | |-- AX25-HOWTO.dvi.gz<BR>
| | | |-- Access-HOWTO.dvi.gz<BR>
| | | |-- BootPrompt-HOWTO.dvi.gz<BR>
| | | |-- Bootdisk-HOWTO.dvi.gz<BR>
| | | |-- Busmouse-HOWTO.dvi.gz<BR>
| | | |-- CDROM-HOWTO.dvi.gz<BR>
| | | |-- Commercial-HOWTO.dvi.gz<BR>
| | | |-- Cyrillic-HOWTO.dvi.gz<BR>
| | | |-- DNS-HOWTO.dvi.gz<BR>
| | | |-- DOSEMU-HOWTO.dvi.gz<BR>
| | | |-- Danish-HOWTO.dvi.gz<BR>
| | | |-- Distribution-HOWTO.dvi.gz<BR>
| | | |-- ELF-HOWTO.dvi.gz<BR>
| | | |-- Emacspeak-HOWTO.dvi.gz<BR>
| | | |-- Ethernet-HOWTO.dvi.gz<BR>
| | | |-- Finnish-HOWTO.dvi.gz<BR>
| | | |-- Firewall-HOWTO.dvi.gz<BR>
| | | |-- Ftape-HOWTO.dvi.gz<BR>
| | | |-- GCC-HOWTO.dvi.gz<BR>
| | | |-- German-HOWTO.dvi.gz<BR>
| | | |-- HAM-HOWTO.dvi.gz<BR>
| | | |-- HOWTO-INDEX.dvi.gz<BR>
| | | |-- Hardware-HOWTO.dvi.gz<BR>
| | | |-- Hebrew-HOWTO.dvi.gz<BR>
| | | |-- INFO-SHEET.dvi.gz<BR>
| | | |-- IPX-HOWTO.dvi.gz<BR>
| | | |-- ISP-Hookup-HOWTO.dvi.gz<BR>
| | | |-- Installation-HOWTO.dvi.gz<BR>
| | | |-- Italian-HOWTO.dvi.gz<BR>
| | | |-- Java-HOWTO.dvi.gz<BR>
| | | |-- Kernel-HOWTO.dvi.gz<BR>
| | | |-- Keyboard-HOWTO.dvi.gz<BR>
| | | |-- META-FAQ.dvi.gz<BR>
| | | |-- MGR-HOWTO.dvi.gz<BR>
| | | |-- Mail-HOWTO.dvi.gz<BR>
| | | |-- Module-HOWTO.dvi.gz<BR>
| | | |-- NET-2-HOWTO.dvi.gz<BR>
| | | |-- NIS-HOWTO.dvi.gz<BR>
| | | |-- News-HOWTO.dvi.gz<BR>
| | | |-- PCI-HOWTO.dvi.gz<BR>
| | | |-- PCMCIA-HOWTO.dvi.gz<BR>
| | | |-- PPP-HOWTO.dvi.gz<BR>
| | | |-- Polish-HOWTO.dvi.gz<BR>
| | | |-- Portuguese-HOWTO.dvi.gz<BR>
| | | |-- Printing-HOWTO.dvi.gz<BR>
| | | |-- Printing-Usage-HOWTO.dvi.gz<BR>
| | | |-- README<BR>
| | | |-- SCSI-Programming-HOWTO.dvi.gz<BR>
| | | |-- SMB-HOWTO.dvi.gz<BR>
| | | |-- Serial-HOWTO.dvi.gz<BR>
| | | |-- Shadow-Password-HOWTO.dvi.gz<BR>
| | | |-- Sound-HOWTO.dvi.gz<BR>
| | | |-- Sound-Playing-HOWTO.dvi.gz<BR>
| | | |-- Spanish-HOWTO.dvi.gz<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- Term-HOWTO.dvi.gz<BR>
| | | |-- Tips-HOWTO.dvi.gz<BR>
| | | |-- UMSDOS-HOWTO.dvi.gz<BR>
| | | |-- UPS-HOWTO.dvi.gz<BR>
| | | |-- UUCP-HOWTO.dvi.gz<BR>
| | | `-- XFree86-HOWTO.dvi.gz<BR>
| | |-- html<BR>
| | | |-- AX25-HOWTO-html.tar.gz<BR>
| | | |-- Access-HOWTO-html.tar.gz<BR>
| | | |-- BootPrompt-HOWTO-html.tar.gz<BR>
| | | |-- Bootdisk-HOWTO-html.tar.gz<BR>
| | | |-- Busmouse-HOWTO-html.tar.gz<BR>
| | | |-- CDROM-HOWTO-html.tar.gz<BR>
| | | |-- Commercial-HOWTO-html.tar.gz<BR>
| | | |-- Cyrillic-HOWTO-html.tar.gz<BR>
| | | |-- DNS-HOWTO-html.tar.gz<BR>
| | | |-- DOSEMU-HOWTO-html.tar.gz<BR>
| | | |-- Danish-HOWTO-html.tar.gz<BR>
| | | |-- Distribution-HOWTO-html.tar.gz<BR>
| | | |-- ELF-HOWTO-html.tar.gz<BR>
| | | |-- Emacspeak-HOWTO-html.tar.gz<BR>
| | | |-- Ethernet-HOWTO-html.tar.gz<BR>
| | | |-- Finnish-HOWTO-html.tar.gz<BR>
| | | |-- Firewall-HOWTO-html.tar.gz<BR>
| | | |-- Ftape-HOWTO-html.tar.gz<BR>
| | | |-- GCC-HOWTO-html.tar.gz<BR>
| | | |-- German-HOWTO-html.tar.gz<BR>
| | | |-- HAM-HOWTO-html.tar.gz<BR>
| | | |-- HOWTO-INDEX-html.tar.gz<BR>
| | | |-- Hardware-HOWTO-html.tar.gz<BR>
| | | |-- Hebrew-HOWTO-html.tar.gz<BR>
| | | |-- INFO-SHEET-html.tar.gz<BR>
| | | |-- IPX-HOWTO-html.tar.gz<BR>
| | | |-- ISP-Hookup-HOWTO-html.tar.gz<BR>
| | | |-- Installation-HOWTO-html.tar.gz<BR>
| | | |-- Italian-HOWTO-html.tar.gz<BR>
| | | |-- Java-HOWTO-html.tar.gz<BR>
| | | |-- Jave-HOWTO-html.tar.gz<BR>
| | | |-- Kernel-HOWTO-html.tar.gz<BR>
| | | |-- Keyboard-HOWTO-html.tar.gz<BR>
| | | |-- META-FAQ-html.tar.gz<BR>
| | | |-- MGR-HOWTO-html.tar.gz<BR>
| | | |-- Mail-HOWTO-html.tar.gz<BR>
| | | |-- Module-HOWTO-html.tar.gz<BR>
| | | |-- NET-2-HOWTO-html.tar.gz<BR>
| | | |-- NIS-HOWTO-html.tar.gz<BR>
| | | |-- News-HOWTO-html.tar.gz<BR>
| | | |-- PCI-HOWTO-html.tar.gz<BR>
| | | |-- PCMCIA-HOWTO-html.tar.gz<BR>
| | | |-- PPP-HOWTO-html.tar.gz<BR>
| | | |-- Polish-HOWTO-html.tar.gz<BR>
| | | |-- Portuguese-HOWTO-html.tar.gz<BR>
| | | |-- Printing-HOWTO-html.tar.gz<BR>
| | | |-- Printing-Usage-HOWTO-html.tar.gz<BR>
| | | |-- SCSI-Programming-HOWTO-html.tar.gz<BR>
| | | |-- SMB-HOWTO-html.tar.gz<BR>
| | | |-- Serial-HOWTO-html.tar.gz<BR>
| | | |-- Shadow-Password-HOWTO-html.tar.gz<BR>
| | | |-- Sound-HOWTO-html.tar.gz<BR>
| | | |-- Sound-Playing-HOWTO-html.tar.gz<BR>
| | | |-- Spanish-HOWTO-html.tar.gz<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- Term-HOWTO-html.tar.gz<BR>
| | | |-- Tips-HOWTO-html.tar.gz<BR>
| | | |-- UMSDOS-HOWTO-html.tar.gz<BR>
| | | |-- UPS-HOWTO-html.tar.gz<BR>
| | | |-- UUCP-HOWTO-html.tar.gz<BR>
| | | `-- XFree86-HOWTO-html.tar.gz<BR>
| | |-- ps<BR>
| | | |-- AX25-HOWTO.ps.gz<BR>
| | | |-- Access-HOWTO.ps.gz<BR>
| | | |-- BootPrompt-HOWTO.ps.gz<BR>
| | | |-- Bootdisk-HOWTO.ps.gz<BR>
| | | |-- Busmouse-HOWTO.ps.gz<BR>
| | | |-- CDROM-HOWTO.ps.gz<BR>
| | | |-- Commercial-HOWTO.ps.gz<BR>
| | | |-- Cyrillic-HOWTO.ps.gz<BR>
| | | |-- DNS-HOWTO.ps.gz<BR>
| | | |-- DOSEMU-HOWTO.ps.gz<BR>
| | | |-- Danish-HOWTO.ps.gz<BR>
| | | |-- Distribution-HOWTO.ps.gz<BR>
| | | |-- ELF-HOWTO.ps.gz<BR>
| | | |-- Emacspeak-HOWTO.ps.gz<BR>
| | | |-- Ethernet-HOWTO.ps.gz<BR>
| | | |-- Finnish-HOWTO.ps.gz<BR>
| | | |-- Firewall-HOWTO.ps.gz<BR>
| | | |-- Ftape-HOWTO.ps.gz<BR>
| | | |-- GCC-HOWTO.ps.gz<BR>
| | | |-- German-HOWTO.ps.gz<BR>
| | | |-- HAM-HOWTO.ps.gz<BR>
| | | |-- HOWTO-INDEX.ps.gz<BR>
| | | |-- Hardware-HOWTO.ps.gz<BR>
| | | |-- Hebrew-HOWTO.ps.gz<BR>
| | | |-- INFO-SHEET.ps.gz<BR>
| | | |-- IPX-HOWTO.ps.gz<BR>
| | | |-- ISP-Hookup-HOWTO.ps.gz<BR>
| | | |-- Installation-HOWTO.ps.gz<BR>
| | | |-- Italian-HOWTO.ps.gz<BR>
| | | |-- Java-HOWTO.ps.gz<BR>
| | | |-- Kernel-HOWTO.ps.gz<BR>
| | | |-- Keyboard-HOWTO.ps.gz<BR>
| | | |-- META-FAQ.ps.gz<BR>
| | | |-- MGR-HOWTO.ps.gz<BR>
| | | |-- Mail-HOWTO.ps.gz<BR>
| | | |-- Module-HOWTO.ps.gz<BR>
| | | |-- NET-2-HOWTO.ps.gz<BR>
| | | |-- NIS-HOWTO.ps.gz<BR>
| | | |-- News-HOWTO.ps.gz<BR>
| | | |-- PCI-HOWTO.ps.gz<BR>
| | | |-- PCMCIA-HOWTO.ps.gz<BR>
| | | |-- PPP-HOWTO.ps.gz<BR>
| | | |-- Polish-HOWTO.ps.gz<BR>
| | | |-- Portuguese-HOWTO.ps.gz<BR>
| | | |-- Printing-HOWTO.ps.gz<BR>
| | | |-- Printing-Usage-HOWTO.ps.gz<BR>
| | | |-- README<BR>
| | | |-- SCSI-Programming-HOWTO.ps.gz<BR>
| | | |-- SMB-HOWTO.ps.gz<BR>
| | | |-- Serial-HOWTO.ps.gz<BR>
| | | |-- Shadow-Password-HOWTO.ps.gz<BR>
| | | |-- Sound-HOWTO.ps.gz<BR>
| | | |-- Sound-Playing-HOWTO.ps.gz<BR>
| | | |-- Spanish-HOWTO.ps.gz<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- Term-HOWTO.ps.gz<BR>
| | | |-- Tips-HOWTO.ps.gz<BR>
| | | |-- UMSDOS-HOWTO.ps.gz<BR>
| | | |-- UPS-HOWTO.ps.gz<BR>
| | | |-- UUCP-HOWTO.ps.gz<BR>
| | | `-- XFree86-HOWTO.ps.gz<BR>
| | `-- sgml<BR>
| | |-- AX25-HOWTO.sgml.gz<BR>
| | |-- Access-HOWTO.sgml.gz<BR>
| | |-- BootPrompt-HOWTO.sgml.gz<BR>
| | |-- Bootdisk-HOWTO.sgml.gz<BR>
| | |-- Busmouse-HOWTO.sgml.gz<BR>
| | |-- CDROM-HOWTO.sgml.gz<BR>
| | |-- Commercial-HOWTO.sgml.gz<BR>
| | |-- Cyrillic-HOWTO.sgml.gz<BR>
| | |-- DNS-HOWTO.sgml.gz<BR>
| | |-- DOSEMU-HOWTO.sgml.gz<BR>
| | |-- Danish-HOWTO.sgml.gz<BR>
| | |-- Distribution-HOWTO.sgml.gz<BR>
| | |-- ELF-HOWTO.sgml.gz<BR>
| | |-- Emacspeak-HOWTO.sgml.gz<BR>
| | |-- Ethernet-HOWTO.sgml.gz<BR>
| | |-- Finnish-HOWTO.sgml.gz<BR>
| | |-- Firewall-HOWTO.sgml.gz<BR>
| | |-- Ftape-HOWTO.sgml.gz<BR>
| | |-- GCC-HOWTO.sgml.gz<BR>
| | |-- German-HOWTO.sgml.gz<BR>
| | |-- HAM-HOWTO.sgml.gz<BR>
| | |-- HOWTO-INDEX.sgml.gz<BR>
| | |-- Hardware-HOWTO.sgml.gz<BR>
| | |-- Hebrew-HOWTO.sgml.gz<BR>
| | |-- INFO-SHEET.sgml.gz<BR>
| | |-- IPX-HOWTO.sgml.gz<BR>
| | |-- ISP-Hookup-HOWTO.sgml.gz<BR>
| | |-- Installation-HOWTO.sgml.gz<BR>
| | |-- Italian-HOWTO.sgml.gz<BR>
| | |-- Java-HOWTO.sgml.gz<BR>
| | |-- Kernel-HOWTO.sgml.gz<BR>
| | |-- Keyboard-HOWTO.sgml.gz<BR>
| | |-- META-FAQ.sgml.gz<BR>
| | |-- MGR-HOWTO.sgml.gz<BR>
| | |-- Mail-HOWTO.sgml.gz<BR>
| | |-- Module-HOWTO.sgml.gz<BR>
| | |-- NET-2-HOWTO.sgml.gz<BR>
| | |-- NIS-HOWTO.sgml.gz<BR>
| | |-- News-HOWTO.sgml.gz<BR>
| | |-- PCI-HOWTO.sgml.gz<BR>
| | |-- PCMCIA-HOWTO.sgml.gz<BR>
| | |-- PPP-HOWTO.sgml.gz<BR>
| | |-- Polish-HOWTO.sgml.gz<BR>
| | |-- Portuguese-HOWTO.sgml.gz<BR>
| | |-- Printing-HOWTO.sgml.gz<BR>
| | |-- Printing-Usage-HOWTO.sgml.gz<BR>
| | |-- README<BR>
| | |-- SCSI-Programming-HOWTO.sgml.gz<BR>
| | |-- SMB-HOWTO.sgml.gz<BR>
| | |-- Serial-HOWTO.sgml.gz<BR>
| | |-- Shadow-Password-HOWTO.sgml.gz<BR>
| | |-- Sound-HOWTO.sgml.gz<BR>
| | |-- Sound-Playing-HOWTO.sgml.gz<BR>
| | |-- Spanish-HOWTO.sgml.gz<BR>
| | |-- TRANS.TBL<BR>
| | |-- Term-HOWTO.sgml.gz<BR>
| | |-- Tips-HOWTO.sgml.gz<BR>
| | |-- UMSDOS-HOWTO.sgml.gz<BR>
| | |-- UPS-HOWTO.sgml.gz<BR>
| | |-- UUCP-HOWTO.sgml.gz<BR>
| | |-- XFree86-HOWTO.sgml.gz<BR>
| | `-- mini<BR>
| | |-- ADSM-Backup.sgml.gz<BR>
| | =20 |-- Colour-ls.sgml.gz<BR>
| | |-- Diskless.sgml.gz<BR>
| | |-- HTML-Validation.sgml.gz<BR>
| | |-- HTTP+Netware.sgml.gz<BR>
| | |-- IP-Masquerade.sgml.gz<BR>
| | |-- Java-WorkShop.sgml.gz<BR>
| | |-- Large-Disk.sgml.gz<BR>
| | |-- Locales.sgml.gz<BR>
| | |-- NFS-Root.sgml.gz<BR>
| | |-- README<BR>
| | |-- TRANS.TBL<BR>
| | |-- Upgrade.sgml.gz<BR>
| | |-- Visual-Bell.sgml.gz<BR>
| | |-- XFree86-XInside.sgml.gz<BR>
| | `-- ZIP-Drive.sgml.gz<BR>
| |-- HTML<BR>
| | |-- TRANS.TBL<BR>
| | |-- index.html<BR>
| | |-- ldp<BR>
| | | |-- BootPrompt-HOWTO-1.html<BR>
| | | |-- BootPrompt-HOWTO-2.html<BR>
| | | |-- BootPrompt-HOWTO-3.html<BR>
| | | |-- BootPrompt-HOWTO-4.html<BR>
| | | |-- BootPrompt-HOWTO-5.html<BR>
| | | |-- BootPrompt-HOWTO-6.html<BR>
| | | |-- BootPrompt-HOWTO-7.html<BR>
| | | |-- BootPrompt-HOWTO-8.html<BR>
| | | |-- BootPrompt-HOWTO.html<BR>
| | | |-- Bootdisk-HOWTO-1.html<BR>
| | | |-- Bootdisk-HOWTO-2.html<BR>
| | | |-- Bootdisk-HOWTO-3.html<BR>
| | | |-- Bootdisk-HOWTO-4.html<BR>
| | | |-- Bootdisk-HOWTO-5.html<BR>
| | | |-- Bootdisk-HOWTO-6.html<BR>
| | | |-- Bootdisk-HOWTO.html<BR>
| | | |-- Busmouse-HOWTO-1.html<BR>
| | | |-- Busmouse-HOWTO-2.html<BR>
| | | |-- Busmouse-HOWTO-3.html<BR>
| | | |-- Busmouse-HOWTO-4.html<BR>
| | | |-- Busmouse-HOWTO-5.html<BR>
| | | |-- Busmouse-HOWTO.html<BR>
| | | |-- CDROM-HOWTO-1.html<BR>
| | | |-- CDROM-HOWTO-2.html<BR>
| | | |-- CDROM-HOWTO-3.html<BR>
| | | |-- CDROM-HOWTO-4.html<BR>
| | | |-- CDROM-HOWTO-5.html<BR>
| | | |-- CDROM-HOWTO-6.html<BR>
| | | |-- CDROM-HOWTO-7.html<BR>
| | | |-- CDROM-HOWTO.html<BR>
| | | |-- Commercial-HOWTO-1.html<BR>
| | | |-- Commercial-HOWTO-10.html<BR>
| | | |-- Commercial-HOWTO-2.html<BR>
| | | |-- Commercial-HOWTO-3.html<BR>
| | | |-- Commercial-HOWTO-4.html<BR>
| | | |-- Commercial-HOWTO-5.html<BR>
| | | |-- Commercial-HOWTO-6.html<BR>
| | | |-- Commercial-HOWTO-7.html<BR>
| | | |-- Commercial-HOWTO-8.html<BR>
| | | |-- Commercial-HOWTO-9.html<BR>
| | | |-- Commercial-HOWTO.html<BR>
| | | |-- Cyrillic-HOWTO-1.html<BR>
| | | |-- Cyrillic-HOWTO-2.html<BR>
| | | |-- Cyrillic-HOWTO-3.html<BR>
| | | |-- Cyrillic-HOWTO-4.html<BR>
| | | |-- Cyrillic-HOWTO-5.html<BR>
| | | |-- Cyrillic-HOWTO-6.html<BR>
| | | |-- Cyrillic-HOWTO-7.html<BR>
| | | |-- Cyrillic-HOWTO-8.html<BR>
| | | |-- Cyrillic-HOWTO-9.html<BR>
| | | |-- Cyrillic-HOWTO.html<BR>
| | | |-- DOSEMU-HOWTO-1.html<BR>
| | | |-- DOSEMU-HOWTO-10.html<BR>
| | | |-- DOSEMU-HOWTO-11.html<BR>
| | | |-- DOSEMU-HOWTO-12.html<BR>
| | | |-- DOSEMU-HOWTO-2.html<BR>
| | | |-- DOSEMU-HOWTO-3.html<BR>
| | | |-- DOSEMU-HOWTO-4.html<BR>
| | | |-- DOSEMU-HOWTO-5.html<BR>
| | | |-- DOSEMU-HOWTO-6.html<BR>
| | | |-- DOSEMU-HOWTO-7.html<BR>
| | | |-- DOSEMU-HOWTO-8.html<BR>
| | | |-- DOSEMU-HOWTO-9.html<BR>
| | | |-- DOSEMU-HOWTO.html<BR>
| | | |-- Danish-HOWTO-1.html<BR>
| | | |-- Danish-HOWTO-2.html<BR>
| | | |-- Danish-HOWTO-3.html<BR>
| | | |-- Danish-HOWTO-4.html<BR>
| | | |-- Danish-HOWTO.html<BR>
| | | |-- Distribution-HOWTO-1.html<BR>
| | | |-- Distribution-HOWTO-2.html<BR>
| | | |-- Distribution-HOWTO-3.html<BR>
| | | |-- Distribution-HOWTO-4.html<BR>
| | | |-- Distribution-HOWTO-5.html<BR>
| | | |-- Distribution-HOWTO-6.html<BR>
| | | |-- Distribution-HOWTO-7.html<BR>
| | | |-- Distribution-HOWTO-8.html<BR>
| | | |-- Distribution-HOWTO-9.html<BR>
| | | |-- Distribution-HOWTO.html<BR>
| | | |-- ELF-HOWTO-1.html<BR>
| | | |-- ELF-HOWTO-2.html<BR>
| | | |-- ELF-HOWTO-3.html<BR>
| | | |-- ELF-HOWTO-4.html<BR>
| | | |-- ELF-HOWTO-5.html<BR>
| | | |-- ELF-HOWTO-6.html<BR>
| | | |-- ELF-HOWTO.html<BR>
| | | |-- Ethernet-HOWTO-1.html<BR>
| | | |-- Ethernet-HOWTO-10.html<BR>
| | | |-- Ethernet-HOWTO-2.html<BR>
| | | |-- Ethernet-HOWTO-3.html<BR>
| | | |-- Ethernet-HOWTO-4.html<BR>
| | | |-- Ethernet-HOWTO-5.html<BR>
| | | |-- Ethernet-HOWTO-6.html<BR>
| | | |-- Ethernet-HOWTO-7.html<BR>
| | | |-- Ethernet-HOWTO-8.html<BR>
| | | |-- Ethernet-HOWTO-9.html<BR>
| | | |-- Ethernet-HOWTO.html<BR>
| | | |-- Firewall-HOWTO-1.html<BR>
| | | |-- Firewall-HOWTO-2.html<BR>
| | | |-- Firewall-HOWTO-3.html<BR>
| | | |-- Firewall-HOWTO-4.html<BR>
| | | |-- Firewall-HOWTO-5.html<BR>
| | | |-- Firewall-HOWTO-6.html<BR>
| | | |-- Firewall-HOWTO.html<BR>
| | | |-- Ftape-HOWTO-1.html<BR>
| | | |-- Ftape-HOWTO-2.html<BR>
| | | |-- Ftape-HOWTO-3.html<BR>
| | | |-- Ftape-HOWTO-4.html<BR>
| | | |-- Ftape-HOWTO-5.html<BR>
| | | |-- Ftape-HOWTO-6.html<BR>
| | | |-- Ftape-HOWTO-7.html<BR>
| | | |-- Ftape-HOWTO-8.html<BR>
| | | |-- Ftape-HOWTO-9.html<BR>
| | | |-- Ftape-HOWTO.html<BR>
| | | |-- German-HOWTO-1.html<BR>
| | | |-- German-HOWTO-10.html<BR>
| | | |-- German-HOWTO-11.html<BR>
| | | |-- German-HOWTO-12.html<BR>
| | | |-- German-HOWTO-13.html<BR>
| | | |-- German-HOWTO-14.html<BR>
| | | |-- German-HOWTO-15.html<BR>
| | | |-- German-HOWTO-2.html<BR>
| | | |-- German-HOWTO-3.html<BR>
| | | |-- German-HOWTO-4.html<BR>
| | | |-- German-HOWTO-5.html<BR>
| | | |-- German-HOWTO-6.html<BR>
| | | |-- German-HOWTO-7.html<BR>
| | | |-- German-HOWTO-8.html<BR>
| | | |-- German-HOWTO-9.html<BR>
| | | |-- German-HOWTO.html<BR>
| | | |-- HAM-HOWTO-1.html<BR>
| | | |-- HAM-HOWTO-10.html<BR>
| | | |-- HAM-HOWTO-11.html<BR>
| | | |-- HAM-HOWTO-12.html<BR>
| | | |-- HAM-HOWTO-13.html<BR>
| | | |-- HAM-HOWTO-14.html<BR>
| | | |-- HAM-HOWTO-15.html<BR>
| | | |-- HAM-HOWTO-16.html<BR>
| | | |-- HAM-HOWTO-17.html<BR>
| | | |-- HAM-HOWTO-2.html<BR>
| | | |-- HAM-HOWTO-3.html<BR>
| | | |-- HAM-HOWTO-4.html<BR>
| | | |-- HAM-HOWTO-5.html<BR>
| | | |-- HAM-HOWTO-6.html<BR>
| | | |-- HAM-HOWTO-7.html<BR>
| | | |-- HAM-HOWTO-8.html<BR>
| | | |-- HAM-HOWTO-9.html<BR>
| | | |-- HAM-HOWTO.html<BR>
| | | |-- HOWTO-INDEX-1.html<BR>
| | | |-- HOWTO-INDEX-2.html<BR>
| | | |-- HOWTO-INDEX-3.html<BR>
| | | |-- HOWTO-INDEX-4.html<BR>
| | | |-- HOWTO-INDEX-5.html<BR>
| | | |-- HOWTO-INDEX.html<BR>
| | | |-- Hardware-HOWTO-1.html<BR>
| | | |-- Hardware-HOWTO-10.html<BR>
| | | |-- Hardware-HOWTO-11.html<BR>
| | | |-- Hardware-HOWTO-12.html<BR>
| | | |-- Hardware-HOWTO-13.html<BR>
| | | |-- Hardware-HOWTO-14.html<BR>
| | | |-- Hardware-HOWTO-15.html<BR>
| | | |-- Hardware-HOWTO-16.html<BR>
| | | |-- Hardware-HOWTO-17.html<BR>
| | | |-- Hardware-HOWTO-18.html<BR>
| | | |-- Hardware-HOWTO-19.html<BR>
| | | |-- Hardware-HOWTO-2.html<BR>
| | | |-- Hardware-HOWTO-20.html<BR>
| | | |-- Hardware-HOWTO-21.html<BR>
| | | |-- Hardware-HOWTO-22.html<BR>
| | | |-- Hardware-HOWTO-23.html<BR>
| | | |-- Hardware-HOWTO-24.html<BR>
| | | |-- Hardware-HOWTO-3.html<BR>
| | | |-- Hardware-HOWTO-4.html<BR>
| | | |-- Hardware-HOWTO-5.html<BR>
| | | |-- Hardware-HOWTO-6.html<BR>
| | | |-- Hardware-HOWTO-7.html<BR>
| | | |-- Hardware-HOWTO-8.html<BR>
| | | |-- Hardware-HOWTO-9.html<BR>
| | | |-- Hardware-HOWTO.html<BR>
| | | |-- Hebrew-HOWTO-1.html<BR>
| | | |-- Hebrew-HOWTO-2.html<BR>
| | | |-- Hebrew-HOWTO-3.html<BR>
| | | |-- Hebrew-HOWTO-4.html<BR>
| | | |-- Hebrew-HOWTO-5.html<BR>
| | | |-- Hebrew-HOWTO-6.html<BR>
| | | |-- Hebrew-HOWTO-7.html<BR>
| | | |-- Hebrew-HOWTO-8.html<BR>
| | | |-- Hebrew-HOWTO-9.html<BR>
| | | |-- Hebrew-HOWTO.html<BR>
| | | |-- INFO-SHEET-1.html<BR>
| | | |-- INFO-SHEET-10.html<BR>
| | | |-- INFO-SHEET-11.html<BR>
| | | |-- INFO-SHEET-12.html<BR>
| | | |-- INFO-SHEET-2.html<BR>
| | | |-- INFO-SHEET-3.html<BR>
| | | |-- INFO-SHEET-4.html<BR>
| | | |-- INFO-SHEET-5.html<BR>
| | | |-- INFO-SHEET-6.html<BR>
| | | |-- INFO-SHEET-7.html<BR>
| | | |-- INFO-SHEET-8.html<BR>
| | | |-- INFO-SHEET-9.html<BR>
| | | |-- INFO-SHEET.html<BR>
| | | |-- IPX-HOWTO-1.html<BR>
| | | |-- IPX-HOWTO-10.html<BR>
| | | |-- IPX-HOWTO-11.html<BR>
| | | |-- IPX-HOWTO-12.html<BR>
| | | |-- IPX-HOWTO-13.html<BR>
| | | |-- IPX-HOWTO-2.html<BR>
| | | |-- IPX-HOWTO-3.html<BR>
| | | |-- IPX-HOWTO-4.html<BR>
| | | |-- IPX-HOWTO-5.html<BR>
| | | |-- IPX-HOWTO-6.html<BR>
| | | |-- IPX-HOWTO-7.html<BR>
| | | |-- IPX-HOWTO-8.html<BR>
| | | |-- IPX-HOWTO-9.html<BR>
| | | |-- IPX-HOWTO.html<BR>
| | | |-- Installation-HOWTO-1.html<BR>
| | | |-- Installation-HOWTO-2.html<BR>
| | | |-- Installation-HOWTO-3.html<BR>
| | | |-- Installation-HOWTO-4.html<BR>
| | | |-- Installation-HOWTO-5.html<BR>
| | | |-- Installation-HOWTO-6.html<BR>
| | | |-- Installation-HOWTO.html<BR>
| | | |-- Italian-HOWTO-1.html<BR>
| | | |-- Italian-HOWTO-2.html<BR>
| | | |-- Italian-HOWTO-3.html<BR>
| | | |-- Italian-HOWTO-4.html<BR>
| | | |-- Italian-HOWTO-5.html<BR>
| | | |-- Italian-HOWTO-6.html<BR>
| | | |-- Italian-HOWTO-7.html<BR>
| | | |-- Italian-HOWTO-8.html<BR>
| | | |-- Italian-HOWTO.html<BR>
| | | |-- Java-HOWTO-1.html<BR>
| | | |-- Java-HOWTO-10.html<BR>
| | | |-- Java-HOWTO-2.html<BR>
| | | |-- Java-HOWTO-3.html<BR>
| | | |-- Java-HOWTO-4.html<BR>
| | | |-- Java-HOWTO-5.html<BR>
| | | |-- Java-HOWTO-6.html<BR>
| | | |-- Java-HOWTO-7.html<BR>
| | | |-- Java-HOWTO-8.html<BR>
| | | |-- Java-HOWTO-9.html<BR>
| | | |-- Java-HOWTO.html<BR>
| | | |-- Jave-HOWTO-1.html<BR>
| | | |-- Jave-HOWTO-2.html<BR>
| | | |-- Jave-HOWTO-3.html<BR>
| | | |-- Jave-HOWTO-4.html<BR>
| | | |-- Jave-HOWTO-5.html<BR>
| | | |-- Jave-HOWTO-6.html<BR>
| | | |-- Jave-HOWTO-7.html<BR>
| | | |-- Jave-HOWTO-8.html<BR>
| | | |-- Jave-HOWTO-9.html<BR>
| | | |-- Jave-HOWTO.html<BR>
| | | |-- Kernel-HOWTO-1.html<BR>
| | | |-- Kernel-HOWTO-10.html<BR>
| | | |-- Kernel-HOWTO-11.html<BR>
| | | |-- Kernel-HOWTO-2.html<BR>
| | | |-- Kernel-HOWTO-3.html<BR>
| | | |-- Kernel-HOWTO-4.html<BR>
| | | |-- Kernel-HOWTO-5.html<BR>
| | | |-- Kernel-HOWTO-6.html<BR>
| | | |-- Kernel-HOWTO-7.html<BR>
| | | |-- Kernel-HOWTO-8.html<BR>
| | | |-- Kernel-HOWTO-9.html<BR>
| | | |-- Kernel-HOWTO.html<BR>
| | | |-- Keyboard-HOWTO-1.html<BR>
| | | |-- Keyboard-HOWTO-10.html<BR>
| | | |-- Keyboard-HOWTO-11.html<BR>
| | | |-- Keyboard-HOWTO-12.html<BR>
| | | |-- Keyboard-HOWTO-13.html<BR>
| | | |-- Keyboard-HOWTO-14.html<BR>
| | | |-- Keyboard-HOWTO-15.html<BR>
| | | |-- Keyboard-HOWTO-16.html<BR>
| | | |-- Keyboard-HOWTO-17.html<BR>
| | | |-- Keyboard-HOWTO-18.html<BR>
| | | |-- Keyboard-HOWTO-19.html<BR>
| | | |-- Keyboard-HOWTO-2.html<BR>
| | | |-- Keyboard-HOWTO-20.html<BR>
| | | |-- Keyboard-HOWTO-3.html<BR>
| | | |-- Keyboard-HOWTO-4.html<BR>
| | | |-- Keyboard-HOWTO-5.html<BR>
| | | |-- Keyboard-HOWTO-6.html<BR>
| | | |-- Keyboard-HOWTO-7.html<BR>
| | | |-- Keyboard-HOWTO-8.html<BR>
| | | |-- Keyboard-HOWTO-9.html<BR>
| | | |-- Keyboard-HOWTO.html<BR>
| | | |-- META-FAQ-1.html<BR>
| | | |-- META-FAQ-10.html<BR>
| | | |-- META-FAQ-2.html<BR>
| | | |-- META-FAQ-3.html<BR>
| | | |-- META-FAQ-4.html<BR>
| | | |-- META-FAQ-5.html<BR>
| | | |-- META-FAQ-6.html<BR>
| | | |-- META-FAQ-7.html<BR>
| | | |-- META-FAQ-8.html<BR>
| | | |-- META-FAQ-9.html<BR>
| | | |-- META-FAQ.html<BR>
| | | |-- MGR-HOWTO-1.html<BR>
| | | |-- MGR-HOWTO-2.html<BR>
| | | |-- MGR-HOWTO-3.html<BR>
| | | |-- MGR-HOWTO-4.html<BR>
| | | |-- MGR-HOWTO-5.html<BR>
| | | |-- MGR-HOWTO-6.html<BR>
| | | |-- MGR-HOWTO-7.html<BR>
| | | |-- MGR-HOWTO.html<BR>
| | | |-- Mail-HOWTO-1.html<BR>
| | | |-- Mail-HOWTO-2.html<BR>
| | | |-- Mail-HOWTO-3.html<BR>
| | | |-- Mail-HOWTO-4.html<BR>
| | | |-- Mail-HOWTO-5.html<BR>
| | | |-- Mail-HOWTO-6.html<BR>
| | | |-- Mail-HOWTO.html<BR>
| | | |-- NET-2-HOWTO-1.html<BR>
| | | |-- NET-2-HOWTO-10.html<BR>
| | | |-- NET-2-HOWTO-11.html<BR>
| | | |-- NET-2-HOWTO-12.html<BR>
| | | |-- NET-2-HOWTO-13.html<BR>
| | | |-- NET-2-HOWTO-14.html<BR>
| | | |-- NET-2-HOWTO-15.html<BR>
| | | |-- NET-2-HOWTO-16.html<BR>
| | | |-- NET-2-HOWTO-17.html<BR>
| | | |-- NET-2-HOWTO-18.html<BR>
| | | |-- NET-2-HOWTO-19.html<BR>
| | | |-- NET-2-HOWTO-2.html<BR>
| | | |-- NET-2-HOWTO-3.html<BR>
| | | |-- NET-2-HOWTO-4.html<BR>
| | | |-- NET-2-HOWTO-5.html<BR>
| | | |-- NET-2-HOWTO-6.html<BR>
| | | |-- NET-2-HOWTO-7.html<BR>
| | | |-- NET-2-HOWTO-8.html<BR>
| | | |-- NET-2-HOWTO-9.html<BR>
| | | |-- NET-2-HOWTO.html<BR>
| | | |-- NIS-HOWTO-1.html<BR>
| | | |-- NIS-HOWTO-10.html<BR>
| | | |-- NIS-HOWTO-2.html<BR>
| | | |-- NIS-HOWTO-3.html<BR>
| | | |-- NIS-HOWTO-4.html<BR>
| | | |-- NIS-HOWTO-5.html<BR>
| | | |-- NIS-HOWTO-6.html<BR>
| | | |-- NIS-HOWTO-7.html<BR>
| | | |-- NIS-HOWTO-8.html<BR>
| | | |-- NIS-HOWTO-9.html<BR>
| | | |-- NIS-HOWTO.html<BR>
| | | |-- News-HOWTO-1.html<BR>
| | | |-- News-HOWTO-2.html<BR>
| | | |-- News-HOWTO-3.html<BR>
| | | |-- News-HOWTO-4.html<BR>
| | | |-- News-HOWTO-5.html<BR>
| | | |-- News-HOWTO-6.html<BR>
| | | |-- News-HOWTO-7.html<BR>
| | | |-- News-HOWTO.html<BR>
| | | |-- PCI-HOWTO-1.html<BR>
| | | |-- PCI-HOWTO-10.html<BR>
| | | |-- PCI-HOWTO-11.html<BR>
| | | |-- PCI-HOWTO-12.html<BR>
| | | |-- PCI-HOWTO-13.html<BR>
| | | |-- PCI-HOWTO-2.html<BR>
| | | |-- PCI-HOWTO-3.html<BR>
| | | |-- PCI-HOWTO-4.html<BR>
| | | |-- PCI-HOWTO-5.html<BR>
| | | |-- PCI-HOWTO-6.html<BR>
| | | |-- PCI-HOWTO-7.html<BR>
| | | |-- PCI-HOWTO-8.html<BR>
| | | |-- PCI-HOWTO-9.html<BR>
| | | |-- PCI-HOWTO.html<BR>
| | | |-- PCMCIA-HOWTO-1.html<BR>
| | | |-- PCMCIA-HOWTO-2.html<BR>
| | | |-- PCMCIA-HOWTO-3.html<BR>
| | | |-- PCMCIA-HOWTO-4.html<BR>
| | | |-- PCMCIA-HOWTO-5.html<BR>
| | | |-- PCMCIA-HOWTO.html<BR>
| | | |-- PPP-HOWTO-1.html<BR>
| | | |-- PPP-HOWTO-10.html<BR>
| | | |-- PPP-HOWTO-11.html<BR>
| | | |-- PPP-HOWTO-12.html<BR>
| | | |-- PPP-HOWTO-13.html<BR>
| | | |-- PPP-HOWTO-14.html<BR>
| | | |-- PPP-HOWTO-15.html<BR>
| | | |-- PPP-HOWTO-16.html<BR>
| | | |-- PPP-HOWTO-17.html<BR>
| | | |-- PPP-HOWTO-2.html<BR>
| | | |-- PPP-HOWTO-3.html<BR>
| | | |-- PPP-HOWTO-4.html<BR>
| | | |-- PPP-HOWTO-5.html<BR>
| | | |-- PPP-HOWTO-6.html<BR>
| | | |-- PPP-HOWTO-7.html<BR>
| | | |-- PPP-HOWTO-8.html<BR>
| | | |-- PPP-HOWTO-9.html<BR>
| | | |-- PPP-HOWTO.html<BR>
| | | |-- Portuguese-HOWTO-1.html<BR>
| | | |-- Portuguese-HOWTO-2.html<BR>
| | | |-- Portuguese-HOWTO-3.html<BR>
| | | |-- Portuguese-HOWTO-4.html<BR>
| | | |-- Portuguese-HOWTO-5.html<BR>
| | | |-- Portuguese-HOWTO-6.html<BR>
| | | |-- Portuguese-HOWTO-7.html<BR>
| | | |-- Portuguese-HOWTO.html<BR>
| | | |-- Printing-HOWTO-1.html<BR>
| | | |-- Printing-HOWTO-10.html<BR>
| | | |-- Printing-HOWTO-11.html<BR>
| | | |-- Printing-HOWTO-12.html<BR>
| | | |-- Printing-HOWTO-2.html<BR>
| | | |-- Printing-HOWTO-3.html<BR>
| | | |-- Printing-HOWTO-4.html<BR>
| | | |-- Printing-HOWTO-5.html<BR>
| | | |-- Printing-HOWTO-6.html<BR>
| | | |-- Printing-HOWTO-7.html<BR>
| | | |-- Printing-HOWTO-8.html<BR>
| | | |-- Printing-HOWTO-9.html<BR>
| | | |-- Printing-HOWTO.html<BR>
| | | |-- Printing-Usage-HOWTO-1.html<BR>
| | | |-- Printing-Usage-HOWTO-2.html<BR>
| | | |-- Printing-Usage-HOWTO-3.html<BR>
| | | |-- Printing-Usage-HOWTO-4.html<BR>
| | | |-- Printing-Usage-HOWTO-5.html<BR>
| | | |-- Printing-Usage-HOWTO-6.html<BR>
| | | |-- Printing-Usage-HOWTO-7.html<BR>
| | | |-- Printing-Usage-HOWTO.html<BR>
| | | |-- SCSI-Programming-HOWTO-1.html<BR>
| | | |-- SCSI-Programming-HOWTO-10.html<BR>
| | | |-- SCSI-Programming-HOWTO-11.html<BR>
| | | |-- SCSI-Programming-HOWTO-12.html<BR>
| | | |-- SCSI-Programming-HOWTO-13.html<BR>
| | | |-- SCSI-Programming-HOWTO-14.html<BR>
| | | |-- SCSI-Programming-HOWTO-15.html<BR>
| | | |-- SCSI-Programming-HOWTO-16.html<BR>
| | | |-- SCSI-Programming-HOWTO-17.html<BR>
| | | |-- SCSI-Programming-HOWTO-18.html<BR>
| | | |-- SCSI-Programming-HOWTO-19.html<BR>
| | | |-- SCSI-Programming-HOWTO-2.html<BR>
| | | |-- SCSI-Programming-HOWTO-20.html<BR>
| | | |-- SCSI-Programming-HOWTO-21.html<BR>
| | | |-- SCSI-Programming-HOWTO-22.html<BR>
| | | |-- SCSI-Programming-HOWTO-23.html<BR>
| | | |-- SCSI-Programming-HOWTO-3.html<BR>
| | | |-- SCSI-Programming-HOWTO-4.html<BR>
| | | |-- SCSI-Programming-HOWTO-5.html<BR>
| | | |-- SCSI-Programming-HOWTO-6.html<BR>
| | | |-- SCSI-Programming-HOWTO-7.html<BR>
| | | |-- SCSI-Programming-HOWTO-8.html<BR>
| | | |-- SCSI-Programming-HOWTO-9.html<BR>
| | | |-- SCSI-Programming-HOWTO.html<BR>
| | | |-- Serial-HOWTO-1.html<BR>
| | | |-- Serial-HOWTO-10.html<BR>
| | | |-- Serial-HOWTO-11.html<BR>
| | | |-- Serial-HOWTO-12.html<BR>
| | | |-- Serial-HOWTO-13.html<BR>
| | | |-- Serial-HOWTO-14.html<BR>
| | | |-- Serial-HOWTO-15.html<BR>
| | | |-- Serial-HOWTO-16.html<BR>
| | | |-- Serial-HOWTO-2.html<BR>
| | | |-- Serial-HOWTO-3.html<BR>
| | | |-- Serial-HOWTO-4.html<BR>
| | | |-- Serial-HOWTO-5.html<BR>
| | | |-- Serial-HOWTO-6.html<BR>
| | | |-- Serial-HOWTO-7.html<BR>
| | | |-- Serial-HOWTO-8.html<BR>
| | | |-- Serial-HOWTO-9.html<BR>
| | | |-- Serial-HOWTO.html<BR>
| | | |-- Shadow-Password-HOWTO-1.html<BR>
| | | |-- Shadow-Password-HOWTO-2.html<BR>
| | | |-- Shadow-Password-HOWTO-3.html<BR>
| | | |-- Shadow-Password-HOWTO-4.html<BR>
| | | |-- Shadow-Password-HOWTO-5.html<BR>
| | | |-- Shadow-Password-HOWTO-6.html<BR>
| | | |-- Shadow-Password-HOWTO-7.html<BR>
| | | |-- Shadow-Password-HOWTO-8.html<BR>
| | | |-- Shadow-Password-HOWTO-9.html<BR>
| | | |-- Shadow-Password-HOWTO.html<BR>
| | | |-- Sound-HOWTO-1.html<BR>
| | | |-- Sound-HOWTO-2.html<BR>
| | | |-- Sound-HOWTO-3.html<BR>
| | | |-- Sound-HOWTO-4.html<BR>
| | | |-- Sound-HOWTO-5.html<BR>
| | | |-- Sound-HOWTO-6.html<BR>
| | | |-- Sound-HOWTO-7.html<BR>
| | | |-- Sound-HOWTO.html<BR>
| | | |-- Sound-Playing-HOWTO-1.html<BR>
| | | |-- Sound-Playing-HOWTO-2.html<BR>
| | | |-- Sound-Playing-HOWTO-3.html<BR>
| | | |-- Sound-Playing-HOWTO-4.html<BR>
| | | |-- Sound-Playing-HOWTO.html<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- Term-HOWTO-1.html<BR>
| | | |-- Term-HOWTO-10.html<BR>
| | | |-- Term-HOWTO-11.html<BR>
| | | |-- Term-HOWTO-12.html<BR>
| | | |-- Term-HOWTO-13.html<BR>
| | | |-- Term-HOWTO-14.html<BR>
| | | |-- Term-HOWTO-15.html<BR>
| | | |-- Term-HOWTO-16.html<BR>
| | | |-- Term-HOWTO-17.html<BR>
| | | |-- Term-HOWTO-18.html<BR>
| | | |-- Term-HOWTO-2.html<BR>
| | | |-- Term-HOWTO-3.html<BR>
| | | |-- Term-HOWTO-4.html<BR>
| | | |-- Term-HOWTO-5.html<BR>
| | | |-- Term-HOWTO-6.html<BR>
| | | |-- Term-HOWTO-7.html<BR>
| | | |-- Term-HOWTO-8.html<BR>
| | | |-- Term-HOWTO-9.html<BR>
| | | |-- Term-HOWTO.html<BR>
| | | |-- Tips-HOWTO-1.html<BR>
| | | |-- Tips-HOWTO-2.html<BR>
| | | |-- Tips-HOWTO-3.html<BR>
| | | |-- Tips-HOWTO.html<BR>
| | | |-- UMSDOS-HOWTO-1.html<BR>
| | | |-- UMSDOS-HOWTO-2.html<BR>
| | | |-- UMSDOS-HOWTO-3.html<BR>
| | | |-- UMSDOS-HOWTO-4.html<BR>
| | | |-- UMSDOS-HOWTO-5.html<BR>
| | | |-- UMSDOS-HOWTO-6.html<BR>
| | | |-- UMSDOS-HOWTO-7.html<BR>
| | | |-- UMSDOS-HOWTO-8.html<BR>
| | | |-- UMSDOS-HOWTO.html<BR>
| | | |-- UPS-HOWTO-1.html<BR>
| | | |-- UPS-HOWTO-10.html<BR>
| | | |-- UPS-HOWTO-11.html<BR>
| | | |-- UPS-HOWTO-12.html<BR>
| | | |-- UPS-HOWTO-2.html<BR>
| | | |-- UPS-HOWTO-3.html<BR>
| | | |-- UPS-HOWTO-4.html<BR>
| | | |-- UPS-HOWTO-5.html<BR>
| | | |-- UPS-HOWTO-6.html<BR>
| | | |-- UPS-HOWTO-7.html<BR>
| | | |-- UPS-HOWTO-8.html<BR>
| | | |-- UPS-HOWTO-9.html<BR>
| | | |-- UPS-HOWTO.html<BR>
| | | |-- UUCP-HOWTO-1.html<BR>
| | | |-- UUCP-HOWTO-2.html<BR>
| | | |-- UUCP-HOWTO-3.html<BR>
| | | |-- UUCP-HOWTO-4.html<BR>
| | | |-- UUCP-HOWTO-5.html<BR>
| | | |-- UUCP-HOWTO-6.html<BR>
| | | |-- UUCP-HOWTO.html<BR>
| | | |-- XFree86-HOWTO-1.html<BR>
| | | |-- XFree86-HOWTO-2.html<BR>
| | | |-- XFree86-HOWTO-3.html<BR>
| | | |-- XFree86-HOWTO-4.html<BR>
| | | |-- XFree86-HOWTO-5.html<BR>
| | | |-- XFree86-HOWTO-6.html<BR>
| | | |-- XFree86-HOWTO-7.html<BR>
| | | |-- XFree86-HOWTO-8.html<BR>
| | | |-- XFree86-HOWTO.html<BR>
| | | `-- install-guide-2.2.2.html<BR>
| | | |-- .ID_MAP.dir<BR>
| | | |-- .ID_MAP.pag<BR>
| | | |-- .IMG_PARAMS.dir<BR>
| | | |-- .IMG_PARAMS.pag<BR>
| | | |-- .ORIG_MAP.dir<BR>
| | | |-- .ORIG_MAP.pag<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- bdt.gif<BR>
| | | |-- change_begin.gif<BR>
| | | |-- change_delete.gif<BR>
| | | |-- change_end.gif<BR>
| | | |-- contents.xbm<BR>
| | | |-- contents_motif.gif<BR>
| | | |-- cross_ref_motif.gif<BR>
| | | |-- foot_motif.gif<BR>
| | | |-- footnode.html<BR>
| | | |-- gs.html<BR>
| | | |-- icons.html<BR>
| | | |-- image.gif<BR>
| | | |-- images.aux<BR>
| | | |-- images.idx<BR>
| | | |-- images.log<BR>
| | | |-- images.pl<BR>
| | | |-- images.tex<BR>
| | | |-- img1.gif<BR>
| | | |-- img10.gif<BR>
| | | |-- img100.gif<BR>
| | | |-- img101.gif<BR>
| | | |-- img102.gif<BR>
| | | |-- img103.gif<BR>
| | | |-- img104.gif<BR>
| | | |-- img105.gif<BR>
| | | |-- img106.gif<BR>
| | | |-- img107.gif<BR>
| | | |-- img108.gif<BR>
| | | |-- img109.gif<BR>
| | | |-- img11.gif<BR>
| | | |-- img110.gif<BR>
| | | |-- img111.gif<BR>
| | | |-- img112.gif<BR>
| | | |-- img113.gif<BR>
| | | |-- img114.gif<BR>
| | | |-- img115.gif<BR>
| | | |-- img116.gif<BR>
| | | |-- img117.gif<BR>
| | | |-- img118.gif<BR>
| | | |-- img119.gif<BR>
| | | |-- img12.gif<BR>
| | | |-- img120.gif<BR>
| | | |-- img121.gif<BR>
| | | |-- img122.gif<BR>
| | | |-- img123.gif<BR>
| | | |-- img124.gif<BR>
| | | |-- img125.gif<BR>
| | | |-- img126.gif<BR>
| | | |-- img127.gif<BR>
| | | |-- img128.gif<BR>
| | | |-- img129.gif<BR>
| | | |-- img13.gif<BR>
| | | |-- img130.gif<BR>
| | | |-- img131.gif<BR>
| | | |-- img132.gif<BR>
| | | |-- img133.gif<BR>
| | | |-- img134.gif<BR>
| | | |-- img135.gif<BR>
| | | |-- img136.gif<BR>
| | | |-- img137.gif<BR>
| | | |-- img138.gif<BR>
| | | |-- img139.gif<BR>
| | | |-- img14.gif<BR>
| | | |-- img140.gif<BR>
| | | |-- img141.gif<BR>
| | | |-- img142.gif<BR>
| | | |-- img143.gif<BR>
| | | |-- img144.gif<BR>
| | | |-- img145.gif<BR>
| | | |-- img146.gif<BR>
| | | |-- img147.gif<BR>
| | | |-- img148.gif<BR>
| | | |-- img149.gif<BR>
| | | |-- img15.gif<BR>
| | | |-- img150.gif<BR>
| | | |-- img151.gif<BR>
| | | |-- img152.gif<BR>
| | | |-- img153.gif<BR>
| | | |-- img154.gif<BR>
| | | |-- img155.gif<BR>
| | | |-- img156.gif<BR>
| | | |-- img157.gif<BR>
| | | |-- img158.gif<BR>
| | | |-- img159.gif<BR>
| | | |-- img16.gif<BR>
| | | |-- img160.gif<BR>
| | | |-- img161.gif<BR>
| | | |-- img162.gif<BR>
| | | |-- img163.gif<BR>
| | | |-- img164.gif<BR>
| | | |-- img165.gif<BR>
| | | |-- img166.gif<BR>
| | | |-- img167.gif<BR>
| | | |-- img168.gif<BR>
| | | |-- img169.gif<BR>
| | | |-- img17.gif<BR>
| | | |-- img170.gif<BR>
| | | |-- img171.gif<BR>
| | | |-- img172.gif<BR>
| | | |-- img173.gif<BR>
| | | |-- img174.gif<BR>
| | | |-- img175.gif<BR>
| | | |-- img176.gif<BR>
| | | |-- img177.gif<BR>
| | | |-- img178.gif<BR>
| | | |-- img179.gif<BR>
| | | |-- img18.gif<BR>
| | | |-- img180.gif<BR>
| | | |-- img181.gif<BR>
| | | |-- img182.gif<BR>
| | | |-- img183.gif<BR>
| | | |-- img184.gif<BR>
| | | |-- img185.gif<BR>
| | | |-- img186.gif<BR>
| | | |-- img187.gif<BR>
| | | |-- img188.gif<BR>
| | | |-- img189.gif<BR>
| | | |-- img19.gif<BR>
| | | |-- img190.gif<BR>
| | | |-- img191.gif<BR>
| | | |-- img192.gif<BR>
| | | |-- img193.gif<BR>
| | | |-- img194.gif<BR>
| | | |-- img195.gif<BR>
| | | |-- img196.gif<BR>
| | | |-- img197.gif<BR>
| | | |-- img198.gif<BR>
| | | |-- img199.gif<BR>
| | | |-- img2.gif<BR>
| | | |-- img20.gif<BR>
| | | |-- img200.gif<BR>
| | | |-- img201.gif<BR>
| | | |-- img202.gif<BR>
| | | |-- img203.gif<BR>
| | | |-- img204.gif<BR>
| | | |-- img205.gif<BR>
| | | |-- img206.gif<BR>
| | | |-- img207.gif<BR>
| | | |-- img208.gif<BR>
| | | |-- img209.gif<BR>
| | | |-- img21.gif<BR>
| | | |-- img210.gif<BR>
| | | |-- img211.gif<BR>
| | | |-- img212.gif<BR>
| | | |-- img213.gif<BR>
| | | |-- img214.gif<BR>
| | | |-- img215.gif<BR>
| | | |-- img216.gif<BR>
| | | |-- img217.gif<BR>
| | | |-- img218.gif<BR>
| | | |-- img219.gif<BR>
| | | |-- img22.gif<BR>
| | | |-- img220.gif<BR>
| | | |-- img221.gif<BR>
| | | |-- img222.gif<BR>
| | | |-- img223.gif<BR>
| | | |-- img224.gif<BR>
| | | |-- img225.gif<BR>
| | | |-- img226.gif<BR>
| | | |-- img227.gif<BR>
| | | |-- img228.gif<BR>
| | | |-- img229.gif<BR>
| | | |-- img23.gif<BR>
| | | |-- img230.gif<BR>
| | | |-- img231.gif<BR>
| | | |-- img232.gif<BR>
| | | |-- img233.gif<BR>
| | | |-- img234.gif<BR>
| | | |-- img235.gif<BR>
| | | |-- img236.gif<BR>
| | | |-- img237.gif<BR>
| | | |-- img238.gif<BR>
| | | |-- img239.gif<BR>
| | | |-- img24.gif<BR>
| | | |-- img240.gif<BR>
| | | |-- img241.gif<BR>
| | | |-- img242.gif<BR>
| | | |-- img243.gif<BR>
| | | |-- img244.gif<BR>
| | | |-- img245.gif<BR>
| | | |-- img246.gif<BR>
| | | |-- img247.gif<BR>
| | | |-- img248.gif<BR>
| | | |-- img249.gif<BR>
| | | |-- img25.gif<BR>
| | | |-- img250.gif<BR>
| | | |-- img251.gif<BR>
| | | |-- img252.gif<BR>
| | | |-- img253.gif<BR>
| | | |-- img254.gif<BR>
| | | |-- img255.gif<BR>
| | | |-- img256.gif<BR>
| | | |-- img257.gif<BR>
| | | |-- img258.gif<BR>
| | | |-- img259.gif<BR>
| | | |-- img26.gif<BR>
| | | |-- img260.gif<BR>
| | | |-- img261.gif<BR>
| | | |-- img262.gif<BR>
| | | |-- img263.gif<BR>
| | | |-- img264.gif<BR>
| | | |-- img265.gif<BR>
| | | |-- img266.gif<BR>
| | | |-- img267.gif<BR>
| | | |-- img268.gif<BR>
| | | |-- img269.gif<BR>
| | | |-- img27.gif<BR>
| | | |-- img270.gif<BR>
| | | |-- img271.gif<BR>
| | | |-- img272.gif<BR>
| | | |-- img273.gif<BR>
| | | |-- img274.gif<BR>
| | | |-- img275.gif<BR>
| | | |-- img276.gif<BR>
| | | |-- img277.gif<BR>
| | | |-- img278.gif<BR>
| | | |-- img279.gif<BR>
| | | |-- img28.gif<BR>
| | | |-- img280.gif<BR>
| | | |-- img281.gif<BR>
| | | |-- img282.gif<BR>
| | | |-- img283.gif<BR>
| | | |-- img284.gif<BR>
| | | |-- img285.gif<BR>
| | | |-- img286.gif<BR>
| | | |-- img287.gif<BR>
| | | |-- img288.gif<BR>
| | | |-- img289.gif<BR>
| | | |-- img29.gif<BR>
| | | |-- img290.gif<BR>
| | | |-- img291.gif<BR>
| | | |-- img292.gif<BR>
| | | |-- img293.gif<BR>
| | | |-- img294.gif<BR>
| | | |-- img295.gif<BR>
| | | |-- img296.gif<BR>
| | | |-- img297.gif<BR>
| | | |-- img298.gif<BR>
| | | |-- img299.gif<BR>
| | | |-- img3.gif<BR>
| | | |-- img30.gif<BR>
| | | |-- img300.gif<BR>
| | | |-- img301.gif<BR>
| | | |-- img302.gif<BR>
| | | |-- img303.gif<BR>
| | | |-- img304.gif<BR>
| | | |-- img305.gif<BR>
| | | |-- img306.gif<BR>
| | | |-- img307.gif<BR>
| | | |-- img308.gif<BR>
| | | |-- img309.gif<BR>
| | | |-- img31.gif<BR>
| | | |-- img310.gif<BR>
| | | |-- img311.gif<BR>
| | | |-- img312.gif<BR>
| | | |-- img313.gif<BR>
| | | |-- img314.gif<BR>
| | | |-- img315.gif<BR>
| | | |-- img316.gif<BR>
| | | |-- img317.gif<BR>
| | | |-- img318.gif<BR>
| | | |-- img319.gif<BR>
| | | |-- img32.gif<BR>
| | | |-- img320.gif<BR>
| | | |-- img33.gif<BR>
| | | |-- img34.gif<BR>
| | | |-- img35.gif<BR>
| | | |-- img36.gif<BR>
| | | |-- img37.gif<BR>
| | | |-- img38.gif<BR>
| | | |-- img39.gif<BR>
| | | |-- img4.gif<BR>
| | | |-- img40.gif<BR>
| | | |-- img41.gif<BR>
| | | |-- img42.gif<BR>
| | | |-- img43.gif<BR>
| | | |-- img44.gif<BR>
| | | |-- img45.gif<BR>
| | | |-- img46.gif<BR>
| | | |-- img47.gif<BR>
| | | |-- img48.gif<BR>
| | | |-- img49.gif<BR>
| | | |-- img5.gif<BR>
| | | |-- img50.gif<BR>
| | | |-- img51.gif<BR>
| | | |-- img52.gif<BR>
| | | |-- img53.gif<BR>
| | | |-- img54.gif<BR>
| | | |-- img55.gif<BR>
| | | |-- img56.gif<BR>
| | | |-- img57.gif<BR>
| | | |-- img58.gif<BR>
| | | |-- img59.gif<BR>
| | | |-- img6.gif<BR>
| | | |-- img60.gif<BR>
| | | |-- img61.gif<BR>
| | | |-- img62.gif<BR>
| | | |-- img63.gif<BR>
| | | |-- img64.gif<BR>
| | | |-- img65.gif<BR>
| | | |-- img66.gif<BR>
| | | |-- img67.gif<BR>
| | | |-- img68.gif<BR>
| | | |-- img69.gif<BR>
| | | |-- img7.gif<BR>
| | | |-- img70.gif<BR>
| | | |-- img71.gif<BR>
| | | |-- img72.gif<BR>
| | | |-- img73.gif<BR>
| | | |-- img74.gif<BR>
| | | |-- img75.gif<BR>
| | | |-- img76.gif<BR>
| | | |-- img77.gif<BR>
| | | |-- img78.gif<BR>
| | | |-- img79.gif<BR>
| | | |-- img8.gif<BR>
| | | |-- img80.gif<BR>
| | | |-- img81.gif<BR>
| | | |-- img82.gif<BR>
| | | |-- img83.gif<BR>
| | | |-- img84.gif<BR>
| | | |-- img85.gif<BR>
| | | |-- img86.gif<BR>
| | | |-- img87.gif<BR>
| | | |-- img88.gif<BR>
| | | |-- img89.gif<BR>
| | | |-- img9.gif<BR>
| | | |-- img90.gif<BR>
| | | |-- img91.gif<BR>
| | | |-- img92.gif<BR>
| | | |-- img93.gif<BR>
| | | |-- img94.gif<BR>
| | | |-- img95.gif<BR>
| | | |-- img96.gif<BR>
| | | |-- img97.gif<BR>
| | | |-- img98.gif<BR>
| | | |-- img99.gif<BR>
| | | |-- index_motif.gif<BR>
| | | |-- invis_anchor.xbm<BR>
| | | |-- labels.pl<BR>
| | | |-- linux.gif<BR>
| | | |-- next_group_motif.gif<BR>
| | | |-- next_group_motif_gr.gif<BR>
| | | |-- next_motif.gif<BR>
| | | |-- next_motif_gr.gif<BR>
| | | |-- node1.html<BR>
| | | |-- node10.html<BR>
| | | |-- node100.html<BR>
| | | |-- node101.html<BR>
| | | |-- node102.html<BR>
| | | |-- node103.html<BR>
| | | |-- node104.html<BR>
| | | |-- node105.html<BR>
| | | |-- node106.html<BR>
| | | |-- node107.html<BR>
| | | |-- node108.html<BR>
| | | |-- node109.html<BR>
| | | |-- node11.html<BR>
| | | |-- node110.html<BR>
| | | |-- node111.html<BR>
| | | |-- node112.html<BR>
| | | |-- node113.html<BR>
| | | |-- node114.html<BR>
| | | |-- node115.html<BR>
| | | |-- node116.html<BR>
| | | |-- node117.html<BR>
| | | |-- node118.html<BR>
| | | |-- node119.html<BR>
| | | |-- node12.html<BR>
| | | |-- node120.html<BR>
| | | |-- node121.html<BR>
| | | |-- node122.html<BR>
| | | |-- node123.html<BR>
| | | |-- node124.html<BR>
| | | |-- node125.html<BR>
| | | |-- node126.html<BR>
| | | |-- node127.html<BR>
| | | |-- node128.html<BR>
| | | |-- node129.html<BR>
| | | |-- node13.html<BR>
| | | |-- node130.html<BR>
| | | |-- node131.html<BR>
| | | |-- node132.html<BR>
| | | |-- node133.html<BR>
| | | |-- node134.html<BR>
| | | |-- node135.html<BR>
| | | |-- node136.html<BR>
| | | |-- node137.html<BR>
| | | |-- node138.html<BR>
| | | |-- node139.html<BR>
| | | |-- node14.html<BR>
| | | |-- node140.html<BR>
| | | |-- node141.html<BR>
| | | |-- node142.html<BR>
| | | |-- node143.html<BR>
| | | |-- node144.html<BR>
| | | |-- node145.html<BR>
| | | |-- node146.html<BR>
| | | |-- node147.html<BR>
| | | |-- node148.html<BR>
| | | |-- node149.html<BR>
| | | |-- node15.html<BR>
| | | |-- node150.html<BR>
| | | |-- node151.html<BR>
| | | |-- node152.html<BR>
| | | |-- node153.html<BR>
| | | |-- node154.html<BR>
| | | |-- node155.html<BR>
| | | |-- node156.html<BR>
| | | |-- node157.html<BR>
| | | |-- node158.html<BR>
| | | |-- node159.html<BR>
| | | |-- node16.html<BR>
| | | |-- node160.html<BR>
| | | |-- node161.html<BR>
| | | |-- node162.html<BR>
| | | |-- node163.html<BR>
| | | |-- node164.html<BR>
| | | |-- node165.html<BR>
| | | |-- node166.html<BR>
| | | |-- node167.html<BR>
| | | |-- node168.html<BR>
| | | |-- node169.html<BR>
| | | |-- node17.html<BR>
| | | |-- node170.html<BR>
| | | |-- node171.html<BR>
| | | |-- node172.html<BR>
| | | |-- node173.html<BR>
| | | |-- node174.html<BR>
| | | |-- node175.html<BR>
| | | |-- node176.html<BR>
| | | |-- node177.html<BR>
| | | |-- node178.html<BR>
| | | |-- node179.html<BR>
| | | |-- node18.html<BR>
| | | |-- node180.html<BR>
| | | |-- node181.html<BR>
| | | |-- node182.html<BR>
| | | |-- node183.html<BR>
| | | |-- node184.html<BR>
| | | |-- node185.html<BR>
| | | |-- node186.html<BR>
| | | |-- node187.html<BR>
| | | |-- node188.html<BR>
| | | |-- node189.html<BR>
| | | |-- node19.html<BR>
| | | |-- node190.html<BR>
| | | |-- node191.html<BR>
| | | |-- node192.html<BR>
| | | |-- node193.html<BR>
| | | |-- node194.html<BR>
| | | |-- node195.html<BR>
| | | |-- node196.html<BR>
| | | |-- node197.html<BR>
| | | |-- node198.html<BR>
| | | |-- node199.html<BR>
| | | |-- node2.html<BR>
| | | |-- node20.html<BR>
| | | |-- node200.html<BR>
| | | |-- node201.html<BR>
| | | |-- node202.html<BR>
| | | |-- node203.html<BR>
| | | |-- node204.html<BR>
| | | |-- node205.html<BR>
| | | |-- node206.html<BR>
| | | |-- node207.html<BR>
| | | |-- node208.html<BR>
| | | |-- node209.html<BR>
| | | |-- node21.html<BR>
| | | |-- node210.html<BR>
| | | |-- node211.html<BR>
| | | |-- node212.html<BR>
| | | |-- node213.html<BR>
| | | |-- node214.html<BR>
| | | |-- node215.html<BR>
| | | |-- node216.html<BR>
| | | |-- node217.html<BR>
| | | |-- node218.html<BR>
| | | |-- node219.html<BR>
| | | |-- node22.html<BR>
| | | |-- node220.html<BR>
| | | |-- node221.html<BR>
| | | |-- node222.html<BR>
| | | |-- node223.html<BR>
| | | |-- node224.html<BR>
| | | |-- node225.html<BR>
| | | |-- node226.html<BR>
| | | |-- node227.html<BR>
| | | |-- node228.html<BR>
| | | |-- node229.html<BR>
| | | |-- node23.html<BR>
| | | |-- node230.html<BR>
| | | |-- node231.html<BR>
| | | |-- node232.html<BR>
| | | |-- node233.html<BR>
| | | |-- node234.html<BR>
| | | |-- node235.html<BR>
| | | |-- node236.html<BR>
| | | |-- node237.html<BR>
| | | |-- node238.html<BR>
| | | |-- node239.html<BR>
| | | |-- node24.html<BR>
| | | |-- node240.html<BR>
| | | |-- node241.html<BR>
| | | |-- node242.html<BR>
| | | |-- node243.html<BR>
| | | |-- node244.html<BR>
| | | |-- node245.html<BR>
| | | |-- node246.html<BR>
| | | |-- node247.html<BR>
| | | |-- node248.html<BR>
| | | |-- node249.html<BR>
| | | |-- node25.html<BR>
| | | |-- node250.html<BR>
| | | |-- node251.html<BR>
| | | |-- node26.html<BR>
| | | |-- node27.html<BR>
| | | |-- node28.html<BR>
| | | |-- node29.html<BR>
| | | |-- node3.html<BR>
| | | |-- node30.html<BR>
| | | |-- node31.html<BR>
| | | |-- node32.html<BR>
| | | |-- node33.html<BR>
| | | |-- node34.html<BR>
| | | |-- node35.html<BR>
| | | |-- node36.html<BR>
| | | |-- node37.html<BR>
| | | |-- node38.html<BR>
| | | |-- node39.html<BR>
| | | |-- node4.html<BR>
| | | |-- node40.html<BR>
| | | |-- node41.html<BR>
| | | |-- node42.html<BR>
| | | |-- node43.html<BR>
| | | |-- node44.html<BR>
| | | |-- node45.html<BR>
| | | |-- node46.html<BR>
| | | |-- node47.html<BR>
| | | |-- node48.html<BR>
| | | |-- node49.html<BR>
| | | |-- node5.html<BR>
| | | |-- node50.html<BR>
| | | |-- node51.html<BR>
| | | |-- node52.html<BR>
| | | |-- node53.html<BR>
| | | |-- node54.html<BR>
| | | |-- node55.html<BR>
| | | |-- node56.html<BR>
| | | |-- node57.html<BR>
| | | |-- node58.html<BR>
| | | |-- node59.html<BR>
| | | |-- node6.html<BR>
| | | |-- node60.html<BR>
| | | |-- node61.html<BR>
| | | |-- node62.html<BR>
| | | |-- node63.html<BR>
| | | |-- node64.html<BR>
| | | |-- node65.html<BR>
| | | |-- node66.html<BR>
| | | |-- node67.html<BR>
| | | |-- node68.html<BR>
| | | |-- node69.html<BR>
| | | |-- node7.html<BR>
| | | |-- node70.html<BR>
| | | |-- node71.html<BR>
| | | |-- node72.html<BR>
| | | |-- node73.html<BR>
| | | |-- node74.html<BR>
| | | |-- node75.html<BR>
| | | |-- node76.html<BR>
| | | |-- node77.html<BR>
| | | |-- node78.html<BR>
| | | |-- node79.html<BR>
| | | |-- node8.html<BR>
| | | |-- node80.html<BR>
| | | |-- node81.html<BR>
| | | |-- node82.html<BR>
| | | |-- node83.html<BR>
| | | |-- node84.html<BR>
| | | |-- node85.html<BR>
| | | |-- node86.html<BR>
| | | |-- node87.html<BR>
| | | |-- node88.html<BR>
| | | |-- node89.html<BR>
| | | |-- node9.html<BR>
| | | |-- node90.html<BR>
| | | |-- node91.html<BR>
| | | |-- node92.html<BR>
| | | |-- node93.html<BR>
| | | |-- node94.html<BR>
| | | |-- node95.html<BR>
| | | |-- node96.html<BR>
| | | |-- node97.html<BR>
| | | |-- node98.html<BR>
| | | |-- node99.html<BR>
| | | |-- notes.html<BR>
| | | |-- previous_group_motif.gif<BR>
| | | |-- previous_group_motif_gr.gif<BR>
| | | |-- previous_motif.gif<BR>
| | | |-- previous_motif_gr.gif<BR>
| | | |-- up_motif.gif<BR>
| | | `-- up_motif_gr.gif<BR>
| | `-- rhcl_small.gif<BR>
| |-- TRANS.TBL<BR>
| |-- Users-Guide<BR>
| | |-- RHL-4.1-Users-Guide-HTML.tar.gz<BR>
| | |-- RHL-4.1-Users-Guide.a4.ps.gz<BR>
| | |-- RHL-4.1-Users-Guide.ps.gz<BR>
| | `-- TRANS.TBL<BR>
| |-- misc<BR>
| | |-- Boot-Process-Tips.txt<BR>
| | |-- CD-Type-HOWTO.txt<BR>
| | |-- Color-ls-Tips.txt<BR>
| | |-- Compile-Tips.txt<BR>
| | |-- Custom-X-Tips.txt<BR>
| | |-- FAQ -> RedHat-FAQ.txt<BR>
| | |-- FTP-Setup-Tips.txt<BR>
| | |-- Help-Tips.txt<BR>
| | |-- INN-Tips.txt<BR>
| | |-- NFS-Tips.txt<BR>
| | |-- NYS-Tips.txt<BR>
| | |-- PPP-Client-HOWTO.txt<BR>
| | |-- PPP-Tips.txt<BR>
| | |-- RPM-HOWTO.txt<BR>
| | |-- RPM-Tips.txt<BR>
| | |-- RedHat-FAQ.txt<BR>
| | |-- TRANS.TBL<BR>
| | |-- UUCP-Tips.txt<BR>
| | |-- WWW-Server-Tips.txt<BR>
| | `-- other-formats<BR>
| | |-- TRANS.TBL<BR>
| | |-- dvi<BR>
| | | |-- Boot-Process-Tips.dvi<BR>
| | | |-- CD-Type-HOWTO.dvi<BR>
| | | |-- Color-ls-Tips.dvi<BR>
| | | |-- Compile-Tips.dvi<BR>
| | | |-- Custom-X-Tips.dvi<BR>
| | | |-- FTP-Setup-Tips.dvi<BR>
| | | |-- Help-Tips.dvi<BR>
| | | |-- INN-Tips.dvi<BR>
| | | |-- NFS-Tips.dvi<BR>
| | | |-- NYS-Tips.dvi<BR>
| | | |-- PPP-Client-HOWTO.dvi<BR>
| | | |-- PPP-Tips.dvi<BR>
| | | |-- RPM-HOWTO.dvi<BR>
| | | |-- RPM-Tips.dvi<BR>
| | | |-- RedHat-FAQ.dvi<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- UUCP-Tips.dvi<BR>
| | | `-- WWW-Server-Tips.dvi<BR>
| | |-- html.untarred<BR>
| | | |-- Boot-Process-Tips-1.html<BR>
| | | |-- Boot-Process-Tips-2.html<BR>
| | | |-- Boot-Process-Tips-3.html<BR>
| | | |-- Boot-Process-Tips.html<BR>
| | | |-- CD-Type-HOWTO-1.html<BR>
| | | |-- CD-Type-HOWTO-2.html<BR>
| | | |-- CD-Type-HOWTO-3.html<BR>
| | | |-- CD-Type-HOWTO-4.html<BR>
| | | |-- CD-Type-HOWTO-5.html<BR>
| | | |-- CD-Type-HOWTO-6.html<BR>
| | | |-- CD-Type-HOWTO-7.html<BR>
| | | |-- CD-Type-HOWTO-8.html<BR>
| | | |-- CD-Type-HOWTO-9.html<BR>
| | | |-- CD-Type-HOWTO.html<BR>
| | | |-- CD-Type-HOWTO.sgml.html<BR>
| | | |-- Color-ls-Tips.html<BR>
| | | |-- Compile-Tips.html<BR>
| | | |-- Custom-X-Tips.html<BR>
| | | |-- FTP-Setup-Tips.html<BR>
| | | |-- Help-Tips-1.html<BR>
| | | |-- Help-Tips-2.html<BR>
| | | |-- Help-Tips-3.html<BR>
| | | |-- Help-Tips-4.html<BR>
| | | |-- Help-Tips-5.html<BR>
| | | |-- Help-Tips-6.html<BR>
| | | |-- Help-Tips-7.html<BR>
| | | |-- Help-Tips.html<BR>
| | | |-- INN-Tips.html<BR>
| | | |-- NFS-Tips.html<BR>
| | | |-- NYS-Tips-1.html<BR>
| | | |-- NYS-Tips-2.html<BR>
| | | |-- NYS-Tips-3.html<BR>
| | | |-- NYS-Tips.html<BR>
| | | |-- PPP-Client-HOWTO-1.html<BR>
| | | |-- PPP-Client-HOWTO-10.html<BR>
| | | |-- PPP-Client-HOWTO-11.html<BR>
| | | |-- PPP-Client-HOWTO-12.html<BR>
| | | |-- PPP-Client-HOWTO-13.html<BR>
| | | |-- PPP-Client-HOWTO-14.html<BR>
| | | |-- PPP-Client-HOWTO-15.html<BR>
| | | |-- PPP-Client-HOWTO-16.html<BR>
| | | |-- PPP-Client-HOWTO-17.html<BR>
| | | |-- PPP-Client-HOWTO-18.html<BR>
| | | |-- PPP-Client-HOWTO-19.html<BR>
| | | |-- PPP-Client-HOWTO-2.html<BR>
| | | |-- PPP-Client-HOWTO-20.html<BR>
| | | |-- PPP-Client-HOWTO-21.html<BR>
| | | |-- PPP-Client-HOWTO-22.html<BR>
| | | |-- PPP-Client-HOWTO-23.html<BR>
| | | |-- PPP-Client-HOWTO-24.html<BR>
| | | |-- PPP-Client-HOWTO-3.html<BR>
| | | |-- PPP-Client-HOWTO-4.html<BR>
| | | |-- PPP-Client-HOWTO-5.html<BR>
| | | |-- PPP-Client-HOWTO-6.html<BR>
| | | |-- PPP-Client-HOWTO-7.html<BR>
| | | |-- PPP-Client-HOWTO-8.html<BR>
| | | |-- PPP-Client-HOWTO-9.html<BR>
| | | |-- PPP-Client-HOWTO.html<BR>
| | | |-- PPP-Tips.html<BR>
| | | |-- RH-2.0-Manual.sgml-1.html<BR>
| | | |-- RH-2.0-Manual.sgml-2.html<BR>
| | | |-- RH-2.0-Manual.sgml-3.html<BR>
| | | |-- RH-2.0-Manual.sgml-4.html<BR>
| | | |-- RH-2.0-Manual.sgml-5.html<BR>
| | | |-- RH-2.0-Manual.sgml-6.html<BR>
| | | |-- RH-2.0-Manual.sgml.html<BR>
| | | |-- RHCL-Installation-HOWTO.sgml-1.html<BR>
| | | |-- RHCL-Installation-HOWTO.sgml-2.html<BR>
| | | |-- RHCL-Installation-HOWTO.sgml-3.html<BR>
| | | |-- RHCL-Installation-HOWTO.sgml-4.html<BR>
| | | |-- RHCL-Installation-HOWTO.sgml-5.html<BR>
| | | |-- RHCL-Installation-HOWTO.sgml-6.html<BR>
| | | |-- RHCL-Installation-HOWTO.sgml-7.html<BR>
| | | |-- RHCL-Installation-HOWTO.sgml-8.html<BR>
| | | |-- RHCL-Installation-HOWTO.sgml-9.html<BR>
| | | |-- RHCL-Installation-HOWTO.sgml.html<BR>
| | | |-- RPM-HOWTO-1.html<BR>
| | | |-- RPM-HOWTO-2.html<BR>
| | | |-- RPM-HOWTO-3.html<BR>
| | | |-- RPM-HOWTO-4.html<BR>
| | | |-- RPM-HOWTO-5.html<BR>
| | | |-- RPM-HOWTO-6.html<BR>
| | | |-- RPM-HOWTO-7.html<BR>
| | | |-- RPM-HOWTO-8.html<BR>
| | | |-- RPM-HOWTO-9.html<BR>
| | | |-- RPM-HOWTO.html<BR>
| | | |-- RPM-HOWTO.sgml-1.html<BR>
| | | |-- RPM-HOWTO.sgml-2.html<BR>
| | | |-- RPM-HOWTO.sgml-3.html<BR>
| | | |-- RPM-HOWTO.sgml-4.html<BR>
| | | |-- RPM-HOWTO.sgml-5.html<BR>
| | | |-- RPM-HOWTO.sgml-6.html<BR>
| | | |-- RPM-HOWTO.sgml-7.html<BR>
| | | |-- RPM-HOWTO.sgml-8.html<BR>
| | | |-- RPM-HOWTO.sgml.html<BR>
| | | |-- RPM-Tips.html<BR>
| | | |-- RedHat-FAQ-1.html<BR>
| | | |-- RedHat-FAQ-2.html<BR>
| | | |-- RedHat-FAQ-3.html<BR>
| | | |-- RedHat-FAQ-4.html<BR>
| | | |-- RedHat-FAQ-5.html<BR>
| | | |-- RedHat-FAQ-6.html<BR>
| | | |-- RedHat-FAQ.html<BR>
| | | |-- RedHat-FAQ.sgml-1.html<BR>
| | | |-- RedHat-FAQ.sgml-2.html<BR>
| | | |-- RedHat-FAQ.sgml-3.html<BR>
| | | |-- RedHat-FAQ.sgml-4.html<BR>
| | | |-- RedHat-FAQ.sgml-5.html<BR>
| | | |-- RedHat-FAQ.sgml-6.html<BR>
| | | |-- RedHat-FAQ.sgml-7.html<BR>
| | | |-- RedHat-FAQ.sgml.html<BR>
| | | |-- RedHat-HOWTO-1.html<BR>
| | | |-- RedHat-HOWTO-2.html<BR>
| | | |-- RedHat-HOWTO-3.html<BR>
| | | |-- RedHat-HOWTO-4.html<BR>
| | | |-- RedHat-HOWTO-5.html<BR>
| | | |-- RedHat-HOWTO-6.html<BR>
| | | |-- RedHat-HOWTO-7.html<BR>
| | | |-- RedHat-HOWTO-8.html<BR>
| | | |-- RedHat-HOWTO.html<BR>
| | | |-- RedHat-HOWTO.sgml-1.html<BR>
| | | |-- RedHat-HOWTO.sgml-2.html<BR>
| | | |-- RedHat-HOWTO.sgml-3.html<BR>
| | | |-- RedHat-HOWTO.sgml-4.html<BR>
| | | |-- RedHat-HOWTO.sgml-5.html<BR>
| | | |-- RedHat-HOWTO.sgml-6.html<BR>
| | | |-- RedHat-HOWTO.sgml-7.html<BR>
| | | |-- RedHat-HOWTO.sgml-8.html<BR>
| | | |-- RedHat-HOWTO.sgml.html<BR>
| | | |-- SparcLinux-HOWTO-1.html<BR>
| | | |-- SparcLinux-HOWTO-2.html<BR>
| | | |-- SparcLinux-HOWTO-3.html<BR>
| | | |-- SparcLinux-HOWTO-4.html<BR>
| | | |-- SparcLinux-HOWTO-5.html<BR>
| | | |-- SparcLinux-HOWTO-6.html<BR>
| | | |-- SparcLinux-HOWTO.html<BR>
| | | |-- SparcLinux-HOWTO.sgml.html<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- Test-HOWTO-1.html<BR>
| | | |-- Test-HOWTO.html<BR>
| | | |-- UUCP-Tips-1.html<BR>
| | | |-- UUCP-Tips-2.html<BR>
| | | |-- UUCP-Tips-3.html<BR>
| | | |-- UUCP-Tips-4.html<BR>
| | | |-- UUCP-Tips-5.html<BR>
| | | |-- UUCP-Tips-6.html<BR>
| | | |-- UUCP-Tips.html<BR>
| | | |-- WWW-Server-Tips.html<BR>
| | | `-- tar.gz<BR>
| | | |-- Boot-Process-Tips.html.tar.gz<BR>
| | | |-- CD-Type-HOWTO.html.tar.gz<BR>
| | | |-- Color-ls-Tips.html.tar.gz<BR>
| | | |-- Compile-Tips.html.tar.gz<BR>
| | | |-- Custom-X-Tips.html.tar.gz<BR>
| | | |-- FTP-Setup-Tips.html.tar.gz<BR>
| | | |-- Help-Tips.html.tar.gz<BR>
| | | |-- INN-Tips.html.tar.gz<BR>
| | | |-- NFS-Tips.html.tar.gz<BR>
| | | |-- NYS-Tips.html.tar.gz<BR>
| | | |-- PPP-Client-HOWTO.html.tar.gz<BR>
| | | |-- PPP-Tips.html.tar.gz<BR>
| | | |-- RPM-HOWTO.html.tar.gz<BR>
| | | |-- RPM-Tips.html.tar.gz<BR>
| | | |-- RedHat-FAQ.html.tar.gz<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- UUCP-Tips.html.tar.gz<BR>
| | | `-- WWW-Server-Tips.html.tar.gz<BR>
| | `-- ps<BR>
| | |-- Boot-Process-Tips.ps<BR>
| | |-- CD-Type-HOWTO.ps<BR>
| | |-- Color-ls-Tips.ps<BR>
| | |-- Compile-Tips.ps<BR>
| | |-- Custom-X-Tips.ps<BR>
| | |-- FTP-Setup-Tips.ps<BR>
| | |-- Help-Tips.ps<BR>
| | |-- INN-Tips.ps<BR>
| | |-- NFS-Tips.ps<BR>
| | |-- NYS-Tips.ps<BR>
| | |-- PPP-Client-HOWTO.ps<BR>
| | |-- PPP-Tips.ps<BR>
| | |-- RPM-HOWTO.ps<BR>
| | |-- RPM-Tips.ps<BR>
| | |-- RedHat-FAQ.ps<BR>
| | |-- TRANS.TBL<BR>
| | |-- UUCP-Tips.ps<BR>
| | `-- WWW-Server-Tips.ps<BR>
| `-- redhat-digest<BR>
| |-- TRANS.TBL<BR>
| |-- volume95<BR>
| | |-- TRANS.TBL<BR>
| | |-- issue-1.gz<BR>
| | |-- issue-10.gz<BR>
| | |-- issue-100.gz<BR>
| | |-- issue-101.gz<BR>
| | |-- issue-102.gz<BR>
| | |-- issue-103.gz<BR>
| | |-- issue-104.gz<BR>
| | |-- issue-105.gz<BR>
| | |-- issue-106.gz<BR>
| | |-- issue-107.gz<BR>
| | |-- issue-108.gz<BR>
| | |-- issue-109.gz<BR>
| | |-- issue-11.gz<BR>
| | |-- issue-110.gz<BR>
| | |-- issue-111.gz<BR>
| | |-- issue-112.gz<BR>
| | |-- issue-113.gz<BR>
| | |-- issue-114.gz<BR>
| | |-- issue-115.gz<BR>
| | |-- issue-116.gz<BR>
| | |-- issue-117.gz<BR>
| | |-- issue-118.gz<BR>
| | |-- issue-119.gz<BR>
| | |-- issue-12.gz<BR>
| | |-- issue-120.gz<BR>
| | |-- issue-121.gz<BR>
| | |-- issue-122.gz<BR>
| | |-- issue-123.gz<BR>
| | |-- issue-124.gz<BR>
| | |-- issue-125.gz<BR>
| | |-- issue-126.gz<BR>
| | |-- issue-127.gz<BR>
| | |-- issue-128.gz<BR>
| | |-- issue-129.gz<BR>
| | |-- issue-13.gz<BR>
| | |-- issue-130.gz<BR>
| | |-- issue-131.gz<BR>
| | |-- issue-132.gz<BR>
| | |-- issue-133.gz<BR>
| | |-- issue-134.gz<BR>
| | |-- issue-135.gz<BR>
| | |-- issue-136.gz<BR>
| | |-- issue-137.gz<BR>
| | |-- issue-138.gz<BR>
| | |-- issue-139.gz<BR>
| | |-- issue-14.gz<BR>
| | |-- issue-140.gz<BR>
| | |-- issue-141.gz<BR>
| | |-- issue-142.gz<BR>
| | |-- issue-143.gz<BR>
| | |-- issue-144.gz<BR>
| | |-- issue-145.gz<BR>
| | |-- issue-146.gz<BR>
| | |-- issue-147.gz<BR>
| | |-- issue-148.gz<BR>
| | |-- issue-149.gz<BR>
| | |-- issue-15.gz<BR>
| | |-- issue-150.gz<BR>
| | |-- issue-151.gz<BR>
| | |-- issue-152.gz<BR>
| | |-- issue-153.gz<BR>
| | |-- issue-154.gz<BR>
| | |-- issue-155.gz<BR>
| | |-- issue-156.gz<BR>
| | |-- issue-157.gz<BR>
| | |-- issue-158.gz<BR>
| | |-- issue-159.gz<BR>
| | |-- issue-16.gz<BR>
| | |-- issue-160.gz<BR>
| | |-- issue-161.gz<BR>
| | |-- issue-162.gz<BR>
| | |-- issue-163.gz<BR>
| | |-- issue-164.gz<BR>
| | |-- issue-165.gz<BR>
| | |-- issue-166.gz<BR>
| | |-- issue-167.gz<BR>
| | |-- issue-168.gz<BR>
| | |-- issue-169.gz<BR>
| | |-- issue-17.gz<BR>
| | |-- issue-170.gz<BR>
| | |-- issue-171.gz<BR>
| | |-- issue-18.gz<BR>
| | |-- issue-19.gz<BR>
| | |-- issue-2.gz<BR>
| | |-- issue-20.gz<BR>
| | |-- issue-21.gz<BR>
| | |-- issue-22.gz<BR>
| | |-- issue-23.gz<BR>
| | |-- issue-24.gz<BR>
| | |-- issue-25.gz<BR>
| | |-- issue-26.gz<BR>
| | |-- issue-27.gz<BR>
| | |-- issue-28.gz<BR>
| | |-- issue-29.gz<BR>
| | |-- issue-3.gz<BR>
| | |-- issue-30.gz<BR>
| | |-- issue-31.gz<BR>
| | |-- issue-32.gz<BR>
| | |-- issue-33.gz<BR>
| | |-- issue-34.gz<BR>
| | |-- issue-35.gz<BR>
| | |-- issue-36.gz<BR>
| | |-- issue-37.gz<BR>
| | |-- issue-38.gz<BR>
| | |-- issue-39.gz<BR>
| | |-- issue-4.gz<BR>
| | |-- issue-40.gz<BR>
| | |-- issue-41.gz<BR>
| | |-- issue-42.gz<BR>
| | |-- issue-43.gz<BR>
| | |-- issue-44.gz<BR>
| | |-- issue-45.gz<BR>
| | |-- issue-46.gz<BR>
| | |-- issue-47.gz<BR>
| | |-- issue-48.gz<BR>
| | |-- issue-49.gz<BR>
| | |-- issue-5.gz<BR>
| | |-- issue-50.gz<BR>
| | |-- issue-51.gz<BR>
| | |-- issue-52.gz<BR>
| | |-- issue-53.gz<BR>
| | |-- issue-54.gz<BR>
| | |-- issue-55.gz<BR>
| | |-- issue-56.gz<BR>
| | |-- issue-57.gz<BR>
| | |-- issue-58.gz<BR>
| | |-- issue-59.gz<BR>
| | |-- issue-6.gz<BR>
| | |-- issue-60.gz<BR>
| | |-- issue-61.gz<BR>
| | |-- issue-62.gz<BR>
| | |-- issue-63.gz<BR>
| | |-- issue-64.gz<BR>
| | |-- issue-65.gz<BR>
| | |-- issue-66.gz<BR>
| | |-- issue-67.gz<BR>
| | |-- issue-68.gz<BR>
| | |-- issue-69.gz<BR>
| | |-- issue-7.gz<BR>
| | |-- issue-70.gz<BR>
| | |-- issue-71.gz<BR>
| | |-- issue-72.gz<BR>
| | |-- issue-73.gz<BR>
| | |-- issue-74.gz<BR>
| | |-- issue-75.gz<BR>
| | |-- issue-76.gz<BR>
| | |-- issue-77.gz<BR>
| | |-- issue-78.gz<BR>
| | |-- issue-79.gz<BR>
| | |-- issue-8.gz<BR>
| | |-- issue-80.gz<BR>
| | |-- issue-81.gz<BR>
| | |-- issue-82.gz<BR>
| | |-- issue-83.gz<BR>
| | |-- issue-84.gz<BR>
| | |-- issue-85.gz<BR>
| | |-- issue-86.gz<BR>
| | |-- issue-87.gz<BR>
| | |-- issue-88.gz<BR>
| | |-- issue-89.gz<BR>
| | |-- issue-9.gz<BR>
| | |-- issue-90.gz<BR>
| | |-- issue-91.gz<BR>
| | |-- issue-92.gz<BR>
| | |-- issue-93.gz<BR>
| | |-- issue-94.gz<BR>
| | |-- issue-95.gz<BR>
| | |-- issue-96.gz<BR>
| | |-- issue-97.gz<BR>
| | |-- issue-98.gz<BR>
| | `-- issue-99.gz<BR>
| `-- volume96<BR>
| |-- TRANS.TBL<BR>
| |-- issue-1.gz<BR>
| |-- issue-10.gz<BR>
| |-- issue-100.gz<BR>
| |-- issue-101.gz<BR>
| |-- issue-102.gz<BR>
| |-- issue-103.gz<BR>
| |-- issue-104.gz<BR>
| |-- issue-105.gz<BR>
| |-- issue-106.gz<BR>
| |-- issue-107.gz<BR>
| |-- issue-108.gz<BR>
| |-- issue-109.gz<BR>
| |-- issue-11.gz<BR>
| |-- issue-110.gz<BR>
| |-- issue-111.gz<BR>
| |-- issue-112.gz<BR>
| |-- issue-113.gz<BR>
| |-- issue-114.gz<BR>
| |-- issue-115.gz<BR>
| |-- issue-116.gz<BR>
| |-- issue-117.gz<BR>
| |-- issue-118.gz<BR>
| |-- issue-119.gz<BR>
| |-- issue-12.gz<BR>
| |-- issue-120.gz<BR>
| |-- issue-121.gz<BR>
| |-- issue-122.gz<BR>
| |-- issue-123.gz<BR>
| |-- issue-124.gz<BR>
| |-- issue-125.gz<BR>
| |-- issue-126.gz<BR>
| |-- issue-127.gz<BR>
| |-- issue-128.gz<BR>
| |-- issue-129.gz<BR>
| |-- issue-13.gz<BR>
| |-- issue-130.gz<BR>
| |-- issue-131.gz<BR>
| |-- issue-132.gz<BR>
| |-- issue-133.gz<BR>
| |-- issue-134.gz<BR>
| |-- issue-135.gz<BR>
| |-- issue-136.gz<BR>
| |-- issue-137.gz<BR>
| |-- issue-138.gz<BR>
| |-- issue-139.gz<BR>
| |-- issue-14.gz<BR>
| |-- issue-140.gz<BR>
| |-- issue-141.gz<BR>
| |-- issue-142.gz<BR>
| |-- issue-143.gz<BR>
| |-- issue-144.gz<BR>
| |-- issue-145.gz<BR>
| |-- issue-146.gz<BR>
| |-- issue-147.gz<BR>
| |-- issue-148.gz<BR>
| |-- issue-149.gz<BR>
| |-- issue-15.gz<BR>
| |-- issue-150.gz<BR>
| |-- issue-151.gz<BR>
| |-- issue-152.gz<BR>
| |-- issue-153.gz<BR>
| |-- issue-154.gz<BR>
| |-- issue-155.gz<BR>
| |-- issue-156.gz<BR>
| |-- issue-157.gz<BR>
| |-- issue-158.gz<BR>
| |-- issue-159.gz<BR>
| |-- issue-16.gz<BR>
| |-- issue-160.gz<BR>
| |-- issue-161.gz<BR>
| |-- issue-162.gz<BR>
| |-- issue-163.gz<BR>
| |-- issue-164.gz<BR>
| |-- issue-165.gz<BR>
| |-- issue-166.gz<BR>
| |-- issue-167.gz<BR>
| |-- issue-168.gz<BR>
| |-- issue-169.gz<BR>
| |-- issue-17.gz<BR>
| |-- issue-170.gz<BR>
| |-- issue-171.gz<BR>
| |-- issue-172.gz<BR>
| |-- issue-173.gz<BR>
| |-- issue-174.gz<BR>
| |-- issue-175.gz<BR>
| |-- issue-176.gz<BR>
| |-- issue-177.gz<BR>
| |-- issue-178.gz<BR>
| |-- issue-179.gz<BR>
| |-- issue-18.gz<BR>
| |-- issue-180.gz<BR>
| |-- issue-181.gz<BR>
| |-- issue-182.gz<BR>
| |-- issue-183.gz<BR>
| |-- issue-184.gz<BR>
| |-- issue-185.gz<BR>
| |-- issue-186.gz<BR>
| |-- issue-187.gz<BR>
| |-- issue-188.gz<BR>
| |-- issue-189.gz<BR>
| |-- issue-19.gz<BR>
| |-- issue-190.gz<BR>
| |-- issue-191.gz<BR>
| |-- issue-192.gz<BR>
| |-- issue-2.gz<BR>
| |-- issue-20.gz<BR>
| |-- issue-21.gz<BR>
| |-- issue-22.gz<BR>
| |-- issue-23.gz<BR>
| |-- issue-24.gz<BR>
| |-- issue-25.gz<BR>
| |-- issue-26.gz<BR>
| |-- issue-27.gz<BR>
| |-- issue-28.gz<BR>
| |-- issue-29.gz<BR>
| |-- issue-3.gz<BR>
| |-- issue-30.gz<BR>
| |-- issue-31.gz<BR>
| |-- issue-32.gz<BR>
| |-- issue-33.gz<BR>
| |-- issue-34.gz<BR>
| |-- issue-35.gz<BR>
| |-- issue-36.gz<BR>
| |-- issue-37.gz<BR>
| |-- issue-38.gz<BR>
| |-- issue-39.gz<BR>
| |-- issue-4.gz<BR>
| |-- issue-40.gz<BR>
| |-- issue-41.gz<BR>
| |-- issue-42.gz<BR>
| |-- issue-43.gz<BR>
| |-- issue-44.gz<BR>
| |-- issue-45.gz<BR>
| |-- issue-46.gz<BR>
| |-- issue-47.gz<BR>
| |-- issue-48.gz<BR>
| |-- issue-49.gz<BR>
| |-- issue-5.gz<BR>
| |-- issue-50.gz<BR>
| |-- issue-51.gz<BR>
| |-- issue-52.gz<BR>
| |-- issue-53.gz<BR>
| |-- issue-54.gz<BR>
| |-- issue-55.gz<BR>
| |-- issue-56.gz<BR>
| |-- issue-57.gz<BR>
| |-- issue-58.gz<BR>
| |-- issue-59.gz<BR>
| |-- issue-6.gz<BR>
| |-- issue-60.gz<BR>
| |-- issue-61.gz<BR>
| |-- issue-62.gz<BR>
| |-- issue-63.gz<BR>
| |-- issue-64.gz<BR>
| |-- issue-65.gz<BR>
| |-- issue-66.gz<BR>
| |-- issue-67.gz<BR>
| |-- issue-68.gz<BR>
| |-- issue-69.gz<BR>
| |-- issue-7.gz<BR>
| |-- issue-70.gz<BR>
| |-- issue-71.gz<BR>
| |-- issue-72.gz<BR>
| |-- issue-73.gz<BR>
| |-- issue-74.gz<BR>
| |-- issue-75.gz<BR>
| |-- issue-76.gz<BR>
| |-- issue-77.gz<BR>
| |-- issue-78.gz<BR>
| |-- issue-79.gz<BR>
| |-- issue-8.gz<BR>
| |-- issue-80.gz<BR>
| |-- issue-81.gz<BR>
| |-- issue-82.gz<BR>
| |-- issue-83.gz<BR>
| |-- issue-84.gz<BR>
| |-- issue-85.gz<BR>
| |-- issue-86.gz<BR>
| |-- issue-87.gz<BR>
| |-- issue-88.gz<BR>
| |-- issue-89.gz<BR>
| |-- issue-9.gz<BR>
| |-- issue-90.gz<BR>
| |-- issue-91.gz<BR>
| |-- issue-92.gz<BR>
| |-- issue-93.gz<BR>
| |-- issue-94.gz<BR>
| |-- issue-95.gz<BR>
| |-- issue-96.gz<BR>
| |-- issue-97.gz<BR>
| |-- issue-98.gz<BR>
| `-- issue-99.gz<BR>
|-- dosutils<BR>
| |-- TRANS.TBL<BR>
| |-- autoboot<BR>
| | |-- TRANS.TBL<BR>
| | |-- initrd.img<BR>
| | |-- kernel-2.013<BR>
| | `-- vmlinuz<BR>
| |-- autoboot.bat<BR>
| |-- copying<BR>
| |-- dos2unix<BR>
| | |-- TRANS.TBL<BR>
| | |-- dos2unix.c<BR>
| | |-- dos2unix.com<BR>
| | |-- dos2unix.msg<BR>
| | |-- file_id.diz<BR>
| | |-- makefile.msc<BR>
| | |-- makefile.unx<BR>
| | |-- makefile.ztc<BR>
| | |-- unix2dos.c<BR>
| | `-- unix2dos.com<BR>
| |-- fips.15<BR>
| | |-- TRANS.TBL<BR>
| | |-- copying<BR>
| | |-- errors.txt<BR>
| | |-- fips.doc<BR>
| | |-- fips.exe<BR>
| | |-- fips.faq<BR>
| | |-- fips15.zip<BR>
| | |-- history.txt<BR>
| | |-- manuelfr.txt<BR>
| | |-- readme.1st<BR>
| | |-- restorrb<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- restorrb.c<BR>
| | | |-- rtypes.h<BR>
| | | `-- rversion.h<BR>
| | |-- restorrb.exe<BR>
| | |-- source<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- calculat.cpp<BR>
| | | |-- check.cpp<BR>
| | | |-- cmdl_arg.cpp<BR>
| | | |-- disk_io.cpp<BR>
| | | |-- disk_io.h<BR>
| | | |-- fat.cpp<BR>
| | | |-- fat.h<BR>
| | | |-- fipsspec.cpp<BR>
| | | |-- fipsspec.h<BR>
| | | |-- getopt.c<BR>
| | | |-- getopt.h<BR>
| | | |-- global.cpp<BR>
| | | |-- global.h<BR>
| | | |-- hdstruct.cpp<BR>
| | | |-- hdstruct.h<BR>
| | | |-- host_os.cpp<BR>
| | | |-- host_os.h<BR>
| | | |-- input.cpp<BR>
| | | |-- input.h<BR>
| | | |-- logdr_st.cpp<BR>
| | | |-- logdr_st.h<BR>
| | | |-- main.cpp<BR>
| | | |-- primpart.h<BR>
| | | |-- save.cpp<BR>
| | | |-- types.h<BR>
| | | `-- version.h<BR>
| | |-- special.doc<BR>
| | `-- techinfo.txt<BR>
| |-- gzip124<BR>
| | |-- TRANS.TBL<BR>
| | |-- copying<BR>
| | |-- file_id.diz<BR>
| | |-- gzip.doc<BR>
| | |-- gzip.exe<BR>
| | |-- gzip386.exe<BR>
| | |-- readme<BR>
| | `-- readme.dos<BR>
| |-- loadlin.exe<BR>
| |-- lodlin16<BR>
| | |-- TRANS.TBL<BR>
| | |-- copying<BR>
| | |-- doc<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- announce.txt<BR>
| | | |-- changes<BR>
| | | |-- initrd.txt<BR>
| | | |-- lodlin16.lsm<BR>
| | | |-- manual.txt<BR>
| | | |-- params.doc<BR>
| | | `-- quicksta.rt<BR>
| | |-- doc.fr<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- initrd.txt<BR>
| | | |-- manuel.txt<BR>
| | | `-- params.doc<BR>
| | |-- files<BR>
| | |-- initrd<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- freeramd.c<BR>
| | | |-- linuxrc.c<BR>
| | | |-- makefile<BR>
| | | `-- mkdisk<BR>
| | |-- initrd.tgz<BR>
| | |-- initrd.txt<BR>
| | |-- linux.bat<BR>
| | |-- loadlin.exe<BR>
| | |-- manuel.txt<BR>
| | |-- params.doc<BR>
| | |-- readme.1st<BR>
| | |-- src<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- loadlin.asm<BR>
| | | |-- loadlina.asm<BR>
| | | |-- loadlini.asm<BR>
| | | |-- loadlinj.asm<BR>
| | | |-- loadlinm.asm<BR>
| | | |-- makefile<BR>
| | | |-- pgadjust.asm<BR>
| | | |-- srclinux<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- loadlinh.s<BR>
| | | | |-- makefile<BR>
| | | | `-- pgadjust.c<BR>
| | | `-- srclinux.tgz<BR>
| | `-- test.par<BR>
| |-- rawrite3<BR>
| | |-- TRANS.TBL<BR>
| | |-- rawrite.exe<BR>
| | `-- rawrite3.doc<BR>
| |-- rdev<BR>
| | |-- TRANS.TBL<BR>
| | `-- rdev.exe<BR>
| |-- readme<BR>
| |-- restorrb<BR>
| | |-- TRANS.TBL<BR>
| | `-- restorrb.exe<BR>
| |-- tar320c<BR>
| | |-- TRANS.TBL<BR>
| | |-- file_id.diz<BR>
| | |-- license.txt<BR>
| | |-- read.me<BR>
| | |-- sources<BR>
| | | |-- !compile.bat<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- aspi.c<BR>
| | | |-- aspient.asm<BR>
| | | |-- bits.c<BR>
| | | |-- compress.c<BR>
| | | |-- compress.h<BR>
| | | |-- crc32.c<BR>
| | | |-- crc32.h<BR>
| | | |-- cthandle.asm<BR>
| | | |-- ctquirks.asm<BR>
| | | |-- define.h<BR>
| | | |-- deflate.c<BR>
| | | |-- disk.c<BR>
| | | |-- diszip.c<BR>
| | | |-- extract.c<BR>
| | | |-- farnear.inc<BR>
| | | |-- fmatch.c<BR>
| | | |-- lzpack.c<BR>
| | | |-- lzpack.h<BR>
| | | |-- lzwbits.h<BR>
| | | |-- lzwhead.h<BR>
| | | |-- makefile<BR>
| | | |-- makefile.ix<BR>
| | | |-- match.asm<BR>
| | | |-- match.s<BR>
| | | |-- modern.h<BR>
| | | |-- nodedef.h<BR>
| | | |-- pclevel.asm<BR>
| | | |-- pctimer.asm<BR>
| | | |-- pctimer.h<BR>
| | | |-- percent.c<BR>
| | | |-- qic02.h<BR>
| | | |-- qicface.c<BR>
| | | |-- readopt.c<BR>
| | | |-- restore.c<BR>
| | | |-- roll.c<BR>
| | | |-- roll.h<BR>
| | | |-- savefile.c<BR>
| | | |-- stdinc.h<BR>
| | | |-- store.c<BR>
| | | |-- streamer.c<BR>
| | | |-- sysup.h<BR>
| | | |-- tape.c<BR>
| | | |-- tar.c<BR>
| | | |-- tar.prj<BR>
| | | |-- trees.c<BR>
| | | |-- unlzw.c<BR>
| | | |-- zalloc.h<BR>
| | | |-- zipdefs.h<BR>
| | | |-- ziperror.c<BR>
| | | |-- zipguts.h<BR>
| | | |-- ziposcod.h<BR>
| | | |-- zippipe.c<BR>
| | | `-- zippipe.h<BR>
| | |-- tar.exe<BR>
| | |-- tar.txt<BR>
| | `-- to.do<BR>
| `-- unz512x3<BR>
| |-- TRANS.TBL<BR>
| |-- copying<BR>
| |-- file_id.diz<BR>
| |-- funzip.doc<BR>
| |-- funzip.exe<BR>
| |-- readme<BR>
| |-- readme.dos<BR>
| |-- unzip.doc<BR>
| |-- unzip.exe<BR>
| |-- unzip386.exe<BR>
| |-- unzipsfx.doc<BR>
| |-- unzipsfx.exe<BR>
| |-- where<BR>
| `-- zipinfo.doc<BR>
|-- images<BR>
| |-- TRANS.TBL<BR>
| |-- boot.img<BR>
| |-- other<BR>
| | |-- README.FlashPoint<BR>
| | |-- TRANS.TBL<BR>
| | `-- bootFlashPoint.img<BR>
| `-- supp.img<BR>
|-- install.bat<BR>
|-- ls-lR<BR>
|-- man-rh41.txt<BR>
|-- misc<BR>
| |-- TRANS.TBL<BR>
| |-- boot<BR>
| | |-- TRANS.TBL<BR>
| | |-- autoboot.img<BR>
| | `-- boot.cat<BR>
| `-- src<BR>
| |-- TRANS.TBL<BR>
| |-- init<BR>
| | |-- Makefile<BR>
| | |-- TRANS.TBL<BR>
| | |-- init<BR>
| | |-- init.c<BR>
| | `-- init.o<BR>
| |-- install<BR>
| | |-- .depend<BR>
| | |-- Makefile<BR>
| | |-- TRANS.TBL<BR>
| | |-- bootp.h<BR>
| | |-- bootpc.c<BR>
| | |-- bootpc.h<BR>
| | |-- bootpc.o<BR>
| | |-- bptypes.h<BR>
| | |-- cdrom.c<BR>
| | |-- cdrom.o<BR>
| | |-- commands.c<BR>
| | |-- commands.h<BR>
| | |-- commands.o<BR>
| | |-- config.c<BR>
| | |-- config.h<BR>
| | |-- config.o<BR>
| | |-- debug.log<BR>
| | |-- devices.c<BR>
| | |-- devices.c.ewt<BR>
| | |-- devices.h<BR>
| | |-- devices.o<BR>
| | |-- dmphdlist<BR>
| | |-- dmphdlist.c<BR>
| | |-- doit.c<BR>
| | |-- doit.h<BR>
| | |-- doit.o<BR>
| | |-- earlymethods.c<BR>
| | |-- earlymethods.o<BR>
| | |-- entry.c<BR>
| | |-- entry.o<BR>
| | |-- fs.c<BR>
| | |-- fs.h<BR>
| | |-- fs.o<BR>
| | |-- ftp.c<BR>
| | |-- ftp.h<BR>
| | |-- ftp.o<BR>
| | |-- genhdlist<BR>
| | |-- genhdlist.c<BR>
| | |-- hash.c<BR>
| | |-- hash.h<BR>
| | |-- hash.o<BR>
| | |-- hd.c<BR>
| | |-- hd.h<BR>
| | |-- hd.o<BR>
| | |-- inet_aton.h<BR>
| | |-- install<BR>
| | |-- install.c<BR>
| | |-- install.h<BR>
| | |-- install.o<BR>
| | |-- install2<BR>
| | |-- install2.c<BR>
| | |-- install2.o<BR>
| | |-- kernel.c<BR>
| | |-- kernel.h<BR>
| | |-- latemethods.c<BR>
| | |-- latemethods.o<BR>
| | |-- lilo.c<BR>
| | |-- lilo.h<BR>
| | |-- lilo.o<BR>
| | |-- log.c<BR>
| | |-- log.h<BR>
| | |-- log.o<BR>
| | |-- methods.h<BR>
| | |-- mkswap.c<BR>
| | |-- mkswap.h<BR>
| | |-- mkswap.o<BR>
| | |-- modules.c<BR>
| | |-- mono.c<BR>
| | |-- mono.h<BR>
| | |-- mono.o<BR>
| | |-- mount.h<BR>
| | |-- mount.x<BR>
| | |-- mount_clnt.c<BR>
| | |-- mount_svc.c<BR>
| | |-- mount_xdr.c<BR>
| | |-- mount_xdr.o<BR>
| | |-- mtab.c<BR>
| | |-- mtab.o<BR>
| | |-- net.c<BR>
| | |-- net.h<BR>
| | |-- net.o<BR>
| | |-- nfsmount.c<BR>
| | |-- nfsmount.o<BR>
| | |-- perror.c<BR>
| | |-- perror.h<BR>
| | |-- perror.o<BR>
| | |-- pkgs.c<BR>
| | |-- pkgs.h<BR>
| | |-- pkgs.o<BR>
| | |-- run.c<BR>
| | |-- run.h<BR>
| | |-- run.o<BR>
| | |-- scsi.c<BR>
| | |-- scsi.h<BR>
| | |-- scsi.o<BR>
| | |-- upgrade.c<BR>
| | |-- upgrade.h<BR>
| | |-- upgrade.o<BR>
| | |-- windows.c<BR>
| | |-- windows.h<BR>
| | `-- windows.o<BR>
| |-- trees<BR>
| | |-- TRANS.TBL<BR>
| | |-- boot1<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- boot<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- boot.0200<BR>
| | | | |-- boot.b<BR>
| | | | `-- map<BR>
| | | |-- dev<BR>
| | | | |-- TRANS.TBL<BR>
| | | | `-- fd0<BR>
| | | |-- etc<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- boot.msg<BR>
| | | | |-- lilo.conf<BR>
| | | | `-- mtab -> /proc/mounts<BR>
| | | `-- vmlinuz<BR>
| | |-- boot1.img<BR>
| | |-- boot2<BR>
| | | |-- .profile<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- bin -> sbin<BR>
| | | |-- dev<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- console<BR>
| | | | |-- null<BR>
| | | | |-- ram<BR>
| | | | |-- systty<BR>
| | | | |-- tty1<BR>
| | | | |-- tty2<BR>
| | | | |-- tty3<BR>
| | | | |-- tty4<BR>
| | | | `-- tty5<BR>
| | | |-- etc<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- ld.so.cache<BR>
| | | | |-- nsswitch.conf<BR>
| | | | `-- pcmcia<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- config<BR>
| | | | |-- network<BR>
| | | | |-- pcmem<BR>
| | | | |-- scsi<BR>
| | | | `-- serial<BR>
| | | |-- linuxrc -> /sbin/init<BR>
| | | |-- modules<BR>
| | | | |-- 3c501.o<BR>
| | | | |-- 3c503.o<BR>
| | | | |-- 3c509.o<BR>
| | | | |-- 3c59x.o<BR>
| | | | |-- 53c7,8xx.o<BR>
| | | | |-- 8390.o<BR>
| | | | |-- BusLogic.o<BR>
| | | | |-- NCR53c406a.o<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- advansys.o<BR>
| | | | |-- aha152x.o<BR>
| | | | |-- aha1542.o<BR>
| | | | |-- aha1740.o<BR>
| | | | |-- aic7xxx.o<BR>
| | | | |-- apricot.o<BR>
| | | | |-- arcnet.o<BR>
| | | | |-- aztcd.o<BR>
| | | | |-- bpcd.o<BR>
| | | | |-- cdrom.o<BR>
| | | | |-- cdu31a.o<BR>
| | | | |-- cm206.o<BR>
| | | | |-- de4x5.o<BR>
| | | | |--=20de600.o<BR>
| | | | |-- de620.o<BR>
| | | | |-- depca.o<BR>
| | | | |-- dtc.o<BR>
| | | | |-- e2100.o<BR>
| | | | |-- eata_dma.o<BR>
| | | | |-- eata_pio.o<BR>
| | | | |-- eexpress.o<BR>
| | | | |-- ewrk3.o<BR>
| | | | |-- fdomain.o<BR>
| | | | |-- g_NCR5380.o<BR>
| | | | |-- gscd.o<BR>
| | | | |-- hp-plus.o<BR>
| | | | |-- hp.o<BR>
| | | | |-- hp100.o<BR>
| | | | |-- ibmtr.o<BR>
| | | | |-- in2000.o<BR>
| | | | |-- isp16.o<BR>
| | | | |-- loop.o<BR>
| | | | |-- mcd.o<BR>
| | | | |-- mcdx.o<BR>
| | | | |-- ncr53c8xx.o<BR>
| | | | |-- ne.o<BR>
| | | | |-- optcd.o<BR>
| | | | |-- pas16.o<BR>
| | | | |-- plip.o<BR>
| | | | |-- ppa.o<BR>
| | | | |-- qlogicfas.o<BR>
| | | | |-- qlogicisp.o<BR>
| | | | |-- sbpcd.o<BR>
| | | | |-- seagate.o<BR>
| | | | |-- sjcd.o<BR>
| | | | |-- smc-ultra.o<BR>
| | | | |-- smc9194.o<BR>
| | | | |-- sonycd535.o<BR>
| | | | |-- t128.o<BR>
| | | | |-- tulip.o<BR>
| | | | |-- u14-34f.o<BR>
| | | | |-- ultrastor.o<BR>
| | | | |-- wd.o<BR>
| | | | `-- wd7000.o<BR>
| | | |-- proc<BR>
| | | | `-- TRANS.TBL<BR>
| | | |-- sbin<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- e2fsck<BR>
| | | | |-- init<BR>
| | | | |-- insmod<BR>
| | | | |-- install<BR>
| | | | `-- rmmod -> insmod<BR>
| | | |-- tmp<BR>
| | | | `-- TRANS.TBL<BR>
| | | `-- usr<BR>
| | | |-- TRANS.TBL<BR>
| | | `-- lib<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- rpmrc<BR>
| | | `-- terminfo<BR>
| | | |-- TRANS.TBL<BR>
| | | `-- l<BR>
| | | |-- TRANS.TBL<BR>
| | | `-- linux<BR>
| | |-- boot2.img<BR>
| | |-- boot2.img.back<BR>
| | |-- boot2.img.gz<BR>
| | |-- boot2.img.nogz<BR>
| | |-- debug.log<BR>
| | |-- mkboot1<BR>
| | |-- mkboot2<BR>
| | |-- mkskel<BR>
| | |-- mksupp<BR>
| | |-- pcmcia<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- etc<BR>
| | | | |-- TRANS.TBL<BR>
| | | | `-- pcmcia<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- config<BR>
| | | | |-- config.opts<BR>
| | | | |-- fixed<BR>
| | | | |-- fixed.opts<BR>
| | | | |-- network<BR>
| | | | |-- scsi<BR>
| | | | `-- scsi.opts<BR>
| | | |-- lib<BR>
| | | | |-- TRANS.TBL<BR>
| | | | `-- modules<BR>
| | | | |-- 2.0.27<BR>
| | | | | |-- TRANS.TBL<BR>
| | | | | `-- pcmcia<BR>
| | | | | |-- 3c589_cs.o<BR>
| | | | | |-- TRANS.TBL<BR>
| | | | | |-- aha152x_cs.o<BR>
| | | | | |-- ds.o<BR>
| | | | | |-- fdomain_cs.o<BR>
| | | | | |-- fixed_cs.o<BR>
| | | | | |-- fmvj18x_cs.o<BR>
| | | | | |-- ftl_cs.o<BR>
| | | | | |-- i82365.o<BR>
| | | | | |-- ibmtr_cs.o<BR>
| | | | | |-- iflash2+_mtd.o<BR>
| | | | | |-- iflash2_mtd.o<BR>
| | | | | |-- memory_cs.o<BR>
| | | | | |-- nmclan_cs.o<BR>
| | | | | |-- pcmcia_core.o<BR>
| | | | | |-- pcmem_cs.o<BR>
| | | | | |-- pcnet_cs.o<BR>
| | | | | |-- qlogic_cs.o<BR>
| | | | | |-- serial_cs.o<BR>
| | | | | |-- smc91c92_cs.o<BR>
| | | | | |-- sram_mtd.o<BR>
| | | | | |-- tcic.o<BR>
| | | | | |-- wavelan_cs.o<BR>
| | | | | `-- xircnw_cs.o<BR>
| | | | `-- TRANS.TBL<BR>
| | | `-- sbin<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- cardmgr<BR>
| | | `-- probe<BR>
| | |-- skeleton<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- bin<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- awk -> gawk<BR>
| | | | |-- bash<BR>
| | | | |-- cp<BR>
| | | | |-- cpio<BR>
| | | | |-- gawk<BR>
| | | | |-- gunzip -> gzip<BR>
| | | | |-- gzip<BR>
| | | | |-- hostname<BR>
| | | | |-- ln<BR>
| | | | |-- mv<BR>
| | | | |-- rm<BR>
| | | | |-- sed<BR>
| | | | |-- sh -> bash<BR>
| | | | `-- uname<BR>
| | | |-- dev<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- null<BR>
| | | | `-- zero<BR>
| | | |-- etc<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- ld.so.cache<BR>
| | | | |-- ld.so.conf<BR>
| | | | `-- mtab<BR>
| | | |-- lib<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- ld-linux.so.1 -> ld-linux.so.1.7.14<BR>
| | | | |-- ld-linux.so.1.7.14<BR>
| | | | |-- ld.so -> ld.so.1.7.14<BR>
| | | | |-- ld.so.1.7.14<BR>
| | | | |-- libc.so.5 -> libc.so.5.3.12<BR>
| | | | |-- libc.so.5.3.12<BR>
| | | | |-- libm.so.5 -> libm.so.5.0.6<BR>
| | | | |-- libm.so.5.0.6<BR>
| | | | |-- libtermcap.so.2 -> libtermcap.so.2.0.5<BR>
| | | | `-- libtermcap.so.2.0.5<BR>
| | | |-- sbin<BR>
| | | | |-- TRANS.TBL<BR>
| | | | `-- ldconfig<BR>
| | | `-- usr<BR>
| | | |-- TRANS.TBL<BR>
| | | `-- bin<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- egrep<BR>
| | | |-- grep<BR>
| | | `-- md5sum<BR>
| | |-- supp<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- lib<BR>
| | | | |-- TRANS.TBL<BR>
| | | | |-- ld-linux.so.1<BR>
| | | | |-- ld-linux.so.1.7.14<BR>
| | | | |-- ld-linux.so.1.8.5<BR>
| | | | |-- libc.so.5 -> libc.so.5.3.12<BR>
| | | | |-- libc.so.5.3.12<BR>
| | | | |-- libcom_err.so -> /lib/libcom_err.so.2.0<BR>
| | | | |-- libcom_err.so.2 -> libcom_err.so.2.0<BR>
| | | | |-- libcom_err.so.2.0<BR>
| | | | |-- libe2p.so.2 -> libe2p.so.2.1<BR>
| | | | |-- libe2p.so.2.1<BR>
| | | | |-- libext2fs.so.2 -> libext2fs.so.2.0<BR>
| | | | |-- libext2fs.so.2.0<BR>
| | | | `-- modules -> /tmp<BR>
| | | |-- pcmcia.cgz<BR>
| | | `-- usr<BR>
| | | |-- TRANS.TBL<BR>
| | | `-- bin<BR>
| | | |-- TRANS.TBL<BR>
| | | |-- ash<BR>
| | | |-- badblocks<BR>
| | | |-- cpio<BR>
| | | |-- fdisk<BR>
| | | |-- gunzip -> gzip<BR>
| | | |-- gzip<BR>
| | | |-- insmod<BR>
| | | |-- install2<BR>
| | | |-- ls<BR>
| | | |-- mke2fs<BR>
| | | |-- open<BR>
| | | |-- runinstall2<BR>
| | | `-- sh -> ash<BR>
| | |-- updboots<BR>
| | `-- updsupp<BR>
| `-- upgrade<BR>
| |-- Makefile<BR>
| |-- TRANS.TBL<BR>
| |-- hash.c<BR>
| |-- hash.h<BR>
| |-- mkugdb.c<BR>
| `-- upgrade.c<BR>
`-- updates<BR>
|-- 00README.errata<BR>
|-- SRPMS<BR>
| |-- NetKit-B-0.09-1.src.rpm<BR>
| |-- TRANS.TBL<BR>
| |-- XFree86-3.2-5.src.rpm<BR>
| |-- adduser-1.3-1.src.rpm<BR>
| |-- amd-920824upl102-8.src.rpm<BR>
| |-- apache-1.1.3-3.src.rpm<BR>
| |-- bind-4.9.5p1-1.src.rpm<BR>
| |-- cmu-snmp-3.3-1.src.rpm<BR>
| |-- dosemu-0.64.1-3.src.rpm<BR>
| |-- efax-0.8a-2.src.rpm<BR>
| |-- gdb-4.16-6.src.rpm<BR>
| |-- glibc-0.961212-4.src.rpm<BR>
| |-- imap-4.1.BETA-3.src.rpm<BR>
| |-- initscripts-2.91-1.src.rpm<BR>
| |-- inn-1.5.1-6.src.rpm<BR>
| |-- jed-0.97.14-4.src.rpm<BR>
| |-- ld.so-sparc-1.8.3-3.src.rpm<BR>
| |-- logrotate-2.1-1.src.rpm<BR>
| |-- lpr-0.14-2.src.rpm<BR>
| |-- netcfg-2.15-1.src.rpm<BR>
| |-- printtool-3.0-14.src.rpm<BR>
| |-- python-1.4-4.src.rpm<BR>
| |-- pythonlib-1.16-1.src.rpm<BR>
| |-- rpm-2.3.2-1.src.rpm<BR>
| |-- rxvt-2.19-2.src.rpm<BR>
| |-- samba-1.9.16p9-8.src.rpm<BR>
| |-- screen-3.7.1-4.src.rpm<BR>
| |-- sendmail-8.8.5-2.src.rpm<BR>
| |-- sliplogin-2.1.0-6.src.rpm<BR>
| |-- tetex-0.4pl6-1.src.rpm<BR>
| |-- timeconfig-1.7-1.src.rpm<BR>
| |-- tmpwatch-1.1-2.src.rpm<BR>
| |-- usercfg-3.3-1.src.rpm<BR>
| |-- util-linux-2.5-34.src.rpm<BR>
| |-- wu-ftpd-2.4.2b12-4.src.rpm<BR>
| `-- ypbind-3.0-1.src.rpm<BR>
|-- TRANS.TBL<BR>
|-- i386<BR>
| |-- 00README.errata<BR>
| |-- NetKit-B-0.09-1.i386.rpm<BR>
| |-- TRANS.TBL<BR>
| |-- XFree86-3.2-5.i386.rpm<BR>
| |-- adduser-1.3-1.i386.rpm<BR>
| |-- amd-920824upl102-8.i386.rpm<BR>
| |-- apache-1.1.3-3.i386.rpm<BR>
| |-- bind-4.9.5p1-1.i386.rpm<BR>
| |-- cmu-snmp-3.3-1.i386.rpm<BR>
| |-- cmu-snmp-devel-3.3-1.i386.rpm<BR>
| |-- cmu-snmp-utils-3.3-1.i386.rpm<BR>
| |-- dosemu-0.64.1-3.i386.rpm<BR>
| |-- efax-0.8a-2.i386.rpm<BR>
| |-- imap-4.1.BETA-3.i386.rpm<BR>
| |-- initscripts-2.91-1.i386.rpm<BR>
| |-- inn-1.5.1-6.i386.rpm<BR>
| |-- inn-devel-1.5.1-6.i386.rpm<BR>
| |-- jed-0.97.14-4.i386.rpm<BR>
| |-- jed-xjed-0.97.14-4.i386.rpm<BR>
| |-- logrotate-2.1-1.i386.rpm<BR>
| |-- lpr-0.14-2.i386.rpm<BR>
| |-- netcfg-2.15-1.i386.rpm<BR>
| |-- printtool-3.0-14.i386.rpm<BR>
| |-- pythonlib-1.16-1.i386.rpm<BR>
| |-- rpm-2.3.2-1.i386.rpm<BR>
| |-- rxvt-2.19-2.i386.rpm<BR>
| |-- samba-1.9.16p9-8.i386.rpm<BR>
| |-- sendmail-8.8.5-2.i386.rpm<BR>
| |-- sendmail-cf-8.8.5-2.i386.rpm<BR>
| |-- sendmail-doc-8.8.5-2.i386.rpm<BR>
| |-- sliplogin-2.1.0-6.i386.rpm<BR>
| |-- tetex-0.4pl6-1.i386.rpm<BR>
| |-- tetex-afm-0.4pl6-1.i386.rpm<BR>
| |-- tetex-dvilj-0.4pl6-1.i386.rpm<BR>
| |-- tetex-dvips-0.4pl6-1.i386.rpm<BR>
| |-- tetex-latex-0.4pl6-1.i386.rpm<BR>
| |-- tetex-xdvi-0.4pl6-1.i386.rpm<BR>
| |-- timeconfig-1.7-1.i386.rpm<BR>
| |-- usercfg-3.3-1.i386.rpm<BR>
| |-- util-linux-2.5-34.i386.rpm<BR>
| |-- wu-ftpd-2.4.2b12-4.i386.rpm<BR>
| `-- xdosemu-0.64.1-3.i386.rpm<BR>
|-- images<BR>
| |-- TRANS.TBL<BR>
| `-- i386<BR>
| |-- README<BR>
| |-- TRANS.TBL<BR>
| |-- scsi<BR>
| | |-- README<BR>
| | |-- TRANS.TBL<BR>
| | |-- bootBusLogic.img<BR>
| | |-- bootaha1540.img<BR>
| | |-- bootaha1740.img<BR>
| | |-- bootaic7xxx.img<BR>
| | |-- booteata_dma.img<BR>
| | |-- bootultrastor.img<BR>
| | |-- config.BusLogic<BR>
| | |-- config.aha1540<BR>
| | |-- config.aha1740<BR>
| | |-- config.aic7xxx<BR>
| | |-- config.eata_dma<BR>
| | `-- config.ultrastor<BR>
| `-- supp.img<BR>
`-- scripts<BR>
|-- TRANS.TBL<BR>
|-- fix-shadow.sh<BR>
|-- i386<BR>
| |-- TRANS.TBL<BR>
| `-- lilo-dos.sh<BR>
`-- jed-xterm.Xdefaults<BR>
<P>
180 directories, 6606 files
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, Eric Canal <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./searls.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./marsden.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<h1>EMACSulation</h1>
<h4>by Eric Marsden,
<a href="mailto:emarsden@mail.dotcom.fr">emarsden@mail.dotcom.fr</a>
</h4>
</center>
<p>
<blockquote><small>
This column is devoted to making the best use of Emacs, text editor
extraordinaire. Each issue I plan to present an Emacs extension
which can improve your productivity, make the sun shine more brightly
and the grass greener.
</small></blockquote>
<P> <HR> <P>
<h1>Customizing Emacs</h1>
<p> Typical applications have a configuration file which allows you to set
the value of a few variables. Emacs goes a lot further, since the user
can customize pretty much any feature of the system. This flexibility
is due to a majority of the system being written in its extension
language. The first implementations of Emacs used a cryptic string
processing language named <a
href="http://www.netmeg.net/jargon/terms/t.html#teco">TECO</a> (you
thought <a href="http://www.perl.com/">Perl</a> was cryptic? <a
href="ftp://ftp.mindlink.net/pub/teco/">Look at</a> TECO), with support
code in <a
href="http://www.netmeg.net/jargon/terms/p/pdp-10.html">PDP-10</a>
assembly; later versions use Emacs Lisp as an extension language, with
some components (the Lisp interpreter and the display code) written in
C.
<p> This extensibility is fundamental to Emacs. Users can experiment with
modifications and improvements to the system and pass them on to
friends if they work well; ideas which catch on can be integrated in
the core distribution. The now defunct <a
href="http://www.eval-apply.com/LispOS/memo444.htm">Lisp Machines</a>
at <a href="http://web.mit.edu/">MIT</a> extended this openness to the
level of the operating system, which was written in Lisp (and ran on <a
href="http://www.lavielle.com/~joswig/symbolic-computing.html">custom
hardware</a>, specially designed to run Lisp efficiently). Lisp Machine
users had a far greater degree of control over their machine than Linux
users today. The <a href="http://squeak.cs.uiuc.edu/">Smalltalk</a>
systems at <a href="http://www.parc.xerox.com/history.html">Xerox
Parc</a> provided a similarly deep level of customization.
<p> Indeed, there is a profound difference between the development
philosophy which led to Emacs (the MIT approach), and that which led to
Unix and C (the New Jersey approach). These are compared in an
excellent paper by Richard Gabriel called <a
href="http://www.naggum.no/worse-is-better.html">Worse is Better</a>,
from which I have extracted the following:
<!-- hope nobody is concerned about copyright on this ... -->
<blockquote><font face="Helvetica">
<p> Two famous people, one from MIT and another from Berkeley (but working on
Unix) once met to discuss operating system issues. The person from MIT was
knowledgeable about ITS (the MIT AI Lab operating system) and had been
reading the Unix sources. He was interested in how Unix solved the PC
loser-ing problem. The PC loser-ing problem occurs when a user program
invokes a system routine to perform a lengthy operation that might have
significant state, such as IO buffers. If an interrupt occurs during the
operation, the state of the user program must be saved. Because the
invocation of the system routine is usually a single instruction, the PC of
the user program does not adequately capture the state of the process. The
system routine must either back out or press forward. The right thing is to
back out and restore the user program PC to the instruction that invoked
the system routine so that resumption of the user program after the
interrupt, for example, re-enters the system routine. It is called PC
loser-ing because the PC is being coerced into loser mode, where loser is
the affectionate name for user at MIT.
<p> The MIT guy did not see any code that handled this case and asked the New
Jersey guy how the problem was handled. The New Jersey guy said that the
Unix folks were aware of the problem, but the solution was for the system
routine to always finish, but sometimes an error code would be returned
that signaled that the system routine had failed to complete its action. A
correct user program, then, had to check the error code to determine
whether to simply try the system routine again. The MIT guy did not like
this solution because it was not the right thing.
<p> The New Jersey guy said that the Unix solution was right because the design
philosophy of Unix was simplicity and that the right thing was too complex.
Besides, programmers could easily insert this extra test and loop. The MIT
guy pointed out that the implementation was simple but the interface to the
functionality was complex. The New Jersey guy said that the right tradeoff
has been selected in Unix: namely, implementation simplicity was more
important than interface simplicity.
</font></blockquote>
<p> Let me come back to more concrete issues. The traditional way of
customizing [X]Emacs is to write simple Emacs Lisp expressions in a
file called <tt>.emacs</tt> in your home directory. These expressions
can either set the value of a variable, or call a function, or load a
library&nbsp;: </p>
<table border="0" bgColor="#E0E0E0" width="100%">
<tr><td>
<pre class="programlisting">
<font color="red">
;; set the values of a few variables. `t' stands for true and `nil' for
;; false </font>
(setq dired-listing-switches "-alF")
(setq tab-width 4)
(setq line-number-mode t)
(setq global-font-lock-mode t)
(setq next-line-add-newlines nil)
<font color="red">
;; call a function which will organize to have the time displayed in
;; the modeline</font>
(display-time)
<font color="red">
;; load an Emacs Lisp library and call its initialization function</font>
(require 'jka-compr)
(auto-compression-mode 1)</pre></td></tr></table>
<p> The syntax tends to irritate people (who deride the presence of
``<b>L</b>ots of <b>i</b>rritating <b>s</b>purious
<b>p</b>arentheses''), but using a fully-featured programming language
in a configuration file has genuine and significant advantages. It
allows you to test for features of the local setup, for example&nbsp;:
</p>
<table border="0" bgColor="#E0E0E0" width="100%">
<tr><td>
<pre class="programlisting">
(if (file-exists-p "/bin/bash")
(setq explicit-shell-file-name "/bin/bash"))</pre>
</td></tr></table>
<p> which makes Emacs use the bash in <tt>*shell*</tt> buffers if it
exists on the machine. Another reason for using a real language for
setup files is that it avoids the endless proliferation of
configuration files, each with its own ideosyntractic syntax (think
~/.Xdefaults, window manager setup files, ~/.inputrc,
~/.procmailrc, etc). Hopefully the spreading use of <a
href="http://www.red-bean.com/guile/">Guile</a> as an embedded
scripting language will resolve this problem. A last advantage is that
a genuine programming language empowers the user. Indeed, in one of the
<a
href="ftp://ftp.dl.ac.uk/pub/fx/emacs/emacs-AI-memo/AI-519a.html">first
technical reports</a> about Emacs, <a
href="http://www.gnu.org/people/rms.html">Richard Stallman</a> presents
this as an important goal:
<blockquote><font face="Helvetica">
When large numbers of nontechnical workers are using a programmable
editor, they will be tempted constantly to begin programming in the
course of their day-to-day lives. This should contribute greatly to
computer literacy, especially because many of the people thus exposed
will be secretaries taught by society that they are incapable of doing
mathematics, and unable to imagine for a moment that they can learn to
program. But that won't stop them from learning it if they don't know
that it is programming that they are learning!
</font></blockquote>
<h2>Customize</h2>
<p> Recent versions of [X]Emacs include a package called
<em>Customize</em>, which helps you adapt Emacs to your liking without
writing any Lisp. Customize is written by <a
href="http://www.dina.kvl.dk/~abraham/">Per Abrahamsen</a>, also the
author of the popular <a
href="http://sunsite.auc.dk/auctex/">Auc-TeX</a> package for TeXnical
typists. It allows users to visualize the list of all the
user-configurable variables in Emacs, and to modify them to their
liking. You can reach Customize (it only exists on recent Emacsen) from
the Help <tt>-></tt> Customize menubar. In XEmacs it looks like this:
<p align="center"> <img src="./gx/marsden/customize.gif" alt="Customize screenshot"
width="535" height="668">
<p> Customize requires each Emacs Lisp library to declare the
user-modifiable variables it exports. The type of the variable is
specified, whether boolean or integer or string or selection from
several options, and several variables can be put in the same group,
which allows a hierarchical presentation of information. The
modification screens are then generated automatically on demand. It's
an elegant design, since programming the thousands of dialog boxes
manually would be a huge job, and require large amounts of storage. The
modifications made by the user are stored in a file which is read by
[X]Emacs at initialization time.
<p> An unfortunate aspect of Customize is that it introduces two methods of
doing the same thing. Users wanting to go beyond the simple
customizations possible with the graphical interface will be confronted
with an entirely new way of doing things, and may be put off. There is
a difficult path to tread between making <a
href="http://lieber.www.media.mit.edu/people/lieber/Teaching/Simple-Simple/Simple-Simple-Intro.html">
simple things simple and complex things possible</a> and the old adage
<i>Build a system that a fool can use, and only a fool will use it</i>.
<h2>Keybindings</h2>
<p> Keybindings are a particularly treacherous field for customization, the
principal problems comings from differences between X11 and console
operation (particularly with the <a
href="http://www.via.ecp.fr/LDP/HOWTO/Keyboard-and-Console-HOWTO-5.html">backspace
key</a>), and between the syntax used by Emacs and XEmacs. One of the
first things you might want to do is set the Delete, Home and EndOfLine
keys to their standard meanings in the PC world&nbsp;: </p>
<table border="0" bgColor="#E0E0E0" width="100%">
<tr><td>
<pre class="programlisting">
(pc-selection-mode) ; pc-select.el</pre>
</td></tr>
</table>
<p> This will also allow you to select regions of text with shift and the
cursor keys, and Cut/Copy/Paste with Shift-Delete, Control-Insert and
Shift-Insert respectively. You can bind function keys as follows (this
syntax should work equally well with Emacs and XEmacs)&nbsp;: </p>
<table border="0" bgColor="#E0E0E0" width="100%">
<tr><td><pre>
(define-key global-map [(f2)] 'save-buffer)
(define-key global-map [(f4)] (lambda () (interactive) (kill-buffer nil)))</pre>
</td></tr>
</table>
<p> The first line makes the <tt>F2</tt> key save the current buffer (by
binding to the built-in function <tt>save-buffer</tt>), and the second
shows how to bind to your own function: the <tt>lambda</tt> introduces
an anonymous function in Lisp; the <tt>(interactive)</tt> means that
you will be able to access the function interactively, the rest kills
the current buffer without asking confirmation. The <tt>global-map</tt>
means that these bindings apply everywhere in Emacs, whether you're
reading email or composing some HTML. You can also define local key
bindings, which apply only to buffers which are in specific
modes&nbsp;: </p>
<table border="0" bgColor="#E0E0E0" width="100%">
<tr><td><pre>
(define-key emacs-lisp-mode-map [(control c) (control e)] 'eval-buffer)
(define-key c-mode-map [(f5)] 'compile)</pre>
</td></tr>
</table>
<p> The Emacs FAQ (available online by saying <tt>C-h F</tt>) presents
another method of binding keys, which may not work across Emacs
versions. Jari Aalto has written a <a
href="ftp://cs.uta.fi/pub/ssjaaa/ema-keys.html">long guide to
keybindings</a> which describes many different ways of rebinding keys.
<p> If you are lucky enough to have a Windows 95 keyboard you can put those
lovely keys to use in X11 with a little <a
href="http://hoth.stsci.edu/man/man1/xmodmap.html">xmodmap</a>ping. The
X Window System has five possible key modifiers, the first three being
Shift, Control and Alt on PC keyboards. You can set the windows keys to
Super and Hyper modifiers as follows (this is for a French keyboard;
use <a href="http://www.rob.cs.tu-bs.de/man/xev(6)">xev</a> to work out
the keycodes for your keyboard)&nbsp;:</p>
<table border="0" bgColor="#E0E0E0" width="100%">
<tr><td>
<pre>
(shell-command (concat "xmodmap "
"-e 'keycode 115 = Hyper_L' "
"-e 'keycode 116 = Hyper_R' "
"-e 'keycode 117 = Super_L' "
"-e 'add mod4 = Hyper_L' "
"-e 'add mod4 = Hyper_R' "
"-e 'add mod3 = Super_L' "))
(message "Setting up Hyper and Super keys")
(define-key global-map [(hyper tab)] 'complete-tag)
(define-key global-map [(super !)] 'speedbar-get-focus)
</pre></td></tr>
</table>
<h2>Backups</h2>
<p> In its default configuration, Emacs makes backups with a tilde appended
to the filename, in the same directory as the original file. If you
would prefer having all backups in one spot, try the following code.
Emacs can also keep a series of numbered backups <i>&agrave; la</i> VMS; look
at the variable <tt>version-control</tt>.</p>
<table border="0" bgColor="#E0E0E0" width="100%">
<tr><td>
<pre class="programlisting">
<font color="red">
;; make backup files in ~/.backups/ rather than scattered around all
;; over the filesystem. </font>
(defun make-backup-file-name (file-name) <font color="brown">
"Create the non-numeric backup file name for `file-name'." </font>
(require 'dired)
(if (file-exists-p "~/.backups")
(concat (expand-file-name "~/.backups/")
(dired-replace-in-string "/" "|" file-name))
(concat file-name "~")))
<font color="red">
;; disable backups for files in /tmp or in my Mail or News directories. </font>
(defun ecm-backup-enable-predicate (filename)
(and (not (string= "/tmp/" (substring filename 0 5)))
(not (string-match "/Mail/" filename))
(not (string-match "/News/" filename))))
(setq backup-enable-predicate 'ecm-backup-enable-predicate)
</pre></td></tr>
</table>
<h2>Further information</h2>
<p> These are only a few examples of things which can be customized in
[X]Emacs. Here are a few pointers to further sources of
inspiration&nbsp;:
<ul>
<li> The online manuals contain extensive, well-written explanations which
can be browsed from within [X]Emacs (type <tt>C-h i</tt>), and include
a page of examples to put in your <tt>~/.emacs</tt>.
<li> The <a
href="http://hill.ucs.ualberta.ca/Documentation/Info/by-node/elisp-19-2.4.2/elisp_toc.html">Emacs
Lisp manual</a> describes the details and ideosyncraties of Emacs'
extension language.
<li> The <a href="http://www.cis.ohio-state.edu/hypertext/faq/usenet/GNU-Emacs-FAQ/top.html">Emacs FAQ</a>.
<li> The <a href="http://www.xemacs.org/faq/xemacs-faq.html">XEmacs FAQ</a>.
<li> The newsgroup <a
href="news:gnu.emacs.help">gnu.emacs.help</a> for GNU Emacs-specific
questions, <a href="news:comp.emacs.xemacs">comp.emacs.xemacs</a> for
<a href="http://www.XEmacs.org/">XEmacs</a> users, <a
href="news:comp.emacs">comp.emacs</a> for general questions, and <a
href="news:alt.religion.emacs">alt.religion.emacs</a> for questions
regarding the <a
href="http://www.dina.kvl.dk/~abraham/religion/">Church of Emacs</a>.
<li> Typically a new package you can pick up will include comments near the
beginning of the source code explaining which variables may usefully
be modified.
<li> XEmacs is distributed with a <a
href="http://petaxp.rug.ac.be/~erik/xemacs/sample.emacs">sample
<tt>~/.emacs</tt></a> file.
<li> Erik Sundermann's <a href="http://petaxp.rug.ac.be/~erik/xemacs/">
XEmacs Customization Page</a> is mentioned in the XEmacs FAQ.
</ul>
<h2>Feedback</h2>
<p> <a href="mailto:zweije@xs4all.nl">Vincent Zweije</a> wrote to me
regarding my gnuserv column, where I suggested using <tt>cat
/etc/passwd | md5sum</tt> as a means of generating a cookie for xauth.
<hr width="0">
<table bgColor="#FAF0E6">
<tr><td>
<font color="darkslateblue">
<p> In &lt;URL:http://www.linuxgazette.com/issue29/marsden.html&gt;, you wrote:
</font>
<blockquote>
<p> [...]
<p> While allowing access to your X display is bad enough (someone could
capture all your keystrokes, for example), giving remote access to
your Emacs process is much more worrying, since Emacs can execute
arbitrary commands under your id, delete files, send insulting email
to the President of the United States, etc.
</blockquote>
<font color="darkslateblue">
<p> Or maybe more dangerous, send insulting email to the president of an
arbitrary banana republic. :-)
</font>
<blockquote>
<p> Since release 2.1, gnuserv is able to use MIT-MAGIC-COOKIE-1
authentication for remote requests. This protocol uses the contents of
your ~/.Xauthority file, as described in the xauth(1) man page.
Gnuserv requires a cookie for display number 999, which you can create
as follows (blade is the name of the machine) :
<pre>
~$ xauth add blade:999 . `cat /etc/passwd | md5sum`
~$ xauth list
blade/unix:0 MIT-MAGIC-COOKIE-1 bc1d627babdbabe9d1f288d2b57c348f
blade:999 MIT-MAGIC-COOKIE-1 d89570b20925d401c05a79be67159cae
</pre>
</blockquote>
<font color="darkslateblue">
<p> You have picked an unlucky example. There is a real danger that
/etc/passwd is stable over a long period. This means that it will
generate the same magic cookie for many times.
<p> This is a problem when you have given a cookie away (either voluntarily
or involuntarily), and intend to revoke permissions by generating a
new cookie.
<p> Best is to select a source of data that is volatile such as the output
of ps -al or /proc/interrupts, or use mcookie, as you indicated later.
</font>
</td></tr>
</table>
<hr width="0">
<p> These remarks are particularly important if the site is using shadow
passwords. Vincent noted that security issues are too important to be
left to ordinary users&nbsp;:
<hr width="0">
<table bgColor="#FAF0E6">
<tr><td><font color="darkslateblue">
<p> Come to think of it, it's probably just a bad idea to let ordinary users
arrange their own security, as with magic cookies. They're just not
enough concerned with security - they want to get their job done.
<p> You'd be amazed at how many times on usenet I've seen suggested to do
&quot;xhost +&quot; to allow X connections from anywhere. Such people
often don't even realise that they're dealing with security. They see
disallowing X (gnuserv) connections as a hindrance, and just want a
magic incantation to remove it. It's a perception thing.
<p> Someone who deals with security simply has to know what he's doing.
However, first you have to realise that it is security that you're
playing with.
</font>
</td></tr></table>
<hr width="0">
<h2>Next time ...</h2>
<p> Next month I'll look at the different abbreviation facilities in
Emacs. Don't hesitate to contact me at
<tt>&lt;emarsden@mail.dotcom.fr&gt;</tt> with comments, corrections or
suggestions (what's <em>your</em> favorite couldn't-do-without Emacs
extension package?). <code>C-u 1000 M-x hail-emacs</code> !
<p> <strong>PS</strong> : Emacs isn't in any way limited to Linux, since
implementations exist for many other operating systems (and some
systems which only halfway operate). However, as one of the leading
bits of free software, one of the most powerful, complex and
customizable, I feel it has its place in the <i>Linux Gazette</i>.
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, Eric Marsden <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./canal.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./roelofs.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<font color="navy">A <I>Linux Journal</I> Preview</font>:
This article will appear in the October issue of <I>Linux Journal</I>.
<P> <HR> <P>
<IMG WIDTH=165 HEIGHT=76 BORDER=0
ALIGN="right" SRC="./gx/roelofs/linux-dont-fear.jpg" ALT="[Don't Fear the Penguins.]"></A>
<center>
<H1><font color="maroon">The Future of Linux, 14 July 1998</font></H1>
<H4>By <a href="mailto:newt@pobox.com">Greg Roelofs</a></H4>
</center>
<P> <HR> <P>
<A HREF="./photos2.html">Photo Album</A>
<P> <HR> <P>
<BR CLEAR="all">
<A HREF="http://www.teamtaos.com/events/linux/"><I>The Future of Linux</I></A>
was set up as a panel discussion and was held at the Santa Clara Convention
Center (in the heart of Silicon Valley) on the evening of 14 July 1998. It
was hosted by <A HREF="http://www.taos.com/">Taos Mountain</A> and the
<A HREF="http://www.svlug.org/">Silicon Valley Linux Users Group</A> (SVLUG),
and it was sponsored by them, <A HREF="http://www.intel.com/">Intel</A>,
<A HREF="http://www.redhat.com/">Red Hat</A>, <A
HREF="http://www.linuxjournal.com/"
>Linux Journal</A>, and <A HREF="http://www.varesearch.com/">VA
Research</A>. Apparently it was considerably more popular than Taos
expected; people stood in line between 40 and 60 minutes to register, and
the free food and free VA Research/Linux t-shirts ran out. I didn't get a
firm count, but Taos said 850 people had RSVP'd, and it appeared that at
<I>least</I> 700 chairs were occupied, possibly upwards of 900 or more.
(Other reports have claimed ``more than 850'' and ``more than 1000'';
apparently quite a few people chose to stand near the front rather than
sit in back.)
<P>
The panel was a distinguished group: <B>Jeremy Allison</B>, one of the
lead <A HREF="http://samba.anu.edu.au/samba/samba.html">Samba</A> developers;
<B>Larry Augustin</B>, founder of VA Research and member of the
<A HREF="http://www.li.org/">Linux International</A> (LI) Board of Directors;
<B>Robert Hart</B>, from Red Hat Software; <B>Sunil Saxena</B>, from Intel's
Unix Performance Lab; and, of course, The Man himself, <B>Linus Torvalds</B>.
<!--
<FONT COLOR="#006600">[And for all those unwashed heathens out there:
Linus may not care how anyone <I>else</I> pronounces ``Linux,'' but
<I>he</I> unquestionably does so with a short `i' as in ``linen.''
So there.]<SUP>*</SUP></FONT>
-->
<FONT COLOR="#006600">[And while I know there are a lot of Linux fans
who like to pronounce ``Linux'' with a long `i' sound (LYE-nucks), and
despite the fact that Linus himself doesn't care how anyone else pronounces
it, <I>he</I> unquestionably did so with a short `i' as in ``linen''
(LINN-ucks). In Swedish he presumably still pronounces it the third
way, roughly ``<A HREF=
"ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/SillySounds/swedish.au"
>LEE-nooks</A>.'']<SUP>*</SUP></FONT>
It was moderated by <B>Michael Masterson</B> of Taos, who traded off
questioning duties with <B>Phil Hughes</B>, all-around hairy guy and the
publisher of <I>Linux Journal</I>.
<P>
The panelists were given a pair of questions ahead of time and five minutes
(per panelist) to respond to each. The evening progressed more or less as
follows:
<P>
<CENTER>
<TABLE BORDER=1 CELLPADDING=0> <!-- nice border -->
<TR BGCOLOR="#ffffd0">
<TD VALIGN="center" ALIGN="center">
<TABLE CELLPADDING=3 CELLSPACING=0 BORDER=0>
<TR BGCOLOR="#ffd0d0">
<TD VALIGN="center" ALIGN="center">
wait in line...keep waiting...trade RSVP form for name sticker
</TD>
</TR>
<TR BGCOLOR="#ffd0d0">
<TD VALIGN="center" ALIGN="center">
get free t-shirt / whimper about missing food and lack of dinner
</TD>
</TR>
<TR BGCOLOR="#c0dcc0">
<TD VALIGN="center" ALIGN="center">
<A HREF="linux-19980714-dnd.html">demos</A> / sit down
</TD>
</TR>
<TR BGCOLOR="#c0dcc0">
<TD VALIGN="center" ALIGN="center">
<A HREF="linux-19980714-pq1.html">panel's semi-prepared
responses to first question</A>
</TD>
</TR>
<TR BGCOLOR="#c0dcc0">
<TD VALIGN="center" ALIGN="center">
<A HREF="linux-19980714-qa1.html">audience Q &amp; A</A>
</TD>
</TR>
<TR BGCOLOR="#c0dcc0">
<TD VALIGN="center" ALIGN="center">
<A HREF="linux-19980714-phq.html">moderator Q &amp; A</A>
</TD>
</TR>
<TR BGCOLOR="#c0dcc0">
<TD VALIGN="center" ALIGN="center">
<A HREF="linux-19980714-pq2.html">panel's semi-prepared
responses to second question</A>
</TD>
</TR>
<TR BGCOLOR="#c0dcc0">
<TD VALIGN="center" ALIGN="center">
<A HREF="linux-19980714-qa2.html">more audience Q &amp; A</A>
</TD>
</TR>
<TR BGCOLOR="#c0dcc0">
<TD VALIGN="center" ALIGN="center">
<A HREF="linux-19980714-dnd.html">door prizes</A>
</TD>
</TR>
<TR BGCOLOR="#c0dcc0">
<TD VALIGN="center" ALIGN="center">
<A HREF="linux-19980714-dnd.html">demos</A> / schmoozing /
fall-on-knees-and-worship-Linus / etc.
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</CENTER>
<P>
Note that in each section I've included various editorial comments in
<FONT COLOR="#006600">[green brackets]</FONT>, usually
<FONT COLOR="#006600">[<I>italicized</I>]</FONT>.
<P>
Thanks to the following people for their corrections and additional info;
any remaining errors or omissions are solely my fault:
<P>
<BLOCKQUOTE>
<TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0>
<TR>
<TD VALIGN="top" ALIGN="left">
<UL>
<LI>Jeffrey Chapman <!-- jchapman@armory.com -->
<LI>Michael Cope <!-- mcope@orion.ac.hmc.edu -->
<LI>Michael Hicks <!-- hick0088@tc.umn.edu -->
<LI>Dan Kaminsky <!-- effugas@best.com -->
</UL>
</TD>
<TD VALIGN="top" ALIGN="left">
<UL>
<LI>Joe Klemmer <!-- klemmerj@hoffman.army.mil -->
<LI>Ian Kluft <!-- ikluft@cisco.com -->
<LI>Anas Nashif <!-- nashif@rz.uni-mannheim.de -->
<LI>Brent J. Nordquist <!-- bjn@visi.com -->
</UL>
</TD>
<TD VALIGN="top" ALIGN="left">
<UL>
<LI>Alexandre Petit-Bianco <!-- apbianco@cygnus.com -->
<LI>Jason Riedy <!-- ejr@cise.ufl.edu -->
<LI>David Sundqvist <!-- azzie@netpolicy.com -->
</UL>
</TD>
</TR>
</TABLE>
</BLOCKQUOTE>
<P>
See also <A HREF="http://www.teamtaos.com/events/linux/">Taos Mountain's
announcement</A> (including a streaming video of highlights), <A HREF=
"http://www.svlug.org/events/future-199807-reviews.shtml">SVLUG's
summary/reviews page</A>, <A HREF=
"http://eetimes.com/news/98/1017news/linux.html">EE Times' article</A> and
<A HREF="http://slashdot.org/articles/980717/2021236.shtml">Slashdot's
discussion of it</A>, <A HREF=
"http://www.infoworld.com/cgi-bin/displayStory.pl?980715.ehlinux.htm"
>InfoWorld's article</A>, <A HREF="http://www.tbtf.com/resource/skodlar.txt"
>Rafael Skodlar's report</A> at the <A HREF="http://www.tbtf.com/">Tasty
Bits</A> archive, <A HREF="http://www.forbes.com/forbes/98/0810/6209094a.htm"
>Forbes' cover story</A>, <A HREF=
"http://www.infoworld.com/cgi-bin/displayNew.pl?/tebbe/980727mt.htm">Mark
Tebbe's InfoWorld column</A>, and, of course, <A HREF=
"http://www.slashdot.org/articles/980719/1413242.shtml">Slashdot's discussion
of this very report</A>.
<P>
Finally, here are some interesting developments from the week following the
event:
<P>
<UL>
<LI>Informix's <A HREF=
"http://www.informix.com/informix/corpinfo/ifxnews/press/1998/freelxpr.html"
>Linux press release</A> (<B>Informix-SE</B> and <B>free developer's
kit</B>)
<LI>Oracle's <A HREF="http://www.oracle.com/cgi-bin/press/printpr.cgi?file=980721.26767.html&mode=corp&td=1&tm=8&fd=1&fm=07&status=Search&ty=98&limit=50&fy=98"
>Linux press release</A> (<B>Oracle8</B>) and <A HREF=
"http://www.oracle.com/html/linux.html">feature article</A>
<!-- also "http://biz.yahoo.com/prnews/980721/ca_oracle__1.html" -->
<LI>Netscape's <A HREF=
"http://home.netscape.com/newsref/pr/newsrelease650.html">Linux press
release</A> (<B>Netscape Messaging Server</B> and <B>Netscape Directory
Server</B>)
<LI>IBM's <A HREF="http://www.alphaworks.ibm.com/formula/Jikes">fast Java
compiler</A> and <A HREF=
"http://www.alphaworks.ibm.com/formula/JikesDebugger">debugger</A>
(<B>Jikes</B>, just ported to Linux, and <B>JikesDebugger</B>)
<LI>Dean Olson's Slashdot article on <A HREF=
"http://www.slashdot.org/features/980722/0955225.shtml"><I>Linux and
Corporations</I></A>
</UL>
<P>
Note that a number of other relational databases, including Computer Associates'
<A HREF="http://www.ingres.com/"><B>Ingres II</B></A>, have already been ported
to Linux. And, of course, the most popular web server in the world (<A HREF=
"http://www.apache.org/"><B>Apache</B></A>) has run on Linux for years and
happens to be freely available as well.
<P>
<HR>
<FONT COLOR="#006600" SIZE="-1">
<SUP>*</SUP> Oh yeah, and <B>vi rules</B>, too. Here, take two of these
<IMG ALIGN=top WIDTH=16 HEIGHT=16 SRC="./gx/roelofs/smile.happy.gif" ALT=" :-) ">
<IMG ALIGN=top WIDTH=16 HEIGHT=16 SRC="./gx/roelofs/smile.happy.gif" ALT=" :-) ">
and don't flame me in the morning... We all love Linux regardless of how
it's pronounced, right??
</FONT>
<HR>
<I>Last modified 28 July 1998 by
<A HREF="mailto:newt@pobox.com">newt@pobox.com</A> , you betcha.</I>
<P>
<FONT SIZE="-1">
Copyright &#169; 1998 <A HREF="http://pobox.com/~newt/">Greg Roelofs</A>.
</FONT>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, Greg Roelofs <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./marsden.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./gm.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
&nbsp;<!-- =============================================================
This Page Designed by Michael J. Hammel.
Permission to use all graphics and other content for private,
non-commerical use is granted provided you give me (or the
original authors/artists) credit for the work.
CD-ROM distributors and commercial ventures interested in
providing the Graphics Muse for a fee must contact me,
Michael J. Hammel (mjhammel@graphics-muse.org), for permission.
============================================================= !--><!-- The Button box as a client side imagemap -->&nbsp;<MAP NAME="nav-main"><AREA SHAPE="rect" HREF="#mews" coords="20,18 185,40"><AREA SHAPE="rect" HREF="#webwonderings" coords="10,60 185,83"><AREA SHAPE="rect" HREF="#musings" coords="90,102 185,130"><AREA SHAPE="rect" HREF="#resources" coords="70,152 185,180"></MAP>
<TABLE BORDER=0 COLS=2 WIDTH="100%" >
<TR>
<TD><IMG SRC="../gx/hammel/gm3.gif" ALT="Welcome to the Graphics Muse" NOSAVE HEIGHT=216 WIDTH=441 ALIGN=LEFT></TD>
<TD VALIGN=BOTTOM>
<CENTER><FONT SIZE=-1>Set your browser as wide as you'd like now.&nbsp;
I've fixed the Muse to expand to fill the aviailable space!</FONT></CENTER>
<CENTER><FONT SIZE=-2>&copy; 1998 by <A HREF="mailto:mjhammel@graphics-muse.org">mjh</A>&nbsp;</FONT></CENTER>
</TD>
</TR>
</TABLE>
&nbsp;
<HR WIDTH="100%">
<TABLE BORDER=0 COLS=2 WIDTH="100%" >
<TR>
<TD WIDTH="185"><IMG SRC="../gx/hammel/muse-image-map.gif" ALT="Button Bar" BORDER=0 USEMAP="#nav-main" HEIGHT=200 WIDTH=185 ALIGN=LEFT></TD>
<TD VALIGN=TOP><B><FONT SIZE=+1>muse:</FONT></B>&nbsp;
<OL>
<LI>
<I>v;</I> to become absorbed in thought&nbsp;</LI>
<LI>
<I>n;</I> [ fr. Any of the nine sister goddesses of learning and the arts
in Greek Mythology ]: a source of inspiration&nbsp;</LI>
</OL>
&nbsp;<IMG SRC="../gx/hammel/w.gif" ALT="W" HEIGHT=28 WIDTH=36 ALIGN=BOTTOM>elcome
to the Graphics Muse! Why a "muse"? Well, except for the sisters aspect,
the above definitions are pretty much the way I'd describe my own interest
in computer graphics: it keeps me deep in thought and it is a daily source
of inspiration.&nbsp;
<CENTER><FONT SIZE=-1>[<A HREF="#mews">Graphics Mews</A>][<A HREF="#webwonderings">WebWonderings</A>][<A HREF="#musings">Musings</A>]
[<A HREF="#resources">Resources</A>]</FONT></CENTER>
</TD>
</TR>
</TABLE>
&nbsp;
<BR><IMG SRC="../gx/hammel/t.gif" ALT="T" HEIGHT=28 WIDTH=26 ALIGN=LEFT>his column
is dedicated to the use, creation, distribution, and discussion of computer
graphics tools for Linux systems.
<BR>&nbsp;
<BR><IMG SRC="./gx/hammel/bookcover.jpg" HSPACE=10 VSPACE=10 HEIGHT=250 WIDTH=154 ALIGN=RIGHT>Well,
its been a couple of months since we last spoke.&nbsp; I've been working
on a major project for the past year and the last 3 months have been exceptionally
busy.&nbsp; But the project is done, or very nearly so (a few minor details
left to handle) - and that project is a book on the Gimp.&nbsp; Its called
<I><U>The Artists Guide to the Gimp</U></I> and should hit the shelves
sometime in September.&nbsp; All I can say is, I hope you like it.&nbsp;&nbsp;
Writing a technical book is harder than I thought.&nbsp; My next one is
going to be fictional novel.&nbsp; You don't have to do a CD, tons of images,
or 2nd editions for those.
<P>There were plenty of graphics related news announcements since the last
Muse.&nbsp; Unfortunately, I just didn't keep up with them and they've
expired from my news feed.&nbsp; So what I've got this month is pretty
recent info.&nbsp; I did hang onto a few tidbits from mailing lists I've
been scanning, plus email from a few readers.&nbsp; Its funny - I get email
about really old versions of the Muse every now and then.&nbsp; I think
people are still just finding out about it.
<BR>&nbsp;
<BR>In this months column I'll be covering ...
<UL>
<LI>
creating dynamic web pages with msql and CGI.pm</LI>
<LI>
Gimp 1.0 - well, just a little.</LI>
</UL>
I'll have more for next month, but I just finished the book with only 3
days to get the Muse done.
<P><A NAME="mews"></A>
<BR>&nbsp;
<TABLE BORDER=0 COLS=1 WIDTH="100%" >
<TR>
<TD><IMG SRC="../gx/hammel/mews.gif" ALT="Graphics Mews" HEIGHT=53 WIDTH=242 ALIGN=LEFT></TD>
</TR>
</TABLE>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Disclaimer: Before I get too far into this
I should note that any of the news items I post in this section are just
that - news. Either I happened to run across them via some mailing list
I was on, via some Usenet newsgroup, or via email from someone. I'm not
necessarily endorsing these products (some of which may be commercial),
I'm just letting you know I'd heard about them in the past month.
<BR>&nbsp;
<TABLE BORDER=0 COLS=3 WIDTH="100%" >
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" HSPACE=30 VSPACE=2 HEIGHT=1 WIDTH=1 ALIGN=LEFT></TD>
<TD></TD>
</TR>
<TR>
<TD WIDTH="50%">
<H2>
Xi Graphics releases fully integrated Linux distribution</H2>
This isn't really graphics related, but Xi is an X server vendor.&nbsp;
And X server vendors are pretty important to the Linux graphics world.&nbsp;
So, here it is.&nbsp;
<P>Xi Graphics is now providing a commercial Linux distribution which includes
their <B><FONT COLOR="#993300">Accelerated X</FONT></B> server and their
maximum/CDE desktop product.&nbsp; Unit price is $214.95 for the Executive
Edition and $364.95 for the Developers Edition.&nbsp;
<P>For more details:&nbsp;
<BR>Kyle Fink&nbsp;
<BR>Xi Graphics&nbsp;
<BR>(303) 298-7478&nbsp;
<BR>kyle@xig.com</TD>
<TD ROWSPAN="3" WIDTH="2" BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" ALT="indent" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
<TD WIDTH="49%">
<H2>
Panasonic PalmCam utility</H2>
Fredrik Roubert has released a very early version (v0.3) of a driver for
the <B><FONT COLOR="#993300">Panasonic PalmCam</FONT></B>, an NV-DC1000
digital camera.&nbsp; According to Robert a couple of the features include
the ability to specify ranges to download and to preview or delete several
images in one session.&nbsp;
<P>For more information, check out his web page at&nbsp;
<BR><A HREF="http://www.df.lth.se/~roubert/NV-DC1000.html">http://www.df.lth.se/~roubert
/NV-DC1000.html</A>&nbsp;
<P>The package is available from the following sites:&nbsp;
<BR><A HREF="ftp://ftp.df.lth.se/pub/users/roubert/Linux">ftp://ftp.df.lth.se/
pub/users/roubert/Linux</A>&nbsp;
<BR><A HREF="ftp://sunsite.unc.edu/pub/Linux/apps/graphics/capture">ftp://sunsite.unc.edu/
pub/Linux/apps/graphics/capture</A>&nbsp;
<BR>&nbsp;</TD>
</TR>
<TR>
<TD BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
<TD BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
</TR>
<TR>
<TD>
<H2>
Linux / 3-D SIGGRAPH Report</H2>
At SIGGRAPH '98 in Orlando, Florida Daryll Strauss and Brian Paul organized
a special interest group (SIG) session to talk&nbsp;
<BR>about Linux, 3-D hardware acceleration, and related topics.&nbsp;
<P>Attendence was greater than expected with 100-150 people attending.&nbsp;
<P>A summary of presentations taken by Brian Paul, author of the Mesa package,
can be found at&nbsp;
<BR><A HREF="http://glide.xxedgexx.com/SIGNotes.html">http://glide.xxedgexx.com/
SIGNotes.html</A>&nbsp;
<P>
<HR WIDTH="100%">
<H2>
Blender News</H2>
There were a number of updates to Blender, the 3D modelling page from NeoGeo.&nbsp;
Here is a snapshot of annoucements from their News page:&nbsp;
<P>Blender manual (1998-07-10)&nbsp;
<UL>All information you need, packed in cool design at paper: the Blender
1.5 manual is scheduled to ship in October. Information about pricing and
pre-ordering will be available in August.&nbsp;</UL>
The Unofficial Blender Mailing list (1998-06-16)&nbsp;
<UL>To subscribe: send mail to <A HREF="mailto:majordomo@iqm.unicamp.br">majordomo@iqm.unicamp.br</A>
with the text&nbsp;
<CENTER><FONT SIZE=-1>subscribe blender3d your@email.address</FONT>&nbsp;</CENTER>
To post, send your message to <A HREF="mailto:blender3d@iqm.unicamp.br">blender3d@iqm.unicamp.br</A></UL>
Version 1.34 for Linux/FreeBSD available today. (1998-06-04)&nbsp;
<UL>Many bugs fixed and included some features: Play (flipbook). Use it
for playback test animations (Hamx) Frame counter during anim playback.&nbsp;
Read the BlenderBeta page for more.</UL>
</TD>
<TD>
<H2>
Linux IEEE-1394 (FireWire) Subsystem - Status report</H2>
Emanuel Pirker is working on the Linux IEEE-1394 (<B><FONT COLOR="#993300">FireWire</FONT></B>)
Subsystem for a while now and thought it would be a good idea to give a
small status report.&nbsp;
<P>IEEE-1394 is the name of a high-speed but low-cost serial bus. Apple
has trademarked it as "FireWire". Current implementations reach 200 Mbit/s,
soon we will have 400 and then 800 and so on. FireWire is designed for
consumer multimedia (e. g. connecting a digital video camera to your PC)
and high-speed peripherals (hard disks, CD ROMs, but also scanners, printers).
Since it provides quality of service (guaranteed bandwith and bounded latency)
it can also be used in industrial real-time applications.&nbsp;
<P>Support for Windows (NT) and Rhapsody is coming (some items are already
operational) but Linux users also want to benefit from this technology
- so Emanual started the development as a university project last winter.&nbsp;
<P>He now has a clearly designed subsystem, an Adaptec AIC-5800 driver
and some code to test it. Not all FireWire functions can be used now but
he has reached a point where the API is stable and other people can also
contribute work (e.g. a video camera driver).&nbsp;
<P>So if you are interested in this, just email Emanual - more (wo)manpower
is desperately needed.&nbsp;
<P>Contact addresses:&nbsp;
<BR>WWW:&nbsp; <A HREF="http://www.edu.uni-klu.ac.at/~epirker/ieee1394/">http://www.edu.uni-klu.ac.at/
~epirker/ieee1394/</A>&nbsp;
<BR>E-Mail: <A HREF="mailto:epirker@edu.uni-klu.ac.at">epirker@edu.uni-klu.ac.at&nbsp;</A>&nbsp;
<BR>&nbsp;
<BR>&nbsp;
<HR WIDTH="100%">
<P>Some late entries:&nbsp;
<P><A HREF="http://www.wizards.dupont.com/cristy/ImageMagick.html">ImageMagick
4.0.8</A>&nbsp;
<BR><A HREF="http://www.inforoute.capway.com/brunet3/">Panard Vision -
Portable Real-time 3D Engine for Linux</A>&nbsp;
<BR><A HREF="http://www.ssec.wisc.edu/~brianp/Mesa.html">Mesa 3.0 beta
7</A>&nbsp;
<BR><A HREF="ftp://ftp.mostang.com/pub/sane/">SANE 0.74</A>&nbsp;
<BR><A HREF="http://www.fas.harvard.edu/~lukka/freewrl">FreeWRL 0.14</A>&nbsp;
<P>For more details on these, check out <A HREF="http://www.freshmeat.net">Freshmeat.net.</A></TD>
</TR>
<TR>
<TD COLSPAN="3" WIDTH="100%" BGCOLOR="#000000"><IMG SRC="../gx/hammel/cleardot.gif" HSPACE=1 HEIGHT=1 WIDTH=1></TD>
</TR>
</TABLE>
<H2>
XVScan 1.80 Scanning software</H2>
tummy.com, ltd. is pleased to announce <B><FONT COLOR="#993300">XVScan
Version 1.80</FONT></B>, which now includes support for Microtek ScanMaker
E3 and E6 scanners as well as HP SCSI ScanJet scanners.&nbsp; Currently
the Microtek support is available on Linux and Solaris, but our other platforms
will include that support shortly.
<P>XVScan is based on the popular <B><FONT COLOR="#993300">xv</FONT></B>
image manipulation software for X Windows and includes a fully licensed
copy of xv. It is source available commercial software.
<P>If you've never used John Bradley's XV image manipulation software,
it's difficult to describe how powerful it is. XV reads and writes files
in a dozen different formats, provides powerful color-map editing, window
capture, color-space conversion, cropping, image manipulation algorithms,
and the list goes on.
<P>XV gives you powerful image and color-map manipulation, support for
over a dozen image formats, as well as the Visual Schnauzer, and an easy
to use graphical interface to view and catalog your scanned images.&nbsp;
Supported images formats include: PNG, GIF, JPEG, progressive JPEG, TIFF
(compressed and uncompressed), PostScript (requires ghostscript), PBM/PGM/PPM
(raw and ascii), X11 Bitmap, XPM (X PixMap), Sun Rasterfile,
<P>With XVScan, you now have the ability to scan directly into XV in a
very cost efficient (and more importantly time efficient) manner.
<P>See our website <A HREF="http://www.tummy.com/xvscan/">http://www.tummy.com/xvscan/</A>
for a full list of supported scanners.
<P><U>What's New in Version 1.80</U>
<OL>
<LI>
Microtek ScanMaker E3 and E6 support</LI>
<LI>
HP ScanJet 5P push button scanning</LI>
<LI>
Updated JPEG and TIFF conversions</LI>
</OL>
The Linux version requires working generic SCSI driver. It has been tested
with versions 1.2.7 and higher of the kernel.
<P>The current version of XVScan is 1.80 dated 1998-06-11 based upon XV
version 3.10a dated 12/29/94.
<P>XVScan is $US50 for Linux, HP-UX, FreeBSD and BSD/OS for free ftp delivery.
XVScan is $US80 for Solaris bundled with SGLite SCSI driver.&nbsp; CD-ROM
Media $US20. Contact xvscan@tummy.com to order or order on the web at <A HREF="https://www.tummy.com/ordering/onlineorder.phtml">https://www.tummy.com/ordering/onlineorder.phtml.</A>&nbsp;
Payment accepted via check, Visa/Mastercard/Discover/AMEX cards.
<P>Contact tummy.com, ltd, phone: (970) 223-8215, fax: (408) 490-2728,
<BR>URL: &lt;<A HREF="http://www.tummy.com/xvscan/">http://www.tummy.com/xvscan/</A>>
<BR>email: &lt;<A HREF="mailto:xvscan@tummy.com">xvscan@tummy.com</A>>
<P>
<HR WIDTH="100%">
<H2>
S.u.S.E. releases new X servers for Rendition, Cyrix, SiS and 3DLabs</H2>
S.u.S.E. is proud to announce the release of a new set of X servers for
several popular graphic chipsets.
<P>To avoid confusion and to clearly state that these servers are part
of XFree86, S.u.S.E. has changed the naming scheme of its servers. Instead
of the XSuSE prefix, they now use XFCom, which is short for XFree86 Compliant.&nbsp;
XFree86 compliance is intended to mean that the sources for these servers
are ALREADY part of the XFree86 development sources and will be released
as part of one of the next XFree86 releases.&nbsp; This is the major difference
to servers with the XBF prefix, which stands for X Binary Free and means
that sources for these servers are only available under NDA and therefore
cannot be included in XFree86.
<P>Following this naming scheme, we have renamed the XSuSE_Elsa_GLoria
server to XFCom_3DLabs and XSuSE_SiS to XFCom_SiS. Additionally, we have
added to new servers that support the very popular Rendition Verite chipsets
and the all-in-one Cyrix MediaGX CPU that includes graphics functionality.
<P><B><FONT COLOR="#993300">XFCom_Rendition</FONT></B> supports the Rendition
Verite V1000, V2100 and V2200 chips.&nbsp; Among the boards supported are
<UL>
<LI>
miroCRYSTAL VRX</LI>
<LI>
Diamond Stealth II S220</LI>
<LI>
Hercules Thriller3D</LI>
<LI>
Creative Labs 3D Blaster PCI</LI>
<LI>
Canopus Total-3D</LI>
<LI>
Sierra Screaming 3D</LI>
</UL>
<B><FONT COLOR="#993300">XFCom_Cyrix</FONT></B> supports the Cyrix MediaGX
CPU
<P>XFCom_SiS supports
<UL>
<LI>
SiS 6201</LI>
<LI>
SiS 6202</LI>
<LI>
SiS 6205</LI>
<LI>
SiS 5597</LI>
<LI>
SiS 5598</LI>
</UL>
<B><FONT COLOR="#993300">XFCom_3DLabs</FONT></B> supports
<UL>
<LI>
GLINT 500TX + GLINT Delta + IBM RGB 526DB</LI>
<UL>
<LI>
Elsa GLoria L</LI>
<LI>
Diamond Fire GL 3000</LI>
</UL>
<LI>
GLINT MX + GLINT Delta + IBM RGB 526DB</LI>
<UL>
<LI>
Elsa GLoria L/MX</LI>
</UL>
<LI>
Permedia + GLINT Delta + IBM RGB 526DB</LI>
<UL>
<LI>
Elsa GLoria S</LI>
<LI>
Diamond Fire GL 1000</LI>
</UL>
<LI>
Permedia 2</LI>
<UL>
<LI>
Elsa GLoria Synergy</LI>
<LI>
Elsa Winner 2000/Office</LI>
<LI>
Diamond Fire GL 1000 PRO</LI>
<LI>
Creative Blaster Exxtreme</LI>
<LI>
Leadtek WinFast 2300</LI>
<LI>
Accelstar Permedia II</LI>
</UL>
</UL>
All these servers are available as Linux x86 libc5 binaries at
<BR><A HREF="http://www.suse.de/XSuSE/XSuSE_E.html">http://www.suse.de/
XSuSE/XSuSE_E.html.</A>
<P>Binaries for other operating systems as well as glibc binaries will
be released, soon.&nbsp; For all questions and support concerning these
servers please do NOT contact XFree86 but send email to <A HREF="mailto:x@suse.de">x@suse.de</A>
instead.
<P>
<HR WIDTH="100%">
<P>&nbsp;<!--
-- Did You Know Section
-->
<H4>
Did You Know?</H4>
A comment on IRTC-L stated:
<UL>As I understand, in a cinema, the width is twice as long as the height.</UL>
Bernd Sieker, regular contributer to the IRTC list, offered the following
responses:
<UL>No, that's not really true.&nbsp; The most commonly used formats are:</UL>
&nbsp;
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=5 COLS=3 WIDTH="260" NOSAVE >
<TR NOSAVE>
<TD NOSAVE></TD>
<TD NOSAVE>Name</TD>
<TD>Aspect Ratio</TD>
</TR>
<TR NOSAVE>
<TD></TD>
<TD NOSAVE>Super 35</TD>
<TD>1:1.33</TD>
</TR>
<TR>
<TD></TD>
<TD>Academy</TD>
<TD>1:1.37</TD>
</TR>
<TR NOSAVE>
<TD NOSAVE></TD>
<TD>Wide Screen</TD>
<TD>1:1.66</TD>
</TR>
<TR>
<TD></TD>
<TD>Wide Screen</TD>
<TD>1:1.85</TD>
</TR>
<TR>
<TD></TD>
<TD>16:9</TD>
<TD>1:1.77</TD>
</TR>
<TR>
<TD></TD>
<TD>Cinemascope</TD>
<TD>1:2.35</TD>
</TR>
</TABLE>
&nbsp;
<UL>So most common cinama formats are not twice as wide as high, only Cinemascope
is more than twice as wide as it is high. But this format is not as common
as some people think. It requires a special aspherical distortion lens
on both the projector and the camera.
<P>As far as I remember the scenes for Jurassic Park were rendered in 8000x6000
(1:1.33), but often much less is sufficient, like 4000x3000.</UL>
Another question from the same list:&nbsp; What are NTSC and PAL?
<P>Again, Bernd Sieker supplies an answer:
<UL>These are the two most common colour encoding stamdards for television.
NTSC is used in the United States and, I think, Japan, PAL is used in most
parts of Western Europe (except France. There is a third standard, called
SECAM, which is used in France and parts of Eastern Europe.</UL>
<UL>PAL and SECAM use 50 fields/s (a field is half a frame), NTSC uses
60 fields/s and fewer lines, so the bandwidth of the signals is almost
equal in all formats (Something on the order of 5 MHz).
<P>For TV the horizontal resolution is not fixed, whereas the number of
lines is; use the following for sqaure pixel aspect ratio:
<P>PAL:&nbsp; 768x576
<BR>NTSC: 640x480
<P>Note that the number of lines are fixed and should not be altered, all
systems work with these values.
<BR>&nbsp;</UL>
<!--
-- Q and A Section
-->
<H4>
<B><FONT SIZE=+0>Q and A</FONT></B></H4>
<I>Q:</I>&nbsp; Anyone know how to set up an Wacom Artpad for use with
Gimp, or if this is possible. I think I have to use XInput or something.
<BR>&nbsp;
<P>A:&nbsp; <A HREF="mailto:juergen@callisto.fulda.net">Juergen Schlag</A>
responded:
<UL>A few months ago I tried to set up my Wacom PenPartner with X11.&nbsp;
You need to configure your system like the following:</UL>
<UL>
<LI>
run Linux with a X11 server which supports the Xinput Extension (my old
S3-Board running under the XFree-Server works well, but the XSuSE-Server
for PERMEDIA2-Boards doesn't work).</LI>
</UL>
<UL>
<LI>
install the Xinput driver for the Artpad (see the docs). I used a patched
driver for the PenPartner.</LI>
</UL>
<B><I><FONT COLOR="#993300">Muse</FONT></I></B>:&nbsp; What driver and
what docs?&nbsp; Anyone know what he meant by this?
<UL>
<LI>
edit the Xinput-Section of your /etc/XF86Config to load the driver when
X11 starts (see the man-pages for XF86Config and your X-server)</LI>
</UL>
<UL>
<LI>
recompile the GTK toolkit with the Xinput-support enabled. see the README
and INSTALL file for the command switch to do this.</LI>
</UL>
<UL>
<LI>
restart your computer, start X11 and Gimp. if no error message occured
your artpad should work well</LI>
</UL>
&nbsp;
<TABLE BORDER=0 COLS=1 WIDTH="100%" BGCOLOR="#000000" NOSAVE >
<TR>
<TD><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=3 WIDTH=1></TD>
</TR>
</TABLE>
<H2>
Reader Mail</H2>
<A HREF="mailto:dmschmit@rasc-sparc.tamu.edu">Dan Schmitt </A>wrote:
<UL>The polyray site seems to have moved.&nbsp; It now seems to live at:
<BR><A HREF="http://www.inf.fu-berlin.de/tec/software/public/public_html/grafik/polyray.html">http://www.inf.fu-berlin.de/tec/software/
public/public_html/grafik/polyray.html</A></UL>
<A HREF="mailto:mbeast@tls.com">Michael B. East</A> wrote:
<UL>Check out the new home page for sceda, now called sceda II! Let me
know what you think!
<BR>It's at <A HREF="http://www.tls.com/mbeast">www.tls.com/mbeast.</A></UL>
<A HREF="mailto:spm@arpc65.arm.ac.uk">Scott Manley </A>wrote:
<UL>You might be interested to add this little programm to your list of
Unix 3D graphics utilities - it generates fractal asteroids using a few
parameters given to it on the command line.
<BR><A HREF="http://star.arm.ac.uk/~spm/asteroid_impact/gen_asteroid.c">http://star.arm.ac.uk/~spm/
asteroid_impact/gen_asteroid.c</A></UL>
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:&nbsp; Thanks for the
pointers guys!
<BR>&nbsp;
<BR><A HREF="mailto:smartin@usit.net">Steve Martin </A>wrote me about some
information in the Linux Graphics mini-Howto:
<UL>Regarding the page <A HREF="http://www.graphics-muse.org/linux/lgh.html">http://www.graphics-muse.org/linux/lgh.html</A>,
in the section <B>Creation Tools,</B> you mention that:</UL>
<UL>
<UL>"If you wish to write shaders in BMRT, you really need The Renderman
Companion book by Steve Upstill which is available from Addison Wesley.&nbsp;
This text also describes the RIB format.&nbsp; Shaders in BMRT are just
text files written in the Renderman Shading Language (described in the
book - it's a subset of C); the shader is run through the BMRT shader compiler
"slc" and then it can be used in your renderings."</UL>
I would point out a couple of inaccuracies if I may.&nbsp; First, Mr. Upstill's
book completely ignores the RIB format; he concentrates exclusively on
the procedural binding (i.e. the C-language API).&nbsp; Secondly, regarding
the Renderman Shading Language, Mr. Upstill writes:
<BR>&nbsp;
<UL>"The most obvious characteristic of this shader is a superficial resemblance
to a function in the C programming language."...
<BR>"This makes the shading language easier to learn, but one must beware
of assuming the shading language is C."</UL>
</UL>
<UL>The text makes it clear that, while there are some syntactic similarities
between the two languages, the RSL is *not* a "subset of C".</UL>
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:&nbsp; You are completely
correct.&nbsp; I stand corrected.
<UL>Finally, I would recommend that anyone wanting to learn to write shaders
for Renderman read, in addition to the Renderman Companion, <I><U>Texturing
and Modelling:&nbsp; A Procedural Approach</U></I> by David S. Ebert et
al. It is a much more thorough and intensive work on procedural texturing
than is RC, and uses examples written almost exclusively in the Renderman
Shading Language.</UL>
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:&nbsp; It is indeed.&nbsp;
I've got that text.&nbsp; Its not an easy read, but its certainly a thorough
coverage of the subject.
<UL>Hope this helps. Keep up the good work.</UL>
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:&nbsp; It does help.&nbsp;
Thanks for clearing this up.&nbsp; I intend on doing a complete rewrite
of the LGH soon, but I don't know when it will be complete.
<P><A HREF="mailto:raanders@altoplanos.net">Roderick A. Anderson</A> asked
about converting GIF's to interlaced GIF's.
<UL>Are there any programs that run on a Linux platform to convert GIFs
to an interlaced format?&nbsp; Free first (of course),then commercial,
then</UL>
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:&nbsp; NetPBM, I think.&nbsp;
ImageMagick may also do so.&nbsp; A commercial package is Image Alchemy,
but its priced for corporate use and not so much for individual use (I
think - its been awhile since I checked).
<UL>hostageware or some variation.&nbsp; I've been too busy to upgrade
my system to RedHat Linux 5.0 (semester is almost over soon) so I haven't
been able to try a recent version of gimp. (The version I have is less
powerful then xpaint.)</UL>
<B><I><FONT COLOR="#993300">'Muse</FONT></I></B>:&nbsp; Boy, thats an old
version.&nbsp; If you have time try the 1.0 version from <A HREF="http://www.gimp.org">www.gimp.org</A>.&nbsp;
You'll need to grab the GTK 1.0 libs first - <A HREF="http://www.gtk.org">www.gtk.org</A>.&nbsp;
The Gimp can read in non-interlaced GIF's and convert them to interlaced.&nbsp;
Its pretty easy to do.
<P>
<HR WIDTH="100%">
<BR><A NAME="webwonderings"></A>
<BR><IMG SRC="../gx/hammel/webwonderings.jpg" HEIGHT=57 WIDTH=246>
<H1>
Building dynamic web pages</H1>
Recently I started a complete rewrite of my web site, <A HREF="http://www.graphics-muse.org">graphics-muse.org</A>.&nbsp;
This is the 5th time I've done this over the past 5 years although I haven't
had my own domain that long.&nbsp; This rewrite comes from the obvious
need to make the my graphics resources searchable and easier to update.&nbsp;
So, I've had to add a database and learn to create dynamic pages.&nbsp;
The database part is easy - I'm going to use <A HREF="http://www.Hughes.com.au/">msql</A>.&nbsp;
I've used it for a few simple databases at home and its quite sufficient
for my relatively simple needs.&nbsp; Dynamic pages are something new,
however.&nbsp; And for this, I need to step into the world of <A HREF="http://www.perl.com">Perl</A>.
<P>I used to pride myself on the number of languages I had taught myself
over the years.&nbsp; In recent times, however, I've found myself falling
behind the curve, having grown comfortable and satisfied with C.&nbsp;
Although I still think C suffices for most projects I realize that I need
to move on to newer, object oriented, languages.&nbsp; I hate C++.&nbsp;
I've done a little work with it and its just a perversion of C in my eyes.&nbsp;
Java is my long term goal, primarily because I make a living doing graphical
interfaces and Java is the future for people like me.&nbsp; Perl, on the
other hand, is simply the tool of choice for the Web.&nbsp; I didn't want
to learn yet another scripting language, but its hard to avoid if I'm going
to try to do Web developement.&nbsp; So, Perl it is.
<P>Fortunately, creating dynamic Web pages with Perl turns out to be pretty
simple.&nbsp; A perl module called, conveniently, Msql allows me easy access
to my databases and the CGI.pm module makes generation of HTML a breeze.&nbsp;
Both the msql database and CGI.pm have printed texts available so learning
both is a bit easier than the traditional man-page browsing with which
I've grown up.&nbsp; We'll take a look at how we can use both the Msql
and CGI.pm modules to create a very simple dynamic page.
<P>This discussion does not expect you to understand how to program in
perl, but it would help.&nbsp; We're going to step through the process
without going into huge detail here.&nbsp; Also, when I talk about the
database I'll use lowercase - msql - but when I talk about the perl module
I'll use uppercase - Msql.&nbsp; You should, however, be a little familiar
with how SQL statements look, or at least not be afraid of looking at them.&nbsp;
What we'll use in this example is pretty basic and you should be able to
interpret whats going on from the code and the explanations.
<P>First, what tools do you need for this experiment?
<UL>Perl 5.003 patchlevel 7 or higher
<BR>msql 1.0.x
<BR>CGI.pm 2.38
<BR>The Msql module</UL>
These just happen to be the versions I installed on the server that hosts
my domain.&nbsp; I don't know what the version of the Msql module is, but
you can find it on a <A HREF="http://www.perl.com/CPAN/">CPAN</A> mirror.&nbsp;
Apparently if you have perl 5.004 you already have CGI.pm (its part of
the standard distribution since 5.004).&nbsp; If not you'll need to grab
the module from one of the CPAN mirrors.&nbsp; CPAN is the Comprehensive
Perl Archive Network and is where you can find all sorts of modules for
use with Perl.&nbsp; Modules are extensions to perl.&nbsp; The CGI.pm module
allows you to use methods and functions to generate HTML output in a CGI
script.&nbsp; Similarly, the Msql module allows you methods for accessing
an msql database.&nbsp; The current version of the msql database is 2.0.x,
but this seemed to have some problems when I tested simple inserts on a
Solaris box, so I'm working with the more stable 1.0.x version, which happens
to be whats on my server anyway.
<P>Ok, now lets create a simple database.&nbsp; Make sure the msql database
is installed properly (follow the directions with the package - its pretty
straightforward to build and install).&nbsp; Start the database daemon:
<UL><B><FONT FACE="Times New Roman,Times">% msqld&amp;</FONT></B></UL>
Next you need to create an empty database, which we'll call "muse".&nbsp;
Use the msqladmin command for this:
<UL><B><FONT FACE="Times New Roman,Times">% msqladmin create muse</FONT></B></UL>
We can now use the msql monitor to interactively add a table and populate
the table, but lets do this the easy way.&nbsp; We'll create a text file
with the commands and then feed it to the monitor in batch mode.&nbsp;
The text file looks like this (including comments):
<UL><TT><FONT SIZE=-1># drop existing table.&nbsp; If it doesn't exist,
msql will basically ignore this.</FONT></TT>
<BR><TT><FONT SIZE=-1>drop table tools</FONT></TT>
<BR><TT><FONT SIZE=-1>\g</FONT></TT>
<P><TT><FONT SIZE=-1># Create a new table in the database</FONT></TT>
<BR><TT><FONT SIZE=-1>create table tools (</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; tooltype&nbsp;&nbsp;&nbsp;&nbsp; int
not null,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
# 0: hand tool;&nbsp; 1: power tool</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; toolname&nbsp;&nbsp;&nbsp;&nbsp; char(255)
not null&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
# name of the tool</FONT></TT>
<BR><TT><FONT SIZE=-1>)</FONT></TT>
<BR><TT><FONT SIZE=-1>\p\g</FONT></TT>
<P><TT><FONT SIZE=-1># Insert a few entries into the table</FONT></TT>
<BR><TT><FONT SIZE=-1>insert into tools values (0, 'hammer') \g</FONT></TT>
<BR><TT><FONT SIZE=-1>insert into tools values (0, 'screwdriver') \g</FONT></TT>
<BR><TT><FONT SIZE=-1>insert into tools values (1, 'table saw') \g</FONT></TT></UL>
Save this to a file called "t<A HREF="tools.msql">ools.msql</A>".&nbsp;
The filename is arbitrary.&nbsp; The "\p" and "\g" tell the monitor to
print the command as its run and to actually run the command, respectively.&nbsp;
Note that the text names are enclosed in single, not double, quotes!&nbsp;
You can feed this to the monitor using the following command:
<UL><B><FONT FACE="Times New Roman,Times">% msql muse &lt; tools.msql</FONT></B></UL>
Its a simple database, but this is a simple example.&nbsp; Now lets build
a CGI script using perl that will display a couple of tables, one of which
will contain the entries from the database.&nbsp; The first thing is to
tell the script to use perl5 and to load the Msql and CGI.pm modules:
<UL><TT><FONT SIZE=-1>#!/usr/bin/perl5</FONT></TT>
<P><TT><FONT SIZE=-1># Import modules of interst.</FONT></TT>
<BR><TT><FONT SIZE=-1>use CGI qw/:standard :html3 :netscape/;</FONT></TT>
<BR><TT><FONT SIZE=-1>use Msql;</FONT></TT></UL>
The location of your perl5 binary may be different, so check that first.&nbsp;
The stuff after "use CGI" tells perl which functions from CGI to load.&nbsp;
In this case we're loading the standard functions, plus the HTML3 and netscape
extensions.&nbsp; There are multiple methods for specifying these extensions.&nbsp;
You'll need to check the Perl or CGI.pm documentation (see end of this
article) for details on how to use a different syntax.
<UL><TT><FONT SIZE=-1># print out the HTML HEAD section</FONT></TT>
<BR><TT><FONT SIZE=-1>print header,</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; start_html(</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -author=>'webmaster@graphics-muse.org',</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -title=>'My Little
Tools',</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -bgcolor=>'#FFFFFF',
-text=>'#000000'</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );</FONT></TT></UL>
This prints out the &lt;HEAD> section for you.&nbsp; Just modify the author
and title lines to suite your needs.&nbsp; Next comes our connection to
the msql database:
<UL><TT><FONT SIZE=-1># Open the Msql connections and select the databases
of interest.</FONT></TT>
<BR><TT><FONT SIZE=-1>my $dbh1 = Msql->connect();</FONT></TT>
<BR><TT><FONT SIZE=-1>$dbh1->selectdb('muse');</FONT></TT></UL>
The first line after the comment assigns a database handle to the variable
dbh.&nbsp; The next line use the selectdb() method to access the database
named "muse".&nbsp; Pretty simple, eh?&nbsp; You can specify a remote host
in the connect() method in the first line.&nbsp; You can also specify the
name of the database there.&nbsp; But I think explicitly calling them out
like this makes the code a little easier to maintain for someone who might
come along later and not quite understand what was going on.
<P>Ok, you've opened the connection to the database.&nbsp; Lets grab the
tools table entries.
<UL><TT><FONT SIZE=-1>my $sth = $dbh1->query("SELECT * from tools");</FONT></TT>
<BR><TT><FONT SIZE=-1>my @rows;</FONT></TT>
<BR><TT><FONT SIZE=-1>my @result;</FONT></TT>
<BR><TT><FONT SIZE=-1>while (@result = $sth->fetchrow)</FONT></TT>
<BR><TT><FONT SIZE=-1>{</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; push( @rows, td({-align=>'CENTER', -valign=>'CENTER'},
$result[1]) );</FONT></TT>
<BR><TT><FONT SIZE=-1>}</FONT></TT>
<BR><TT><FONT SIZE=-1>my $tools_list =</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; table( {-border=>1, -cellpadding=>'1',
-cellspacing=>'5'},</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tr(@rows)</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; );</FONT></TT></UL>
Looks a little confusing, but its not really.&nbsp; The first line assigns
a handle from the SELECT statement to the variable sth.&nbsp; The handle
is used to access each row of the table that matched the SELECT query.&nbsp;
In this case, the query() method selected all rows from the table "tools".&nbsp;
If we had opened another database (besides the "muse" database) we would
have used a different database handle, such as dbh2, instead.&nbsp; Of
course we would have had to selected that database with the selectdb()
method like we did with dbh1 earlier.
<P>The next two lines just define the variables rows and result to be local.&nbsp;
However, these variables will both be list variables.&nbsp; Lists are special
in perl - you can access all the entries in the list using the @ symbol
as a prefix, or you can access individual elements of the list by prefixing
the variable name with a $ symbol and using an array element number.&nbsp;
We'll see examples of both in a moment.
<P>The next 4 lines are a while() loop that process each row returned from
our SELECT query.&nbsp; The fetchrow() method is used to assign the current
row to the @result list.&nbsp; A row, of course, consists of two entries:&nbsp;
the tooltype and the toolname.&nbsp;&nbsp; The push() line says to append
the following to the @rows list:
<UL><TT><FONT SIZE=-1>td({-align=>'CENTER', -valign=>'CENTER'}, $result[1])</FONT></TT></UL>
The @rows list is empty to start, so each time through we're adding a new
entry to the list.&nbsp; Each entry is the CGI.pm modules code for specifying
a table element.&nbsp; The stuff between the curly braces are the table
element arguments.&nbsp; After that comes a list of what goes into the
element.&nbsp; In this case, you get the tools name - $result[1].&nbsp;
Remember we assigned the current table row to the @result list, and we're
accessing an element of that list by using the $ prefix and an array index.&nbsp;
The index always starts at 0, so an index of 1 means the second element
of the list.&nbsp; What happens after this while() loop is run is that
you have a list of table elements with all the tools names in them.&nbsp;
We'll be using these when we create a table in just a moment.
<P>Below the while() loop is another local variable, tools_list.&nbsp;
This variable will be used to output a table in our page.&nbsp; The table()
function comes from CGI.pm and is used to generate a table.&nbsp; Note
that neither this nor the td() functions in the while() loop have actually
been output yet.&nbsp; We're just storing these in variables for later
output.&nbsp; Again, the curly braces enclose arguments for the table HTML
tag.&nbsp; After that is another embedded CGI.pm function - Tr().&nbsp;
This function has an uppercase first letter only because perl has its own
"tr" function and there needs to be a distinction between the two.&nbsp;
In most cases, the CGI.pm functions will use lowercase only.&nbsp; The
Tr() function creates a table row.&nbsp; Embedded within this is are all
the table elements we stuffed into the @rows list.&nbsp; Still with me?&nbsp;
Great!&nbsp; All thats left is to output this back to the browser.
<UL><TT><FONT SIZE=-1># Now print the complete table</FONT></TT>
<BR><TT><FONT SIZE=-1>print</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; center(</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; table(</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {-border=>1, -width=>'100%',
-cellpadding=>1, -cellspacing=>5},</FONT></TT>
<P><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tr(</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
td({-align=>'CENTER', -valign=>'CENTER'}, $tools_list),</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )</FONT></TT>
<BR><TT><FONT SIZE=-1>&nbsp;&nbsp; )</FONT></TT>
<BR><TT><FONT SIZE=-1>);</FONT></TT>
<P><TT><FONT SIZE=-1># End of HTML output.</FONT></TT>
<BR><TT><FONT SIZE=-1>print end_html;</FONT></TT></UL>
The print() command is from perl.&nbsp; It just prints to standard output,
which is what you want for CGI scripts.&nbsp; The center() function comes
from CGI.pm and will center the following table.&nbsp; The table() function
comes from CGI.pm also.&nbsp; We've already created a table earlier, in
our $tools_list variable.&nbsp; Now we're going to embed that earlier table
inside another table.&nbsp; We define the new tables arguments, followed
by a single table row (Tr()) and a single element in which we add the $tools_list
table.
<P>Save all this to a file called <A HREF="web.pl">web.pl</A> in your cgi-bin
directory on your web server.&nbsp; Make sure the script has execute permissions.&nbsp;
You can see this little scripts output by accessing <A HREF="http://www.graphics-muse.org/cgi-bin/web.pl">www.graphics-muse.org/cgi-bin/web.pl.</A>&nbsp;
Its not much, but it shows how easy it is to integrate a little bit of
database info into a web page.&nbsp; For what its worth, it only took me
about 2 days to get all this down, mostly by experimenting with examples
in the printed texts.&nbsp;&nbsp; It would have been quicker, but I did
it at work and ducking from coworkers took most of my time.
<P>Speaking of documentation, the texts you want are
<UL>
<LI>
<I><U>Offical Guide to Programming with CGI.pm</U></I> by Lincoln Stein,
published by Wiley Press.</LI>
<LI>
<I><U>Official Guide to MiniSQL 2.0</U></I> by Briand Jepson and David
J. Hughes, by Wiley Press.</LI>
</UL>
The msql guide is applicable to the 2.0 release, but I found it useful
for a refresher on using msql.&nbsp; If you need 1.0.x documentation, you
can check out the <A HREF="http://www.Hughes.com.au/">msql web site.</A>
<BR>&nbsp;
<P>
<HR WIDTH="100%">
<P><A NAME="musings"></A>
<BR>&nbsp;
<TABLE BORDER=0 COLS=1 WIDTH="100%" >
<TR>
<TD><IMG SRC="../gx/hammel/musings.gif" ALT="Musings" HEIGHT=52 WIDTH=247 ALIGN=LEFT></TD>
</TR>
</TABLE>
&nbsp;
<TABLE BORDER=0 COLS=1 WIDTH="100%" BGCOLOR="#000000" NOSAVE >
<TR NOSAVE>
<TD NOSAVE><IMG SRC="../images/cleardot.gif" HEIGHT=2 WIDTH=2></TD>
</TR>
</TABLE>
<H2>
<A NAME="xserver"></A></H2>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=2 COLS=3 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD VALIGN=TOP ROWSPAN="3" WIDTH="50%" NOSAVE>
<H2>
Gimp 1.0</H2>
For those of you who have been&nbsp;
<OL>
<LI>
living under a rock</LI>
<LI>
tied up and held captive by aliens</LI>
<LI>
or changing your oil for the past 3 months</LI>
</OL>
I have news for you:&nbsp; <B><FONT COLOR="#CC6600">Gimp 1.0</FONT></B>
has been released.&nbsp; The announcement came back on June 5th.&nbsp;
Since I haven't done a 'Muse column since April perhaps you missed it.&nbsp;
For some reason the trumpets didn't seem to blare as loud as I expected
they might when the announcement hit the mailing lists and comp.os.linux.announce.&nbsp;
I guess I expected more fanfare.&nbsp; Maybe there was and I missed it.&nbsp;
I was changing my oil for a while back then, too.&nbsp; Or maybe that was
the month I was with the aliens.&nbsp; Its been a long summer.&nbsp;
<P>As I mentioned at the top of this column (you know, the part you probably
don't read each month), I've spent the last year working on a book on the
Gimp.&nbsp; <A HREF="http://www.ssc.com">SSC</A>, the publishers of the
<A HREF="http://www.linuxjournal.com">Linux Journal</A> and the host of
the <A HREF="http://www.linuxgazette.com">Linux Gazette</A>, had contacted
me in June of 1997 about the possibility of doing the book.&nbsp; I thought
it was a great idea, so I jumped into it.&nbsp; The hard part has been
trying to keep the work up to date.&nbsp; Much of the writing had to wait
till there was some light at the end of the 1.0 development tunnel.&nbsp;
Not suprisingly, the past 3 months I've been buried in updates and last
minute details.&nbsp; This has been the longest last minue of my life.&nbsp;
<P>But I'm fairly happy about the book.&nbsp; It will be printed in 4-color
on glossy paper and there are lots of images and examples.&nbsp; There
is also a CD which will include all the images from the book, plus lots
of other good stuff.&nbsp; There are some things I didn't get in because
there just wasn't any time left.&nbsp; They'll have to wait for the next
edition or for articles in the Linux Journal.&nbsp; Or maybe in the 'Muse.&nbsp;
Anyway, one year is plenty for the first edition.&nbsp;
<P><A HREF="http://www.gimp.org">Gimp 1.0</A> source actually comes in
three packages:&nbsp; the core distribution, the extras package, and the
unstable package.&nbsp; The core and extras package build and install fairly
easy.&nbsp; The unstable package includes a number of very handy plug-ins
but you have to understand how to build them a little more than the core
and extras packages.&nbsp;
<P>Some of the more interesting features of the 1.0 release include a rather
good Print plug-in that can work with a number of HP and Epson printers
directly and also supports Postscript output.&nbsp; So you can print directly
to a postscript capable printer or run the output through Ghostscript.&nbsp;
<CENTER><A HREF="#next-column">-Top of next column-</A></CENTER>
</TD>
<TD ROWSPAN="3" WIDTH="2" BGCOLOR="#000000" NOSAVE><IMG SRC="../images/cleardot.gif" HEIGHT=2 WIDTH=2></TD>
<TD WIDTH="49%" NOSAVE><LH><A NAME="next-column"></A><B>More Musings...</B>&nbsp;</LH>&nbsp;
<P>No more musing this month.</TD>
</TR>
<TR NOSAVE>
<TD BGCOLOR="#000000" NOSAVE><IMG SRC="../images/cleardot.gif" HEIGHT=2 WIDTH=2><IMG SRC="../gx/hammel/cleardot.gif" HEIGHT=3 WIDTH=3></TD>
</TR>
<TR NOSAVE>
<TD VALIGN=TOP NOSAVE>Another great Plug-in is the GFig plug-in, which
allows you some limited drawing capabilities.&nbsp; You can draw circles,
curves, boxes and other shapes, repositions them, render them on separate
layers using any brush shape and color.&nbsp; The interface is a bit clunky,
but its still an improvement on the default drawing tools.&nbsp;
<P>Other recent improvements over older development releases include:&nbsp;
<UL>
<LI>
runtime configuration via the Preferences dialog</LI>
<LI>
a Netscape interface to access online resources</LI>
<LI>
a better menu organization</LI>
<LI>
frequently used layer functions accessible via buttons now</LI>
<LI>
lots of Script-Fu scripts</LI>
</UL>
The Gimp has gotten quite a bit of press recently, including some blurbs
in the online version of Publish magazine and on NPR (National Public Radio).&nbsp;
Check Zach's <A HREF="http://xach.dorknet.com/gimp/news/">Gimp News</A>
site for more information on these.&nbsp;
<P>There are still a few things that need work, not the least of which
is support for more color models.&nbsp; But this has been discussed at
length on the developers list and a few people appear to be working on
it, at least to some extent, for the 1.2 release.&nbsp; The Gimp will have
a numbering scheme like the Linux kernel, where even numbers are public
releases and odd numbers are developers releases.&nbsp; Currently, the
1.0.4 version is the latest public release.&nbsp; There is a 1.1&nbsp;
<P>I intend to focus more of my energies towards the Gimp from now on.&nbsp;
The 'Muse columns future depends on some discussions I'm having with SSC
about another project, but for now its just discussion.&nbsp; In any case,
after all this time, I finally plan on working on some plug-ins and scripts.&nbsp;
Since 1.0 is out, I can't whine about not having a stable version anymore.&nbsp;&nbsp;
I'll be hanging out on the Gimp-User mailing list trying to help out there.&nbsp;
With 1.0 out, its time for the user community to show what can be done
with the tools.&nbsp;
<BR>&nbsp;
<BR>Besides, maybe we have another Gimp-based <A HREF="http://www.sirius.com/~fenster/">Diane
Fenster</A> out there.&nbsp;
<BR>&nbsp;
<BR>&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<TABLE BORDER=0 COLS=1 WIDTH="100%" BGCOLOR="#000000" NOSAVE >
<TR NOSAVE>
<TD NOSAVE><IMG SRC="../images/cleardot.gif" HEIGHT=2 WIDTH=2></TD>
</TR>
</TABLE>
&nbsp;
<TABLE BORDER=0 COLS=1 WIDTH="100%" >
<TR>
<TD><IMG SRC="../gx/hammel/resources.gif" ALT="Resources" HEIGHT=57 WIDTH=246 ALIGN=LEFT></TD>
</TR>
</TABLE>
The following links are just starting points for finding more information
about computer graphics and multimedia in general for Linux systems. If
you have some application specific information for me, I'll add them to
my other pages or you can contact the maintainer of some other web site.
I'll consider adding other general references here, but application or
site specific information needs to go into one of the following general
references and not listed here.
<BR>&nbsp;
<TABLE BORDER=0 COLS=2 WIDTH="100%" NOSAVE >
<TR NOSAVE>
<TD NOSAVE>Online Magazines and News sources&nbsp;
<BR><A HREF="http://www.news.com/">C|Net Tech News</A>&nbsp;
<BR><A HREF="http://www.eklektix.com/lwn/">Linux Weekly News</A>&nbsp;
<BR><A HREF="http://slashdot.org/">Slashdot.org</A>&nbsp;
<P>General Web Sites&nbsp;
<BR><A HREF="http://www.graphics-muse.org/linux/lgh.html">Linux Graphics
mini-Howto</A>&nbsp;
<BR><A HREF="http://www.graphics-muse.org/ugu/ugu.html">Unix Graphics Utilities</A>&nbsp;
<BR><A HREF="http://www.digiserve.com/ar/linux-snd/">Linux Multimedia Page</A>&nbsp;
<P>Some of the Mailing Lists and Newsgroups I keep an eye on and where
I get much of the information in this column&nbsp;
<BR><A HREF="http://www.gimp.org">The Gimp User and Gimp Developer Mailing
Lists</A>.&nbsp;
<BR><A HREF="http://www.irtc.org">The IRTC-L discussion list</A>&nbsp;
<BR><A HREF="news:comp.graphics.rendering.raytracing">comp.graphics.rendering.raytracing</A>&nbsp;
<BR><A HREF="news:comp.graphics.rendering.renderman">comp.graphics.rendering.renderman</A>&nbsp;
<BR><A HREF="news:comp.graphics.api.opengl">comp.graphics.api.opengl</A>&nbsp;
<BR><A HREF="news:comp.os.linux.announce">comp.os.linux.announce</A>&nbsp;</TD>
<TD><IMG SRC="../gx/hammel/gmuse.jpg" HSPACE=10 HEIGHT=270 WIDTH=190></TD>
</TR>
</TABLE>
<A NAME="future"></A>
<H2>
Future Directions</H2>
Next month:
<BR>As usual, I'm not sure exactly what will be covered next month.&nbsp;
My next major project is a rewrite of my graphics-muse.org web site so
you can expect I'll probably have something for Web Wonderings.&nbsp; POV-Ray
3.0 is out in beta, I hear.&nbsp; Anyway, we'll see which way the winds
blow by the end of August.
<P><A HREF="mailto:mjhammel@graphics-muse.org">Let me know what you'd like
to hear about!</A>
<P>
<HR WIDTH="100%">
<DIV ALIGN=right><FONT SIZE=-1>&copy; 1998 <A HREF="mailto:mjhammel@graphics-muse.org">Michael
J. Hammel</A></FONT></DIV>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, Michael J. Hammel <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./roelofs.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./dibona.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<font color="navy">A <I>Linux Journal</I> Preview</font>:
This article will appear in the October issue of <I>Linux Journal</I>.
<P> <HR> <P>
<center>
<H1><font color="maroon">The Great Linux Revolt of 1998</font></H1>
<H4>By <a href="mailto:chris@dibona.com">Chris Dibona</a></H4>
</center>
<P> <HR> <P>
<A HREF="./photos1.html">Photo Album</A>
<P> <HR> <P>
Sam Ockman's notice hit Slashdot (http://www.slashdot.org/) at 6:21PM,
it read:
<p>
<blockquote>
The 500 members of SVLUG are going to have a big rally
tonight at the largest/most prestigious computer store in Silicon Valley,
Fry's, when they stay open until 1AM to distribute Windows 98.
We're going to hand out Linux CDs and stuff like that as well.
We'd like to have more people at the rally then go to buy Windows 98.
<p>
</blockquote>
While it was obvious that the entire membership of the LUG was not
planning on showing up for a midnight rally, it was clear that this was an
idea with great potential. A little after 10PM, Sam and I arrived at the Chili's
restaurant near the rally site to meet with people beforehand. We were
hopeful that we were not going to be alone at the table.
<p>
We were not disappointed. There were about 15 people waiting for Sam to
arrive. Some we recognized from the SVLUG, and some that had seen the
notice on Slashdot. Remember only four hours had gone by since the original
posting. By the time we left, the crowd had grown to 25 people.
<p>
After consuming some munchies and a stout or two, we headed out for Fry's
electronics in Sunnyvale. For those of you who aren't familiar with Fry's,
they are a warehouse-sized electronics, software, hardware, test
equipment, junk food, books and magazine retailer out here on the west
coast. Picture Price-Costco except with resistors. Most people have a love
hate relationship with Fry's, mainly for customer service issues. It's
important to note that this rally was not a protest against Fry's, but a rally
for Linux on MS Windows 98's birthday.
<p>
We arrived at the Fry's around 11:30PM. The 500 compact discs hadn't arrived
from the generous folks from S.u.S.E. yet, and we were a little nervous
they would be late. At Fry's our numbers had doubled to a little over 50
people. By now, our signs had been pulled out and we were actively
agitating for Linux. This was a peaceful gathering, we made a point of not
being too annoying and staying out of the way of cars.
<p>
The CDs arrived around midnight, coinciding with the beginning of the
sale of the Windows 98 CDs. We started handing them out along with pamphlets
designed by Adam Richter (of Yggdrasil) to people who were coming into and
out of Fry's. At this point we had two reporters show up to document the
event (see links below).
<p>
Also, at this point we started noticing worried looking guys with
walkie-talkies watching us from the parking lot, and some Fry's managerial
types talking into their cell phones. One of the protestors overheard one
of their managers call the police, and then frustratedly say to another
Fry's guy, ``Why can't we just go over there and rip those
signs out of their geek hands?'' When we heard that, we were taken
aback, but it did consolidate our desire to continue.
<p>
A few minutes later the Sunnyvale police began to arrive in numbers. Four
police cars pulled forward into the lot. I offered myself up as their
contact, while Sam controlled the Linux people.
<p>
The police officer asked us what we were doing there, I described Linux
and how we were trying to get the word out about it. The police officer
was cool about it, telling me that we'd have to wait for his Lieutenant to
arrive to find out what to do. We were on Fry's private property,
their parking lot. It turns out there are certain situations
where it's okay to protest on someone's private property. It's pretty
much always okay to protest on the sidewalk. We had been expecting to be
asked to move to the sidewalk eventually.
<p>
Before his Lieutenant arrived, one of the other police officers asked more
about Linux, the word is one of the Linux people got a CD into his hands
on his way out of the lot. He did say, ``Hey, good luck with your
system'' to me.
<p>
Additionally, the manager of Fry's came up to me (the same one that wanted
to rip the signs out of our ``geek hands'') and asked me why I was
doing this, as Fry's sold Linux in their book section. I pointed out that we
knew this and indeed had a sign showing people which aisle to go to for the
book. He
then asked why I had not had the Linux marketing people or my (as if I'm
in charge of Linux!) vendor relations people, contact Fry's management to
arrange a similar event to the Windows 98 launch. Needless to say I was
like a deer in the headlights, I told him that, in fact, Linux was a free
operating system, and that this was one way we saw to market it (not to
mention the fact that no company could match a MS launch when it comes
down to the checkbook).
<p>
He was visibly upset, so I thought it was best to stop talking with him at
this point. I told him any further communication between us would
come to no good end, and we should only talk through the police. (His
brains were melting out his ears at this point.)
<p>
The Lieutenant arrived and said we should move to the sidewalk, so we did,
and it was just as cool, cars were actually pulling over and picking up a
copy of the Linux CD.
<p>
After about 15 minutes of this, we decided to hit the CompUSA, a few
miles away. When we arrived, there were still a lot of people in line
there. It turns out CompUSA was not only promoting Windows 98, but they
were also doing all kinds of things to bring people into the store. They
were selling the first 10 people in line computers for $98, and paying
people $4 to take away 32MB of RAM. (Actually, the RAM was $32, but there
was a $38 rebate--or something like that, it was weird.) This also
meant that there were a lot of people to promote Linux to. CompUSA's
management were cool, they just took the rally in stride, telling Sam
the rally was okay, as that was what the first amendment was all about.
Fry's had sent one of their security drones to CompUSA to warn them of our
existence, but CompUSA just let us do our thing.
<p>
After CompUSA petered out, we converged on a local Denny's to nosh.
Denny's flipped when they saw all the people, so we moved to a braver
restaurant down the street. I got home around 3AM to find
people were already uploading pictures to the web.
<p>
By the end of the night we had given out 500 CDs, and
hundreds of pamphlets. A total of six press people showed up and there
were over a half-dozen mentions in major newspapers. This is not counting
the coverage we received from other on-line sources such as CNN and the
BBC. Everyone involved had a rocking good time promoting Linux.
<p>
Whether or not you agree with this direct action model of Linux marketing, we
feel confident that we passed the Linux Message to many thousands of
people who otherwise had no real knowledge about the Linux revolution.
Viva El Revolution!
<h3>Resources</h3>
<p>
SVLUG: <A HREF="http://www.svlug.org/">http://www.svlug.org/</A> <BR>
SVLUG Rally: <A HREF="http://www.penguincomputing.com/svlug-rally.html">
http://www.penguincomputing.com/svlug-rally.html</A> <BR>
Slashdot: <A HREF="http://www.slashdot.org/">http://www.slashdot.org/</A>
<BR>
SuSE: <A HREF="http://www.suse.com/">http://www.suse.com/</A> <BR>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, Chris DiBona <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./gm.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./rogers2.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">How I got my Adaptec AVA 1502 SCSI card to work with Linux and SANE</font></H1>
<H4>By <a href="mailto:jrogers@u.washington.edu">James M. Rogers</a></H4>
</center>
<P> <HR> <P>
<P>I have a Microtek ScanMaker E3 that I have ran under windows for a few
years to allow me to convert from hard copy to digital.&nbsp; I have never
been satisfied with the performance of this scanner under windows because
I was so limited in the size of the images that I could process.&nbsp;
I won't bore you with the details, suffice it to say that it was slow,
tedious and the results were only adequate.
<P>I have heard about Scanner Access Now Easy (SANE) for a few years.&nbsp;
It is a project to implement a consistent scanner interface across all
scanners, digital cameras, and other items.&nbsp; It only works with SCSI
scanners at this time.
<P>It took me three tries to get the program to work for me.
<P>Try one:
<P>The SCSI driver card that came with my scanner claimed to be an AVA-1502E.&nbsp;
I couldn't find a driver to work with this under Linux.
<P>Try two:
<P>I thought that this card is an Adaptec card so I tried to load the Adaptec
modules, concentrating on the aha152x.o&nbsp; The most I got was the insmod
program seeming to lock up.&nbsp; At no point in this process did it recognize
my card.
<P>Try three:
<P>I peeled the sticker off of the main chip and saw that it was an 6360
chip (Doing this probably voids the warranty.)&nbsp; So I dug into the
Linux source code. In <TT>/usr/src/linux-2.0.32/drivers/scsi/</TT>&nbsp;
there is a file called <TT>aha152x.c</TT>.&nbsp; I read this file several
times and got a general picture of how this file worked.&nbsp; I then modified
the file <TT>/usr/src/linux-2.0.32/drivers/scsi/Makefile</TT> and commented
out the line following line:
<P><TT>&nbsp;&nbsp;&nbsp; AHA152X = -DDEBUG_AHA152X -DAUTOCONF</TT>
<P>turns to:
<P><TT>&nbsp;&nbsp;&nbsp; #AHA152X = -DDEBUG_AHA152X -DAUTOCONF</TT>
<P>I then added this line right below the commented line:
<P><TT>&nbsp;&nbsp;&nbsp; AHA152X = -DDEBUG_AHA152X -DSKIP_BIOSTEST -DSETUP0="{
0x140, 11, 7, 0, 0, 0, 100, 0 }"</TT>
<P>Basically we are telling the module to stop trying to autoconfigure
the card, don't try to see which card it is and to use the given settings.&nbsp;
<I>I will contact the maintainers of this code and work with them on getting
this driver to autorecognize this card, if possible.</I>
<P>The first two numbers are the ones that you care about.&nbsp; These
numbers correspond to the the jumpers on the card.&nbsp; The first number
is 0x140 if the jumper is on the card , or 0x340 if the jumper is removed.&nbsp;
The 11 corresponded to the irq setting on my card.&nbsp; This number can
be 9, 10, 11 or 12 depending on how the jumper was set.
<P>If you want to know more about these other settings look in the source
code and
<P>I then changed to <TT>/usr/src/linux-2.0.32/</TT>&nbsp; put a floppy
disk in the drive and did a
<P><TT>&nbsp;&nbsp;&nbsp; make dep ; make clean ; make zdisk</TT>
<P>Once the disk had been made I put the disk in my Linux box with the
scanner attached and rebooted.&nbsp; It came up and saw my card and told
me that the card was device /dev/sga.&nbsp; When I looked in /dev/ for
a device called sga I couldn't find one.&nbsp; So I made a link from <TT>/dev/scanner</TT>
to <TT>/dev/sg0</TT> instead with the following command:
<P><TT>&nbsp;&nbsp;&nbsp; cd /dev</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; ln -s sg0 scanner</TT>
<P>I then configured my <TT>/etc/sane.d/dll.conf</TT> to look like this:
<P><TT># enable the next line if you want to allow access through the network:</TT>
<BR><TT>#net</TT>
<BR><TT>microtek</TT>
<BR><TT>pnm</TT>
<P>I configured my <TT>/etc/sane.d/microtek.conf</TT> to look like this:
<P><TT>#Uncomment the following if you are tired of seeing the dump of
the</TT>
<BR><TT># scanner INQUIRY every time the backend starts up...</TT>
<BR><TT>nodump</TT>
<BR><TT>/dev/scanner</TT>
<P>Then I ran the following command and it worked!!!:
<P><TT>&nbsp;&nbsp;&nbsp; scanimage --help -d microtek</TT>
<P>This tells you the other commands that will work with the scanner.
<P>I then scanned in stuff with the command line command and with <TT>xscanner</TT><TT></TT>
<P><TT>&nbsp;&nbsp;&nbsp; scanimage -dmicrotek -x214 -y296 --resolution
97 > test.pnm</TT>
<P>The above command is a full scan of the entire page at 200dpi. The output
of these programs is pnm format which allows you access to hundreds of
filters to process and convert your output to the exact format that you
desire.&nbsp; See the <TT>man pnm</TT> page for more details.
<P>I have already done some 11MB graphics files and used some pnm utilities
to filter them, edited them with gimp, cut out the area that I wanted and
saved them as jpg's.&nbsp; The neat thing is that I am testing out SANE
by running it on a machine with only 16MB of memory and no swap.&nbsp;
(I am processing the files on a different, faster machine) So far SANE
has only failed on full screen images above 200dpi which is not bad.&nbsp;
Once I have a baseline I will put this machine to 32MB RAM and 32MB swap
space.
<P>I love the ability of Linux to get in there and let me really control
my hardware configuration.&nbsp; With Microsoft the only option that I
would have had would have been to buy a "compatible" product and install
one of the manufactures full featured (bloated), buggy driver programs.&nbsp;
The support tech would have probably sneered at me as he said this.&nbsp;
This is the first time that I have "dug into" the kernel driver code, researched
a problem and found a solution.&nbsp; Just the satisfaction of being able
to fix the kernel to recognize the hardware that I have already paid for
is very rewarding.
<P>Next month I will talk about getting the networking portion of SANE
up and running.
<BR>&nbsp;
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, James M. Rogers <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./dibona.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./ayers1.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center><img alt="Debian GNU-Linux image" src="./gx/ayers/debian_title.gif"></center>
<center><h2><font color="steelblue3">A New Stable Release of Debian</font></h2></center>
<hr>
<center>
<h4>by <a href="mailto: layers@marktwain.net">Larry Ayers</a></h4>
</center>
<hr>
<center><h3>Introduction</h3></center>
<p>In 1993 Ian Murdock created the Debian Linux distribution, initially under
the auspices of the Free Software Foundation's GNU project. Although the
direct connection with FSF/GNU is a thing of the past, Debian is still the
only major distribution which is not connected with a commercial entity and
which is maintained solely by a loosely-knit band of volunteers. The
parallels with Linux itself make this distribution appealing to Linux users
who value the ideals of the free-software world, including those who may
disagree with the purist views of the FSF.
<p>Debian hasn't exactly swept the Linux world by storm. The installation
procedure in the past has relied on the creation of several floppy disk
images, and due to the idiosyncrasies of the floppy medium at least one disk
in the set would be bad (in my experience), forcing the irritated user to
recreate the faulty disk and start over from the beginning. Debian 2.0
thankfully doesn't require starting over if (say) disk 5 is bad; it just
starts the installation again from where it left off. Luckily machines with
BIOS support for booting from a CDROM are becoming common and cheap, and
Debian CDs are set up so they can be booted directly. Once the base system
was installed the <i>dselect</i> package installer, a functional but unintuitive and
visually unappealing application, would further discourage new users.
<p>Once these hurdles were overcome, the user would find that the Debian
system was very well thought out. As an example, the configuration of
sendmail has been a stumbling block for many new Linux users. In my Slackware
days I had a painfully developed sendmail configuration which sort of worked,
but even getting it to that point involved a lot of FAQ-reading and searching
of usenet messages. The first time I installed the Debian sendmail package, I
was asked a few pertinent questions about my system and its relationship to my
mail-server. The result was a sendmail configuration which works flawlessly,
due to the invocation of some obscure options which I'd never heard of. The
printer configuration, as a final step of installing the magicfilter package,
also has worked very well for me. These installations may not have the fancy
graphical interfaces found in some other distributions, but they work well and
don't require a working X Windows set-up along with various X toolkit
libraries.
<p>The core of Debian's strength is in the exceptionally versatile
<i>*.deb</i> package format. This format, comparable in many ways to
Redhat's RPM, does everything possible to prevent a new package from
conflicting with others or rendering a system unstable. The dependencies
(i.e, what other packages are required for a new one to function) are enforced
in a flexible manner and can be over-ridden by the user. Pre-install and
post-install scripts are automatically run when a package is installed. These
scripts will update default configuration files, delete obsolete files from
earlier package versions, and prompt the user if choices need to be made.
<p>The <i>dpkg</i> command-line program can be used to install, update, or
remove packages. <i>Dselect</i>, a full-screen front-end for <i>dpkg</i>, can
automatically fetch and install entire dependency hierarchies; in other words
if you select a package with <i>dselect</i> it can determine what other
packages are needed and install them as well. I have to confess that I rarely
use <i>dselect</i> if I can help it. I usually obtain packages as I need them
and install them by hand with <i>dpkg</i>. The problem with <i>dselect</i> is
that it is usually used in an installation from scratch; by the time a system
needs a major upgrade most users have forgotten the keystrokes. It's not a
tool which is used often enough to justify really learning how to use
efficiently, and toggling back and forth between the main screen and the help
pages is cumbersome. My seventeen-year-old son first installed Linux because
of the Gimp graphics program. I installed Debian 1.3 for him, but he's a
hardware junky and is continually changing hard disks and video-cards. The
second time he had to reinstall Linux I tried to get him to run <i>dselect</i>
himself but he hated it. By this time he had convinced some friends to try
Linux, and after several lengthy sessions on the phone attempting to walk
these kids through package installation with <i>dselect</i>, I gave up and
ordered a Redhat 5.0 CD, which they are all running now. Debian has a ways to
go before a non-technical novice can easily install it without assistance.
<center><h3>Debian 2.0</h3></center>
<p>Debian 2.0 has been delayed for several months, due to the existence of
unresolved bugs in several packages. This is probably inevitable given the
volunteer nature of the work, as well as the difficulties involved in the
transition to the glibc libraries upon which all programs depend. Redhat 5.0 was
the first glibc-based distribution, released last year. The release had
several major problems, many but not all of which have been fixed with the
release of version 5.1 this year. I surmise that the Debian developers
resolved to forgo haste in order to avoid similar problems with Debian 2.0.
<p>The Debian community was somewhat demoralized earlier this year when Bruce
Perens, Debian's leader and spokesman, resigned. It seems that Perens thought
Debian wasn't moving quickly enough towards user-friendliness. There is some
truth to this opinion, as Debian seems to appeal to many seasoned Linux users
who aren't put off by the lack of graphical administration tools. This
illustrates on a smaller scale a problem Linux itself has: to gain a larger
user-base easier configuration and installation is helpful, but the very
people qualified to develop the necessary tools tend not to need or even want
them. Linuxconf and COAS, two projects which attempt to address this need,
may eventually fill this void.
<center><h3>Libc5 and Libc6</h3></center>
<p>This release is noteworthy for its skillful and painless handling of the
lib5/libc6 issue. Both versions of the essential libraries and support files
can be installed and used simultaneously in a manner which is transparent to
the user. This is important because most commercial, binary-only Linux
applications are compiled to use libc5. This also allows incremental
upgrading of an existing Debian 1.3 system; the minimal base files to upgrade
from 1.3 to 2.0 can be downloaded in a couple of hours while further packages
can be obtained and installed as time permits (or when the CD comes in the
mail!). The old libc5 packages will continue to function normally until they
are upgraded.
<p>Libc5 itself isn't sufficient to run any but the most basic applications.
Other shared libraries are needed; under Debian they are installed in
<kbd>/usr/lib/libc5-compat </kbd>. <b>Ldd</b>, the shared library loader, is
smart enough to use these libraries for libc5 executables. You will probably
need the libc5 XFree86 libraries as well as libXpm in order to run the older
binaries. It's easy to determine which libraries are needed by a libc5
executable. Just look at the output of <b>ldd</b> (i.e., run <kbd>ldd
netscape</kbd>, substituting the name of the program for "netscape"). If both
libc.so.5 and libc.so.6 are shown don't even try starting the program, as it
will die immediately. If only libc.so.5 is shown, and the remainder of the
shared libs are located in <kbd>/usr/lib/libc5-compat</kbd> then the program
should run. Here is the output of <b>ldd</b> when run on libc5 version of
Netscape:<br><pre><code>
libXt.so.6 => /usr/lib/libc5-compat/libXt.so.6 (0x4000c000)
libSM.so.6 => /usr/lib/libc5-compat/libSM.so.6 (0x4004e000)
libICE.so.6 => /usr/lib/libc5-compat/libICE.so.6 (0x40057000)
libXmu.so.6 => /usr/lib/libc5-compat/libXmu.so.6 (0x4006c000)
libXpm.so.4 => /usr/lib/libc5-compat/libXpm.so.4 (0x4007e000)
libXext.so.6 => /usr/lib/libc5-compat/libXext.so.6 (0x4008c000)
libX11.so.6 => /usr/lib/libc5-compat/libX11.so.6 (0x40097000)
libdl.so.1 => /lib/libdl.so.1 (0x40135000)
libc.so.5 => /lib/libc.so.5 (0x40138000)
</code></pre>
<p>And here is the <b>ldd</b> output when run on a libc6 version of Netscape:
<br><pre><code>
libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x40010000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x40052000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x4005b000)
libXmu.so.6 => /usr/X11R6/lib/libXmu.so.6 (0x40070000)
libXpm.so.4 => /usr/X11R6/lib/libXpm.so.4 (0x40084000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40092000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x4009d000)
libdl.so.2 => /lib/libdl.so.2 (0x4013b000)
libc.so.6 => /lib/libc.so.6 (0x4013e000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
libg++.so.2.7.2 => /usr/lib/libg++.so.2.7.2 (0x401e3000)
libstdc++.so.2.7.2 => /usr/lib/libstdc++.so.2.7.2 (0x4021b000)
libm.so.6 => /lib/libm.so.6 (0x40258000)
</code></pre>
<p>Of course if you install from scratch (and don't have any old programs you
need to run) everything will be libc6-based and the above won't be necessary.
<center><h3>Installation</h3></center>
<p>Debian 2.0 CDs should be available by the time this issue of LG is on the
net, and for everyone but the fortunate few with fast and unlimited net
connections a CD is the easiest installation method. Since my installation
was an upgrade (done over the course of a couple of weeks) from a Debian 1.3
set-up, I didn't get to see if the installation process had improved until the
other day, when I happened to notice that my wife's laptop had several hundred
megabytes of free disk space. Unfortunately the machine (a 486 Thinkpad)
lacks a CDROM drive and its modem is slow. After splitting off half of the
single disk partition with Partition Magic I had two hundred megabytes to work
with. Back at my machine, I proceeded to download seven disk image files from
a mirror of <kbd>ftp.debian.org</kbd>, a total of nine and one-half megabytes.
This may seem like a lot, but those seven disks provide a minimal but
functional Linux system complete with internet access.
<p>Once the tedious job of transferring the disk images to floppy was
completed, I booted the Thinkpad from the first disk and began the
installation. Like Redhat's, Debian's installation interface is full-screen
and menu-driven, though it's not as fancy. One major difference is that while
Redhat's installation segues right into package installation and X
configuration, Debian is more of a two-stage process. After the base
installation is complete, the user reboots the machine; once the new Debian
system has booted up (either from a custom boot-disk created during
installation or directly from the hard disk) the user is prompted to set the
root password and create a user account. The dselect package
installer/manager then starts up, but selecting and installing packages can be
postponed, which is what I decided to do.
<p>Debian's two-stage installation method makes sense to me. Why mess with
packages before ascertaining that the installation is truly bootable
and error-free? Another reason for waiting to run dselect involves network
connections. Although both Redhat and Debian have PPP configuration tools,
neither has ever worked flawlessly for me. I always have to do some fine-tuning
of the <kbd>/etc/ppp</kbd> files, though Debian's <i>pppconfig</i> utility
came the closest to getting my configuration right. My ISP is a particularly
difficult one to connect to using Linux; I'm certain that for many other
providers these net configuration tools work without the necessity of
file-tweaking afterwards.
<p>Once a PPP connection can be established, dselect can be used to retrieve
via FTP any of the distribution's numerous packages. Dselect can also install
packages from an NFS-mounted filesystem, a local disk, or a mounted CDROM.
<p>Eventually there will be some sort of graphical interface to dselect and
dpkg, but this task has proven to be a difficult one. As a first step, an
application called <i>apt</i> is under development; in its current state it
enable a user to install packages from a combination of remote and local
sources in one operation. If a package from the remote server is more recent
than the local one the remote package will be installed instead. In effect <i>apt</i>
allows installation primarily from a CDROM, with any superseded packages
downloaded from a remote server.
<p>The Debian developers are very careful to keep the main distribution
packages completely free in the GNU sense of the word. The least bit of
restrictive licensing, even if source is available, causes the package to be
placed in a separate directory, <kbd>/nonfree</kbd>. These packages are still
freely available, but licensing restrictions prevent some from being included
on CDROMs.
<hr>
<center><h3>Conclusion</h3></center>
<p>I predict that even with the installation improvements in Debian 2.0, it
will continue to be a technical user's distribution. This may change when the
proposed replacement for <i>dselect</i> is finished. The Debian community
nonetheless continues to grow, with over four hundred developers maintaining
packages. The selection of available packages is immense, with at least as
many pieces of software available in <i>*.deb</i> format as there are in
<i>*.rpm</i> format. I would recommend Debian for users who have cut their
teeth on another distribution, but for beginners I still will recommend
Redhat. Just remember, if you can get past the unintuitiveness of
<i>dselect</i> package installation, the rest is a breeze!
<HR>
<!-- hhmts start -->
Last modified: Mon 27 Jul 1998
<!-- hhmts end -->
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, Larry Ayers <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./rogers2.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./ayers2.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center><h1><font color="maroon">A Somewhat Far-Fetched Analogy</font></h1></center>
<center>
<h4>by <a href="mailto: layers@marktwain.net">Larry Ayers</a></h4>
</center>
<hr>
<p>Lately I've been musing about the effects Linux and free software in
general have had upon my world-view. It occurred to me that analogies can
be drawn between the realm of free software and another unrelated pursuit
which intermittently occupies my attention. Growing plants may seem about as
far from the realm of software and computers as it is possible to get, but
I've noticed some parallels.
<p>First, I'll ask why running Linux (and using free software in general) is
satisfying for so many computer users. These factors come to mind:
<ul>
<li>It frees the user from reliance upon unpredictable corporate entities.
<li>It's efficient, modifiable, and develops rapidly.
<li>There is a strong community spirit.
<li>Linux adheres to truly open standards.
<li>Networks well "out of the box", no additional components necessary.
<li>Bugs are usually fixed quickly, partly because
<li>the developers are accessible, responsive, and interested.
</ul>
<p>Open pollinated seeds are seeds which can be planted and yield a plant very
similar to its parents. Hybrid seeds are crosses between species or strains
of plants. Planting a seed from a hybrid plant will give unpredictable and
generally undesirable results. Large seed companies prefer marketing hybrids,
as the customer will have to buy new seed year after year, rather than saving
seeds from productive plants to plant in subsequent years. Beginning to see
where this is headed?
<p>In contrast, a grower who saves seed from open-pollinated plants can exert
an influence on the variety by selecting seed from especially healthy and
productive plants. This evolving strain will eventually become better adapted
to the local soil and climate. Coincidentally enough, someone who keeps a
plant variety alive through the years is referred to as the maintainer of the
variety, and like a maintainer of a free software package, attempts to pass
the responsibility on when he or she is unable to continue the effort.
<p>All too often a favorite vegetable or flower variety is discontinued by a
large seed company; if the plant was a hybrid it's probably gone forever, but
even if the variety comes true from seed it won't survive unless someone
happened to save seed. Ever seen a favorite piece of commercial software
become abandoned by the company which supported it?
<p>If the multinational seed houses have points in common with the large
commercial software firms, there is also a parallel between vendors of Linux
distributions and the growing number of small seed companies which sell
open-pollinated and heirloom seeds. Both of these types of companies service
a niche market, and their customers can duplicate and redistribute the
products sold. The potential for great profit is less than when selling
proprietary and unreproducible goods, but the customer-base in both instances
is growing.
<p>Both the free-software and non-hybrid seed communities exist rather quietly
in society. There is little advertising, especially in the mass media,
because large commercial interests who can afford such publicity aren't
involved. The free software and Linux communities have benefited greatly from
the ubiquity of internet access, while the heirloom plant growers network
through such organizations as the Seed Savers Exchange.
<p>What's really at stake here is the ability to control and mold one segment
of a person's environment, whether that segment is composed of bits or genes.
I think that as society becomes more complex, heavily-populated, and
bureaucratic, the areas of individual autonomy dwindle. These two fringe
realms discussed above, as well as others with similar characteristics, will
surely increase in prominence as time passes.
<p>
<hr>
<!-- hhmts start -->
Last modified: Mon 27 Jul 1998
<!-- hhmts end -->
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, Larry Ayers <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./ayers1.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./raymond.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<font color="navy">A <I>Linux Journal</I> Preview</font>:
This article will appear in the November issue of <I>Linux Journal</I>.
<P> <HR> <P>
<H1 ALIGN=CENTER><FONT COLOR="#ff0000">Open Source's First Six Months</FONT></H1>
<center>
<H4>By <a href="mailto:esr@thyrsus.com">Eric Raymond</a></H4>
</center>
<P> <HR> <P>
Six months ago yesterday as I write, Netscape announced their
intention to release the source code of Navigator. In that time,
we've seen once again that there are very few things as powerful as an
idea whose time has come.<P>
I'm reminded of this every time I surf the Web these days. The <A
HREF="http://www.opensource.org">Open Source</A> meme is everywhere.
It seems you can't open a technical or business magazine these days
without tripping over an admiring article about Linux. Or an
interview with Linus Torvalds. Or an interview with...er...me.<P>
I've ended up near the center of the crazy and wonderful things
happening now half by accident. When I composed <A
HREF="http://www.tuxedo.org/~esr/writings/cathedral-bazaar/">The
Cathedral and the Bazaar</A> a bit more than a year ago, I was aiming
to explain the Linux culture to itself, and explore some interesting
and somewhat heterodox ideas about software development. If anybody
had suggested to me then that the paper was going to motivate something
like the Netscape source release, I would have wondered what drugs
they'd been smoking.<P>
But that's what happened, and I found myself thrust into the role of
leading advocate and semi-official speaker-to-journalists for a hacker
community suddenly feeling its oats. I decided to take that job
seriously, because somebody needed to do it and I knew how and nobody
else was really trying very hard. (I had the advantage of experience;
I'd been in this role before, for lesser stakes, after the New
Hacker's Dictionary came out in 1991.)<P>
The point of all this personal stuff is that I've had an almost
uniquely privileged view of the early days of the open-source
revolution -- as an observer, as a theorist, as a communicator, and as
an active player in helping shape some of the major events.<P>
<H1><FONT COLOR="#ff0000">We've come a long way, baby...</FONT></H1>
In this essay, I intend to do three things. One: celebrate the
incredible victories of the last six months. Two: share my thinking
about the battles being fought right now. And three: consider where
we need to go in the future and what we need to do, to ensure that
open source is no mere fad but a genuine transformative revolution
that changes the rules of the software industry forever.<P>
When you're living on Internet time, I know it can be hard to remember
last week, let alone last year. But take a moment to think back to
New Year's Day 1998. Before the <a
href="http://www.netscape.com/newsref/pr/newsrelease558.html">Netscape
announcement</a>. Before <a
href="http://www.corelcomputer.com/products/announcement.htm">Corel</a>.
Before IBM <a href="http://www.ibm.com/News/1998/06/223.phtml">got
behind Apache</a>. Before Oracle and Informix and Interbase announced
they'd be porting their flagship database projects to Linux. We've
come a long way, baby!<P>
In fact, we've come an astonishingly long way in a short time. Six
months ago `free software' was barely a blip on the radar screens of
the computer trade press and the corporate world -- and what they
thought they knew, they didn't like. Today, `open source' is a hot
topic not just in the trade press but in the most influential of the
business-news magazines that shape corporate thinking.<P>
The <a href="http://www.economist.com">Economist</a>'s July 10 article
was a milestone; another is coming up August 10th, when I'm told <a
href="http://www.forbes.com">Forbes</a> will run an explanation of the
concept as their cover story.<P>
The campaign also went after corporate endorsement of open-source
software. We've got it, in spades. IBM -- <strong>IBM!</strong> --
is in our corner now. The symbolism and the substance of that fact
alone is astounding.<P>
<H1><FONT COLOR="#ff0000">We haven't shot ourselves in the foot...</FONT></H1>
The last six months are also notable for some things I feared early on
that did <strong>not</strong> happen. Despite initially sharp debate
and continuing objections in some quarters, the hacker community did
<strong>not</strong> get bogged down in a loud and divisive factional
fight over the new tactics and terminology. Bruce Perens and I and
the other front-line participants in the Open Source campaign did not
get publically savaged for trying to gently lead the community in a
new direction. And nobody burnt us in effigy for actually
succeeding!<P>
The maturity and pragmatism with which the community backed our play
made a critical difference. It has meant that <strong>the story
stayed positive</strong>, that we have been able to present open
source as the product of a coherent and effective engineering
tradition, one able to sustain the momentum and meet the challenge of
what the corporate word considers "real support". It has denied the
would-be bashers and Gates-worshippers among the press the easy option
to dismiss us all as a bunch of fractious flakes.<P>
<strong>We've all done well</strong>. We've gotten our message out
and we've kept our own house in order -- and all this while continuing
to crank out key advances that undermine the case for closed software
and increase our leverage, like <a
href="http://www.transvirtual.com/">Kaffe 1.0</a>. What comes next?<P>
<H1><FONT COLOR="#ff0000">Towards world domination...</FONT></H1>
I see several challenges before us:<P>
<strong>First:</strong> the press campaign isn't over by any means.
When I first conceived it back in February, I already knew where I
wanted to see positive stories about open source. The <em>Wall Street
Journal</em>, the <em>Economist</em>, <em>Forbes</em>,
<em>Barron</em>, and the <em>New York Times</em>.<P>
Why those? Because if we <strong>truly desire</strong> world
domination, we've got to get our LSD into the corporate elite's
conceptual water supply and alter the beast's consciousness. That
means we need to co-opt the media that shape decision-making at the
highest corporate levels of the Fortune 500. Personally, all the
press interviews and stuff I've done have been aimed towards the one
goal of becoming visible enough to those guys that <strong>they would
come to us</strong> wanting to know the open source community's
story.<P>
This has begun to happen (besides the Forbes interview, I was a
background source for the <em>Economist</em> coverage) -- but it's
nowhere near finished. It won't be finished until they have
<strong>all</strong> gotten and spread the message, and the superior
reliability/quality/cost advantages of open source have become
diffused common knowledge among the CEOs, CTOs, and CIOs who read
them.<P>
<strong>Second</strong>: When I first wrote my analysis of <a
href="http://www.opensource.org/for-suits.html">business models</a>, one of my conclusions was
that we'd have our best short-term chances of converting established
`name' vendors by pushing the clear advantages of <a
href="http://www.opensource.org/for-suits.html#frosting">widget frosting</a>. Therefore my
master plan included concerted attempts to persuade hardware makers to
open up their software.<P>
Though my personal approaches to a couple of vendors were
unsuccessful, then-president of Corel Computer's speech at UniForum
made it clear that CatB and the Netscape example had tipped them over
the edge. Subsequently Leonard Zuboff scored big working from the
inside with Adaptec (one of the companies I had originally targeted
but never got to). So we know this path can be fruitful.<P>
A lot more evangelizing remains to be done here. Any of you who work
on with vendors of network cards, graphics cards, disk controllers and
other peripherals should be helping us push from the inside. Write
Bruce Perens or me about this if you think you might be positioned to
help; combination Mister-Inside/Mister-Outside approaches are known to
work well here.<P>
<strong>Third</strong>: The Oracle/Informix/Interbase announcements
and SGI's official backing for Samba open up another front. (Actually
we're ahead of my projections here; I wasn't expecting the big
database vendors to roll over for another three months or so.) That
third front is the ability to get open-source software into large
corporate networks and data centers in roles outside of its
traditional territory in Internet sevices and development.<P>
One of the biggest roadblocks in our way was the people who said ``OK,
so maybe Linux is technically better, but we can't get real enterprise
applications for it.'' Well, somehow I don't think we'll be hearing
<strong>that</strong> song anymore! The big-database announcements
should put the `no real apps' shibboleth permanently to rest.<P>
So our next challenge is to actually get some Fortune 500 companies to
cut over from NT to Linux or *BSD-based enterprise servers for their
critical corporate databases, <strong>and go public about doing
that</strong>.<P>
Getting them to switch shouldn't be very hard, given the dog's-vomit
reliability level of NT (waving a copy of <a
href="http://www.kirch.net/unix-nt.html">John Kirch's white paper</a>
at a techie should often be sufficient). In fact, I expect this will
swiftly begin to happen even without any nudging from us.<P>
But that will only be half the battle. Because the ugly political
reality is this: The techies with day-to-day operational
responsibility that are doing the actual switching are quite likely to
feel pressure to <strong>hide</strong> the switch from their
NT-brainwashed bosses. Samba is a huge win for these beleaguered
techies; it enables open-source fans to stealth their Linux boxes so
they look like Microsoft servers that somehow miraculously fail to
suck.<P>
There's a problem with this, however, that's almost serious enough to
make me wish Samba didn't exist. While stealthing open-source boxes
will solve a lot of individual problems, it won't give us what we need
to counteract the attack marketing and FUD-mongering that we are going
to start seeing big-time (count on it) as soon as Microsoft wakes up
to the magnitude of the threat we actually pose. It won't be enough
to have a presence; we'll need a <strong>visible</strong> presence,
visibly succeeding.<P>
So I have a challenge for anybody reading this with a job in a Fortune
500 data-center; start laying the groundwork <strong>now</strong>.
Pass around the <a href="http://www.kirch.net/unix-nt.html">Kirch
paper</a> to your colleagues and bosses. Start whatever
process you need to get an Oracle- or Informix- or
Interbase-over-Linux pilot approved -- or get prepared to just go ahead
and <strong>do it</strong> on the
forgiveness-is-easier-than-permission principle. Some of these
vendors say they're planning to offer cheap evaluation copies;
grab them and <strong>go</strong>!<P>
I and the other front-line participants in the Open Source campaign
will be doing our damnedest to smooth your path, working the media
to convince your bosses that everybody's doing it and it's a safe,
soft option that will look good on their performance reports. This,
of course, will be a self-fulfilling prophecy...<P>
<strong>Fourth:</strong> Finally, of course, there's the battle for
the desktop -- Linus's original focus in the master plan for world
domination.<P>
Yes, we still need to take the desktop. And the most fundamental
thing we still need for that is a zero-administration desktop
environment. Either GNOME or KDE will give us most of that; the other
must-have, for the typical non-techie user, is absolutely painless
setup of Ethernet, SLIP, and PPP connections.<P>
Beyond that, we need a rock-solid office suite, integrated with the
winning environment, that includes the Big Three applications --
spreadsheet, light-duty database and a word processor. I guess
Applix and StarOffice come close, but neither are GNOME- or KDE-aware yet.
Corel's port of WordPerfect will certainly help.<P>
Beyond repeating these obvious things there's not much else I'll say
about this, because there's little the Open Source campaign can do to
remedy the problem directly. Everybody knows that native office
applications, well documented and usable by non-techies, are among the
few things we're still missing. Looking around Sunsite, I'd say there
might be a couple of promising candidates out there, like Maxwell and
Xxl. What they mainly need, I'd guess, is documentation and testing.
Would somebody with tech-writing please volunteer?<P>
But this is probably getting into too much detail. The important
thought I'd like to leave you with is this:
<H1><FONT COLOR="#ff0000">We're winning!</FONT></H1>
<strong>Yes, we're winning</strong>. We're on a roll. The Linux user
base is doubling every year. The big software vendors are being
forced to take notice by their customers. <a
href="http://www.redhat.com/redhat/datapro.html">Datapro</a> even says
Linux gets the best overall satisfaction ratings from managers and
directors of information systems in large organizations. I guess that
means not all of them are pointy-haired bosses...<P>
The explosive growth of the Internet and the staggering complexity of
modern software development have clearly revealed the
<strong>fatal weaknesses of the closed-source model</strong>. The people
who get paid big bucks to worry about these things for Fortune 500
have understood for a while that something is deeply wrong with the
conventional development process. They've seen the problem become
acute as the complexity of software requirements has escalated. But
they've been unable to imagine any alternative.<P>
<strong>We are offering that alternative.</strong> I believe this is
why the Open Source campaign has been able to make such remarkable
progress in changing the terms of debate over the last six months.
It's because we're moving into a conceptual vacuum with a simple but
powerful demonstration -- that hierarchy and closure and secrecy are
weak, losing strategies in a complex and rapidly-changing environment.
The rising complexity of software requirements has reached a level
such that only open source and peer review have any prayer of being
effective tactics in the future.<P>
The <em>Economist</em> article was titled ``Revenge of the Hackers'',
and that's appropriate -- because we are now re-making the software
industry in the image of the hacker culture. We are proving every day
that <strong>we</strong> are the people with the drive and the vision
that will lead the software industry into the next century.<P>
<P>
<ADDRESS>Eric S. Raymond <A HREF="mailto:esr@thyrsus.com">&lt;esr@thyrsus.com&gt;</A></ADDRESS>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, Eric Raymond <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./ayers2.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./pavlicek.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">A PERSONAL LINUX/ALPHA SYSTEM: 64 BITS FOR UNDER $500</font></H1>
<H4>by <A HREF="mailto:pavlicek@altavista.net">Russell C. Pavlicek</A></H4>
</center>
<P> <HR> <P>
<!--
<center>
<img src="udb.gif">
</center>
-->
<H3>BACKGROUND</H3>
<P>
This article is the result of my efforts to build a personal Digital
Alpha workstation to run Linux/Alpha. For under $500 (US), I assembled a
166 MHz Universal Desktop Box (often called a UDB or Multia) with a half
gigabyte of disk space, 32 megabytes of memory, 2x CD ROM drive, ethernet port,
2 serial ports, and a parallel port. For a few dollars more, this could
easily be expanded with more disk and RAM.
<P>
Rather than engage in a lengthy discourse on how I went about building my
particular Linux/Alpha workstation, I'd like to share my observations
regarding the Alpha-specific peculiarities I encountered.
I had used Linux/x86 for years, but I found that there were some
Alpha installation issues which were brand new to me. Once I understood
these few issues, it was simple to construct a useful Linux/Alpha system.
<P>
<H3>WHY MAKE AN INEXPENSIVE ALPHA SYSTEM?</H3>
<P>
Why indeed? When the usual x86 offerings are inexpensive and
omnipresent, why bother constructing a low-end Linux/Alpha box?
<OL>
<P>
<LI><I>It makes a decent, inexpensive 64-bit development and testing platform.
</I></LI>
<P>
There's lots of talk today about running 64-bit applications. But much
of the discussion is nothing more than that -- talk. If you want to find
out if your application will survive and thrive in 64 bits, here is a very
low cost
opportunity to try it out. A low cost Linux/Alpha platform represents an
excellent opportunity for porting and testing software in a true 64-bit
environment.
<P>
<LI><I>It is an excellent proof-of-concept system for faster Alpha systems.
</I></LI>
<P>
Just as many organizations are beginning to see that Linux can be used to their
competitive advantage, others are beginning to see that the Linux/Alpha
combination can be used in environments where extreme horsepower is
required for certain tasks. However, those who hold the purse strings
are wary of pouring money into a different hardware architecture until they
have concrete proof that the new system will do the job (and rightfully so).
An inexpensive Linux/Alpha system becomes
an ideal prototype that can demonstrate the possible effectiveness of the
proposed solution without incurring high costs. Once the concept is validated,
it may be possible to secure management backing for a full-blown Linux/Alpha
solution.
<P>
<LI><I>It is a development tool for Linux/IA64.
</I></LI>
<P>
The Intel IA64 architecture is coming with the expected release of Intel's
"Merced" processor
around the year 2000. Many UNIX vendors are lining up to make sure that
their particular UNIX implementation becomes the standard UNIX for the new
architecture. Many Linux folks, of course, would like to see Linux/IA64
enter the fray early so that early adopters of the IA64 architecture might
find themselves looking at Linux/IA64 as a viable first 64-bit operating system.
<!--
And we know that the more people use Linux, the more likely they are to
love Linux. Linux can sell itself when people begin to use it.
-->
<P>
So what does Linux/Alpha have to do with this? Well, some programs in the
mountain of Open Source code that we find in the Linux world are
not currently functional in the 64 bit world of Linux/Alpha.
And many new programs have to be tested on a
64-bit environment to make sure they will make the jump to Linux/IA64.
We need to make sure that all those programs that add value to Linux are
64-bit friendly when IA64 hits the streets. An excellent way of doing that
is through porting the code to the 64-bit Linux/Alpha platform. Not only will
the Linux world be ready to invade the IA64 space when it is birthed, but
this will also serve to further solidify the Linux/Alpha offering.
<P>
<LI><I>Linux/Alpha solutions are becoming more cost effective
</I></LI>
<P>
I've met many people over the past few years who desired to use Linux/Alpha,
but could not afford the price tag. Now, however, it is clear that falling
hardware prices and the availability of used Alpha machines is clearing the
way for people to use Linux/Alpha. Just recently, retailers like
<A HREF="http://www.lsl.com/">Linux Systems Labs</A> began selling low-priced
Red Hat Linux/Alpha CDs (GPL distribution). And the long-awaited Debian V2
will support the Alpha platform as well.
<P>
There has never been a better time to take a look at Linux/Alpha.
<P>
<LI><I>Experience, experience, experience!
</I></LI>
<P>
It never hurts to add more current technical expertise to your resume. And
experience in a 64-bit UNIX implementation could look awfully nice on the
resume when many companies begin employing 64-bit architectures like Alpha
and IA64.
<P>
<LI><I>My reason...
</I></LI>
<P>
I work for Compaq Computer Corporation (in the part of Compaq which used
to be Digital Equipment
Corporation) as a Technical Consultant in the Networks and Systems
Integration Services (NSIS) organization in the US Federal
Government Region. It is my desire to be ready to serve Linux/Alpha
customers in the Federal Government, so I decided to prepare myself by
personally purchasing, installing, and using a Linux/Alpha system.
<P>
I have already used Linux/x86 successfully as a part of two customer engagements
within the past year. A few of my coworkers locally have also used
Linux/x86 in customer engagements during that timeframe. I haven't seen
any Linux/Alpha work yet, but I intend to be ready when it comes!
<P>
<LI><I>My <B>other</B> reason...
</I></LI>
<P>
And let's not forget the <B>big</B> reason: <I>Linux/Alpha is a blast!</I>
If you thought Linux was fun to work with on the x86 architecture, wait until
you have 64 bits to play with!
</OL>
<P>
<H3>THE COSTS:</H3>
<P>
As the sole breadwinner for a family of four in the greater Washington DC
area, I do not have great sums of money to pour into development of a
computer system of any sort. I've built several PCs over the years and I've
always followed the same basic rules: stay well behind the technology curve
and keep it CHEAP! Quality is a concern (building junk is a total waste of
money; you lose more by building garbage than by building something that is
more expensive but functional), but financial limitations are quite real.
So, by buying good used products and/or non-current unused products, I can
shave the price down to acceptable levels without sacrificing usability.
Sure, I'd like to run dual 600 MHz Alpha processors with 50 gigabytes of disk
and a gigabyte of RAM -- but I'd prefer to stay married, thank you!
<P>
With these guidelines in mind, I purchased all of the following pieces through
on-line auctions (I used
<A HREF="http://www.ebay.com/">eBay</A>,
<A HREF="http://www.haggle.com/">Haggle</A>,
and <A HREF="http://www.onsale.com/">Onsale</A>) and local computer shows in
the first few months of 1998.
<P>
Here is what I assembled:
<P>
<!--- >
<OL>
<LI>DEC Universal Desktop Box (UDB; aka Multia) $189</LI>
<LI>TI 16 MB 72 Pin Parity Memory $29</LI>
<LI>16 MB 72 Pin Parity Memory $38</LI>
<LI>IBM 540 MB SCSI Disk $44</LI>
<LI>Toshiba SCSI 2x CD $25</LI>
<LI>Generic SCSI Cable $16</LI>
<LI>Generic Internal SCSI Cable $13</LI>
<LI>Mitsumi Keyboard $13</LI>
<LI>NEC SVGA Monitor $94</LI>
<LI>DEC Mouse (free; included with UDB)</LI>
<LI>Generic SCSI Case (free; had this already)</LI>
<LI>Red Hat Powertools 5.0 $19</LI>
<P>
<P>*** TOTAL *** $480
</OL>
< --->
<TABLE border=2>
<TR><TD width=30>1.</TD><TD width=300>DEC Universal Desktop Box (UDB; aka Multia)</TD><TD width=160>$189</TD></TR>
<TR><TD>2.</TD><TD>TI 16 MB 72 Pin Parity Memory</TD><TD>$29</TD></TR>
<TR><TD>3.</TD><TD>16 MB 72 Pin Parity Memory</TD><TD>$38</TD></TR>
<TR><TD>4.</TD><TD>IBM 540 MB SCSI Disk</TD><TD>$44</TD></TR>
<TR><TD>5.</TD><TD>Toshiba SCSI 2x CD</TD><TD>$25</TD></TR>
<TR><TD>6.</TD><TD>Generic SCSI Cable</TD><TD>$16</TD></TR>
<TR><TD>7.</TD><TD>Generic Internal SCSI Cable</TD><TD>$13</TD></TR>
<TR><TD>8.</TD><TD>Mitsumi Keyboard (PS/2 style)</TD><TD>$13</TD></TR>
<TR><TD>9.</TD><TD>NEC SVGA Monitor</TD><TD>$94</TD></TR>
<TR><TD>10.</TD><TD>DEC Mouse (PS/2 style)</TD><TD>(free; included with UDB)</TD></TR>
<TR><TD>11.</TD><TD>Generic SCSI Case</TD><TD>(free; had this already)</TD></TR>
<TR><TD>12.</TD><TD>Red Hat Powertools 5.0</TD><TD>$19</TD></TR>
<P>
<TR><TD>&nbsp</TD><TD>*** TOTAL ***</TD><TD>$480</TD></TR>
</TABLE>
<H3>THE GOTCHAS:</H3>
<P>
As a user of Linux/x86 since 1995, I've grown accustomed to the capabilities
and methodologies of the Linux/x86 world. I found a handful of differences
in the Linux/Alpha world which are worth noting to someone who wants to make
the jump to 64 bits:
<OL>
<LI><I>A Linux/Alpha system with a single hard drive uses at least three partitions
</I></LI>
<P>
The Alpha system needs to load the initial boot code from a partition that
the Alpha console (in ROM) understands. So, a single disk Linux/Alpha system
is likely to have at least three partitions:
<P>
<OL>
<LI>/dev/sda1 tiny DOS FAT partition containing the loader</LI>
<LI>/dev/sda2 root partition</LI>
<LI>/dev/sda3 swap partition</LI>
</OL>
<P>
Linux/x86 folks will obviously be used to the need for root and swap partitions,
but the floppy-sized FAT partition containing LINLOAD.EXE and MILO is a
different concept.
<P>
<LI><I>MILO instead of LILO
</I></LI>
<P>
Linux/x86 has the simple, yet highly useful, LILO (LInux LOader) to boot Linux
from the hard drive. Linux/Alpha has MILO (MIni LOader) to accomplish the
same task, but using a slightly different methodology. Rather than residing
in a boot block, MILO resides in the tiny DOS-formatted partition on the SCSI
drive (normally /dev/sda1). The Alpha console boots MILO from the DOS FAT
partition, then MILO boots Linux/Alpha from the Ext2 partition (/dev/sda2).
<P>
<LI><I>Multiple kernels
</I></LI>
<P>
Since there are often differences between the hardware standardly found on
different Alpha machines, you are given a choice of pre-built kernels to
use when installing the operating system. It is generally quite easy to
select the appropriate kernel for your machine, since the documentation
very clearly maps the available kernels to most common Alpha models.
But it is still different than most Linux/x86 installation procedures.
<P>
<LI><I>Different processor architecture
</I></LI>
<P>
The Alpha processor family and the x86 processor family are two different
animals. As one might expect, a 64-bit RISC processor and a 32-bit CISC
processor go about their respective tasks in very different ways. What does
this mean to someone who wants to build a Linux/Alpha workstation? Don't
be stingy with memory or processor speed if you can help it. In particular,
I've found that my Linux/Alpha system performs much better with additional
memory. There is quite a noticeable improvement in speed when running at
32 megabytes as opposed to 16 megabytes. In fact, the first real upgrade
I hope to perform is to add more memory to the system. Thankfully,
memory is much more affordable than it was at the beginning of the decade,
so adding a few more megabytes isn't a particularly expensive proposition.
<P>
<P>
<LI><I>Check out the limitations of the Alpha you intend to purchase
</I></LI>
<P>
It is important to remember that some Alpha machines (notably the older
Turbochannel bus machines) do not currently run Linux. Make certain that
the Alpha system you intend to purchase is listed on the
<A HREF="http://www.azstarnet.com/~axplinux/">
Linux/Alpha Home Page</A>. Also, if you select the UDB, be
aware that it is a bounded box -- there is essentially no room for an internal
disk drive (yes, you can use a 2.5 inch SCSI drive, but that is expensive
compared to a 3.5 inch SCSI drive), there is absolutely no room for a CDROM
drive in the box, and the processor speed is relatively slow. If you intend
to upgrade
the system to a faster Alpha processor in the future, you'd probably be better
off with an Alpha with a more standard case and motherboard. I chose the UDB
because it was available very cheaply and I already owned an external drive
cabinet that I could use to mount the hard drive and CDROM drive.
I found some excellent technical information online provided by
<A HREF="http://www.annex.co.uk/systems/udbtroub.html">Annex Technology</A>.
<P>
<LI><I>Use an installation "cookbook", if available
</I></LI>
<P>
While the Red Hat 5.0 Linux/Alpha installation is quite good, it is not
quite as simple as the Linux/x86 installation. As I've already mentioned,
you'll need to select a kernel for your machine, create a small FAT boot
partition, as well as a few other simple steps which you didn't need to
perform on a Linux/x86 install. It is helpful, then, to
locate and use a "cookbook" or "cheat sheet" to help you during
the installation.
<P>
The UDB I purchased was originally sold by Starship Computer via one of the
Internet auctions. I purchased the UDB used from the original buyer who
no longer needed the unit. This person included the original installation
instructions supplied by Starship in the box. The instructions were quite
good and very detailed. I have already seen similar documents circulating
in the newsgroups pertaining to the installation of Red Hat 5.1 for Alpha.
If you can obtain such an installation guide,
it can save you time and keep you from forgetting small Alpha-specific
details.
<P>
<LI><I>Beware unmatched memory
</I></LI>
<P>
For the UDB, at least, matched memory SIMMs are critical. The first set
I obtained from an auction which advertised new SIMMs shipped together.
They did not specifically say that they were matched. They were not.
That's one mistake I will not make again. The SIMMs did work together
for a while, but once the machine ran for a while, it began to generate
memory errors. I replaced them with a set of matched SIMMs and all memory
problems ceased.
<P>
<LI><I>Thinwire Ethernet problem for UDB kernel ("noname") for Red Hat 5.0
</I></LI>
<P>
I found out that the kernel supplied in Red Hat 5.0 for the UDB (noname.img)
had a bug that prevented it from using the thinwire ethernet adapter. I
simply downloaded the kernel supplied with Red Hat 4.2 and I was back in
business.
<P>
This was a problem that took much longer to identify than to fix.
The <A HREF="http://www.redhat.com/support/docs/errata.html">
Red Hat errata page (http://www.redhat.com/support/docs/errata.html)</A>,
one of the first places to turn with possible
distribution errors, was silent on this subject at the time.
As there are less Linux/Alpha users in the world than Linux/x86, the newsgroups
were not spilling over with information on this problem as one would expect
if there was a kernel problem in a Linux/x86 distribution. Yet the newsgroups
held the answer nonetheless; it just took a little longer to locate the
message which gave me the key to the problem.
<P>
<LI><I>PPP was broken in Red Hat 5.0
</I></LI>
<P>
The pppd package supplied in Red Hat 5.0 didn't work properly on Alpha.
I consulted the <A HREF="http://www.redhat.com/support/docs/errata.html">
Red Hat errata</A> on the Red Hat homepage and downloaded the
corrected PPP kit. One rpm command later, I had a working PPP protocol.
Again, it took longer to identify the problem than it did to correct it.
<P>
<LI><I>X Windows
</I></LI>
<P>
While X Windows is usable with only 16 MB of memory, it will need to swap
out jobs just to start up. 32 MB will yield a much faster X Windows system,
as it will be able to load without swapping. If you can afford more memory,
it is to your benefit.
<P>
<LI><I>Where's the browser?
</I></LI>
<P>
Perhaps my greatest frustration was the lack of a fully-functional, native,
graphical, 64-bit web browser. Lynx, a character-cell browser, is useful
for downloading software upgrades, if needed, such as the kernel and PPP
kits mentioned above. Unfortunately, it is not as helpful for general
browsing, due to its non-graphical nature. There is Grail, which is written
in Python, but the current version (0.4) seems too flaky for normal use.
One common solution seems to be to use Netscape for x86 under the EM86
emulator (below), but it's not a "native" Alpha solution.
<P>
As of this writing, the best native solution I've found is
<A HREF="http://www.troll.no/qtmozilla/">QtMozilla</A>, Mozilla
compiled using the Qt libraries. It was created as a demonstration of Troll
Tech's Qt libraries, but it is quite usable. I have also seen reports of
other Linux/Alpha Mozilla implementations, so I hope that we will see a
stable, full-featured Mozilla for Alpha before very long.
<P>
<LI><I>EM86
</I></LI>
<P>
Don't forget about <A HREF="ftp://ftp.digital.com/pub/DEC/Linux-Alpha/em86/">
EM86</A>, Digital's software for running Linux/x86 binaries
on Linux/Alpha. You can find the latest kits at
<A HREF="ftp://ftp.digital.com/pub/DEC/Linux-Alpha/em86/">Digital's FTP location</A>.
Red Hat kernels included in the 5.0 and 5.1 distributions now support EM86 right out
of the box (no longer any need to rebuild the kernel). Also, kernels starting
with 2.0.34 (as well as the latest 2.1.x development kernel) have integrated
EM86 support without requiring the use
of patches before building. Be aware, though, that you may not find
the emulation speed acceptable on older, slower Alpha boxes.
<P>
<LI><I>Always read the documentation
</I></LI>
<P>
Make sure you read the FAQ
<A HREF="http://www.azstarnet.com/~axplinux/FAQ.html">
(http://www.azstarnet.com/~axplinux/FAQ.html)</A> and the chapter on the Alpha
installation in the
<A HREF="http://www.redhat.com/support/docs/rhl/RHL-5.0-Installation-Guide-HTML/manual/">
Red Hat Installation Guide</A>. And don't forget to check the
<A HREF="http://www.redhat.com/support/docs/errata.html">
Red Hat errata page (http://www.redhat.com/support/docs/errata.html)</A> for
any known problems in the distribution.
</OL>
<P>
<H3>CONCLUSION:</H3>
<P>
I found that building the UDB was an enlightening experience, as was
installing Red Hat Linux for Alpha 5.0. I have already used the system to
port 32-bit applications to a 64-bit platform. Even if it is not exactly a
whirlwind by current system standards, my inexpensive Linux/Alpha UDB system
has been a very worthwhile (and <I>fun</I>) acquisition.
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, Russell C. Pavlicek <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./raymond.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./pelletier.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<font color="navy">A <I>Linux Journal</I> Preview</font>:
This article will appear in the November issue of <I>Linux Journal</I>.
<P> <HR> <P>
<center>
<H1><font color="maroon">Product Review: The Roxen Challenger Web Server</font></H1>
<H4>By <a href="mailto:michel@colint.com">Michael Pelletier</a></H4>
</center>
<P> <HR> <P>
<ul>
<li>Manufacturer: Idonex
<li>E-mail: info@idonex.com
<li>URL: http://www.roxen.com/
<li>Price: $795 US for Idonex License
Free download of 1.2 beta (GPL)
<li>Reviewer:
</ul>
<P> <HR> <P>
The Roxen Challenger HTTP Web Server is a marvel ahead of it's time.
That's a bold, hard-to-prove statement for a web server when compared to the
amazing success of the Apache HTTP Server. Before you stop reading this,
you should consider that there is nothing wrong with having two subtly
different, but very good tools.
<p>
Apache is designed from the ground up to be a simple, open, secure,
high-performance HTTP server, and it pays up in spades. Apache is the
natural choice for almost all web administrators weaned on NCSA CERN or a
commercial HTTP server like Netscape. However, Apache is not exactly
intuitive to configure, the configuration in question being three flat text
files. Apache also suffers from a monolithic structure (albeit plug-in
modularity is a new option if you compile it in) which requires recompiling
the source code when making changes or adding modules (such as proxy, database
access, etc.).
<p>
Roxen takes a different approach to HTTP server design. Roxen is easily
installed and configured. The user need only do the normal
<tt>./configure</tt> and <tt>make</tt> sequences after
unpacking the tar file and reading the README file.
This has worked flawlessly for me a dozen times on Intel Red Hat 4.2 and 5.0
machines. After compiling the Pike interpreter (we'll get to that), the
installation script tells you to point your browser to
http://localhost:<i>x</i>/, <i>x</i> being some random unassigned port. Where
the configuration interface server listens for your browser.
<p>
Pointing a browser to that URL brings up the on-line, web-centric configuration
interface. The first screen sets the configuration user and password
information for subsequent configuration sessions. Immediately, virtual
servers can be added, and adding a virtual server is a snap. My usual sequence
is to find a free IP and bind the hostname.domain to it. Create the aliased
Ethernet interface with <b>netcfg</b> specifying the chosen IP, switch to the Roxen
configuration interface and add a new server binding it (using simple, point and
click menus) to the interface just created, which Roxen automatically detects
and reverse looks up for me. Voil<\#225>, I have an instant virtual server;
the whole process taking less time than making a cup of coffee.
<p>
When creating the server, Roxen asks questions about what kind of server
is desired. The choices of Bare Bones, Standard, IPP (Internet Presence
Provider), Proxy or a copy of the configurations for any current servers in the
system. This gives lots of flexibility when working with more than just a
few virtual servers.
<p>
Each of the four choices is a certain set of loaded modules for each server.
Modules can be mixed and matched to make custom servers. Modules, also
written in Pike, can be loaded and
unloaded on the fly, and all Modules have a standard configuration interface
that plugs into the server configuration interface. Modules include the
file system, authentication, database access, CGI and FCGI execution,
on-the-fly graphics manipulation and more.
<p>
So how is this marvelous server put together? Roxen is written in the Pike
language. Pike is an interpreted, threaded C-like language based on an
older programming language for MUD systems. Pike is full blown and has a
graceful, clean style so much like C that any C programmer can pick
it up in minutes. This makes writing custom Roxen modules a snap. Pike's
home page has excellent, intelligently written documentation that is
completely cross-referenced, and includes a handy function index where many
old familiar buddies from the ANSI C libraries can be found.
<p>
The downside is that Pike, being a byte code interpreted language, is slower
than compiled and optimized C by a noticeable margin. Roxen 1.1 is also a bit
buggy, and Roxen 1.2 is still in beta. Having dabbled in 1.2 (which
installed <i>just</i> as cleanly as 1.1), I found it very cool with many new
modules, some of which are not available for Apache, such as on-the-fly
wizard generators and automatic table-formatting of SQL retrieved data.
A new update module contacts the Roxen central server in
Sweden and upgrades the server and all the modules to the newest
debugged versions, as well as offering to download any <i>new</i>
modules Idonex has created. 1.2 also uses the new threading built into the
latest version of Pike, increasing its performance for high or
eccentric load systems and allowing it to take advantage of multi-processor
systems.
<p>
The most powerful module in the Roxen set is the Roxen Mark-up Language
(RXML). RXML looks like HTML and is written directly into the HTML code.
When a client retrieves a document from the server, the server first parses
the document for RXML tags, changing the HTML output based on the tags used.
This is basically server side scripting ala server side Includes, in the
Apache parlance, but cleaner. For example:
<p>
<pre>
&lt;html>
&lt;head>
&lt;body>
&lt;if user=jane>
&lt;gtext scale=0.5 nfont=&quot;arial&quot; fg=&quot;blue&quot;
bg=&quot;white&quot;>Hi there Jane.&lt;/gtext>&lt;br>
&lt;else>
&lt;h1>Hey get outta here!&lt;/h1>
&lt;/if>
&lt;/body>&lt;/head>&lt;/html>
</pre>
The <tt>&lt;if>&lt;else>&lt;/if></tt> construct outputs different
HTML depending on whether the client fetching the page has authenticated
itself as the user <tt>jane</tt>. The <tt>&lt;gtext></tt> tag takes the text
and renders a gif image of it, on the fly, replacing the
<tt>&lt;gtext></tt> tag with an <tt>&lt;img></tt> tag whose
<b>src</b> is the generated image. Many options to gtext are
available including
transparency, sizes, bevels, automatic Javascript mouse responses and more.
Check out Roxen's home page for an example, or the
American Association for the Surgery of Trauma web page, where I used gtext
and RXML extensively.
<p>
Roxen's extreme ease of use and modularity make it a powerful tool for web
managers of all needs. The GNU GPL license for Roxen and Pike make the
price just right. Like all good GPL software, Pike and Roxen are backed by
an active, sharp Internet crowd of Pike programmers and Roxen-heads eager to
help you with your questions. Idonex also offers various levels of support
for very reasonable prices. The Roxen Server comes pre-packaged with a
manual and other non-GPL goodies (like 128bit SSL) from Idonex.
<P>
<h3>Resources</h3>
<p>
Pike Home Page: <A HREF="http://pike.idonex.se/">http://pike.idonex.se/</A>
<BR>
Idonex Home Page: <A HREF="http://www.idonex.se/">http://www.idonex.se/</A>
<BR>
Roxen Module Source: <A HREF="http://www.riverweb.com/source/">
http://www.riverweb.com/source/</A> <BR>
American Association for the Surgery of Trauma: <A
HREF="http://www.aast.org/">http://www.aast.org/</A> <BR>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, Michael Pelletier <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./pavlicek.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./hughes.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<font color="navy">A <I>Linux Journal</I> Review</font>:
This article appeared in the August issue of <I>Linux Journal</I>.
<P> <HR> <P>
<center>
<h1><font color="maroon">Selecting a Linux Distribution</font></h1>
<H4>By <a href="mailto:phil@ssc.com">Phil Hughes</a></H4>
</center>
<P> <HR> <P>
Any current Linux distribution most likely contains the software
needed to do your job, including kernel and
drivers, libraries, utilities and applications programs.
Still, one of the most common questions I hear is ``which
distribution should I get?'' This question is
answered by an assortment of people, each proclaiming their
favorite distribution is better than all the rest.
<p>
My new theory is that most people favor the first distribution they
successfully installed. Or, if they had problems with the first, they favor
the next distribution they install which addresses the problems of the
first.
<p>
Let's use me as an example. SLS was my first Linux installation.
Unfortunately, SLS
had a few bugs--in both the installation and the running system.
This, of course, isn't a surprise since this installation took place five
years ago.
<p>
Now, about this time, Patrick Volkerding came along and created Slackware. Pat
took the SLS distribution and fixed some problems. The result looked the same
as SLS and worked the same, but without bugs. To this day, I find Slackware
the easiest distribution to install.
<p>
I have, however, progressed beyond installation problems and found some
serious shortcomings in Slackware which have been addressed by other
distributions. Before I get into specifics, here is a rough estimate of
the number of times I have installed various distributions, in order of
first installation. I give you this information to help you understand the
basis of my opinions.
<p>
<ul>
<li> 100+ SLS/Slackware
<li> 5 MCC (a small distribution done for university students)
<li> 5 Yggdrasil
<li> 20 Red Hat
<li> 10 Caldera
<li> 20 Debian
<li> 5 S.u.S.E.
</ul>
<p>
That said, here is my blow-by-blow analysis of what is right and wrong
with each distribution. Note that this is my personal opinion--your
mileage will vary.
<p>
<h3>SLS/Slackware/MCC</h3>
<p>
All these distributions are easy to install and understand.
They were all designed to install from floppy disk, and
packages were in floppy-sized chunks. At one time, I could successfully
install Slackware without even having a monitor on the computer.
<p>
There are, however, costs associated with this simplicity. Software is
saved in compressed tar files. There is no information within the
distribution that shows how files interrelate, no dependencies and no
good path for upgrades. Not a problem if you just want to try
something, but for a multi-computer shop with long-term plans, this
initial simplicity can have unforeseen costs in the long run.
<p>
<h3>Yggdrasil</h3>
<p>
Yggdrasil offered the most promise with a GUI-based configuration.
Unfortunately, development stopped (or at least vanished from the
public eye), and it no longer offers anything vaguely current.
<p>
<h3>Red Hat</h3>
<p>
When I first looked at Marc Ewing's creation, I was impressed.
It had some GUI-based configuration tools and showed a lot of promise.
Over the years, Red Hat has continued to evolve and is easy to install and
configure. Red Hat introduced the RPM packaging system that offers
dependencies to help ensure loaded applications work with each other
and updating is easy. RPMs also offer pre- and post-install
and remove scripts which appear to be underutilized.
<p>
Version 4.2 has proven to be quite stable. The current release is 5.0, and
a 5.1 release with bug fixes is expected to again produce a
stable product.
<p>
The install sequence is streamlined to make it easy to do a standard
install. I see two things missing that, while making the install
appear easier, detract from what is actually needed:
<p>
<ol>
<li> The ability to save the desired configuration to floppy disk during the
installation process (something that both Caldera and S.u.S.E. offer) would simplify
subsequent installations on the same or other machines.
<li> The ability to create a boot floppy disk during installation.
</ol>
<p>
Red Hat has evolved into the most ``retailed'' distribution. First it
was in books by O'Reilly, then MacMillan and now IDG Books Worldwide. It also appears
to have a large retail shrink-wrap distribution in the U.S.
<p>
Versions of Red Hat are available for Digital Alpha and SunSPARC, as well
as Intel.
<p>
<h3>Caldera</h3>
<p>
The Caldera distribution was assembled by the Linux Support Team
(LST) in Germany--now a part of Caldera. Caldera, like Red Hat,
uses the RPM package format. Installation is similar to
Red Hat with the addition of the configuration save/restore option.
<p>
Caldera is different from other distributions at this time
in that it offers a series of systems including various commercial
packages such as a secure web server and an office suite. Caldera is
also the most ``commercial feeling'' as far as packaging and
presentation.
<p>
One complaint I received from a reviewer of my original version of this
article is that you cannot perform an upgrade. That is, you must save your
configuration files and then re-install.
<p>
<h3>Debian</h3>
<p>
Debian is one of the oldest distributions, but because development is
strictly by a team of volunteers, it has tended to evolve more slowly.
Since development is performed by a geographically diverse group,
the ability to manage and integrate upgrades is of primary importance.
To that end, you can always upgrade a system by pointing it at
an FTP site and instructing it to get the latest versions
of all the packages currently installed. In some cases, a service needs
to be stopped. (For example, to upgrade <b>sendmail</b>, you would need to
stop it, replace the program and then restart it.) This is all done
automatically.
<p>
Debian deviates from the common RPM packaging format (although it can
install RPMs) by using its own .deb format. The .deb format is the
most versatile and includes dependency checking as well as pre- and
post-install and remove scripts. This is why the sendmail
example in the previous paragraph can be handled automatically.
<p>
The most difficult thing about Debian is the initial installation.
Or, put another way, fear of <b>dselect</b>, the installer program.
The design of dselect is old, and while it made sense when there were only
50-100 packages in a Linux install, it is out of control now that
there are around 1000. A replacement for dselect is being developed
and will be available in Debian 2.1.
<p>
Versions of Debian (with limited applications/utilities) are
available for Digital Alpha and M68k.
<p>
<h3>S.u.S.E.</h3>
<p>
S.u.S.E. is a German distribution with an installation ``look and feel'' similar to Caldera. It also uses the RPM package
format and offers a save/restore configuration option during
installation.
<p>
Two things make S.u.S.E. stand out from the others. First, XFree86
support tends to be better than other distributions because
S.u.S.E. works closely with the XFree86 team. Second, there are more
applications and utility programs in this distribution.
A full installation takes over 2GB of disk space.
<p>
YAST, the install/administration tool, can handle .deb and .tgz packages as
well as RPMs. Also, upgrades are quite easy and can be performed by putting
in a new CD or pointing YAST at the files and telling it to perform the
upgrade.
<p>
<h3>Which Do I Choose?</h3>
<p>
It depends. I have one system running Caldera, three running Red Hat
(a PC, a Digital Alpha and a SunSPARC), two running Slackware,
one running S.u.S.E. (a laptop) and quite a few running Debian.
(Yes, I personally own too many computers.)
<p>
Further, there are problems with all the distributions--not
the same problems, but problems nevertheless. As a result,
I don't see a perfect answer--yet.
This is not to say they don't work--just that each has its
inconsistencies and limitations. They all suffer from the lack of
a common administration tool.
<p>
At USENIX in 1997, Caldera announced a project called COAS (Caldera
Open Administration System). The discussion at the
conference showed there were more concepts to consider and a lot of
implementation work before COAS could offer a uniform installation
system that would meet the needs of the majority of Linux users.
<p>
Today, for a general-purpose system I tend to install Debian.
I do, however, install other systems for other purposes.
For example, I have S.u.S.E. on a new laptop because the volume of
software included makes a more impressive demo system.
<p>
A better question is, ``which one should you choose?'' The answer is
still, ``it depends.'' Here are some hints to help you along the way:
<p>
<ul>
<li> If everyone you know is running a particular distribution and
you are a newcomer, use the same one they do.
<li> If you like to roll your own--that is, you expect to
compile and install everything yourself--Slackware is probably for you.
<li> If you want to ``go with the crowd'' today, install
Red Hat.
<li> If you want ``everything'', install S.u.S.E.
<li> If you need the most ``commercial'' looking product
or you are a VAR (value-added reseller), pick Caldera.
<li> If the politics of free software is important to you and/or you
want to get involved in development of a distribution, pick
Debian.
<li> If you have a bunch of systems you need to interconnect
and upgrade, pick Debian or hope Caldera gets COAS completed.
</ul>
<p>
<h3>Conclusion</h3>
<p>
There is my input. Ask any other Linux user, and you will probably get
a different opinion from mine. If you are not sure you have the right answer,
there are some things you can do to make it possible to change
distributions in the future with minimal impact.
<p>
<ul>
<li> Make /home a separate file system. Then, if you change
distributions, you don't have to save and restore your files.
This also means you could have multiple distributions on one
computer and share /home between them.
<li> Select hardware supported by most distributions.
<li> If you need to add applications that don't come with the Linux
distribution, try to get ones that come with source code so
you can upgrade them and port them to different distributions.
<li> Start with a Linux archive CD set (such as InfoMagic's
Developer's Resource). That will give you at least three distributions
(Slackware, Debian and Red Hat) with which to play.
</ul>
<p>
Good luck and happy Linuxing.
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, Phil Hughes <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./pelletier.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./richardson.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
<!--===================================================================-->
<center>
<H1><font color="maroon">Some History and Other Things</font></H1>
<H4>By <a href="mailto:gazette@ssc.com">Marjorie Richardson</a></H4>
</center>
<P> <HR> <P>
I am often asked about the history of <I>Linux Journal</I> and <I>Linux
Gazette</I> and
how I think Linux has changed over the year. Here's the scoop.
<P>
Back in 1993, Phil Hughes saw the enormous potential for the Linux operating
system and its creator Linus Torvalds. Being a firm believer in open
software, he decided to start a magazine dedicated to Linux to encourage
the growth of this fledgling operating system. That magazine is <I>Linux
Journal</I>. Phil founded the magazine and acted as Editor for the first two
issues.
<P>
The first issue was published in March 1994 and had 48 pages. It contained
an interview with Linus and articles by many now familiar names:
Michael Johnson, Mark Komarinski, Ian Murdock, Arnold Robbins, Matt Welsh
and Robert Young. The first issue was primarily given away at trade shows
and sent to mailing lists; the second had over 900 subscribers. The subscriber
base and newsstand presence of the magazine has steadily increased to over
60,000 since that time, and we are currently at 100 pages.
<P>
The first two issues of <I>Linux Journal</I> were published by Robert Young.
After the second issue, Robert decided to start up Red Hat Software, and
Specialized Systems Consultants took over as publisher. Also with the third
issue, Michael Johnson took on the role of Editor and continued in that role
through the September 1996 issue. I became Editor on February 1, 1997 and
began work on the May issue.
<P>
I had begun work for SSC in April 1996 and the project I had the most fun
with was <I>Linux Gazette</I>. John Fisk had decided he just didn't have the time
to devote to the Gazette--what he had started as a learning experience had
blossomed into a very popular webzine. He posted issues whenever he had
time and in between got mail from people requesting he put it out on a more
regular basis. At any rate, he approached Phil requesting that Linux
Journal take over the Gazette. Phil said yes and gave the project to me in
August. This turned out to be a shrewd move on his part as taking care of
the Gazette gave me the necessary confidence to say yes when he asked me to
be Editor of <I>Linux Journal</I> the following February. Although I tried for a
while to outsource LG, it didn't work out and it is still in my hands. Good
thing I love it, since I do most of the work on it on my own time--outside
working hours.
<P>
<H3><I>Linux Gazette</I></H3>
<P>
<I>Linux Gazette</I> is the most popular page on our web site, helping to generate over
150,000 hits a day. All the authors are volunteer, and I am constantly
amazed at how much great content people are willing to spend their time
generating and then give it away. We have mirror sites worldwide and three
translation sites in Italy, France and Russia.
<P>
When I first began work at <I>Linux Journal</I> and people asked me where I
worked, the usual response was "What's Linux?" Today, not only do people
know what Linux is, they approach me to tell me how much they love it and
the magazine--this mainly happens when I am wearing a Linux T-shirt.
<P>
<H3>A Bit About Linux</H3>
<P>
This year has been a banner year for Linux in terms of market expansion
with two block-buster announcements. The first was Netscape's decision
to make Mozilla open source. <I>Linux Journal</I> had a
great interview with Marc Andreessen and Tom Paquin of Netscape in our
August issue and the second part of the interview is exclusively in this
issue of <I>LG</I>. With Netscape Navigator going Open Source, can
Sun's Java be far behind? Second, Corel and Corel
Computer announced they would be porting all their software to Linux and
that the new NetWinder would be sold with Linux installed. This
announcement came in May after our April issue which contained an interview
with Corel Computer's Eid Eid. I'm sure there was a direct correlation
between our interview and their decision. (smile)
<P>
Actually, it seems like we get a press release each week from someone
announcing their product will be supporting Linux. About two months ago,
one of these
was from Interbase telling us about the recent port of its popular database
to Linux. Now, on July 22, Informix has announced that they now support
Linux, and that it is available with both S.u.S.E. and Caldera. An
announcement from Oracle that they will be porting to Linux was made July
21.
In my opinion, sooner or later, Sybase will be following suit. Cobalt's Qube
microserver is yet another coup for Linux.
<P>
With companies like these supporting Linux, Linux will continue to expand
across the globe and, perhaps, even reach Linus' stated goal of world
domination.
<P>
While I was not able to attend the recent Linux Expo put on by Red Hat in
North Carolina, I have heard glowing reports. The vi editor won again over
Emacs in the "editor war". This year the war was a held as a paintball
tournament with vi winning three out of four games.
<P>
Linus' talk was well attended as usual. In it, he announced a
code freeze will be coming for the 2.2 kernel in the next month, with
the release due in late July or early August. This is good news indeed.
The addition of symmetrical multi-processing (SMP) has been a feature
eagerly awaited by many.
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, Marjorie Richardson <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./hughes.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./rogers1.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<P> <hr> <P>
<H4>
"Linux Gazette...<I>making Linux just a little more fun!</I>"
</H4>
<P> <HR> <P>
Hello, I wrote the first of these
articles in January.&nbsp; I am planning on many more articles in the future
but have just finished moving my family to the Olympic Peninsula from Ohio
after having been hired to work as a systems programmer for the University
of Washington.
<P> <HR> <P>
<CENTER>
<H1><font color="maroon">
The Standard C Library for Linux</font></H1>
<H3><font color="navy">
Part Two: &lt;stdio.h> character input/output</font></H3>
<H4>
By <A HREF="mailto:jrogers@u.washington.edu">James M. Rogers</A></H4></CENTER>
<P> <HR>
<P>The last article was on file operations in the standard input/output
library &lt;stdio.h>.&nbsp; This article is on reading and writing characters,
strings and arrays to and from a stream.&nbsp;&nbsp; I am assuming a knowledge
of c programming on the part of the reader.&nbsp; There is no guarantee
of accuracy in any of this information nor suitability for any purpose.
<P>As an example of character based processing we will use a program that
reads the number of characters, words and lines of a file from standard
input and prints the results out to standard out.&nbsp; Any errors encountered
will be printed to standard error.&nbsp; This will be a weak version of&nbsp;
wc.&nbsp; (type `man wc` for more information on this UNIX utility program.
<P>The code examples given for each function will typically not run unless
the the &lt;angle bracked>&nbsp;items are replaced with real code.&nbsp;
Normally these are things that have to be treated differently depending
on what you are trying to do.&nbsp; As always, if you see an error in my
documentation please tell me and I will correct myself in a later document.
<P><TT>-----------------------------------------------------------------</TT>
<BR><TT><FONT SIZE=-2>&nbsp;</FONT></TT>
<BR><TT><FONT SIZE=-2>#include &lt;stdio.h>&nbsp;&nbsp;&nbsp;&nbsp; /*
include the proper headers */</FONT></TT>
<P><TT><FONT SIZE=-2>#define&nbsp; IN 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* looking inside a word */</FONT></TT>
<BR><TT><FONT SIZE=-2>#define OUT 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* looking at white space */</FONT></TT>
<P><TT><FONT SIZE=-2>/* count the number of lines, words and characters
in standard input */</FONT></TT>
<P><TT><FONT SIZE=-2>main() {</FONT></TT>
<P><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp; int c,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* holds the character returned by getchar */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; characters,&nbsp;&nbsp;&nbsp;
/* the number of characters */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lines,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* the number of lines */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; words,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* the number of words */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; state;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* are we currently in or out of a word */</FONT></TT>
<P><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp; /* initialize the count and set
the state to outside a word */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp; state=OUT;</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp; characters = words = lines = 0;</FONT></TT>
<P><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp; /* get one character at a time
from standard in, until EOF */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp; while ((c = getchar()) != EOF)
{</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; characters++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* increment the count of characters */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch(c)
{</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '\n'
:</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
lines++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* increment the
count of lines */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
state = OUT;&nbsp;&nbsp;&nbsp;&nbsp; /* new-line is white space, outside
word */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '
' :</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
state = OUT;&nbsp;&nbsp;&nbsp;&nbsp; /* space is white space, outside word
*/</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '\t':</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
state = OUT;&nbsp;&nbsp;&nbsp;&nbsp; /* tab is white space, outsides word
*/</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default
:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*
otherwise we are in a word */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
if (state == OUT) {</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* if state is still out and we are in a word */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
/* then we are at the first letter of the word */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
state = IN;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* set the state to in */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
words++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* increment the
count of words */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp; }</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp; /*&nbsp; print the results with
a formatted print statement */</FONT></TT>
<BR><TT><FONT SIZE=-2>&nbsp;&nbsp;&nbsp; printf("%d %d %d\n", characters,
words, lines);</FONT></TT>
<BR><TT><FONT SIZE=-2>}</FONT></TT>
<P><TT>-----------------------------------------------------------------</TT>
<BR>&nbsp;
<P><B>To read a character from a stream,</B>
<P><TT>&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp; getchar (void);</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp; getc(FILE *stream);</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; int&nbsp; fgetc(FILE *stream);</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; int ungetc(int c, FILE *stream);</TT>
<P><TT>void </TT>this is left blank.
<BR><TT>FILE *stream </TT>is an already existing stream.
<BR><TT>int c </TT>is a character to be pushed back into the stream.
<P>These functions return an int with the value of the next character from
the stream.&nbsp; If there are no more characters then the end-of-file
indicator is set for the stream and the function returns EOF.&nbsp; If
there was a read error then the error indicator is set for the stream and
the function returns EOF.
<P><B>getchar</B> is used to read a single character from standard input.
<P><TT>&nbsp;&nbsp;&nbsp; int c;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; while((c = <B>getchar()</B>) != EOF) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;while not
the end of file read and process each character></TT>
<BR><TT>&nbsp;&nbsp;&nbsp; }</TT>
<P><B>getc</B> is used to read a single character from a stream.
<P><TT>&nbsp;&nbsp;&nbsp; int c;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; FILE *stream;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; if((stream = fopen ("filename", "r")) != (FILE
*)0) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while((c = <B>getc(</B>stream<B>)</B>)
!= EOF) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;process each
character></TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; } else {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;do error handling></TT>
<BR><TT>&nbsp;&nbsp;&nbsp; }</TT>
<P><B>fgetc</B> is used to read a single character from a stream.&nbsp;
getchar and getc are written in terms of fgetc: <TT>getchar()</TT> is the
same as <TT>fgetc(STDIN)</TT> and <TT>getc(x)</TT> is the same as <TT>fgetc(x)</TT>.
<P><TT>&nbsp;&nbsp;&nbsp; int c;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; FILE *stream;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; if((stream = fopen ("filename", "r")) != (FILE
*)0) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while((c = <B>fgetc(</B>stream<B>)</B>)
!= EOF) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;process each
character></TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; } else {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;do error handling</TT>>
<BR><TT>&nbsp;&nbsp;&nbsp; }</TT>
<P><B>ungetc</B> is used to push a character back into the stream when
you have read one character too many.&nbsp; This is a common problem for
compilers and pattern scanners.&nbsp; It is possible to push back more
than one character but this is not recommended as it is not portable.&nbsp;
An ungetc should follow a read and only push back a single character.
<P><TT>&nbsp;&nbsp;&nbsp; int c;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; FILE *stream;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; if((stream = fopen ("filename", "r")) != (FILE
*)0) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while((c = fgetc(stream))
!= EOF) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;process each
character></TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (some_condition)
{</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<B>ungetc(</B>c,stream<B>);</B></TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
break;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; } else {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do error handling</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; }</TT>
<P><B>To write a character to a stream,</B>
<P><TT>&nbsp;&nbsp;&nbsp; int&nbsp; putchar(int c);</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; int&nbsp; putc(int c, FILE *stream);</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; int fputc(int c, FILE *stream);</TT>
<P><TT>FILE *stream </TT>is an already existing stream.
<BR><TT>int c </TT>is the character to be written to the stream.
<P>These functions return the character written upon success.&nbsp; If
a write error occurs the error indicator is set for the stream and the
function returns an EOF.
<P><B>putchar</B> writes a character to standard out.&nbsp; <TT>putchar(x)</TT>
is the same as <TT>fputc(x, STDIN)</TT>
<BR>&nbsp;
<BR><TT>&nbsp;&nbsp;&nbsp; <B>putchar(</B>'x'<B>)</B>;</TT>
<P><B>putc</B> writes a character to the stream.&nbsp; <TT>putc(x,y)</TT>
is the same as <TT>fputc(x,y)</TT>
<P><TT>&nbsp;&nbsp;&nbsp; int c;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; FILE *stream;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; c='x';</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; if((stream = fopen ("filename", "w")) != (FILE
*)0) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <B>putc(</B>c, stream<B>)</B>;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; } else {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;error handling></TT>
<BR><TT>&nbsp;&nbsp;&nbsp; }</TT>
<P><B>fputc</B> writes a character to the stream.
<P><TT>&nbsp;&nbsp;&nbsp; int c;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; FILE *stream;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; c='y';</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; if((stream = fopen ("filename", "w")) != (FILE
*)0) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <B>fputc(</B>c, stream<B>)</B>;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; } else {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;error handling></TT>
<BR><TT>&nbsp;&nbsp;&nbsp; }</TT>
<P><B>To read a string from a stream,</B>
<P><TT>&nbsp;&nbsp;&nbsp; char&nbsp; *gets(char *s);</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; char *fgets(char *s, int n, FILE *stream);</TT>
<P><TT>char *s </TT>the string that will hold the result.
<BR><TT>int n </TT>the maximum number of characters to read.
<BR><TT>FILE *stream </TT>is an already existing stream.
<P>If the read is successful then the pointer to s is returned.&nbsp; If
EOF is encountered and no characters have been read into the string then
the string remains unchanged and a null pointer is returned.&nbsp; If a
read error occurs then the string contents are possibly changed in an undefined
manner and a null pointer is returned.
<P><B>gets</B> reads from the stream into the string until the new line
character or end-of-file marker is reached.&nbsp; <B>Never use this function.&nbsp;
Use fgets instead.</B>&nbsp; There is no bounds checking to see if the
returned string fits into the space allowcated for it.&nbsp; Many applications
have been used as security holes in the past based on overwriting the end
of a string.
<P><B>fgets</B> reads at most <B>n</B> characters from the stream into
the string.
<P><TT>&nbsp;&nbsp;&nbsp; char s[1024];</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; FILE *stream;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; if((stream = fopen ("filename", "r")) != (FILE
*)0) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while((<B>fgets(</B>s, 1023,
stream<B>)</B>) != (char *)0 ) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;process each
line></TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; } else {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;do fopen error handling></TT>
<BR><TT>&nbsp;&nbsp;&nbsp; }</TT>
<P><B>To write a string to a stream,</B>
<P><TT>&nbsp;&nbsp;&nbsp; int&nbsp; puts(const char *s);</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; int fputs(const char *s, FILE *stream);</TT>
<P><TT>const char *s</TT>
<BR><TT>FILE *stream </TT>is an already existing stream.
<P>Returns a non-negative value upon success.&nbsp; Returns an EOF on a
write error.
<P><B>puts</B> writes the string pointed to by s to the stream STDIO and
appends a new-line to the end.&nbsp; The terminating null character is
not written to the stream.
<P><TT>&nbsp;&nbsp;&nbsp; char s[1024];</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; FILE *stream;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; strcpy(s,"a typical string");</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; if((stream = fopen ("filename", "w")) != (FILE
*)0) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(<B>puts(</B>s, stream<B>)</B>
== EOF ) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;handle error
on write></TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; } else {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;handle error on
open></TT>
<BR><TT>&nbsp;&nbsp;&nbsp; }</TT>
<P><B>fputs</B> writes the string pointed to by s to the named stream.&nbsp;
The terminating null character is not written to the stream.
<P><TT>&nbsp;&nbsp;&nbsp; char s[1024];</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; FILE *stream;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; strcpy(s,"a typical string");</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; if((stream = fopen ("filename", "w")) != (FILE
*)0) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(<B>fputs(</B>s, stream<B>)</B>
== EOF ) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;handle error
on write></TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; } else {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;handle error on
open></TT>
<BR><TT>&nbsp;&nbsp;&nbsp; }</TT>
<P><B>To read/write between arrays and streams,</B>
<P><TT>&nbsp;&nbsp;&nbsp; size_t fread(const void *ptr, size_t size, size_t
nmemb, FILE *stream);</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; size_t fwrite(const void *ptr, size_t size,
size_t nmemb, FILE *stream);</TT>
<P><TT>const void *ptr </TT>is a pointer to the array.
<BR><TT>size_t size </TT>is the size of each element of the array
<BR><TT>size_t nmemb </TT>is the number of elements to be processed.
<BR><TT>FILE *stream </TT>is an already existing stream.
<P><B>fread</B> reads into the array pointed to by ptr, no more than nmemb
elements of the size size, from the stream.&nbsp; The function returns
the number of elements that were successfully read, this value can be less
than what was requested, if the function encounters a read failure or an
EOF.&nbsp; A read failure leaves the element that failed in an undefine
state. If size or nmemb are zero then the function returns a zero.
<P><TT>&nbsp;&nbsp;&nbsp; int a[10];</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; FILE *stream;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; if((stream = fopen ("filename", "r")) != (FILE
*)0) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (<B>fread(</B>a,
sizeof(a), 10, stream<B>)</B> &lt; 10){</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;handle a read error></TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; } else {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;handle a file open
error></TT>
<BR><TT>&nbsp;&nbsp;&nbsp; }</TT>
<P><B>fwrite</B> writes from the array pointed to by ptr, no more than
nmeb elements of the size size, to the stream.&nbsp; The function returns
the number of elements successfully written, which should match nmemb only
if no write errors were encountered.
<P><TT>&nbsp;&nbsp;&nbsp; int a[10];</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; FILE *stream;</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; if((stream = fopen ("filename", "w")) != (FILE
*)0) {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (<B>fwrite(</B>a,
sizeof(a), 10, stream<B>)</B> &lt; 10){</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;handle a write error></TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</TT>
<BR><TT>&nbsp;&nbsp;&nbsp; } else {</TT>
<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;handle a file open
error></TT>
<BR><TT>&nbsp;&nbsp;&nbsp; }</TT>
<P>
<HR>
<H4>
Bibilography:</H4>
<I>The ANSI C Programming Language, Second Edition</I>, Brian W. Kernighan,
Dennis M. Ritchie, Printice Hall Software Series, 1988
<P><I>The Standard C Library</I>, P. J. Plauger, Printice Hall P T R, 1992
<P><I>The Standard C Library, Parts 1, 2, and 3</I>, Chuck Allison, <I>C/C++
Users Journal</I>, January, February, March 1995
<P>STDIO(3), BSD MANPAGE, <I>Linux Programmer's Manual</I>, 29 November
1993
<P><I><A HREF="http://www.linuxgazette.com/issue24/rogers.html">The Standard
C Library for Linux, Part One</A></I><A HREF="http://www.linuxgazette.com/issue24/rogers.html">,
James M. Rogers, January 1998</A>
<!--===================================================================-->
<P> <hr> <P>
<center><H5>Copyright &copy; 1998, James M. Rogers <BR>
Published in Issue 31 of <i>Linux Gazette</i>, August 1998</H5></center>
<!--===================================================================-->
<P> <hr> <P>
<A HREF="./index.html"><IMG ALIGN=BOTTOM SRC="../gx/indexnew.gif"
ALT="[ TABLE OF CONTENTS ]"></A>
<A HREF="../index.html"><IMG ALIGN=BOTTOM SRC="../gx/homenew.gif"
ALT="[ FRONT PAGE ]"></A>
<A HREF="./richardson.html"><IMG SRC="../gx/back2.gif"
ALT=" Back "></A>
<A HREF="./lg_backpage31.html"><IMG SRC="../gx/fwd.gif" ALT=" Next "></A>
<center>
<H1><IMG SRC="../gx/backpage.gif" alt="Linux Gazette Back Page"></H1>
<H5>Copyright &copy; 1998 Specialized Systems Consultants, Inc.<br>
For information regarding copying and distribution of this material see the
<A HREF="../copying.html">Copying License</A>.</H5>
</center>
<P> <hr> <P>
<H3>Contents:</H3>
<ul>
<li><a HREF="./lg_backpage31.html#authors">About This Month's Authors</a>
<li><a HREF="./lg_backpage31.html#notlinux">Not Linux</a>
</ul>
<a name="authors"></a>
<P> <HR> <P>
<!--======================================================================-->
<center><H3><font color="maroon">About This Month's Authors</font></H3></center>
<P> <HR> <P>
<!--======================================================================-->
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Larry Ayers</H4>
Larry lives on a small farm
in northern Missouri, where he is currently engaged in building a
timber-frame house for his family. He operates a portable band-saw mill,
does general woodworking, plays the fiddle and searches for rare
prairie plants, as well as growing shiitake mushrooms. He is also
struggling with configuring a Usenet news server for his local ISP.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Jim Dennis</H4>
Jim is the proprietor of <A href="http://www.starshine.org">
Starshine Technical Services</A>.
His professional experience includes work in the technical
support, quality assurance, and information services (MIS)
departments of software companies like
<A href="http://www.quarterdeck.com"> Quarterdeck</A>,
<A href="http://www.symantec.com"> Symantec/
Peter Norton Group</A>, and
<A href="http://www.mcafee.com"> McAfee Associates</A> -- as well as
positions (field service rep) with smaller VAR's.
He's been using Linux since version 0.99p10 and is an active
participant on an ever-changing list of mailing lists and
newsgroups. He's just started collaborating on the 2nd Edition
for a book on Unix systems administration.
Jim is an avid science fiction fan -- and was
married at the World Science Fiction Convention in Anaheim.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Chris DiBona</H4>
Chris (chris@dibona.com) is a computer security consultant and is
the Vice President of the Silicon Valley Linux User's Group.
(http://www.svlug.org/). He enjoys Linux, studying terrorism and population
statistics. He also grooves on a good Pale Ale. His personal web page can
be found at http://www.dibona.com/.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Michael J. Hammel</H4>
Michael
is a transient software engineer with a background in
everything from data communications to GUI development to Interactive Cable
systems--all based in Unix. His interests outside of computers
include 5K/10K races, skiing, Thai food and gardening. He suggests if you
have any serious interest in finding out more about him, you visit his home
pages at http://www.csn.net/~mjhammel. You'll find out more
there than you really wanted to know.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Phil Hughes</H4>
Phil Hughes is the publisher of <I>Linux Journal</I>, and thereby <I>Linux
Gazette</I>. He dreams of permanently tele-commuting from his home on the
Pacific coast of the Olympic Peninsula.
As an employer, he is &quot;Vicious, Evil,
Mean, & Nasty, but kind of mellow&quot; as a boss should be.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Mike List </H4>
Mike is a father of four teenagers, musician,
and recently reformed technophobe, who has been into computers
since April,1996, and Linux since July, 1997.
<p>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Eric Marsden</H4>
<a href="http://www.chez.com/emarsden/">Eric</a> is studying computer
science in Toulouse, France, and is a member of the local Linux Users
Group. He enjoys programming, cycling and Led Zeppelin. He admits to
once having owned a Macintosh, but denies any connection with the the
<a href="http://locke.ccil.org/~esr/ecsl/">Eric Conspiracy Secret
Labs</a>.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Russell C. Pavlicek</H4>
Russell is employed by
<A HREF="http://www.compaq.com/">Compaq Computer Corporation</A> (formerly
with <A HREF="http://www.digital.com/">Digital Equipment Corporation</A>)
as a software consultant serving US Federal Government customers in the
Washington D.C. area. He runs the
<A HREF="http://www.geocities.com/SiliconValley/Haven/6087/index.html">
Corporate Linux Advocate Homepage</A> and can be reached at
<A HREF="mailto:pavlicek@altavista.net">pavlicek@altavista.net</A>.
He lives with his lovely wife and wonderful children in rural Maryland
where they serve Yeshua and surround themselves with a variety of furry
creatures. His opinions are entirely his own (but he will allow you to adopt
one or two if you ask nicely).
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Michel Pelletier</H4>
Michel has been breaking Linux machines in the ISP business for
years. His idols are K&R, Godel and Duke Ellington. When not in the
mountains Michel can be found at michel@colint.com.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Eric S. Raymond</H4>
Eric is a semi-regular contributor to <i>Linux Journal</i>. You
can find more of his writings, including his paper ``The Cathedral and
the Bazaar'', at http://www.ccil.org/~esr/.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Greg Roelofs</H4>
Greg Roelofs escaped from the University of Chicago with a degree in
astrophysics and fled screaming to Silicon Valley, where he now does
outrageously cool graphics, 3D and compression stuff for Philips Research.
He is a member of Info-ZIP and the PNG group, and he not only maintains
web pages for both of those but also for himself and for the Cutest Baby
in the Known Universe. He can be reached by e-mail at
<A HREF="mailto:newt@pobox.com">newt@pobox.com</A>,
or on the web at <A HREF="http://pobox.com/~newt/">http://pobox.com/~newt/</A>.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">James M. Rogers</H4>
James, his wife, and their pets have moved to a new home on the Olympic
Peninsula In Washington State. I am now a Systems Programmer for
the University of Washington Medical Center and Harbor View Medical Center.
I work on the interfaces between medical computer systems.
<P>
<H4><IMG ALIGN=BOTTOM ALT="" SRC="../gx/note.gif">Doc Searls</H4>
Doc is President of The Searls Group, a Silicon Valley
consultancy, and a co-founder of Hodskins Simone and Searls.
He has been writing on technology and other issues for most of his life.
The <i>Flack Jacket</i> series of essays is collected in <i>Reality
2.0</i>,
http://www.batnet.com/searls/docworks.html).
Other series are <i>Positions</i> and <i>Milleniana</i>. He can be reached
via e-mail at searls@batnet.com.
<a name="notlinux"></a>
<P> <hr> <P>
<!--====================================================================-->
<center><H3><font color="maroon">Not Linux</font></H3></center>
<P> <HR> <P>
<!--======================================================================-->
<P>
Thanks to all our authors, not just the ones above, but also those who wrote
giving us their tips and tricks and making suggestions. Thanks also to our
new mirror sites.
<P>
My grandaughter, Rebecca is visiting me this week. We've been having a good
time going to all the fun places around Seattle and have a lot more to
visit. Her sister Sarah will be arriving on Friday to visit a week with me
too. I feel very fortunate to have 2 such wonderful granddaughters. Rebecca
loves to dance is taking ballet, jazz and tap. Sarah is a Tae Kwon Do
student. Pictures of both can be found on my home page.
<P>
Have fun!
<P> <hr> <P>
<A HREF="http://www.ssc.com/ssc/Employees/Margie/margie.html">
Marjorie L. Richardson</A> <br>
Editor, <A HREF="http://www.linuxgazette.com/"><i>Linux Gazette</i></A>, <A
HREF="mailto:gazette@ssc.com">gazette@ssc.com</a>
<P> <HR> <P>
<!--====================================================================-->
<A HREF="./index.html"><IMG SRC="../gx/indexnew.gif" ALT="[ TABLE OF
CONTENTS ]"></A>
<A HREF="../index.html"><IMG SRC="../gx/homenew.gif" ALT="[ FRONT
PAGE ]"></A>
<A HREF="./rogers1.html"><IMG SRC="../gx/back2.gif" ALT=" Back "></A>
<p><hr><p>
<I>Linux Gazette</I> Issue 31, August 1998,
<A HREF="http://www.linuxgazette.com/">http://www.linuxgazette.com</A><BR>
This page written and maintained by the Editor of <I>Linux Gazette</I>,
<A HREF="mailto:gazette@ssc.com"> gazette@ssc.com</A>
<P>
</BODY>
</HTML>