File:  [mozdev] / books / www / corrections.html
Revision 1.126: download - view: text, annotated - select for diffs - revision graph
Tue Jun 3 12:14:51 2003 UTC (14 years, 6 months ago) by brian
Branches: MAIN
CVS tags: HEAD
correcting a correction!!

<html><style>
  .broken { color: red; }
  .fixed { color: blue; }
</style>

<body><p><b>Corrections</b></p>

<p>This page contains a list of corrections to be made in the next printing of
the book.  If you have suggestions for changes or find errors in the text,
feel free open a <a href="bugs.html">bug</a> with a report of the problem, post a message in the User Notes 
section on the chapter pages, or send a message to the <a
href="mailto:reviewers@mozdev.org">reviewers@mozdev.org</a> mailing list.</p>

<p><b>Note:</b> All errors in the text and examples are shown in <b class="broken">red</b> and all corrections are shown in <b
class="fixed">blue</b>.

<a name="preface"></a>
<p><b>Preface</b>

<ul>

<li>On page ix: '<b class="broken">other browsers such as Galeon and Chimera</b>' has been changed to '<b class="fixed">other browsers 
such as Galeon and Camino</b>'<br><br>

<li>On page xiv: '<b class="broken">http://www.oreilly.com/mozilla/</b>' has been changed
to '<b class="fixed">http://www.oreilly.com/catalog/mozilla/</b>'<br><br>

<li>On page xvii: '<b class="broken">David McNamara, and Mark Hammond.</b>' has been changed to '<b class="fixed">David 
McNamara, Mark Hammond, Gary Frederick, and Andreas Halter.</b>'<br><br>

<li>On page xvii: '<b class="broken">David Hyatt and Mike Pinkerton for the Chimera browser</b>' has been changed to '<b
class="fixed">David Hyatt and Mike Pinkerton for the Camino browser</b>'<br><br>

<li>On page xvii: '<b class="broken">including Kim Steckler, Rachel Oeschger, and Priscilla, Dylan, and Devon Collins.</b>' has been
changed to '<b class="fixed">including Kim Steckler, Rachel Oeschger, Marjana Molan, Lia Molan King, and Priscilla, Dylan, and Devon
Collins.</b>'<br><br>

</ul>


<a name="ch1"></a>
<p><b>Chapter 1</b>

<ul>

<li>On page 2: In sidebar '<b class="broken">like Chimera (an ultra-fast browser that works only on Mac OS X)</b>' has been changed to 
'<b class="fixed">like Camino (an ultra-fast browser that works only on Mac OS X)</b>'<br><br>

<li>On page 7: In sidebar '<b class="broken">Another project, call m/b (short for mozilla/browser), addresses shortcomings</b>' has
been changed to '<b class="fixed">The Firebird project (http://www.mozilla.org/projects/firebird/) also addresses
shortcomings</b>'<br><br>

<li>On page 7: In sidebar '<b class="broken">Some examples include Chimera (http://chimera.mozdev.org)</b>' has been changed to '<b 
class="fixed">Some examples include Camino (http://www.mozilla.org/projects/camino/)</b>'<br><br>

<li>On page 7: '<b class="broken">applications web built using XPFE</b>' has been
changed to '<b class="fixed">applications built using XPFE</b>'<br><br>

</ul>


<a name="ch2"></a>
<p><b>Chapter 2</b>

<ul>

<li>On page 10: Added a new sentence to the end of the 2nd paragraph of the xFly examples sidebar: '<b class="fixed">An installable version
of the complete xFly application can be found at http://xfly.mozdev.org.</b>'<br><br>

<li>On page 12: '<b class="broken">&lt;window
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"  
/&gt;</b>' has been changed to '<b class="fixed">&lt;window
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt;</b>'<br><br>

<li>On page 14: In first code sample from Windows features section, '<b
class="broken">xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt;</b>' has been changed to '<b
class="fixed">xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"</b>'<br><br>

<li>On page 17: '<b class="broken">selecting File > Open File > from</b>' has been
changed to '<b class="fixed">selecting File > Open File from</b>'<br><br>

<li>On page 20: '<b class="broken">CenterWindoOnScreen( ) function</b>' has been changed
to '<b class="fixed">CenterWindowOnScreen( ) function</b>'<br><br>

<li>On page 25: '<b class="broken">Under that directory, create the three new directories, <i>content</i>, <i>locale</i>, and <i>skin</i>, as
shown in Figure 2-5.</b>' has been changed to '<b class="fixed">Under that directory, create the three new directories, <i>content</i>,
<i>locale</i>, and <i>skin</i>, as shown in Figure 2-5. The <i>locale</i> directory will have the default 'en-US' language pack
structure.</b>'<br><br>

<li>On page 25: In Figure 2-5 there should be an en-US subfolder under the locale folder.  Here is a correct image <b>(Click for bigger 
version)</b>:<br><br>

<a href="http://books.mozdev.org/screenshots/moz_0205.png"><img src="http://books.mozdev.org/screenshots/moz_0205_small.jpg" alt="New
Figure 2-5"></a><br><br>

<li>On page 31: In Example 2-14 '<b class="broken">locale/</b>' has been changed to '<b class="fixed">locale/en-US/</b>'<br><br>

<li>On page 32: In Example 2-15 '<b class="broken">locale,install,url,resource:/chrome/xfly/locale/</b>' has been changed to '<b
class="fixed">locale,install,url,resource:/chrome/xfly/locale/en-US/</b>'<br><br>

<li>On page 33: A warning note has been added before the last paragraph of the chapter

<xmp class="fixed">
If you have trouble editing and relaunching the xFly application, 
there are a couple of platform specific culprits to look into. On 
Windows, the Quick Launch feature may prevent you from seeing changes 
to your files. On Unix, file permission conflicts can also cause 
problems viewing your files. Making sure that Quick Launch is disabled 
and double checking file permissions may help get xFly working
on your system.
</xmp>

</ul>


<a name="ch3"></a>
<p><b>Chapter 3</b>

<ul>

<li>On page 34: '<b class="broken">We've packed a lot information in this chapter and it be a useful reference</b>' has been changed
to '<b class="fixed">We've packed a lot of information in this chapter and it will be a useful reference</b>'<br><br>

<li>On page 35: '<b class="broken">secondLevelNodes[I] = docEl.childNodes[i];</b>' has been changed to '<b 
class="fixed">secondLevelNodes[I] = docEl.childNodes[I];</b>'<br><br>

<li>On page 38: In Example 3-3 the namespace declarations have been changed to (note the addition of quotes and the removal of italics)

<xmp class="fixed">
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    xmlns:nc="http://home.netscape.com/NC-rdf#">
</xmp>

<li>On page 38: In Example 3-3 '<b class="broken">&lt;image src="page1.png"&gt;</b>' has been changed to '<b class="fixed">&lt;image 
src="page1.png"/&gt;</b>'<br><br>

<li>On page 40: '<b class="broken">&lt;toolbarbutton id="printBtn" label="Open"
oncommand="doPrint( );" /&gt</b>' has been changed to '<b class="fixed">&lt;toolbarbutton
id="printBtn" label="Print" oncommand="doPrint( );" &gt</b>'<br><br>

<li>On page 51: '<b class="broken">&lt;decription&gt;The mozdev.org site [...] your own development project&lt;/decription&gt;</b>' has been 
changed to '<b class="fixed">&lt;description&gt;The mozdev.org site [...] your own development project&lt;/description&gt;</b>'<br><br>

<li>On page 54: '<b class="broken">Clicking on the box sets the <tt>clicked</tt> attribute</b>' has been 
changed to '<b class="fixed">Clicking on the box sets the <tt>checked</tt> attribute</b>'<br><br>

<li>On pages 58 and 59: Example 3-15 has been changed to (note the addition of spaces to separate values)

<xmp class="fixed">
<?xml version="1.0"?>
<window id="hello-goodbye"
    title="Hello Goodbye"
    xmlns:html="http://www.w3.org/1999/xhtml"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    style="min-width:100px;min-height:100px;background-color:white;">
  <broadcasterset id="broadcasterset">
    <broadcaster id="cmd_hello" oncommand="alert('Hello There!');"/>
  </broadcasterset>
  <keyset id="keyset">
    <key id="key_h" key="H" observes="cmd_hello" modifiers="accel,shift" />
    <key id="key_g" key="G" command="cmd_goodbye" modifiers="accel,shift" />
  </keyset>
  <commandset id="commandset">
    <command id="cmd_goodbye" oncommand="alert('Goodbye!');" />
  </commandset>
  <spacer flex="1"/>
  <label value="hello/goodbye"/>
  <textbox value="type ctl+shft+h"/>
  <textbox value="type ctl+shft+g"/>
  <spacer flex="1"/>
</window>
</xmp>

<li>On page 63: '<b class="broken">But there are also CSS versions of these properties that 
use the prefix <tt>box-pack</tt> becomes <tt>box-pack</tt> when it's defined in CSS, for example.</b>' has been 
changed to '<b class="fixed">But there are also CSS versions of these properties that 
use the prefix <tt>box-</tt>. <tt>pack</tt> becomes <tt>box-pack</tt> when it's defined in CSS, for example.</b>'<br><br>

</ul>


<a name="ch4"></a>
<p><b>Chapter 4</b>

<ul>

<li>On page 88: '<b class="broken">these are selectors are identical</b>' has been changed to '<b class="fixed">these selectors are 
identical</b>'<br><br>

<li>On page 109: '<b class="broken">The <i>chome</i> URL that the -moz-binding property points to</b>' has been changed to '<b
class="fixed">The <i>chrome</i> URL that the -moz-binding property points to</b>'<br><br>

</ul>


<a name="ch5"></a>
<p><b>Chapter 5</b>

<ul>

<li>On page 113: Javascript 1.5 reference link in footnote has been changed from 
'<b class="broken">http://developer.netscape.com/docs/manuals/js/core/jsref15/contents.html</b>' to
'<b class="fixed">http://developer.netscape.com/docs/manuals/index.html?content=javascript.html</b>'<br><br>
</li>

<li>On page 120: '<b class="broken">&lt;/script.</b>' has been changed to '<b class="fixed">&lt;/script&gt;</b>'<br><br>
</li>

<li>On page 120: '<b class="broken">dump(l+'\n');</b>' has been changed to '<b class="fixed">dump(len+'\n');</b>'<br><br>
</li>

<li>On page 123: Example 5-3
<xmp class="broken">
for (var i=0; i<chex.length; i++)
       chex[i].setAttributte("checked", "false");
for (var i=0; i<unchex.length; i++)
       unchex[i].setAttributte("checked", "true");
</xmp>
has been changed to 
<xmp class="fixed">
for (var i=0; i<chex.length; i++)
    chex[i].setAttribute("disabled", "false");
for (var i=0; i<unchex.length; i++)
    unchex[i].setAttribute("disabled", "true");
</xmp>
<br>
</li>

<li>On page 135: Example 5-11 has been changed to
<xmp class="fixed">
  <head>
    <title>Sound Service Play Example</title>
    <script>  
      function play() { 
        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
        var sample = Components.classes["@mozilla.org/sound;1"].createInstance(); 
        sample = sample.QueryInterface(Components.interfaces.nsISound); 
        const SND_NETWORK_STD_CID = "@mozilla.org/network/standard-url;1";
        const SND_I_URL = "nsIURL";
        const SND_URL = new  C.Constructor(SND_NETWORK_STD_CID, SND_I_URL);
        var url = new SND_URL();
        url.spec = 'http://jslib.mozdev.org/test.wav';
        sample.play(url);
      } 
    </script>  
  </head>  
    
    <form name="form">  
      <input type="button" value="Play Sound" onclick="play();">  
    </form>  
</xmp>

<li>On page 137: '<b class="broken">var connection = Components.classes ["@mozilla.org/network/ldap-connection;1";</b>' 
  has been changed to 
'<b class="fixed">var connection = Components.classes ["@mozilla.org/network/ldap-connection;1"];</b>'<br><br>
</li>

<li>On page 140: '<b class="broken">js> load(`chrome/jslib/jslib.js');</b>' has been changed to '<b class="fixed">js>
load('chrome/jslib/jslib.js');</b>'<br><br>
</li>

</ul>

<a name="ch06"></a>
<p><b>Chapter 6</b>

<ul>

<li>On page 145: Example 6-1 has been changed to 

<xmp class="fixed">
var myFile = "xFly.jar";
initInstall(                      // initialize the installation
  "Install xFly",                 // display name of installation
  "xFly",                         // package name
  "0.0.1",                        // version of install
  1);                             // flags - an optional argument, 
                                  // reserved for future use
f = getFolder("Chrome");          // specify a target directory
setPackageFolder(f);
addFile(myFile);                  // add software to the installation
registerChrome(
  PACKAGE | DELAYED_CHROME,       // chrome switch (i.e., type)
  getFolder("Chrome","xFly.jar"), // destination of package
  "content/xFly/");               // location of manifest in package
if (0 == getLastError( ))         // if there have been no errors:
  performInstall( );              // install "xfly.jar"
else                              // otherwise
  cancelInstall( );               // cancel the installation.
</xmp>

</ul>

<a name="ch07"></a>
<p><b>Chapter 7</b>

<ul>

<li>On page 181: There are 3 errors in Figure 7-2 ...<br><br>

1)  In the XUL box, '<b class="broken">klabel="Input Field"</b>' should be '<b class="fixed">label="Input Field"</b>'<br><br>

2)  In the XBL box, '<b class="broken">&lt;binding id+"inputfield"&gt;</b>' should be '<b class="fixed">&lt;binding id="inputfield"&gt;</b>'<br><br>

3)  In the XBL box, '<b class="broken">&lt;xul:label xbl:inherits="value+label"?&gt;</b>' should be '<b class="fixed">&lt;xul:label xbl:inherits="value=label"/&gt;</b>'<br><br>

Here is a correct image <b>(Click for bigger version)</b>:<br><br>

<a href="http://books.mozdev.org/screenshots/moz_0702.gif"><img src="http://books.mozdev.org/screenshots/moz_0702_small.gif" alt="New Figure 7-2"></a>

</li>

</ul>

</p>

<a name="ch08"></a>
<p><b>Chapter 8</b>

<ul>

<li>On page 211: In 2nd sentence of paragraph '<b class="broken">QueryInterace</b>' has been 
changed to '<b class="fixed">QueryInterface</b>'<br><br></li>

<li>On page 222: In Example 8-4 has been changed to:

<xmp class="fixed">
function SimpleComponent(){}

SimpleComponent.prototype = {

    get yourName()        { return this.mName; },
    set yourName(aName)   { return this.mName = aName; },

    write: function () { dump("Hello " + this.mName + "\n"); },
    change: function (aValue) { this.mName = aValue; },
    mName: "a default value",

    QueryInterface: function (iid) {
        if (!iid.equals(Components.interfaces.nsISimple)
            && !iid.equals(Components.interfaces.nsISupports))
        {
            throw Components.results.NS_ERROR_NO_INTERFACE;
        }
        return this;
    }
}

var Module = {
    firstTime: true,

    registerSelf: function (compMgr, fileSpec, location, type) {
        if (this.firstTime) {
            dump("*** Deferring registration of simple JS components\n");
            this.firstTime = false;
            throw Components.results.NS_ERROR_FACTORY_REGISTER_AGAIN;
        }
        debug("*** Registering sample JS components\n");
        compMgr =
compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
        compMgr.registerFactoryLocation(this.myCID,
                                        "Simple JS Component",
                                        this.myProgID,
                                        fileSpec,
                                        location,
                                        type);
    },

    getClassObject : function (compMgr, cid, iid) {
        if (!cid.equals(this.myCID))
        throw Components.results.NS_ERROR_NO_INTERFACE
        if (!iid.equals(Components.interfaces.nsIFactory))
        throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
        return this.myFactory;
    },

    myCID: Components.ID("{98aa9afd-8b08-415b-91ed-01916a130d16}"),
    myProgID: "@mozilla.org/js_simple_component;1",

    myFactory: {
        createInstance: function (outer, iid) {
            dump("CI: " + iid + "\n");
            if (outer != null)
            throw Components.results.NS_ERROR_NO_AGGREGATION;
            return (new SimpleComponent()).QueryInterface(iid);
        }
    },

    canUnload: function(compMgr) {
        dump("****** Unloading: Simple JS component! ****** \n");
        return true;
    }
}; // END Module

function NSGetModule(compMgr, fileSpec) { return Module; }
</xmp>
</li>

<li>On page 237: Example 8-13, line 9
<xmp class="broken">
    NS_INIT_REFCNT( );
     = PL_strdup("default value");
</xmp>
has been changed to 
<xmp class="fixed">
    // NS_INIT_REFCNT( );  // has been depricated use NS_INIT_ISUPPORTS()
    NS_INIT_ISUPPORTS();
    mValue = PL_strdup("default value");
</xmp>
<br>
</li>

<li>On page 239: Example 8-15 has been changed to <br/></li>

<xmp class="fixed">
DEPTH         = ../../..
topsrcdir     = ../../..
srcdir        = .
VPATH         = .

include $(DEPTH)/config/autoconf.mk

MODULE        = xpcom
XPIDL_MODULE  = simple
LIBRARY_NAME  = simple
IS_COMPONENT  = 1
MODULE_NAME   = nsSimpleModule
REQUIRES      = string \
                xpcom \
                $(NULL)


CPPSRCS   =              \
    nsSimple.cpp         \
    nsSimpleModule.cpp   \
    $(NULL)

XPIDLSRCS = nsISimple.idl

include $(topsrcdir)/config/config.mk

LIBS    +=        \
    $(XPCOM_LIBS) \
    $(NSPR_LIBS)  \
    $(NULL)

include $(topsrcdir)/config/rules.mk

EXTRA_DSO_LDOPTS += $(MOZ_COMPONENT_LIBS)

install:: $(TARGETS)
</xmp>

</ul>

<a name="ch9"></a>
<p><b>Chapter 9</b>

<ul>

<li>On page 247: '<b class="broken">When it appears inside the &lt;template&gt;, the &lt;listbox&gt; tag has two special attributes.</b>'
has been changed to '<b class="fixed">The &lt;listbox&gt; gains two special attributes when it contains a &lt;template&gt;.</b>'
<br><br>

<li>On page 250: '<b class="broken">"Using Data for Style,"</b>' has been changed to '<b class="fixed">"Using Data for Style",</b>'
<br><br>

<li>On page 254: Example 9-5

<xmp class="broken">
   <rdf:Description about="urn:root">
     <fly:list>
       <rdf:Seq>
         <rdf:li>
           <rdf:Description ID="House">
             <fly:label>House</fly:label>
             <fly:list>
               <rdf:Seq>
                 <rdf:li>
                   <rdf:Description about="musca_autumnalis"
                                    fly:label="Face Fly"/>
                 </rdf:li>
               <rdf:Seq>
             </fly:list>
         </rdf:li>
       </rdf:Seq>
     </fly:list>
   </rdf:Description>
</xmp>

has been changed to

<xmp class="fixed">
   <rdf:Description about="urn:root">
     <fly:list>
       <rdf:Seq>
         <rdf:li>
           <rdf:Description ID="House">
             <fly:label>House</fly:label>
           </rdf:Description>
           <fly:list>
             <rdf:Seq>
               <rdf:li>
                <rdf:Description about="musca_autumnalis"
                                 fly:label="Face Fly"/>
               </rdf:li>
             <rdf:Seq>
           </fly:list>
         </rdf:li>
       </rdf:Seq>
     </fly:list>
   </rdf:Description>
</xmp>

<li>On page 255: Example 9-6 

<xmp class="broken">
     <treecols>
       <treecol id="LabelCol" flex="1" sort="?label" label="Name"
                primary="true" />
       <treecol id="LoCol" flex="1" sort="?location" label="Location"/>
       <treecol id="ColCol" flex="1" sort="?color" label="Color"/>
     </treecols>
</xmp>

has been changed to

<xmp class="fixed">
     <treecols>
       <treecol id="LabelCol" flex="1"
                sort="rdf:http://xfly.mozdev.org/fly-rdf#label"
                class="sortDirectionIndicator" primary="true" label="Name"/>
       <treecol id="LoCol" flex="1"
                sort="rdf:http://xfly.mozdev.org/fly-rdf#location"
                label="Location"/>
       <treecol id="ColCol" flex="1" 
                sort="rdf:http://xfly.mozdev.org/fly-rdf#color"
                label="Color"/>
     </treecols>
</xmp>

<li>On page 257: In Example 9-7

<xmp class="broken">
  <triple subject="?listitem"
        predicate=" http://xfly.mozdev.org/fly-rdf#location"
        object="?location"/>
</xmp>

has been changed to

<xmp class="fixed">
  <triple subject="?listitem"
        predicate="fly-location#location"
        object="?location"/>
</xmp>

<li>On page 258: '<b class="broken">The most important additions to Example 9-7 are the
container="?uri" member="?listitem" attributes on the &lt;template&gt;. These attributes specify which
container you should apply multiple rules to, and the <code>member</code> is for the objects
in a container that must be checked.</b>' has been
changed to '<b class="fixed">The most important inclusions to Example 9-7 are the
container="?uri" and child="?listitem" attributes on the &lt;member&gt;. These attributes specify which
container you should apply multiple rules to, and the <code>child</code> is for the objects
in a container that must be checked.</b>'
<br><br>

</ul>

<a name="ch10"></a>
<p><b>Chapter 10</b>

<ul>

<li>One page 268: In Example 10-1 '<b class="broken">&lt;rdf:Description about="http://my.jar-of-flies.com"&gt;</b>' has been
changed to '<b class="fixed">&lt;rdf:Description about="urn:root"&gt;</b>'<br><br>

<li>On page 279: '<b class="broken">The URI is also accessible as a datasource property:</b>' has been
changed to '<b class="fixed">The URI, such as rdf:someName, is also accessible as a datasource
property:</b>'<br><br>

<li>On page 280: In Table 10-3 '<b class="broken">Mostly used for retrieving, datasources, resources, and literals.</b>' has been
changed to '<b class="fixed">Mostly used for retrieving datasources, resources, and literals.</b>'<br><br>

<li>On page 288: The code at the top of the page

<xmp class="broken">
containerUtils = Components.classes['@mozilla.org/rdf/container-utils;1'
		 getService(Components.interfaces.nsIRDFContainerUtils);
</xmp>

has been changed to:

<xmp class="fixed">
containerUtils = Components.classes['@mozilla.org/rdf/container-utils;1'].
		 getService(Components.interfaces.nsIRDFContainerUtils);
</xmp>

<li>On page 297: '<b class="broken">http://www.jslib.mozdev.org</b>' has been changed to '<b
class="fixed">http://jslib.mozdev.org</b>'<br><br>

<li>On page 297: In Example 10-14 '<b class="broken">// if(del)gRDF.removeSeq('types',false);</b>' has been deleted. It is not
needed in this example.<br><br>

</ul>


<a name="ch11"></a>
<p><b>Chapter 11</b>

<ul> 
<li>On page 314: In Example 11-5 and Example 11-6 '<b class="broken">var linetext =
document.createTextNode(messageParagraphs[i]);</b>' has been changed to '<b class="fixed">var linetext =
document.createTextNode(lines[i]);</b>'<br><br>
</ul>


<a name="ch12"></a>
<p><b>Chapter 12</b>

<ul>

<li>On page 336: In Example 12-6

<xmp class="broken">
 print `  <checkbox label="%s" />' % form['op1'].value
 print `  <checkbox label="%s" />' % form['op2'].value
   print `  <checkbox label="%s" />' % form['op3'].value
</xmp>

has been changed to (note the difference in indentation and in using a single quote versus a backtick)

<xmp class="fixed">
   print '  <checkbox label="%s" />' % form['op1'].value
   print '  <checkbox label="%s" />' % form['op2'].value
   print '  <checkbox label="%s" />' % form['op3'].value
</xmp>

<li>On page 341: The following sentence has been deleted '<b class="broken">You can delete the <i>key3.db</i> and <i>secmod.db</i> files
because they do not pertain to certificate creation or modification.</b>'<br><br>

<div>
<b>NOTE:</b> This last fix in chapter 12 is a <a href="http://mozdev.org/bugs/show_bug.cgi?id=2602">short/quick fix</a> 
for some major flaws in the security section of this chapter. 
There is a more desirable fix, <a href="http://mozdev.org/bugs/show_bug.cgi?id=2888">outlined in the bug monitoring it</a>, 
but it would require a substantial rewrite to the section. 
Please consider both of these options for a second printing.
</div>

</ul>


</p>

<a name="appa"></a>
<p><b>Appendix A</b>

<ul>

<li>On page 365: '<b class="broken">http://www.mozilla.org/source.tml</b>' has been changed to '<b
class="fixed">http://www.mozilla.org/source.html</b>'<br><br>
</li>

<li>On page 367: In the Linux CVS instructions

<xmp class="broken">
1. Set the CVSROOT variable: 
    $ setenv CVSROOT :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
2. Log in as anonymous@cvs-mirror.mozilla.org using the password "anonymous":
</xmp>

has been changed to (note the addition of '=' after CVSROOT, 
the changing of 'setenv' to 'export' and the simplification of instruction 2)

<xmp class="fixed">
1. Set the CVSROOT variable: 
    $ export CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
2. Log in using the password "anonymous":
</xmp>

<li>On page 368: In the Windows CVS instructions

<xmp class="broken">
1. Set the CVSROOT variable: 
    > set CVSROOT :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
2. Log in as anonymous@cvs-mirror.mozilla.org using the password "anonymous":
</xmp>

has been changed to (note the addition of '=' after CVSROOT
and the simplification of instruction 2)

<xmp class="fixed">
1. Set the CVSROOT variable: 
    > set CVSROOT=:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
2. Log in using the password "anonymous":
</xmp>

</li>

</ul>

<a name="index"></a>
<p><b>Index</b>

<ul>

<li>
On page 437: '<b class="broken">Chimera, 2</b>' has been changed to '<b class="fixed">Camino, 2</b>'<br><br>
</li>

</ul>


<br><br>

<?php $hide_text_control=1; $post_to_list=NO; $author='reviewers@mozdev.org'; require(NOTES); ?>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>