]> git.ipfire.org Git - thirdparty/cups.git/blobdiff - doc/sam.html
Copyright updates.
[thirdparty/cups.git] / doc / sam.html
index ae46bb32f4dd118559e68294a3361388199dc99c..a7e16a6e905514eb490408d91ebf5ac09b4c758f 100644 (file)
@@ -3,8 +3,8 @@
 <HEAD>
 <TITLE>CUPS Software Administrators Manual</TITLE>
 <META NAME="author" CONTENT="Easy Software Products">
-<META NAME="copyright" CONTENT="Copyright 1997-2001, All Rights Reserved">
-<META NAME="docnumber" CONTENT="CUPS-SAM-1.1.8">
+<META NAME="copyright" CONTENT="Copyright 1997-2005, All Rights Reserved">
+<META NAME="docnumber" CONTENT="CUPS-SAM-1.1.23">
 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=iso-8859-1">
 <STYLE TYPE="text/css"><!--
 BODY { font-family: serif }
@@ -19,14 +19,14 @@ SUP { font-size: smaller }
 PRE { font-family: monospace }
 --></STYLE>
 </HEAD>
-<BODY BGCOLOR="#ffffff">
-<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="431" HEIGHT="511"><BR>
+<BODY BGCOLOR="white">
+<CENTER><A HREF="#CONTENTS"><IMG SRC="images/cups-large.gif" BORDER="0" WIDTH="431" HEIGHT="511" ALT="CUPS Software Administrators Manual"><BR>
 <H1>CUPS Software Administrators Manual</H1></A><BR>
-CUPS-SAM-1.1.8<BR>
+CUPS-SAM-1.1.23<BR>
 Easy Software Products<BR>
-Copyright 1997-2001, All Rights Reserved<BR>
+Copyright 1997-2005, All Rights Reserved<BR>
 </CENTER>
-<HR>
+<HR NOSHADE>
 <H1 ALIGN="CENTER"><A NAME="CONTENTS">Table of Contents</A></H1>
 <BR>
 <BR><B><A HREF="#1">Preface</A></B>
@@ -50,36 +50,42 @@ Copyright 1997-2001, All Rights Reserved<BR>
 </UL>
 <B><A HREF="#BUILDING_INSTALLING">2 - Building and Installing CUPS</A></B>
 <UL>
-<LI><A HREF="#3_1">Installing a Source Distribution</A></LI>
+<LI><A HREF="#3_1">Installing a Source Distribution</A>
 <UL>
 <LI><A HREF="#REQUIREMENTS">Requirements</A></LI>
 <LI><A HREF="#COMPILING">Compiling CUPS</A></LI>
 <LI><A HREF="#INSTALLING">Installing the Software</A></LI>
 <LI><A HREF="#RUNNING">Running the Software</A></LI>
 </UL>
-<LI><A HREF="#BINARY">Installing a Binary Distribution</A></LI>
+</LI>
+<LI><A HREF="#BINARY">Installing a Binary Distribution</A>
 <UL>
 <LI><A HREF="#PORTABLE-BINARY">Installing a Portable Distribution</A></LI>
 <LI><A HREF="#RPM-BINARY">Installing an RPM Distribution</A></LI>
 <LI><A HREF="#DPKG-BINARY">Installing an Debian Distribution</A></LI>
 </UL>
+</LI>
 </UL>
-<B><A HREF="#PRINTER_MANAGEMENT">3 - Printer Management</A></B>
+<B><A HREF="#MANAGING_PRINTERS">3 - Managing Printers</A></B>
 <UL>
 <LI><A HREF="#4_1">The Basics</A></LI>
-<LI><A HREF="#4_2">Adding Your First Printer</A></LI>
+<LI><A HREF="#4_2">Adding Your First Printer</A>
 <UL>
 <LI><A HREF="#4_2_1">Adding Your First Printer from the Command-Line</A></LI>
 <LI><A HREF="#ADD_WEB">Adding Your First Printer from the Web</A></LI>
 </UL>
-<LI><A HREF="#4_3">Managing Printers from the Command-Line</A></LI>
+</LI>
+<LI><A HREF="#4_3">Managing Printers from the Command-Line</A>
 <UL>
 <LI><A HREF="#4_3_1">Adding and Modifying Printers</A></LI>
 <LI><A HREF="#4_3_2">Deleting Printers</A></LI>
 <LI><A HREF="#4_3_3">Setting the Default Printer</A></LI>
 <LI><A HREF="#4_3_4">Starting and Stopping Printers</A></LI>
 <LI><A HREF="#4_3_5">Accepting and Rejecting Print Jobs</A></LI>
+<LI><A HREF="#4_3_6">Setting Quotas on a Printer</A></LI>
+<LI><A HREF="#4_3_7">Restricting User Access to a Printer</A></LI>
 </UL>
+</LI>
 <LI><A HREF="#4_4">Managing Printers from the Web</A></LI>
 </UL>
 <B><A HREF="#PRINTER_CLASSES">4 - Printer Classes</A></B>
@@ -91,20 +97,23 @@ Copyright 1997-2001, All Rights Reserved<BR>
 </UL>
 <B><A HREF="#CLIENT_SETUP">5 - Client Setup</A></B>
 <UL>
-<LI><A HREF="#6_1">The Basics</A></LI>
+<LI><A HREF="#6_1">The Basics</A>
 <UL>
 <LI><A HREF="#CLIENT_MANUAL">Manual Configuration of Print Queues</A></LI>
 <LI><A HREF="#CLIENT_SERVER">Specifying a Single Server for Printing</A></LI>
 <LI><A HREF="#CLIENT_AUTO">Automatic Configuration of Print Queues</A></LI>
 <LI><A HREF="#CLIENT_POLL">Specifying Multiple Servers for Printing</A></LI>
+<LI><A HREF="#CLIENT_RELAY">Relaying Printers to Other Clients</A></LI>
 </UL>
+</LI>
+<LI><A HREF="#6_2">Load Balancing and Failsafe Operation</A></LI>
 </UL>
 <B><A HREF="#PRINTING_MANAGEMENT">6 - Printing System Management</A></B>
 <UL>
 <LI><A HREF="#7_1">The Basics</A></LI>
 <LI><A HREF="#RESTARTING">Restarting the CUPS Server</A></LI>
 <LI><A HREF="#7_3">Changing the Server Configuration</A></LI>
-<LI><A HREF="#7_4">Server Directives</A></LI>
+<LI><A HREF="#7_4">Server Directives</A>
 <UL>
 <LI><A HREF="#AccessLog">AccessLog</A></LI>
 <LI><A HREF="#Allow">Allow</A></LI>
@@ -115,15 +124,18 @@ Copyright 1997-2001, All Rights Reserved<BR>
 <LI><A HREF="#BrowseAddress">BrowseAddress</A></LI>
 <LI><A HREF="#BrowseAllow">BrowseAllow</A></LI>
 <LI><A HREF="#BrowseDeny">BrowseDeny</A></LI>
-<LI><A HREF="#BrowseOrder">BrowseOrder</A></LI>
 <LI><A HREF="#BrowseInterval">BrowseInterval</A></LI>
+<LI><A HREF="#BrowseOrder">BrowseOrder</A></LI>
 <LI><A HREF="#BrowsePoll">BrowsePoll</A></LI>
 <LI><A HREF="#BrowsePort">BrowsePort</A></LI>
+<LI><A HREF="#BrowseProtocols">BrowseProtocols</A></LI>
 <LI><A HREF="#BrowseRelay">BrowseRelay</A></LI>
 <LI><A HREF="#BrowseShortNames">BrowseShortNames</A></LI>
 <LI><A HREF="#BrowseTimeout">BrowseTimeout</A></LI>
 <LI><A HREF="#Browsing">Browsing</A></LI>
 <LI><A HREF="#Classification">Classification</A></LI>
+<LI><A HREF="#ClassifyOverride">ClassifyOverride</A></LI>
+<LI><A HREF="#ConfigFilePerm">ConfigFilePerm</A></LI>
 <LI><A HREF="#DataDir">DataDir</A></LI>
 <LI><A HREF="#DefaultCharset">DefaultCharset</A></LI>
 <LI><A HREF="#DefaultLanguage">DefaultLanguage</A></LI>
@@ -131,11 +143,18 @@ Copyright 1997-2001, All Rights Reserved<BR>
 <LI><A HREF="#DocumentRoot">DocumentRoot</A></LI>
 <LI><A HREF="#Encryption">Encryption</A></LI>
 <LI><A HREF="#ErrorLog">ErrorLog</A></LI>
+<LI><A HREF="#FaxRetryInterval">FaxRetryInterval</A></LI>
+<LI><A HREF="#FaxRetryLimit">FaxRetryLimit</A></LI>
+<LI><A HREF="#FileDevice">FileDevice</A></LI>
 <LI><A HREF="#FilterLimit">FilterLimit</A></LI>
+<LI><A HREF="#FilterNice">FilterNice</A></LI>
 <LI><A HREF="#FontPath">FontPath</A></LI>
 <LI><A HREF="#Group">Group</A></LI>
+<LI><A HREF="#HideImplicitMembers">HideImplicitMembers</A></LI>
 <LI><A HREF="#HostNameLookups">HostNameLookups</A></LI>
+<LI><A HREF="#ImplicitAnyClasses">ImplicitAnyClasses</A></LI>
 <LI><A HREF="#ImplicitClasses">ImplicitClasses</A></LI>
+<LI><A HREF="#Include">Include</A></LI>
 <LI><A HREF="#KeepAlive">KeepAlive</A></LI>
 <LI><A HREF="#KeepAliveTimeout">KeepAliveTimeout</A></LI>
 <LI><A HREF="#Limit">Limit</A></LI>
@@ -143,8 +162,11 @@ Copyright 1997-2001, All Rights Reserved<BR>
 <LI><A HREF="#LimitRequestBody">LimitRequestBody</A></LI>
 <LI><A HREF="#Listen">Listen</A></LI>
 <LI><A HREF="#Location">Location</A></LI>
+<LI><A HREF="#LogFilePerm">LogFilePerm</A></LI>
 <LI><A HREF="#LogLevel">LogLevel</A></LI>
 <LI><A HREF="#MaxClients">MaxClients</A></LI>
+<LI><A HREF="#MaxClientsPerHost">MaxClientsPerHost</A></LI>
+<LI><A HREF="#MaxCopies">MaxCopies</A></LI>
 <LI><A HREF="#MaxJobs">MaxJobs</A></LI>
 <LI><A HREF="#MaxJobsPerPrinter">MaxJobsPerPrinter</A></LI>
 <LI><A HREF="#MaxJobsPerUser">MaxJobsPerUser</A></LI>
@@ -153,20 +175,26 @@ Copyright 1997-2001, All Rights Reserved<BR>
 <LI><A HREF="#Order">Order</A></LI>
 <LI><A HREF="#PageLog">PageLog</A></LI>
 <LI><A HREF="#Port">Port</A></LI>
-<LI><A HREF="#PreserveJobHistory">PreserveJobHistory</A></LI>
 <LI><A HREF="#PreserveJobFiles">PreserveJobFiles</A></LI>
+<LI><A HREF="#PreserveJobHistory">PreserveJobHistory</A></LI>
 <LI><A HREF="#Printcap">Printcap</A></LI>
-<LI><A HREF="#Printcap">PrintcapFormat</A></LI>
+<LI><A HREF="#PrintcapFormat">PrintcapFormat</A></LI>
+<LI><A HREF="#PrintcapGUI">PrintcapGUI</A></LI>
+<LI><A HREF="#ReloadTimeout">ReloadTimeout</A></LI>
 <LI><A HREF="#RemoteRoot">RemoteRoot</A></LI>
 <LI><A HREF="#RequestRoot">RequestRoot</A></LI>
+<LI><A HREF="#Require">Require</A></LI>
 <LI><A HREF="#RIPCache">RIPCache</A></LI>
+<LI><A HREF="#RootCertDuration">RootCertDuration</A></LI>
 <LI><A HREF="#RunAsUser">RunAsUser</A></LI>
+<LI><A HREF="#Satisfy">Satisfy</A></LI>
 <LI><A HREF="#ServerAdmin">ServerAdmin</A></LI>
 <LI><A HREF="#ServerBin">ServerBin</A></LI>
 <LI><A HREF="#ServerCertificate">ServerCertificate</A></LI>
 <LI><A HREF="#ServerKey">ServerKey</A></LI>
 <LI><A HREF="#ServerName">ServerName</A></LI>
 <LI><A HREF="#ServerRoot">ServerRoot</A></LI>
+<LI><A HREF="#ServerTokens">ServerTokens</A></LI>
 <LI><A HREF="#SSLListen">SSLListen</A></LI>
 <LI><A HREF="#SSLPort">SSLPort</A></LI>
 <LI><A HREF="#SystemGroup">SystemGroup</A></LI>
@@ -174,71 +202,140 @@ Copyright 1997-2001, All Rights Reserved<BR>
 <LI><A HREF="#Timeout">Timeout</A></LI>
 <LI><A HREF="#User">User</A></LI>
 </UL>
-<LI><A HREF="#PRINTING_SECURITY">Printing System Security</A></LI>
+</LI>
+<LI><A HREF="#7_5">Changing the Client Configuration</A></LI>
+<LI><A HREF="#7_6">Client Directives</A>
+<UL>
+<LI><A HREF="#Encryption">Encryption</A></LI>
+<LI><A HREF="#ServerName">ServerName</A></LI>
+</UL>
+</LI>
+<LI><A HREF="#7_7">Changing the Printer Configuration</A></LI>
+<LI><A HREF="#7_8">Printer Directives</A>
+<UL>
+<LI><A HREF="#Accepting">Accepting</A></LI>
+<LI><A HREF="#AllowUser">AllowUser</A></LI>
+<LI><A HREF="#DefaultPrinter">DefaultPrinter</A></LI>
+<LI><A HREF="#DenyUser">DenyUser</A></LI>
+<LI><A HREF="#DeviceURI">DeviceURI</A></LI>
+<LI><A HREF="#Info">Info</A></LI>
+<LI><A HREF="#JobSheets">JobSheets</A></LI>
+<LI><A HREF="#KLimit">KLimit</A></LI>
+<LI><A HREF="#PrinterLocation">Location</A></LI>
+<LI><A HREF="#PageLimit">PageLimit</A></LI>
+<LI><A HREF="#Printer">Printer</A></LI>
+<LI><A HREF="#QuotaPeriod">QuotaPeriod</A></LI>
+<LI><A HREF="#State">State</A></LI>
+<LI><A HREF="#StateMessage">StateMessage</A></LI>
+</UL>
+</LI>
+<LI><A HREF="#7_9">Changing the Classes Configuration</A></LI>
+<LI><A HREF="#7_10">Classes Directives</A>
+<UL>
+<LI><A HREF="#ClassAccepting">Accepting</A></LI>
+<LI><A HREF="#ClassAllowUser">AllowUser</A></LI>
+<LI><A HREF="#Class">Class</A></LI>
+<LI><A HREF="#DefaultClass">DefaultClass</A></LI>
+<LI><A HREF="#ClassDenyUser">DenyUser</A></LI>
+<LI><A HREF="#ClassInfo">Info</A></LI>
+<LI><A HREF="#ClassJobSheets">JobSheets</A></LI>
+<LI><A HREF="#ClassKLimit">KLimit</A></LI>
+<LI><A HREF="#ClassLocation">Location</A></LI>
+<LI><A HREF="#ClassPageLimit">PageLimit</A></LI>
+<LI><A HREF="#ClassPrinter">Printer</A></LI>
+<LI><A HREF="#ClassQuotaPeriod">QuotaPeriod</A></LI>
+<LI><A HREF="#ClassState">State</A></LI>
+<LI><A HREF="#ClassStateMessage">StateMessage</A></LI>
+</UL>
+</LI>
+<LI><A HREF="#PRINTING_SECURITY">Printing System Security</A>
 <UL>
 <LI><A HREF="#CERTIFICATES">Authentication Using Certificates</A></LI>
-<LI><A HREF="#7_5_2">Using Basic Authentication</A></LI>
-<LI><A HREF="#7_5_3">Using Digest Authentication</A></LI>
-<LI><A HREF="#7_5_4">System and Group Authentication</A></LI>
+<LI><A HREF="#7_11_2">Using Basic Authentication</A></LI>
+<LI><A HREF="#7_11_3">Using Digest Authentication</A></LI>
+<LI><A HREF="#7_11_4">System and Group Authentication</A></LI>
 </UL>
-<LI><A HREF="#PRINTER_ACCOUNTING">Printer Accounting</A></LI>
+</LI>
+<LI><A HREF="#PRINTER_ACCOUNTING">Printer Accounting</A>
 <UL>
-<LI><A HREF="#7_6_1">The access_log File</A></LI>
-<LI><A HREF="#7_6_2">The error_log File</A></LI>
-<LI><A HREF="#7_6_3">The page_log File</A></LI>
+<LI><A HREF="#7_12_1">The access_log File</A></LI>
+<LI><A HREF="#7_12_2">The error_log File</A></LI>
+<LI><A HREF="#7_12_3">The page_log File</A></LI>
 </UL>
-<LI><A HREF="#FILE_TYPING_FILTERING">File Typing and Filtering</A></LI>
+</LI>
+<LI><A HREF="#FILE_TYPING_FILTERING">File Typing and Filtering</A>
 <UL>
-<LI><A HREF="#7_7_1">mime.types</A></LI>
-<LI><A HREF="#7_7_2">mime.convs</A></LI>
-<LI><A HREF="#7_7_3">Adding Filetypes and Filters</A></LI>
-<LI><A HREF="#7_7_4">Printer Drivers and PPD Files</A></LI>
-<LI><A HREF="#7_7_5">Writing Your Own Filter or Printer Driver</A></LI>
+<LI><A HREF="#7_13_1">mime.types</A></LI>
+<LI><A HREF="#7_13_2">mime.convs</A></LI>
+<LI><A HREF="#7_13_3">Adding Filetypes and Filters</A></LI>
+<LI><A HREF="#7_13_4">Printer Drivers and PPD Files</A></LI>
+<LI><A HREF="#7_13_5">Writing Your Own Filter or Printer Driver</A></LI>
 </UL>
+</LI>
 </UL>
 <B><A HREF="#PRINTING_OTHER">7 - Printing with Other Systems</A></B>
 <UL>
 <LI><A HREF="#8_1">The Basics</A></LI>
 <LI><A HREF="#8_2">Printing from LPD Clients</A></LI>
-<LI><A HREF="#8_3">Printing to LPD Servers</A></LI>
-<LI><A HREF="#8_4">Printing from Mac OS Clients</A></LI>
+<LI><A HREF="#LPD">Printing to LPD Servers</A></LI>
+<LI><A HREF="#8_4">Printing from Mac OS 10.2 and Later Clients</A></LI>
+<LI><A HREF="#8_5">Printing from Mac OS 10.1 and Earlier Clients</A>
+<UL>
+<LI><A HREF="#8_5_1">Columbia Appletalk Package (CAP)</A></LI>
+<LI><A HREF="#8_5_2">XINET KA/Spool</A></LI>
+<LI><A HREF="#8_5_3">Netatalk</A></LI>
+</UL>
+</LI>
+<LI><A HREF="#8_6">Printing to Mac OS 10.2 and Later Servers</A></LI>
+<LI><A HREF="#8_7">Printing to Mac OS 10.1 and Earlier Servers</A></LI>
+<LI><A HREF="#8_8">Printing from Windows Clients</A>
 <UL>
-<LI><A HREF="#8_4_1">Columbia Appletalk Package (CAP)</A></LI>
-<LI><A HREF="#8_4_2">XINET KA/Spool</A></LI>
-<LI><A HREF="#8_4_3">NetATalk</A></LI>
+<LI><A HREF="#8_8_1">Exporting Printer Drivers</A></LI>
 </UL>
-<LI><A HREF="#8_5">Printing to Mac OS Servers</A></LI>
-<LI><A HREF="#8_6">Printing from Windows Clients</A></LI>
-<LI><A HREF="#8_7">Printing to Windows Servers</A></LI>
+</LI>
+<LI><A HREF="#8_9">Printing to Windows Servers</A></LI>
 </UL>
 <B><A HREF="#LICENSE">A - Software License Agreement</A></B>
 <UL>
-<LI><A HREF="#9_1">Common UNIX Printing System License Agreement</A></LI>
+<LI><A HREF="#9_1">Common UNIX Printing System License Agreement</A>
 <UL>
 <LI><A HREF="#9_1_1">Introduction</A></LI>
-<LI><A HREF="#9_1_2">Trademarks</A></LI>
-<LI><A HREF="#9_1_3">Binary Distribution Rights</A></LI>
-<LI><A HREF="#9_1_4">Support</A></LI>
+<LI><A HREF="#9_1_2">License Exceptions</A></LI>
+<LI><A HREF="#9_1_3">Trademarks</A></LI>
+<LI><A HREF="#9_1_4">Binary Distribution Rights</A></LI>
+<LI><A HREF="#9_1_5">Support</A></LI>
+</UL>
+</LI>
+<LI><A HREF="#9_2">GNU GENERAL PUBLIC LICENSE</A>
+<UL>
+<LI><A HREF="#9_2_1">Preamble</A></LI>
+</UL>
+</LI>
+<LI><A HREF="#9_3">GNU LIBRARY GENERAL PUBLIC LICENSE</A>
+<UL>
+<LI><A HREF="#9_3_1">Preamble</A></LI>
 </UL>
-<LI><A HREF="#9_2">GNU GENERAL PUBLIC LICENSE</A></LI>
-<LI><A HREF="#9_3">GNU LIBRARY GENERAL PUBLIC LICENSE</A></LI>
+</LI>
 </UL>
 <B><A HREF="#COMMON_NETWORK">B - Common Network Settings</A></B>
 <UL>
-<LI><A HREF="#10_1">Configuring a Network Interface</A></LI>
+<LI><A HREF="#10_1">Configuring a Network Interface</A>
 <UL>
 <LI><A HREF="#10_1_1">Configuring the IP Address Using ARP</A></LI>
 <LI><A HREF="#10_1_2">Configuring the IP Address Using RARP</A></LI>
 <LI><A HREF="#10_1_3">Configuring the IP Address Using BOOTP</A></LI>
 </UL>
+</LI>
 <LI><A HREF="#10_2">Verifying the Printer Connection</A></LI>
 <LI><A HREF="#10_3">Common Network Interface Settings</A></LI>
 <LI><A HREF="#AXIS">Configuring Axis Print Servers</A></LI>
 <LI><A HREF="#LINKSYS">Configuring Linksys Print Servers</A></LI>
+<LI><A HREF="#LPD_OPTIONS">Configuring LPD Printing Options</A></LI>
 </UL>
 <B><A HREF="#PRINTER_DRIVERS">C - Printer Drivers</A></B>
 <UL>
 <LI><A HREF="#11_1">Printer Drivers</A></LI>
+<LI><A HREF="#DYMO">DYMO Label Printer</A></LI>
 <LI><A HREF="#EPSON9">EPSON 9-pin Dot Matrix</A></LI>
 <LI><A HREF="#EPSON24">EPSON 24-pin Dot Matrix</A></LI>
 <LI><A HREF="#STCOLOR">EPSON Stylus Color</A></LI>
@@ -252,39 +349,49 @@ Copyright 1997-2001, All Rights Reserved<BR>
 <UL>
 <LI><A HREF="#13_1">My Applications Don't See the Available Printers</A></LI>
 <LI><A HREF="#13_2">CUPS Doesn't Recognize My Username or Password!</A></LI>
-<LI><A HREF="#13_3">I Can't Do Administration Tasks from Another 
-Machine!</A></LI>
+<LI><A HREF="#ALLOW_REMOTE">I Can't Do Administration Tasks from Another
+ Machine!</A></LI>
 <LI><A HREF="#13_4">I Can't Do Administration Tasks from My Web Browser!</A>
 </LI>
 <LI><A HREF="#13_5">Connection Refused Messages</A></LI>
 <LI><A HREF="#13_6">Write Error Messages</A></LI>
 </UL>
-<HR>
+<HR NOSHADE>
 <H1 ALIGN="RIGHT"><A NAME="1">Preface</A></H1>
-<P>This software administrators manual provides printer administration 
-information for the Common UNIX Printing System<SUP>TM</SUP> (&quot;CUPS<SUP>
-TM</SUP>&quot;), version 1.1.8. </P>
+<P>This software administrators manual provides printer administration
+ information for the Common UNIX Printing System<SUP>TM</SUP> (&quot;CUPS<SUP>
+TM</SUP>&quot;), version 1.1.23.</P>
 <H2><A NAME="1_1">System Overview</A></H2>
-<P>CUPS provides a portable printing layer for UNIX&reg;-based operating 
-systems. It has been developed by <A HREF="http://www.easysw.com">Easy 
-Software Products</A> to promote a standard printing solution for all 
-UNIX vendors and users. CUPS provides the System V and Berkeley 
-command-line interfaces. </P>
-<P>CUPS uses the Internet Printing Protocol (&quot;IPP&quot;) as the basis for 
-managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server 
-Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are 
-also supported with reduced functionality. CUPS adds network printer 
-browsing and PostScript Printer Description (&quot;PPD&quot;) based printing 
-options to support real-world printing under UNIX. </P>
-<P>CUPS also includes a customized version of GNU Ghostscript 
-(currently based off GNU Ghostscript 5.50) and an image file RIP that 
-are used to support non-PostScript printers. Sample drivers for HP and 
-EPSON printers are included that use these filters. </P>
+<P>CUPS provides a portable printing layer for UNIX&reg;-based operating
+ systems. It has been developed by <A HREF="http://www.easysw.com">Easy
+ Software Products</A> to promote a standard printing solution for all
+ UNIX vendors and users. CUPS provides the System V and Berkeley
+ command-line interfaces.</P>
+<P>CUPS uses the Internet Printing Protocol (&quot;IPP&quot;) as the basis for
+ managing print jobs and queues. The Line Printer Daemon (&quot;LPD&quot;) Server
+ Message Block (&quot;SMB&quot;), and AppSocket (a.k.a. JetDirect) protocols are
+ also supported with reduced functionality. CUPS adds network printer
+ browsing and PostScript Printer Description (&quot;PPD&quot;) based printing
+ options to support real-world printing under UNIX.</P>
+<P>CUPS includes an image file RIP that supports printing of image files
+ to non-PostScript printers. A customized version of GNU Ghostscript
+ 7.05 for CUPS called ESP Ghostscript is available separately to support
+ printing of PostScript files within the CUPS driver framework. Sample
+ drivers for Dymo, EPSON, HP, and OKIDATA printers are included that use
+ these filters.</P>
+<P>Drivers for thousands of printers are provided with our ESP Print Pro
+ software, available at:</P>
+<PRE>
+    <A HREF="http://www.easysw.com/printpro/">http://www.easysw.com/printpro/</A>
+</PRE>
+<P>CUPS is licensed under the GNU General Public License and GNU Library
+ General Public License. Please contact Easy Software Products for
+ commercial support and &quot;binary distribution&quot; rights.</P>
 
 <!-- NEED 3in -->
 <H2><A NAME="1_2">Document Overview</A></H2>
-<P>This software administrators manual is organized into the following 
-sections:</P>
+<P>This software administrators manual is organized into the following
+ sections:</P>
 <UL>
 <LI><A HREF="#OVERVIEW">1 - Printing System Overview</A></LI>
 <LI><A HREF="#BUILDING_INSTALLING">2 - Building and Installing CUPS</A></LI>
@@ -300,16 +407,16 @@ sections:</P>
 <LI><A HREF="#FAQ">E - Troubleshooting Common Problems</A></LI>
 </UL>
 <H2><A NAME="1_3">Notation Conventions</A></H2>
-<P>Various font and syntax conventions are used in this guide. Examples 
-and their meanings and uses are explained below: 
+<P>Various font and syntax conventions are used in this guide. Examples
+ and their meanings and uses are explained below:
 <CENTER>
 <TABLE WIDTH="80%">
 <TR><TH>Example</TH><TD>&nbsp;&nbsp;&nbsp;</TD><TH>Description</TH></TR>
 <TR><TD>&nbsp;</TD></TR>
 <TR VALIGN="TOP"><TD><CODE>lpstat</CODE>
-<BR><CODE> lpstat(1)</CODE></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD>The names of commands; 
-the first mention of a command or  function in a chapter is followed by 
-a manual page section  number.</TD></TR>
+<BR> <CODE>lpstat(1)</CODE></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD>The names of commands;
+ the first mention of a command or function in a chapter is followed by
+ a manual page section number.</TD></TR>
 <TR><TD>&nbsp;</TD></TR>
 <TR VALIGN="TOP"><TD><VAR>/var</VAR>
 <BR><VAR> /usr/share/cups/data/testprint.ps</VAR></TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD>
@@ -319,204 +426,206 @@ File and directory names.</TD></TR>
 &nbsp;&nbsp;&nbsp;</TD><TD>Screen output.</TD></TR>
 <TR><TD>&nbsp;</TD></TR>
 <TR VALIGN="TOP"><TD NOWRAP><KBD>lp -d printer filename ENTER</KBD></TD><TD>
-&nbsp;&nbsp;&nbsp;</TD><TD>Literal user input; special keys like <KBD>ENTER</KBD> are 
+&nbsp;&nbsp;&nbsp;</TD><TD>Literal user input; special keys like <KBD>ENTER</KBD> are
  in ALL CAPS.</TD></TR>
 <TR><TD>&nbsp;</TD></TR>
-<TR VALIGN="TOP"><TD>12.3</TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD>Numbers in the text are 
-written using the period (.) to indicate  the decimal point.</TD></TR>
+<TR VALIGN="TOP"><TD>12.3</TD><TD>&nbsp;&nbsp;&nbsp;</TD><TD>Numbers in the text are
+ written using the period (.) to indicate the decimal point.</TD></TR>
 </TABLE>
 </CENTER>
 
 <!-- NEED 3in -->
 </P>
 <H2><A NAME="1_4">Abbreviations</A></H2>
- The following abbreviations are used throughout this manual: 
+ The following abbreviations are used throughout this manual:
 <UL>
 <DL>
-<DT>kb </DT>
+<DT>kb</DT>
 <DD>Kilobytes, or 1024 bytes
-<BR>&nbsp; </DD>
-<DT>Mb </DT>
+<BR>&nbsp;</DD>
+<DT>Mb</DT>
 <DD>Megabytes, or 1048576 bytes
-<BR>&nbsp; </DD>
-<DT>Gb </DT>
+<BR>&nbsp;</DD>
+<DT>Gb</DT>
 <DD>Gigabytes, or 1073741824 bytes
-<BR>&nbsp; </DD>
+<BR>&nbsp;</DD>
 </DL>
 </UL>
 <H2><A NAME="1_5">Other References</A></H2>
 <UL>
 <DL>
-<DT>CUPS Software Programmers Manual </DT>
-<DD>A programmer guide for interfacing with and/or extending the CUPS 
+<DT>CUPS Software Programmers Manual</DT>
+<DD>A programmer guide for interfacing with and/or extending the CUPS
  software.
-<BR>&nbsp; </DD>
-<DT>CUPS Software Users Manual </DT>
+<BR>&nbsp;</DD>
+<DT>CUPS Software Users Manual</DT>
 <DD>An end-user guide for using the CUPS software.
-<BR>&nbsp; </DD>
+<BR>&nbsp;</DD>
 </DL>
 </UL>
 <H1 ALIGN="RIGHT"><A NAME="OVERVIEW">1 - Printing System Overview</A></H1>
-<P>This chapter provides an overview of how the Common UNIX Printing 
-System works. </P>
+<P>This chapter provides an overview of how the Common UNIX Printing
+ System works.</P>
 <H2><A NAME="2_1">The Printing Problem</A></H2>
-<P>For years <I>the printing problem</I> has plagued UNIX. Unlike 
-Microsoft&reg; Windows&reg; or Mac OS, UNIX has no standard interface or system 
-in place for supporting printers. Among the solutions currently 
-available, the Berkeley and System V printing systems are the most 
-prevalent. </P>
-<P>These printing systems support line printers (text only) or 
-PostScript printers (text and graphics), and with some coaxing they can 
-be made to support a full range of printers and file formats. However, 
-because each varient of the UNIX operating system uses a different 
-printing system than the next developing printer drivers for a wide 
-range of printers and operating systems is extremely difficult. That 
-combined with the limited volume of customers for each UNIX varient has 
-forced most printer vendors to give up supporting UNIX entirely. </P>
-<P>CUPS is designed to eliminate <I>the printing problem</I>. One 
-common printing system can be used by all UNIX varients to support the 
-printing needs of users. Printer vendors can use its modular filter 
-interface to develop a single driver program that supports a wide range 
-of file formats with little or no effort.  Since CUPS provides both the 
-System V and Berkeley printing commands, users (and applications) can 
-reap the benefits of this new technology with no changes. </P>
+<P>For years<I> the printing problem</I> has plagued UNIX. Unlike
+ Microsoft&reg; Windows&reg; or Mac OS, UNIX has no standard interface or system
+ in place for supporting printers. Among the solutions currently
+ available, the Berkeley and System V printing systems are the most
+ prevalent.</P>
+<P>These printing systems support line printers (text only) or
+ PostScript printers (text and graphics), and with some coaxing they can
+ be made to support a full range of printers and file formats. However,
+ because each varient of the UNIX operating system uses a different
+ printing system than the next developing printer drivers for a wide
+ range of printers and operating systems is extremely difficult. That
+ combined with the limited volume of customers for each UNIX varient has
+ forced most printer vendors to give up supporting UNIX entirely.</P>
+<P>CUPS is designed to eliminate<I> the printing problem</I>. One common
+ printing system can be used by all UNIX varients to support the
+ printing needs of users. Printer vendors can use its modular filter
+ interface to develop a single driver program that supports a wide range
+ of file formats with little or no effort. Since CUPS provides both the
+ System V and Berkeley printing commands, users (and applications) can
+ reap the benefits of this new technology with no changes.</P>
 <H2><A NAME="2_2">The Technology</A></H2>
-<P>CUPS is based upon an emerging Internet standard called the Internet 
-Printing Protocol. IPP has been embraced by dozens of printer and 
-printer server manufacturers and is supported by Microsoft Windows 
-2000. </P>
-<P>IPP defines a standard protocol for printing as well as managing 
-print jobs and printer options like media size, resolution, and so 
-forth. Like all IP-based protocols, IPP can be used locally or over the 
-Internet to printers hundreds or thousands of miles away. Unlike other 
-protocols, however, IPP also supports access control, authentication, 
-and encryption, making it a much more capable and secure printing 
-solution than older ones. </P>
-<P>IPP is layered on top of the Hyper-Text Transport Protocol (&quot;HTTP&quot;) 
-which is the basis of web servers on the Internet. This allows users to 
-view documentation, check status information on a printer or server, 
-and manage their printers, classes, and jobs using their web browser. </P>
-<P>CUPS provides a complete IPP/1.1 based printing system that provides 
-Basic, Digest, and local certificate authentication and user, domain, 
-or IP-based access control. TLS encryption will be available in future 
-versions of CUPS. </P>
+<P>CUPS is based upon an emerging Internet standard called the Internet
+ Printing Protocol. IPP has been embraced by dozens of printer and
+ printer server manufacturers and is supported by Microsoft Windows
+ 2000.</P>
+<P>IPP defines a standard protocol for printing as well as managing
+ print jobs and printer options like media size, resolution, and so
+ forth. Like all IP-based protocols, IPP can be used locally or over the
+ Internet to printers hundreds or thousands of miles away. Unlike other
+ protocols, however, IPP also supports access control, authentication,
+ and encryption, making it a much more capable and secure printing
+ solution than older ones.</P>
+<P>IPP is layered on top of the Hyper-Text Transport Protocol (&quot;HTTP&quot;)
+ which is the basis of web servers on the Internet. This allows users to
+ view documentation, check status information on a printer or server,
+ and manage their printers, classes, and jobs using their web browser.</P>
+<P>CUPS provides a complete IPP/1.1 based printing system that provides
+ Basic, Digest, and local certificate authentication and user, domain,
+ or IP-based access control. TLS encryption will be available in future
+ versions of CUPS.</P>
 <H2><A NAME="2_3">Jobs</A></H2>
-<P>Each file or set of files that is submitted for printing is called a <I>
-job</I>. Jobs are identified by a unique number starting at 1 and are 
-assigned to a particular destination, usually a printer. Jobs can also 
-have options associated with them such as media size, number of copies, 
-and priority. </P>
+<P>Each file or set of files that is submitted for printing is called a<I>
+ job</I>. Jobs are identified by a unique number starting at 1 and are
+ assigned to a particular destination, usually a printer. Jobs can also
+ have options associated with them such as media size, number of copies,
+ and priority.</P>
 <H2><A NAME="2_4">Classes</A></H2>
-<P>CUPS supports collections of printers known as <I>classes</I>. Jobs 
-sent to a class are forwarded to the first available printer in the 
-class. </P>
+<P>CUPS supports collections of printers known as<I> classes</I>. Jobs
+ sent to a class are forwarded to the first available printer in the
+ class.</P>
 <H2><A NAME="2_5">Filters</A></H2>
-<P>Filters allow a user or application to print many types of files 
-without extra effort. Print jobs sent to a CUPS server are filtered 
-before sending them to a printer. Some filters convert job files to 
-different formats that the printer can understand. Others perform page 
-selection and ordering tasks. </P>
-<P>CUPS provides filters for printing many types of image files, 
-HP-GL/2 files, PDF files, and text files. CUPS also supplies PostScript 
-and image file Raster Image Processor (&quot;RIP&quot;) filters that convert 
-PostScript or image files into bitmaps that can be sent to a raster 
-printer. </P>
+<P>Filters allow a user or application to print many types of files
+ without extra effort. Print jobs sent to a CUPS server are filtered
+ before sending them to a printer. Some filters convert job files to
+ different formats that the printer can understand. Others perform page
+ selection and ordering tasks.</P>
+<P>CUPS provides filters for printing many types of image files, HP-GL/2
+ files, PDF files, and text files. CUPS also supplies PostScript and
+ image file Raster Image Processor (&quot;RIP&quot;) filters that convert
+ PostScript or image files into bitmaps that can be sent to a raster
+ printer.</P>
 <H2><A NAME="2_6">Backends</A></H2>
-<P>Backends perform the most important task of all - they send the 
-filtered print data to the printer. </P>
-<P>CUPS provides backends for printing over parallel, serial, and USB 
-ports, and over the network via the IPP, JetDirect (AppSocket), and 
-Line Printer Daemon (&quot;LPD&quot;) protocols. Additional backends are 
-available in network service packages such as the SMB backend included 
-with the popular SAMBA software. </P>
-<P>Backends are also used to determine the available devices. On 
-startup each backend is asked for a list of devices it supports, and 
-any information that is available. This allows the parallel backend to 
-tell CUPS that an EPSON Stylus Color 600 printer is attached to 
-parallel port 1, for example. </P>
+<P>Backends perform the most important task of all - they send the
+ filtered print data to the printer.</P>
+<P>CUPS provides backends for printing over parallel, serial, and USB
+ ports, and over the network via the IPP, JetDirect (AppSocket), and
+ Line Printer Daemon (&quot;LPD&quot;) protocols. Additional backends are
+ available in network service packages such as the SMB backend included
+ with the popular SAMBA software.</P>
+<P>Backends are also used to determine the available devices. On startup
+ each backend is asked for a list of devices it supports, and any
+ information that is available. This allows the parallel backend to tell
+ CUPS that an EPSON Stylus Color 600 printer is attached to parallel
+ port 1, for example.</P>
 <H2><A NAME="2_7">Printer Drivers</A></H2>
-<P>Printer drivers in CUPS consist of one of more filters specific to a 
-printer. CUPS includes sample printer drivers for Hewlett-Packard 
-LaserJet and DeskJet printers and EPSON 9-pin, 24-pin, Stylus Color, 
-and Stylus Photo printers. While these drivers do not generate optimal 
-output for the different printer models, they do provide basic printing 
-and demonstrate how you can write your own printer drivers and 
-incorporate them into CUPS. </P>
+<P>Printer drivers in CUPS consist of one of more filters specific to a
+ printer. CUPS includes sample printer drivers for Hewlett-Packard
+ LaserJet and DeskJet printers and EPSON 9-pin, 24-pin, Stylus Color,
+ and Stylus Photo printers. While these drivers do not generate optimal
+ output for the different printer models, they do provide basic printing
+ and demonstrate how you can write your own printer drivers and
+ incorporate them into CUPS.</P>
 <H2><A NAME="2_8">Networking</A></H2>
-<P>Printers and classes on the local system are automatically shared 
-with other systems on the network. This allows you to setup one system 
-to print to a printer and use this system as a printer server or spool 
-host for all of the others. Users may then select a local printer by 
-name or a remote printer using &quot;name@server&quot;. </P>
-<P>CUPS also provides <I>implicit classes</I>, which are collections of 
-printers and/or classes with the same name. This allows you to setup 
-multiple servers pointing to the same physical network printer, for 
-example, so that you aren't relying on a single system for printing. 
-Because this also works with printer classes, you can setup multiple 
-servers and printers and never worry about a single point of failure 
-unless all of the printers and servers go down! </P>
-<H1 ALIGN="RIGHT"><A NAME="BUILDING_INSTALLING">2 - Building and 
-Installing CUPS</A></H1>
-<P>This chapter shows how to build and install the Common UNIX Printing 
-System. If you are installing a binary distribution from the CUPS web 
-site, proceed to the section titled, <A HREF="#BINARY">Installing a 
-Binary Distribution</A>. </P>
+<P>Printers and classes on the local system are automatically shared
+ with other systems on the network. This allows you to setup one system
+ to print to a printer and use this system as a printer server or spool
+ host for all of the others. Users may then select a local printer by
+ name or a remote printer using &quot;name@server&quot;.</P>
+<P>CUPS also provides<I> implicit classes</I>, which are collections of
+ printers and/or classes with the same name. This allows you to setup
+ multiple servers pointing to the same physical network printer, for
+ example, so that you aren't relying on a single system for printing.
+ Because this also works with printer classes, you can setup multiple
+ servers and printers and never worry about a single point of failure
+ unless all of the printers and servers go down!</P>
+<H1 ALIGN="RIGHT"><A NAME="BUILDING_INSTALLING">2 - Building and
+ Installing CUPS</A></H1>
+<P>This chapter shows how to build and install the Common UNIX Printing
+ System. If you are installing a binary distribution from the CUPS web
+ site, proceed to the section titled, <A HREF="#BINARY">Installing a
+ Binary Distribution</A>.</P>
 <H2><A NAME="3_1">Installing a Source Distribution</A></H2>
-<P>This section describes how to compile and install CUPS on your 
-system from the source code. </P>
+<P>This section describes how to compile and install CUPS on your system
+ from the source code.</P>
 <H3><A NAME="REQUIREMENTS">Requirements</A></H3>
-<P>You'll need ANSI-compliant C and C++ compilers to build CUPS on your 
-system. As its name implies, CUPS is designed to run on the UNIX 
-operating system, however the CUPS interface library and most of the 
-filters and backends supplied with CUPS should also compile and run 
-under Microsoft Windows. </P>
-<P>For the image file filters and PostScript RIP, you'll need the JPEG, 
-PNG, TIFF, and ZLIB libraries. CUPS will build without these, but with 
-significantly reduced functionality. Easy Software Products maintains a 
-mirror of the current versions of these libraries at: </P>
+<P>You'll need ANSI-compliant C and C++ compilers to build CUPS on your
+ system. As its name implies, CUPS is designed to run on the UNIX
+ operating system, however the CUPS interface library and most of the
+ filters and backends supplied with CUPS should also compile and run
+ under Microsoft Windows.</P>
+<P>For the image file filters and PostScript RIP, you'll need the JPEG,
+ PNG, TIFF, and ZLIB libraries. CUPS will build without these, but with
+ significantly reduced functionality. Easy Software Products maintains a
+ mirror of the current versions of these libraries at:</P>
 <UL>
 <PRE>
 <A HREF="ftp://ftp.easysw.com/pub/libraries">ftp://ftp.easysw.com/pub/libraries</A>
 </PRE>
 </UL>
-<P>If you make changes to the man pages you'll need GNU groff or 
-another nroff-like package. GNU groff is available from: </P>
+<P>If you make changes to the man pages you'll need GNU groff or another
+ nroff-like package. GNU groff is available from:</P>
 <UL>
 <PRE>
 <A HREF="ftp://ftp.gnu.org/pub/groff">ftp://ftp.gnu.org/pub/groff</A>
 </PRE>
 </UL>
-<P>The documentation is formatted using the HTMLDOC software. If you 
-need to make changes you can get the HTMLDOC software from: </P>
+<P>The documentation is formatted using the HTMLDOC software. If you
+ need to make changes you can get the HTMLDOC software from:</P>
 <UL>
 <PRE>
 <A HREF="http://www.easysw.com/htmldoc">http://www.easysw.com/htmldoc</A>
 </PRE>
 </UL>
+<P>Finally, you'll need a <CODE>make</CODE> program that understands the
+ <CODE>include</CODE> directive - FreeBSD, NetBSD, and OpenBSD
+ developers should use the <CODE>gmake</CODE> program.</P>
 <H3><A NAME="COMPILING">Compiling CUPS</A></H3>
-<P>CUPS uses GNU autoconf to configure the makefiles and source code 
-for your system. Type the following command to configure CUPS for your 
-system: </P>
+<P>CUPS uses GNU autoconf to configure the makefiles and source code for
+ your system. Type the following command to configure CUPS for your
+ system:</P>
 <UL>
 <PRE>
 <B>./configure ENTER</B>
 </PRE>
 </UL>
-<P>The default installation will put the CUPS software in the <VAR>/etc</VAR>
-, <VAR>/usr</VAR>, and <VAR>/var</VAR> directories on your system, 
-which will overwrite any existing printing commands on your system. Use 
-the <CODE>--prefix</CODE> option to install the CUPS software in 
-another location: </P>
+<P>The default installation will put the CUPS software in the<VAR> /etc</VAR>
+,<VAR> /usr</VAR>, and<VAR> /var</VAR> directories on your system, which
+ will overwrite any existing printing commands on your system. Use the <CODE>
+--prefix</CODE> option to install the CUPS software in another location:</P>
 <UL>
 <PRE>
 <B>./configure --prefix=/some/directory ENTER</B>
 </PRE>
 </UL>
-<P>If the PNG, JPEG, TIFF, and ZLIB libraries are not installed in a 
-system default location (typically <VAR>/usr/include</VAR> and <VAR>
-/usr/lib</VAR>) you'll need to set the <CODE>CFLAGS</CODE>, <CODE>
-CXXFLAGS</CODE>, and <CODE>LDFLAGS</CODE> environment variables prior 
-to running configure: </P>
+<P>If the PNG, JPEG, TIFF, and ZLIB libraries are not installed in a
+ system default location (typically<VAR> /usr/include</VAR> and<VAR>
+ /usr/lib</VAR>) you'll need to set the <CODE>CFLAGS</CODE>, <CODE>
+CXXFLAGS</CODE>, and <CODE>LDFLAGS</CODE> environment variables prior to
+ running configure:</P>
 <UL>
 <PRE>
 <B>setenv CFLAGS &quot;-I/some/directory&quot; ENTER</B>
@@ -526,7 +635,7 @@ to running configure: </P>
 <B>./configure ... ENTER</B>
 </PRE>
 </UL>
-<P>or: </P>
+<P>or:</P>
 <UL>
 <PRE>
 <B>CFLAGS=&quot;-I/some/directory&quot;; export CFLAGS ENTER</B>
@@ -536,30 +645,40 @@ to running configure: </P>
 <B>./configure ... ENTER</B>
 </PRE>
 </UL>
-<P>To enable support for encryption, you'll also want to add the 
-&quot;--enable-ssl&quot; option: </P>
+<P>To enable support for encryption, you'll also want to add the
+ &quot;--enable-ssl&quot; option:</P>
 <UL>
 <PRE>
 ./configure --enable-ssl
 </PRE>
 </UL>
-<P>SSL and TLS support require the OpenSSL library, available at: </P>
+<P>SSL and TLS support require the OpenSSL library, available at:</P>
 <UL>
 <PRE>
 <A HREF="http://www.openssl.org">http://www.openssl.org</A>
 </PRE>
 </UL>
-<P>Once you have configured things, just type: </P>
+<P>If the OpenSSL headers and libraries are not installed in the
+ standard directories, use the <CODE>--with-openssl-includes</CODE> and <CODE>
+--with-openssl-libs</CODE> options:</P>
+<UL>
+<PRE>
+./configure --enable-ssl \
+    --with-openssl-includes=/foo/bar/include \
+    --with-openssl-libs=/foo/bar/lib
+</PRE>
+</UL>
+<P>Once you have configured things, just type:</P>
 <UL>
 <PRE>
 <B>make ENTER</B>
 </PRE>
 </UL>
-<P>to build the software. 
+<P>to build the software.
 <!-- NEED 4in -->
 </P>
 <H3><A NAME="INSTALLING">Installing the Software</A></H3>
-<P>Use the &quot;install&quot; target to install the software: </P>
+<P>Use the &quot;install&quot; target to install the software:</P>
 <UL>
 <PRE>
 <B>make install ENTER</B>
@@ -568,16 +687,16 @@ to running configure: </P>
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> WARNING:</B>
-<P>Installing CUPS will overwrite your existing printing  system. If 
-you experience difficulties with the CUPS software  and need to go back 
-to your old printing system, you will need  to reinstall the old 
-printing system from your operating system CDs. </P>
+<P>Installing CUPS will overwrite your existing printing system. If you
+ experience difficulties with the CUPS software and need to go back to
+ your old printing system, you will need to reinstall the old printing
+ system from your operating system CDs.</P>
 </TD></TR>
 </TABLE>
 </CENTER>
 <H3><A NAME="RUNNING">Running the Software</A></H3>
-<P>Once you have installed the software you can start the CUPS server 
-by typing: </P>
+<P>Once you have installed the software you can start the CUPS server by
+ typing:</P>
 <UL>
 <PRE>
 <B>/usr/sbin/cupsd ENTER</B>
@@ -586,83 +705,82 @@ by typing: </P>
 
 <!-- NEED 4in -->
 <H2><A NAME="BINARY">Installing a Binary Distribution</A></H2>
-<P>CUPS comes in a variety of binary distribution formats. Easy 
-Software Products provides binaries in TAR format with installation and 
-removal scripts (&quot;portable&quot; distributions), and in RPM and DPKG formats 
-for Red Hat and Debian-based distributions.  Portable distributions are 
-available for all platforms, while the RPM and DPKG distributions are 
-only available for Linux. 
+<P>CUPS comes in a variety of binary distribution formats. Easy Software
+ Products provides binaries in TAR format with installation and removal
+ scripts (&quot;portable&quot; distributions), and in RPM and DPKG formats for Red
+ Hat and Debian-based distributions. Portable distributions are
+ available for all platforms, while the RPM and DPKG distributions are
+ only available for Linux.
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> WARNING:</B>
-<P>Installing CUPS will overwrite your existing printing  system. If 
-you experience difficulties with the CUPS software  and need to go back 
-to your old printing system, you will need  to remove the CUPS software 
-with the provided script and/or  reinstall the old printing system from 
-your operating system CDs. </P>
+<P>Installing CUPS will overwrite your existing printing system. If you
+ experience difficulties with the CUPS software and need to go back to
+ your old printing system, you will need to remove the CUPS software
+ with the provided script and/or reinstall the old printing system from
+ your operating system CDs.</P>
 </TD></TR>
 </TABLE>
 </CENTER>
 </P>
 <H3><A NAME="PORTABLE-BINARY">Installing a Portable Distribution</A></H3>
-<P>To install the CUPS software from a portable distribution you will 
-need to be logged in as root; doing an <CODE>su</CODE> is good enough. 
-Once you are the root user, run the installation script with: </P>
+<P>To install the CUPS software from a portable distribution you will
+ need to be logged in as root; doing an <CODE>su</CODE> is good enough.
+ Once you are the root user, run the installation script with:</P>
 <UL>
 <PRE>
 <B>./cups.install ENTER</B>
 </PRE>
 </UL>
-<P>After asking you a few yes/no questions the CUPS software will be 
-installed and the scheduler will be started automatically. 
+<P>After asking you a few yes/no questions the CUPS software will be
+ installed and the scheduler will be started automatically.
 <!-- NEED 2in -->
 </P>
 <H3><A NAME="RPM-BINARY">Installing an RPM Distribution</A></H3>
-<P>To install the CUPS software from an RPM distribution you will need 
-to be logged in as root; doing an <CODE>su</CODE> is good enough. Once 
-you are the root user, run RPM with: </P>
+<P>To install the CUPS software from an RPM distribution you will need
+ to be logged in as root; doing an <CODE>su</CODE> is good enough. Once
+ you are the root user, run RPM with:</P>
 <UL>
 <PRE>
 <B>rpm -e lpr</B>
 <B>rpm -i cups-1.1-linux-M.m.n-intel.rpm ENTER</B>
 </PRE>
 </UL>
-<P>After a short delay the CUPS software will be installed and the 
-scheduler will be started automatically. </P>
+<P>After a short delay the CUPS software will be installed and the
+ scheduler will be started automatically.</P>
 <H3><A NAME="DPKG-BINARY">Installing an Debian Distribution</A></H3>
-<P>To install the CUPS software from a Debian distribution you will 
-need to be logged in as root; doing an <CODE>su</CODE> is good enough. 
-Once you are the root user, run dpkg with: </P>
+<P>To install the CUPS software from a Debian distribution you will need
+ to be logged in as root; doing an <CODE>su</CODE> is good enough. Once
+ you are the root user, run dpkg with:</P>
 <UL>
 <PRE>
 <B>dpkg -i cups-1.1-linux-M.m.n-intel.deb ENTER</B>
 </PRE>
 </UL>
-<P>After a short delay the CUPS software will be installed and the 
-scheduler will be started automatically. </P>
-<H1 ALIGN="RIGHT"><A NAME="PRINTER_MANAGEMENT">3 - Printer Management</A>
-</H1>
-<P>This chapter describes how to add your first printer and how to 
-manage your printers. </P>
+<P>After a short delay the CUPS software will be installed and the
+ scheduler will be started automatically.</P>
+<H1 ALIGN="RIGHT"><A NAME="MANAGING_PRINTERS">3 - Managing Printers</A></H1>
+<P>This chapter describes how to add your first printer and how to
+ manage your printers.</P>
 <H2><A NAME="4_1">The Basics</A></H2>
-<P>Each printer queue has a name associated with it; the printer name 
-must start with a letter and can contain up to 127 letters, numbers, 
-and the underscore (_). Case is not significant, e.g. &quot;PRINTER&quot;, 
-&quot;Printer&quot;, and &quot;printer&quot; are considered to be the same name. </P>
-<P>Printer queues also have a device associated with them. The device 
-can be a parallel port, a network interface, and so forth. Devices 
-within CUPS use Uniform Resource Identifiers (&quot;URIs&quot;) which are a more 
-general form of Uniform Resource Locators (&quot;URLs&quot;) that are used in 
-your web browser. For example, the first parallel port in Linux usually 
-uses a device URI of <CODE>parallel:/dev/lp1</CODE>. 
+<P>Each printer queue has a name associated with it; the printer name
+ must start with any printable character except &quot; &quot;, &quot;/&quot;, and &quot;@&quot;. It
+ can contain up to 127 letters, numbers, and the underscore (_). Case is
+ not significant, e.g. &quot;PRINTER&quot;, &quot;Printer&quot;, and &quot;printer&quot; are
+ considered to be the same name.</P>
+<P>Printer queues also have a device associated with them. The device
+ can be a parallel port, a network interface, and so forth. Devices
+ within CUPS use Uniform Resource Identifiers (&quot;URIs&quot;) which are a more
+ general form of Uniform Resource Locators (&quot;URLs&quot;) that are used in
+ your web browser. For example, the first parallel port in Linux usually
+ uses a device URI of <CODE>parallel:/dev/lp1</CODE>.
 <!-- NEED 2.5in -->
 </P>
 <P>You can see a complete list of supported devices by running the <CODE>
-lpinfo(8)</CODE> command: </P>
+lpinfo(8)</CODE> command:</P>
 <UL>
 <PRE>
 <B>lpinfo -v ENTER</B>
-file file
 network socket
 network http
 network ipp
@@ -674,377 +792,566 @@ direct usb:/dev/usb/lp0
 network smb
 </PRE>
 </UL>
-<P>The <CODE>-v</CODE> option specifies that you want a list of 
-available devices. The first word in each line is the type of device 
-(direct, file, network, or serial) and is followed by the device URI or 
-method name for that device. File devices have device URIs of the form <CODE>
-file:/directory/filename</CODE> while network devices use the more 
-familiar <CODE>method://server</CODE> or <CODE>method://server/path</CODE>
- format. </P>
-<P>Finally, printer queues usually have a PostScript Printer 
-Description (&quot;PPD&quot;) file associated with them. PPD files describe the 
-capabilities of each printer, the page sizes supported, etc., and are 
-used for PostScript and non-PostScript printers. CUPS includes PPD 
-files for HP LaserJet, HP DeskJet, EPSON 9-pin, EPSON 24-pin, and EPSON 
-Stylus printers. </P>
+<P>The <CODE>-v</CODE> option specifies that you want a list of
+ available devices. The first word in each line is the type of device
+ (direct, file, network, or serial) and is followed by the device URI or
+ method name for that device. File devices have device URIs of the form <CODE>
+file:/directory/filename</CODE> while network devices use the more
+ familiar <CODE>method://server</CODE> or <CODE>method://server/path</CODE>
+ format.</P>
+<P>Finally, printer queues usually have a PostScript Printer Description
+ (&quot;PPD&quot;) file associated with them. PPD files describe the capabilities
+ of each printer, the page sizes supported, etc., and are used for
+ PostScript and non-PostScript printers. CUPS includes PPD files for HP
+ LaserJet, HP DeskJet, EPSON 9-pin, EPSON 24-pin, and EPSON Stylus
+ printers.</P>
 <H2><A NAME="4_2">Adding Your First Printer</A></H2>
-<P>CUPS provides two methods for adding printers: a command-line 
-program called <CODE>lpadmin(8)</CODE> and a Web interface. The <CODE>
-lpadmin</CODE> command allows you to perform most printer 
-administration tasks from the command-line and is located in <VAR>
-/usr/sbin</VAR>. The Web interface is located at: </P>
+<P>CUPS provides two methods for adding printers: a command-line program
+ called <CODE>lpadmin(8)</CODE> and a Web interface. The <CODE>lpadmin</CODE>
+ command allows you to perform most printer administration tasks from
+ the command-line and is located in<VAR> /usr/sbin</VAR>. The Web
+ interface is located at:</P>
 <UL>
 <PRE>
 <A HREF="http://localhost:631/admin">http://localhost:631/admin</A>
 </PRE>
 </UL>
-<P>and steps you through printer configuration. If you don't like 
-command-line interfaces, try the <A HREF="#ADD_WEB">Web interface</A>
- instead. </P>
+<P>and steps you through printer configuration. If you don't like
+ command-line interfaces, try the <A HREF="#ADD_WEB">Web interface</A>
+ instead.</P>
 <H3><A NAME="4_2_1">Adding Your First Printer from the Command-Line</A></H3>
-<P>Run the <CODE>lpadmin</CODE> command with the <CODE>-p</CODE> option 
-to add a printer to CUPS: </P>
+<P>Run the <CODE>lpadmin</CODE> command with the <CODE>-p</CODE> option
+ to add a printer to CUPS:</P>
 <UL>
 <PRE>
 <B>/usr/sbin/lpadmin -p <I>printer</I> -E -v <I>device</I> -m <I>ppd</I> ENTER</B>
 </PRE>
 </UL>
-<P>For an HP DeskJet printer connected to the parallel port this would 
-look like: </P>
+<P>For a HP DeskJet printer connected to the parallel port this would
+ look like:</P>
 <UL>
 <PRE>
 <B>/usr/sbin/lpadmin -p DeskJet -E -v parallel:/dev/lp1 -m deskjet.ppd ENTER</B>
 </PRE>
 </UL>
-<P>Similarly, an HP LaserJet printer using a JetDirect network 
-interface at IP address 11.22.33.44 would be added with the command: </P>
+<P>Similarly, a HP LaserJet printer using a JetDirect network interface
+ at IP address 11.22.33.44 would be added with the command:</P>
 <UL>
 <PRE>
 <B>/usr/sbin/lpadmin -p LaserJet -E -v socket://11.22.33.44 -m laserjet.ppd ENTER</B>
 </PRE>
 </UL>
 <P>As you can see, <CODE>deskjet.ppd</CODE> and <CODE>laserjet.ppd</CODE>
- are the PPD files for the HP DeskJet and HP LaserJet drivers included 
-with CUPS. You'll find a complete list of PPD files and the printers 
-they will work with in <A HREF="#PRINTER_DRIVERS">Appendix C, &quot;Printer 
-Drivers&quot;</A>. </P>
+ are the PPD files for the HP DeskJet and HP LaserJet drivers included
+ with CUPS. You'll find a complete list of PPD files and the printers
+ they will work with in <A HREF="#PRINTER_DRIVERS">Appendix C, &quot;Printer
+ Drivers&quot;</A>.</P>
+<P>For a dot matrix printer connected to the serial port, this might
+ look like:</P>
+<UL>
+<PRE>
+<B>/usr/sbin/lpadmin -p DotMatrix -E -m epson9.ppd \
+    -v serial:/dev/ttyS0?baud=9600+size=8+parity=none+flow=soft <I>ENTER</I></B>
+</PRE>
+</UL>
+<P>Here you specify the serial port (e.g. S0,S1, d0, d1), baud rate
+ (e.g. 9600, 19200, 38400, 115200, etc.), number of bits, parity, and
+ flow control. If you do not need flow control, delete the &quot;+flow=soft&quot;
+ portion.</P>
 <H3><A NAME="ADD_WEB">Adding Your First Printer from the Web</A></H3>
-<P>The CUPS web server provides a user-friendly &quot;wizard&quot; interface for 
-adding your printers. Rather than figuring out which device URI and PPD 
-file to use, you can instead click on the appropriate listings and fill 
-in some simple information. Enter the following URL in your web browser 
-to begin: </P>
+<P>The CUPS web server provides a user-friendly &quot;wizard&quot; interface for
+ adding your printers. Rather than figuring out which device URI and PPD
+ file to use, you can instead click on the appropriate listings and fill
+ in some simple information. Enter the following URL in your web browser
+ to begin:</P>
 <UL>
 <PRE>
 <A HREF="http://localhost:631/admin">http://localhost:631/admin</A>
 </PRE>
 </UL>
-<P>Click on the <VAR>Add Printer</VAR> button to add a printer. </P>
+<P>Click on the<VAR> Add Printer</VAR> button to add a printer.</P>
 <H2><A NAME="4_3">Managing Printers from the Command-Line</A></H2>
-<P>The <CODE>lpadmin</CODE> command enables you to perform most printer 
-administration tasks from the command-line. You'll find <CODE>lpadmin</CODE>
- in the <VAR>/usr/sbin</VAR> directory. </P>
+<P>The <CODE>lpadmin</CODE> command enables you to perform most printer
+ administration tasks from the command-line. You'll find <CODE>lpadmin</CODE>
+ in the<VAR> /usr/sbin</VAR> directory.</P>
 <H3><A NAME="4_3_1">Adding and Modifying Printers</A></H3>
-<P>Run the <CODE>lpadmin</CODE> command with the <CODE>-p</CODE> option 
-to add or modify a printer: </P>
+<P>Run the <CODE>lpadmin</CODE> command with the <CODE>-p</CODE> option
+ to add or modify a printer:</P>
 <UL>
 <PRE>
 <B>/usr/sbin/lpadmin -p <I>printer</I> <I>options</I> ENTER</B>
 </PRE>
 </UL>
-<P>The <I>options</I> arguments can be any of the following: </P>
+<P>The<I> options</I> arguments can be any of the following:</P>
 <UL>
 <DL>
-<DT>-c <I>class</I></DT>
-<DD>Adds the named printer to printer class <VAR>class</VAR>.  If the 
-class does not exist then it is created. </DD>
-<DT>-i <I>interface</I></DT>
-<DD>Copies the named <VAR>interface</VAR> script to the printer. 
- Interface scripts are used by System V printer drivers. Since  all 
-filtering is disabled when using an interface script, scripts 
- generally should not be used unless there is no other driver for  a 
-printer. </DD>
-<DT>-m <I>model</I></DT>
-<DD>Specifies a standard printer driver which is usually a PPD  file. A 
-list of all available models can be displayed using the <CODE> lpinfo</CODE>
- command with the <CODE>-m</CODE> option. A  list of printer drivers 
-included with CUPS can be found in <A HREF="#PRINTER_DRIVERS"> Appendix 
-C, &quot;Printer Drivers&quot;</A>. </DD>
-<DT>-r <I>class</I></DT>
-<DD>Removes the named printer from printer class <VAR>class.  If the 
-resulting class becomes empty then it is removed. </VAR></DD>
-<DT>-v <I>device-uri</I></DT>
-<DD>Sets the device for communicating with the printer. If a  job is 
-currently printing on the named printer then the job  will be restarted 
-and sent to the new device. </DD>
-<DT>-D <I>info</I></DT>
-<DD>Provides a textual description of the printer, e.g.  &quot;John's 
-Personal Printer&quot;. </DD>
-<DT>-E </DT>
-<DD>Enables the printer and accepts job. This option is  equivalent to 
-running the <CODE>enable(1)</CODE> and <CODE> accept(8)</CODE> commands 
-on the printer. </DD>
-<DT>-L <I>location</I></DT>
-<DD>Provides a textual location for the printer, e.g.  &quot;Computer Lab 
-5&quot;. </DD>
-<DT>-P <I>ppd-file</I></DT>
-<DD>Specifies a local PPD file for the printer driver. </DD>
+<DT>-c<I> class</I></DT>
+<DD>Adds the named printer to printer class<VAR> class</VAR>. If the
+ class does not exist then it is created.</DD>
+<DT>-i<I> interface</I></DT>
+<DD>Copies the named<VAR> interface</VAR> script to the printer.
+ Interface scripts are used by System V printer drivers. Since all
+ filtering is disabled when using an interface script, scripts generally
+ should not be used unless there is no other driver for a printer.</DD>
+<DT>-m<I> model</I></DT>
+<DD>Specifies a standard printer driver which is usually a PPD file.
+ PPD's are usually stored under the<VAR> /usr/share/cups/model/</VAR>
+ directory structure. A list of all available models can be displayed
+ using the <CODE>lpinfo</CODE> command with the <CODE>-m</CODE> option.
+ A list of printer drivers included with CUPS can be found in <A HREF="#PRINTER_DRIVERS">
+Appendix C, &quot;Printer Drivers&quot;</A>.</DD>
+<DT>-r<I> class</I></DT>
+<DD>Removes the named printer from printer class<VAR> class</VAR>. If
+ the resulting class becomes empty then it is removed.</DD>
+<DT>-v<I> device-uri</I></DT>
+<DD>Sets the device for communicating with the printer. If a job is
+ currently printing on the named printer then the job will be restarted
+ and sent to the new device.</DD>
+<DT>-D<I> info</I></DT>
+<DD>Provides a textual description of the printer, e.g. &quot;John's Personal
+ Printer&quot;.</DD>
+<DT>-E</DT>
+<DD>Enables the printer and accepts job. This option is equivalent to
+ running the <CODE>enable(1)</CODE> and <CODE>accept(8)</CODE> commands
+ on the printer.</DD>
+<DT>-L<I> location</I></DT>
+<DD>Provides a textual location for the printer, e.g. &quot;Computer Lab 5&quot;.</DD>
+<DT>-P<I> ppd-file</I></DT>
+<DD>Specifies a local PPD file for the printer driver.</DD>
 </DL>
 </UL>
 <H3><A NAME="4_3_2">Deleting Printers</A></H3>
-<P>Run the <CODE>lpadmin</CODE> command with the <CODE>-x</CODE> option 
-to delete a printer: </P>
+<P>Run the <CODE>lpadmin</CODE> command with the <CODE>-x</CODE> option
+ to delete a printer:</P>
 <UL>
 <PRE>
 <B>/usr/sbin/lpadmin -x <I>printer</I> ENTER</B>
 </PRE>
 </UL>
 <H3><A NAME="4_3_3">Setting the Default Printer</A></H3>
-<P>Run the <CODE>lpadmin</CODE> command with the <CODE>-d</CODE> option 
-to set a default printer: </P>
+<P>Run the <CODE>lpadmin</CODE> command with the <CODE>-d</CODE> option
+ to set a default printer:</P>
 <UL>
 <PRE>
 <B>/usr/sbin/lpadmin -d <I>printer</I> ENTER</B>
 </PRE>
 </UL>
 <P>The default printer can be overridden by the user using the <CODE>
-lpoptions(1)</CODE> command. </P>
+lpoptions(1)</CODE> command.</P>
 <H3><A NAME="4_3_4">Starting and Stopping Printers</A></H3>
-<P>The <CODE>enable</CODE> and <CODE>disable</CODE> commands start and 
-stop printer queues, respectively: </P>
+<P>The <CODE>enable</CODE> and <CODE>disable</CODE> commands start and
+ stop printer queues, respectively:</P>
 <UL>
 <PRE>
 <B>/usr/bin/enable <I>printer</I> ENTER</B>
 <B>/usr/bin/disable <I>printer</I> ENTER</B>
 </PRE>
 </UL>
-<P>Printers that are disabled may still accept jobs for printing, but 
-won't actually print any files until they are restarted. This is useful 
-if the printer malfunctions and you need time to correct the problem. 
-Any queued jobs are printed after the printer is enabled (started). </P>
+<P>Printers that are disabled may still accept jobs for printing, but
+ won't actually print any files until they are restarted. This is useful
+ if the printer malfunctions and you need time to correct the problem.
+ Any queued jobs are printed after the printer is enabled (started).</P>
 <H3><A NAME="4_3_5">Accepting and Rejecting Print Jobs</A></H3>
-<P>The <CODE>accept</CODE> and <CODE>reject</CODE> commands accept and 
-reject print jobs for the named printer, respectively: </P>
+<P>The <CODE>accept</CODE> and <CODE>reject</CODE> commands accept and
+ reject print jobs for the named printer, respectively:</P>
 <UL>
 <PRE>
 <B>/usr/sbin/accept <I>printer</I> ENTER</B>
 <B>/usr/sbin/reject <I>printer</I> ENTER</B>
 </PRE>
 </UL>
-<P>As noted above, a printer can be stopped but accepting new print 
-jobs. A printer can also be rejecting new print jobs while it finishes 
-those that have been queued. This is useful for when you must perform 
-maintenance on the printer and will not have it available to users for 
-a long period of time. </P>
+<P>As noted above, a printer can be stopped but accepting new print
+ jobs. A printer can also be rejecting new print jobs while it finishes
+ those that have been queued. This is useful for when you must perform
+ maintenance on the printer and will not have it available to users for
+ a long period of time.</P>
+<H3><A NAME="4_3_6">Setting Quotas on a Printer</A></H3>
+<P>CUPS supports page and size-based quotas for each printer. The quotas
+ are tracked individually for each user, but a single set of limits
+ applies to all users for a partiuclar printer. For example, you can
+ limit every user to 5 pages per day on an expensive printer, but you
+ cannot limit every user except Johnny.</P>
+<P>The<I> job-k-limit</I>,<I> job-page-limit</I>, and<I> job-quota-peiod</I>
+ options determine whether and how quotas are enforced for a printer.
+ The<I> job-quota-period</I> option determines the time interval for
+ quota tracking. The interval is expressed in seconds, so a day is
+ 86,400, a week is 604,800 and a month is 2,592,000 seconds. The<I>
+ job-k-limit</I> option specifies the job size limit in killobytes. The<I>
+ job-page-limit</I> option specifies the number of pages limit.</P>
+<P>For quotas to be enforced, the period and at least one of the limits
+ must be set to a non-zero value. The following options will enable
+ quotas:</P>
+<UL>
+<PRE>
+<B>/usr/sbin/lpadmin -p <I>printer</I> -o job-quota-period=604800 \
+    -o job-k-limit=1024 <I>ENTER</I></B>
+<B>/usr/sbin/lpadmin -p <I>printer</I> -o job-quota-period=604800 \
+    -o job-page-limit=100 <I>ENTER</I></B>
+</PRE>
+</UL>
+<P>Or, you can combine all three options on the same line.</P>
+<H3><A NAME="4_3_7">Restricting User Access to a Printer</A></H3>
+<P>The <CODE>-u</CODE> option of the <CODE>lpadmin</CODE> command
+ controls which users can print to a printer. The default configuration
+ allows all users to print to a printer:</P>
+<UL>
+<PRE>
+<B>/usr/sbin/lpadmin -p <I>printer</I> -u allow:all <I>ENTER</I></B>
+</PRE>
+</UL>
+<P>CUPS supports allow and deny lists so that you can specify a list of
+ users who are allowed to print or not allowed to print. Along with your
+ list of users, you can specify whether they are allowed or not allowed
+ to use the printer:</P>
+<UL>
+<PRE>
+<B>/usr/sbin/lpadmin -p <I>printer</I> -u allow:peter,paul,mary <I>ENTER</I></B>
+</PRE>
+</UL>
+<P>This command allows peter, paul, and mary to print to the named
+ printer, but all other users cannot print. The command:</P>
+<UL>
+<PRE>
+<B>/usr/sbin/lpadmin -p <I>printer</I> -u deny:peter,paul,mary <I>ENTER</I></B>
+</PRE>
+</UL>
+<P>has the opposite effect. All users except peter, paul, and mary will
+ be able to print to the named printer.</P>
+<P>You can control access by UNIX groups as well by placing an &quot;@&quot;
+ character before each group name. The command:</P>
+<UL>
+<PRE>
+<B>/usr/sbin/lpadmin -p <I>printer</I> -u allow:peter,paul,mary,@printgods <I>ENTER</I></B>
+</PRE>
+</UL>
+<P>allows the users peter, paul, and mary to print, as well as any user
+ in the printgods group to print.
+<CENTER>
+<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
+<TR><TD><B>NOTE:</B>
+<P>The<I> allow</I> and<I> deny</I> options are not cummulative. That
+ is, you must provide the complete list of users to allow or deny each
+ time.</P>
+<P>Also, CUPS only maintains one list of users - the list can allow or
+ deny users from printing. If you specify an allow list and then specify
+ a deny list, the deny list will replace the allow list - only one list
+ is active at any time.</P>
+</TD></TR>
+</TABLE>
+</CENTER>
+</P>
 <H2><A NAME="4_4">Managing Printers from the Web</A></H2>
-<P>The Web interface is located at: </P>
+<P>The Web interface is located at:</P>
 <UL>
 <PRE>
 <A HREF="http://localhost:631/admin">http://localhost:631/admin</A>
 </PRE>
 </UL>
-<P>From there you can perform all printer management tasks with a few 
-simple mouse clicks. </P>
+<P>From there you can perform all printer management tasks with a few
+ simple mouse clicks.</P>
 <H1 ALIGN="RIGHT"><A NAME="PRINTER_CLASSES">4 - Printer Classes</A></H1>
-<P>This chapter describes what printer classes are and how to manage 
-them. </P>
+<P>This chapter describes what printer classes are and how to manage
+ them.</P>
 <H2><A NAME="5_1">The Basics</A></H2>
-<P>CUPS provides collections of printers called <I>printer classes</I>. 
-Jobs sent to a class are forwarded to the first available printer in 
-the class. Classes can themselves be members of other classes, so it is 
-possible for you to define very large, distributed printer classes for 
-high-availability printing. </P>
-<P>CUPS also supports <I>implicit classes</I>. Implicit classes work 
-just like printer classes, but they are created automatically based 
-upon the available printers and classes on the network. This allows you 
-to setup multiple print servers with identical printer configurations 
-and have the client machines send their print jobs to the first 
-available server. If one or more servers go down, the jobs are 
-automatically redirected to the servers that are running, providing 
-fail-safe printing. </P>
+<P>CUPS provides collections of printers called<I> printer classes</I>.
+ Jobs sent to a class are forwarded to the first available printer in
+ the class. Classes can themselves be members of other classes, so it is
+ possible for you to define very large, distributed printer classes for
+ high-availability printing.</P>
+<P>CUPS also supports<I> implicit classes</I>. Implicit classes work
+ just like printer classes, but they are created automatically based
+ upon the available printers and classes on the network. This allows you
+ to setup multiple print servers with identical printer configurations
+ and have the client machines send their print jobs to the first
+ available server. If one or more servers go down, the jobs are
+ automatically redirected to the servers that are running, providing
+ fail-safe printing.</P>
 <H2><A NAME="5_2">Managing Printer Classes from the Command-Line</A></H2>
 <P>Run the <CODE>lpadmin</CODE> command with the <CODE>-p</CODE> and <CODE>
--c</CODE> options to add a printer to a class: </P>
+-c</CODE> options to add a printer to a class:</P>
 <UL>
 <PRE>
 <B>/usr/sbin/lpadmin -p <I>printer</I> -c <I>class</I> ENTER</B>
 </PRE>
 </UL>
-<P>The <I>class</I> is created automatically if it doesn't exist. To 
-remove a printer from a class use the <CODE>-r</CODE> option: </P>
+<P>The<I> class</I> is created automatically if it doesn't exist. To
+ remove a printer from a class use the <CODE>-r</CODE> option:</P>
 <UL>
 <PRE>
 <B>/usr/sbin/lpadmin -p <I>printer</I> -r <I>class</I> ENTER</B>
 </PRE>
 </UL>
-<P>To remove the entire class just use the <CODE>-x</CODE> option: </P>
+<P>To remove the entire class just use the <CODE>-x</CODE> option:</P>
 <UL>
 <PRE>
 <B>/usr/sbin/lpadmin -x <I>class</I> ENTER</B>
 </PRE>
 </UL>
 <H2><A NAME="5_3">Managing Printer Classes from the Web Interface</A></H2>
-<P>The Web interface is located at: </P>
+<P>The Web interface is located at:</P>
 <UL>
 <PRE>
 <A HREF="http://localhost:631/admin">http://localhost:631/admin</A>
 </PRE>
 </UL>
-<P>The <VAR>Add Class</VAR> and <VAR>Modify Class</VAR> interfaces 
-provide a list of available printers; click on the printers of interest 
-to add them to the class. </P>
+<P>The<VAR> Add Class</VAR> and<VAR> Modify Class</VAR> interfaces
+ provide a list of available printers; click on the printers of interest
+ to add them to the class.</P>
 <H2><A NAME="5_4">Implicit Classes</A></H2>
-<P>A noted earlier, implicit classes are created automatically from the 
-available network printers and classes. To disable this functionality, 
-set the <A HREF="#ImplicitClasses"><CODE>ImplicitClasses</CODE></A>
- directive to <CODE>Off</CODE> in the <CODE>cupsd.conf</CODE> file. You 
-will find more information on doing this in <A HREF="#PRINTING_MANAGEMENT">
-Chapter 6, &quot;Printing System Management&quot;</A>. </P>
+<P>A noted earlier, implicit classes are created automatically from the
+ available network printers and classes. To disable this functionality,
+ set the <A HREF="#ImplicitClasses"><CODE>ImplicitClasses</CODE></A>
+ directive to <CODE>Off</CODE> in the <CODE>cupsd.conf</CODE> file. You
+ will find more information on doing this in <A HREF="#PRINTING_MANAGEMENT">
+Chapter 6, &quot;Printing System Management&quot;</A>.</P>
 <H1 ALIGN="RIGHT"><A NAME="CLIENT_SETUP">5 - Client Setup</A></H1>
-<P>This chapter discusses several ways to configure CUPS clients for 
-printing. </P>
+<P>This chapter discusses several ways to configure CUPS clients for
+ printing.</P>
 <H2><A NAME="6_1">The Basics</A></H2>
-<P>A client is any machine that sends print jobs to another machine for 
-final printing. Clients can also be servers if they communicate 
-directly with any printers of their own. </P>
-<P>CUPS supports several methods of configuring client machines: </P>
+<P>A client is any machine that sends print jobs to another machine for
+ final printing. Clients can also be servers if they communicate
+ directly with any printers of their own.</P>
+<P>CUPS supports several methods of configuring client machines:</P>
 <UL>
 <LI><A HREF="#CLIENT_MANUAL">Manual configuration of print queues.</A></LI>
 <LI><A HREF="#CLIENT_SERVER">Specifying a single server for printing.</A>
 </LI>
 <LI><A HREF="#CLIENT_AUTO">Automatic configuration of print queues.</A></LI>
 <LI><A HREF="#CLIENT_POLL">Specifying multiple servers for printing.</A></LI>
+<LI><A HREF="#CLIENT_RELAY">Relaying printers to other clients.</A></LI>
 </UL>
 <H3><A NAME="CLIENT_MANUAL">Manual Configuration of Print Queues</A></H3>
-<P>The most tedious method of configuring client machines is to 
-configure each remote queue by hand using the <CODE>lpadmin</CODE>
- command: </P>
+<P>The most tedious method of configuring client machines is to
+ configure each remote queue by hand using the <CODE>lpadmin</CODE>
+ command:</P>
 <UL>
 <PRE>
 <B>lpadmin -p <I>printer</I> -E -v ipp://<I>server</I>/printers/<I>printer</I> ENTER</B>
 </PRE>
 </UL>
-<P>The <CODE>printer</CODE> name is the name of the printer on the 
-server machine. The <CODE>server</CODE> name is the hostname or IP 
-address of the server machine. Repeat the <CODE>lpadmin</CODE> command 
-for each remote printer you wish to use. </P>
+<P>The <CODE>printer</CODE> name is the name of the printer on the
+ server machine. The <CODE>server</CODE> name is the hostname or IP
+ address of the server machine. Repeat the <CODE>lpadmin</CODE> command
+ for each remote printer you wish to use.</P>
+<CENTER>
+<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
+<TR><TD><B> NOTE:</B>
+<P>Manual configuration of print queues is not recommended for large
+ numbers of client machines because of the administration nightmare it
+ creates. For busy networks, consider subnetting groups of clients and
+ polling and relaying printer information instead.</P>
+</TD></TR>
+</TABLE>
+</CENTER>
 <H3><A NAME="CLIENT_SERVER">Specifying a Single Server for Printing</A></H3>
-<P>CUPS can be configured to run without a local spooler and send all 
-jobs to a single server. However, if that server goes down then all 
-printing will be disabled. Use this configuration only as absolutely 
-needed. </P>
-<P>The default server is normally &quot;localhost&quot;. To override the default 
-server create a file named <VAR>/etc/cups/client.conf</VAR> and add a 
-line reading: </P>
+<P>CUPS can be configured to run without a local spooler and send all
+ jobs to a single server. However, if that server goes down then all
+ printing will be disabled. Use this configuration only as absolutely
+ needed.</P>
+<P>The default server is normally &quot;localhost&quot;. To override the default
+ server create a file named<VAR> /etc/cups/client.conf</VAR> and add a
+ line reading:</P>
 <UL>
 <PRE>
 ServerName <I>server</I>
 </PRE>
 </UL>
-<P>to the file. The <VAR>server</VAR> name can be the hostname or IP 
-address of the default server. </P>
-<P>The default server can also be customized on a per-user basis. To 
-set a user-specific server create a file named <VAR>~/.cupsrc</VAR> and 
-add a line reading: </P>
+<P>to the file. The<VAR> server</VAR> name can be the hostname or IP
+ address of the default server.</P>
+<P>The default server can also be customized on a per-user basis. To set
+ a user-specific server create a file named<VAR> ~/.cupsrc</VAR> and add
+ a line reading:</P>
 <UL>
 <PRE>
 ServerName <I>server</I>
 </PRE>
 </UL>
-<P>to the file. The <VAR>server</VAR> name can be the hostname or IP 
-address of the default server. </P>
+<P>to the file. The<VAR> server</VAR> name can be the hostname or IP
+ address of the default server.</P>
 <H3><A NAME="CLIENT_AUTO">Automatic Configuration of Print Queues</A></H3>
-<P>CUPS supports automatic client configuration of printers on the same 
-subnet. To configure printers on the same subnet, <I>do nothing</I>. 
-Each client should see the available printers within 30 seconds 
-automatically. The printer and class lists are updated automatically as 
-printers and servers are added or removed. </P>
+<P>CUPS supports automatic client configuration of printers on the same
+ subnet. To configure printers on the same subnet,<I> do nothing</I>.
+ Each client should see the available printers within 30 seconds
+ automatically. The printer and class lists are updated automatically as
+ printers and servers are added or removed.</P>
 <P>If you want to see printers on other subnets as well, use the <A HREF="#BrowsePoll">
-<CODE>BrowsePoll</CODE></A> directive as described next. </P>
+<CODE>BrowsePoll</CODE></A> directive as described next.</P>
+<CENTER>
+<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
+<TR><TD><B> NOTE:</B>
+<P>The<A HREF="#BrowseAddress"> <CODE>BrowseAddress</CODE></A> directive
+ enables broadcast traffic from your server. The default configuration
+ braodcasts printer information every 30 seconds. Although this printer
+ information does not use much bandwidth, typically about 80 bytes per
+ printer, it can add up with large numbers of servers and printers.</P>
+<P>Use the <A HREF="#BrowseInterval"><CODE>BrowseInterval</CODE></A> and
+ <A HREF="#BrowseTimeout"><CODE>BrowseTimeout</CODE></A> directives to
+ tune the amount of data that is added to your network load. In
+ addition, subnets can be used to minimize the amount of traffic that is
+ carried by the &quot;backbone&quot; of your large network.</P>
+</TD></TR>
+</TABLE>
+</CENTER>
 <H3><A NAME="CLIENT_POLL">Specifying Multiple Servers for Printing</A></H3>
-<P>If you have CUPS servers on different subnets, then you should 
-configure CUPS to poll those servers. Polling provides the benefits of 
-automatic configuration without significant configuration on the 
-clients, and multiple clients on the same subnet can share the same 
-configuration information. </P>
+<P>If you have CUPS servers on different subnets, then you should
+ configure CUPS to poll those servers. Polling provides the benefits of
+ automatic configuration without significant configuration on the
+ clients, and multiple clients on the same subnet can share the same
+ configuration information.</P>
 <P>Polling is enabled by specifying one or more <A HREF="#BrowsePoll"><CODE>
-BrowsePoll</CODE></A> directives in the <VAR>/etc/cups/cupsd.conf</VAR>
- file. For information on making these changes, see <A HREF="PRINTING_MANAGEMENT">
-Chapter 6, &quot;Printing System Management&quot;</A>. </P>
-<H1 ALIGN="RIGHT"><A NAME="PRINTING_MANAGEMENT">6 - Printing System 
-Management</A></H1>
-<P>This chapter shows how you can configure the CUPS server. </P>
+BrowsePoll</CODE></A> directives in the<VAR> /etc/cups/cupsd.conf</VAR>
+ file. For information on making these changes, see <A HREF="#PRINTING_MANAGEMENT">
+Chapter 6, &quot;Printing System Management&quot;</A>.</P>
+<P>Multiple <A HREF="#BrowsePoll"><CODE>BrowsePoll</CODE></A> lines can
+ be used to poll multiple CUPS servers. To limit the amount of polling
+ you do from client machines, you can have only one of the clients do
+ the polling and relay that information to the others on the same subnet
+ (described next).</P>
+<H3><A NAME="CLIENT_RELAY">Relaying Printers to Other Clients</A></H3>
+<P>When you have clients and servers spread across multiple subnets, the
+ polling method is inefficient. CUPS provides a <A HREF="#BrowseRelay"><CODE>
+BrowseRelay</CODE></A> directive that enables a single client to relay
+ (broadcast) the polled printer information to the local subnet.</P>
+<P>For example, Server A and Server B are on subnet 1 and subnet 2,
+ while the clients are on subnet 3. To provide printers to all of the
+ clients in subnet 3, client C will be configured with the following
+ directives in<VAR> /etc/cups/cupsd.conf</VAR>:</P>
+<UL>
+<PRE>
+# Poll the two servers
+<B>
+BrowsePoll ServerA
+BrowsePoll ServerB
+</B>
+
+# Relay the printers to the local subnet
+<B>
+BrowseRelay 127.0.0.1 192.168.3.255
+</B></PRE>
+</UL>
+<P>The <A HREF="#BrowseRelay"><CODE>BrowseRelay</CODE></A> line
+ specifies a source address and mask. Any browse packets coming from a
+ matching address wil be sent to the given broadcast address. In this
+ case, we want the packets from the local machine (127.0.0.1) relayed to
+ the other clients.</P>
+<P>As printers are found using polling, they are relayed from client C
+ to the rest of the clients through a broadcast on subnet 3. The rest of
+ the clients can use the standard<VAR> cupsd.conf</VAR> configuration.</P>
+<P>The <A HREF="#BrowseRelay"><CODE>BrowseRelay</CODE></A> directive can
+ also be used to relay browsing packets from one network interface to
+ another. For example, if client C in the previous example had network
+ interfaces attaches to both subnet 1 and subnet 2, it could use the <A HREF="#BrowseRelay">
+<CODE>BrowseRelay</CODE></A> directive exclusively:</P>
+<UL>
+<PRE>
+# Relay the printers from subnet 1 and 2 to subnet 3
+<B>
+BrowseRelay 192.168.1 192.168.3.255
+BrowseRelay 192.168.2 192.168.3.255
+</B></PRE>
+</UL>
+
+<!-- NEED 3in -->
+<H2><A NAME="6_2">Load Balancing and Failsafe Operation</A></H2>
+<P>When using server polling or broadcasting, CUPS clients can
+ automatically merge identical printers on multiple servers into a
+ single<I> implicit class</I> queue. Clients assume that printers with
+ the same name on multiple servers are in fact the same printer or type
+ of printer being served by multiple machines.</P>
+<P>If you have two printers, LaserJet@ServerA and LaserJet@ServerB, a
+ third implicit class called<I> LaserJet</I> will be created
+ automatically on the client that refers to both printers. If the client
+ also has a local printer with the name LaserJet and the <A HREF="#ImplicitAnyClasses">
+<CODE>ImplicitAnyClasses</CODE></A> directive is enabled, then an
+ implicit class named<I> AnyLaserJet</I> will be created instead.
+ Otherwise, the local printer will prevent the creation of an implicit
+ class, since CUPS will assume that the local printer will always be
+ more available than a remote one.</P>
+<P>The client will alternate between servers and automatically stop
+ sending jobs to a server if it goes down, providing a load-balancing
+ effect and fail-safe operation with automatic switchover.</P>
+<CENTER>
+<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
+<TR><TD><B> NOTE:</B>
+<P>Note that implicit classes (<A HREF="#ImplicitClasses"><CODE>
+ImplicitClasses</CODE></A>) are enabled and implicit &quot;any&quot; classes (<A HREF="#ImplicitAnyClasses">
+<CODE>ImplicitAnyClasses</CODE></A>) are disabled by default.</P>
+</TD></TR>
+</TABLE>
+</CENTER>
+<H1 ALIGN="RIGHT"><A NAME="PRINTING_MANAGEMENT">6 - Printing System
+ Management</A></H1>
+<P>This chapter shows how you can configure the CUPS server.</P>
 <H2><A NAME="7_1">The Basics</A></H2>
-<P>Several text files are used to configure CUPS. All of the server 
-configuration files are located in the <VAR>/etc/cups</VAR> directory: </P>
+<P>Several text files are used to configure CUPS. All of the server
+ configuration files are located in the<VAR> /etc/cups</VAR> directory:</P>
 <UL>
 <DL>
 <!-- NEED 1in -->
-
-<DT>classes.conf </DT>
-<DD>This file contains information on each printer class.  Normally you 
-manipulate this file using the <CODE> lpadmin</CODE> command or the Web 
-interface.
-<BR>&nbsp; 
+<DT>classes.conf</DT>
+<DD>This file contains information on each printer class. Normally you
+ manipulate this file using the <CODE>lpadmin</CODE> command or the Web
+ interface.
+<BR>&nbsp;
 <!-- NEED 1in -->
 </DD>
-<DT>client.conf </DT>
-<DD>This file provides the default server name for client  machines. 
-See <A HREF="#CLIENT_SETUP">Chapter 5, &quot;Client  Setup&quot;</A> for more 
-information.
-<BR>&nbsp; 
+<DT>client.conf</DT>
+<DD>This file provides the default server name for client machines. See <A
+HREF="#CLIENT_SETUP">Chapter 5, &quot;Client Setup&quot;</A> for more information.
+<BR>&nbsp;
 <!-- NEED 1in -->
 </DD>
-<DT>cupsd.conf </DT>
-<DD>This file controls how the CUPS server  (<VAR>/usr/sbin/cupsd</VAR>
-) operates and is normally edited by  hand.
-<BR>&nbsp; 
+<DT>cupsd.conf</DT>
+<DD>This file controls how the CUPS server (<VAR>/usr/sbin/cupsd</VAR>)
+ operates and is normally edited by hand.
+<BR>&nbsp;
 <!-- NEED 1in -->
 </DD>
-<DT>mime.convs </DT>
-<DD>This file contains a list of standard file conversion filters  and 
-their costs. You normally do not edit this file.
-<BR>&nbsp; 
+<DT>mime.convs</DT>
+<DD>This file contains a list of standard file conversion filters and
+ their costs. You normally do not edit this file.
+<BR>&nbsp;
 <!-- NEED 1in -->
 </DD>
-<DT>mime.types </DT>
-<DD>This file contains a list of standard file formats and how to 
+<DT>mime.types</DT>
+<DD>This file contains a list of standard file formats and how to
  recognize them. You normally do not edit this file.
-<BR>&nbsp; 
+<BR>&nbsp;
 <!-- NEED 1in -->
 </DD>
-<DT>printers.conf </DT>
-<DD>This file contains information on each printer. Normally  you 
-manipulate this file using the <CODE>lpadmin</CODE> command  or the Web 
-Interface.
-<BR>&nbsp; </DD>
+<DT>printers.conf</DT>
+<DD>This file contains information on each printer. Normally you
+ manipulate this file using the <CODE>lpadmin</CODE> command or the Web
+ Interface.
+<BR>&nbsp;</DD>
 </DL>
 </UL>
 <H2><A NAME="RESTARTING">Restarting the CUPS Server</A></H2>
-<P>Once you have made a change to a configuration file you need to 
-restart the CUPS server by sending it a <CODE>HUP</CODE> signal or 
-using the supplied initialization script. The CUPS distributions 
-install the script in the <VAR>init.d</VAR> directory with the name <VAR>
-cups</VAR>. The location varies based upon the operating system: </P>
+<P>Once you have made a change to a configuration file you need to
+ restart the CUPS server by sending it a <CODE>HUP</CODE> signal or
+ using the supplied initialization script. The CUPS distributions
+ install the script in the<VAR> init.d</VAR> directory with the name<VAR>
+ cups</VAR>. The location varies based upon the operating system:</P>
 <UL>
 <PRE>
+<B>/etc/software/init.d/cups restart ENTER</B>
 <B>/etc/rc.d/init.d/cups restart ENTER</B>
 <B>/etc/init.d/cups restart ENTER</B>
 <B>/sbin/init.d/cups restart ENTER</B>
 </PRE>
 </UL>
 <H2><A NAME="7_3">Changing the Server Configuration</A></H2>
-<P>The <VAR>/etc/cups/cupsd.conf</VAR> file contains configuration <I>
-directives</I> that control how the server functions. Each directive is 
-listed on a line by itself followed by its value. Comments are 
-introduced using the number sign (&quot;#&quot;) character at the beginning of a 
-line. Since the server configuration file consists of plain text, you 
-can use your favorite text editor to make changes to it. 
+<P>The<VAR> /etc/cups/cupsd.conf</VAR> file contains configuration<I>
+ directives</I> that control how the server functions. Each directive is
+ listed on a line by itself followed by its value. Comments are
+ introduced using the number sign (&quot;#&quot;) character at the beginning of a
+ line. Since the server configuration file consists of plain text, you
+ can use your favorite text editor to make changes to it.
 <!-- NEED 4in -->
 </P>
 <H2><A NAME="7_4">Server Directives</A></H2>
-<P>The <VAR>cupsd.conf</VAR> file contains many directives that 
-determine how the server operates: </P>
+<P>The<VAR> cupsd.conf</VAR> file contains many directives that
+ determine how the server operates:</P>
 <UL>
 <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
 <TR><TD VALIGN="TOP">
@@ -1061,24 +1368,34 @@ determine how the server operates: </P>
 <LI><A HREF="#BrowseOrder"><CODE>BrowseOrder</CODE></A></LI>
 <LI><A HREF="#BrowsePoll"><CODE>BrowsePoll</CODE></A></LI>
 <LI><A HREF="#BrowsePort"><CODE>BrowsePort</CODE></A></LI>
+<LI><A HREF="#BrowseProtocols"><CODE>BrowseProtocols</CODE></A></LI>
 <LI><A HREF="#BrowseRelay"><CODE>BrowseRelay</CODE></A></LI>
 <LI><A HREF="#BrowseShortNames"><CODE>BrowseShortNames</CODE></A></LI>
 <LI><A HREF="#BrowseTimeout"><CODE>BrowseTimeout</CODE></A></LI>
 <LI><A HREF="#Browsing"><CODE>Browsing</CODE></A></LI>
 <LI><A HREF="#Classification"><CODE>Classification</CODE></A></LI>
+<LI><A HREF="#ClassifyOverride"><CODE>ClassifyOverride</CODE></A></LI>
+<LI><A HREF="#ConfigFilePerm"><CODE>ConfigFilePerm</CODE></A></LI>
 <LI><A HREF="#DataDir"><CODE>DataDir</CODE></A></LI>
 <LI><A HREF="#DefaultCharset"><CODE>DefaultCharset</CODE></A></LI>
 <LI><A HREF="#DefaultLanguage"><CODE>DefaultLanguage</CODE></A></LI>
 <LI><A HREF="#Deny"><CODE>Deny</CODE></A></LI>
 <LI><A HREF="#DocumentRoot"><CODE>DocumentRoot</CODE></A></LI>
-</TD><TD VALIGN="TOP"> &nbsp;&nbsp;&nbsp; </TD><TD VALIGN="TOP">
 <LI><A HREF="#Encryption"><CODE>Encryption</CODE></A></LI>
 <LI><A HREF="#ErrorLog"><CODE>ErrorLog</CODE></A></LI>
+<LI><A HREF="#FaxRetryInterval"><CODE>FaxRetryInterval</CODE></A></LI>
+</TD><TD VALIGN="TOP"> &nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
+<LI><A HREF="#FaxRetryLimit"><CODE>FaxRetryLimit</CODE></A></LI>
+<LI><A HREF="#FileDevice"><CODE>FileDevice</CODE></A></LI>
 <LI><A HREF="#FilterLimit"><CODE>FilterLimit</CODE></A></LI>
+<LI><A HREF="#FilterNice"><CODE>FilterNice</CODE></A></LI>
 <LI><A HREF="#FontPath"><CODE>FontPath</CODE></A></LI>
 <LI><A HREF="#Group"><CODE>Group</CODE></A></LI>
+<LI><A HREF="#HideImplicitMembers"><CODE>HideImplicitMembers</CODE></A></LI>
 <LI><A HREF="#HostNameLookups"><CODE>HostNameLookups</CODE></A></LI>
+<LI><A HREF="#ImplicitAnyClasses"><CODE>ImplicitAnyClasses</CODE></A></LI>
 <LI><A HREF="#ImplicitClasses"><CODE>ImplicitClasses</CODE></A></LI>
+<LI><A HREF="#Include"><CODE>Include</CODE></A></LI>
 <LI><A HREF="#KeepAliveTimeout"><CODE>KeepAliveTimeout</CODE></A></LI>
 <LI><A HREF="#KeepAlive"><CODE>KeepAlive</CODE></A></LI>
 <LI><A HREF="#Limit"><CODE>Limit</CODE></A></LI>
@@ -1086,25 +1403,31 @@ determine how the server operates: </P>
 <LI><A HREF="#LimitRequestBody"><CODE>LimitRequestBody</CODE></A></LI>
 <LI><A HREF="#Listen"><CODE>Listen</CODE></A></LI>
 <LI><A HREF="#Location"><CODE>Location</CODE></A></LI>
+<LI><A HREF="#LogFilePerm"><CODE>LogFilePerm</CODE></A></LI>
 <LI><A HREF="#LogLevel"><CODE>LogLevel</CODE></A></LI>
 <LI><A HREF="#MaxClients"><CODE>MaxClients</CODE></A></LI>
+<LI><A HREF="#MaxClientsPerHost"><CODE>MaxClientsPerHost</CODE></A></LI>
+<LI><A HREF="#MaxCopies"><CODE>MaxCopies</CODE></A></LI>
 <LI><A HREF="#MaxJobs"><CODE>MaxJobs</CODE></A></LI>
 <LI><A HREF="#MaxJobsPerPrinter"><CODE>MaxJobsPerPrinter</CODE></A></LI>
 <LI><A HREF="#MaxJobsPerUser"><CODE>MaxJobsPerUser</CODE></A></LI>
 <LI><A HREF="#MaxLogSize"><CODE>MaxLogSize</CODE></A></LI>
 <LI><A HREF="#MaxRequestSize"><CODE>MaxRequestSize</CODE></A></LI>
 <LI><A HREF="#Order"><CODE>Order</CODE></A></LI>
+</TD><TD VALIGN="TOP"> &nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
 <LI><A HREF="#PageLog"><CODE>PageLog</CODE></A></LI>
-</TD><TD VALIGN="TOP"> &nbsp;&nbsp;&nbsp; </TD><TD VALIGN="TOP">
 <LI><A HREF="#Port"><CODE>Port</CODE></A></LI>
 <LI><A HREF="#PreserveJobFiles"><CODE>PreserveJobFiles</CODE></A></LI>
 <LI><A HREF="#PreserveJobHistory"><CODE>PreserveJobHistory</CODE></A></LI>
 <LI><A HREF="#Printcap"><CODE>Printcap</CODE></A></LI>
 <LI><A HREF="#PrintcapFormat"><CODE>PrintcapFormat</CODE></A></LI>
+<LI><A HREF="#PrintcapGUI"><CODE>PrintcapGUI</CODE></A></LI>
+<LI><A HREF="#ReloadTimeout"><CODE>ReloadTimeout</CODE></A></LI>
 <LI><A HREF="#RemoteRoot"><CODE>RemoteRoot</CODE></A></LI>
 <LI><A HREF="#RequestRoot"><CODE>RequestRoot</CODE></A></LI>
 <LI><A HREF="#Require"><CODE>Require</CODE></A></LI>
 <LI><A HREF="#RIPCache"><CODE>RIPCache</CODE></A></LI>
+<LI><A HREF="#RootCertDuration"><CODE>RootCertDuration</CODE></A></LI>
 <LI><A HREF="#RunAsUser"><CODE>RunAsUser</CODE></A></LI>
 <LI><A HREF="#Satisfy"><CODE>Satisfy</CODE></A></LI>
 <LI><A HREF="#ServerAdmin"><CODE>ServerAdmin</CODE></A></LI>
@@ -1113,6 +1436,7 @@ determine how the server operates: </P>
 <LI><A HREF="#ServerKey"><CODE>ServerKey</CODE></A></LI>
 <LI><A HREF="#ServerName"><CODE>ServerName</CODE></A></LI>
 <LI><A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A></LI>
+<LI><A HREF="#ServerTokens"><CODE>ServerTokens</CODE></A></LI>
 <LI><A HREF="#SSLListen"><CODE>SSLListen</CODE></A></LI>
 <LI><A HREF="#SSLPort"><CODE>SSLPort</CODE></A></LI>
 <LI><A HREF="#SystemGroup"><CODE>SystemGroup</CODE></A></LI>
@@ -1135,16 +1459,16 @@ AccessLog syslog
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>AccessLog</CODE> directive sets the name of the access log 
-file. If the filename is not absolute then it is assumed to be relative 
-to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The 
-access log file is stored in &quot;common log format&quot; and can be used by any 
-web access reporting tool to generate a report on CUPS server activity. </P>
+<P>The <CODE>AccessLog</CODE> directive sets the name of the access log
+ file. If the filename is not absolute then it is assumed to be relative
+ to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
+ access log file is stored in &quot;common log format&quot; and can be used by any
+ web access reporting tool to generate a report on CUPS server activity.</P>
 <P>The server name can be included in the filename by using <CODE>%s</CODE>
- in the name. </P>
-<P>The special name &quot;syslog&quot; can be used to send the access information 
-to the system log instead of a plain file. </P>
-<P>The default access log file is <VAR>/var/log/cups/access_log</VAR>. 
+ in the name.</P>
+<P>The special name &quot;syslog&quot; can be used to send the access information
+ to the system log instead of a plain file.</P>
+<P>The default access log file is<VAR> /var/log/cups/access_log</VAR>.
 <!-- NEED 6in -->
 </P>
 <H3><A NAME="Allow">Allow</A></H3>
@@ -1163,14 +1487,16 @@ Allow from nnn.nnn.nnn.*
 Allow from nnn.nnn.nnn.nnn
 Allow from nnn.nnn.nnn.nnn/mm
 Allow from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
+Allow from @LOCAL
+Allow from @IF(name)
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>Allow</CODE> directive specifies a hostname, IP address, 
-or network that is allowed access to the server. <CODE> Allow</CODE>
- directives are cummulative, so multiple <CODE>Allow</CODE> directives 
-can be used to allow access for multiple hosts or networks.  The <CODE>
-/mm</CODE> notation specifies a CIDR netmask: 
+<P>The <CODE>Allow</CODE> directive specifies a hostname, IP address, or
+ network that is allowed access to the server. <CODE>Allow</CODE>
+ directives are cummulative, so multiple <CODE>Allow</CODE> directives
+ can be used to allow access for multiple hosts or networks. The <CODE>
+/mm</CODE> notation specifies a CIDR netmask:
 <CENTER>
 <TABLE BORDER="1">
 <TR><TH WIDTH="10%">mm</TH><TH WIDTH="20%">netmask</TH><TH WIDTH="10%">
@@ -1186,8 +1512,11 @@ mm</TH><TH WIDTH="20%">netmask</TH></TR>
 </TABLE>
 </CENTER>
 </P>
+<P>The <CODE>@LOCAL</CODE> name will allow access from all local network
+ interfaces, but not remote point-to-point interfaces. The <CODE>
+@IF(name)</CODE> name will allow access from the named interface.</P>
 <P>The <CODE>Allow</CODE> directive must appear inside a <A HREF="#Location">
-<CODE>Location</CODE></A> directive. 
+<CODE>Location</CODE></A> directive.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="AuthClass">AuthClass</A></H3>
@@ -1202,22 +1531,21 @@ AuthClass Group
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>AuthClass</CODE> directive defines what level of 
-authentication is required: </P>
-<UL>
-<LI><CODE>Anonymous</CODE> - No authentication should be performed 
- (default.) </LI>
-<LI><CODE>User</CODE> - A valid username and password is required. </LI>
-<LI><CODE>System</CODE> - A valid username and password is  required, 
-and the username must belong to the &quot;sys&quot; group; this  can be changed 
-using the <A HREF="#SystemGroup"><CODE> SystemGroup</CODE></A>
- directive. </LI>
-<LI><CODE>Group</CODE> - A valid username and password is  required, 
-and the username must belong to the group named by  the <CODE>
-AuthGroupName</CODE> directive. </LI>
+<P>The <CODE>AuthClass</CODE> directive defines what level of
+ authentication is required:</P>
+<UL>
+<LI><CODE>Anonymous</CODE> - No authentication should be performed
+ (default.)</LI>
+<LI><CODE>User</CODE> - A valid username and password is required.</LI>
+<LI><CODE>System</CODE> - A valid username and password is required, and
+ the username must belong to the &quot;sys&quot; group; this can be changed using
+ the <A HREF="#SystemGroup"><CODE>SystemGroup</CODE></A> directive.</LI>
+<LI><CODE>Group</CODE> - A valid username and password is required, and
+ the username must belong to the group named by the <CODE>AuthGroupName</CODE>
+ directive.</LI>
 </UL>
 <P>The <CODE>AuthClass</CODE> directive must appear inside a <A HREF="#Location">
-<CODE>Location</CODE></A> directive. 
+<CODE>Location</CODE></A> directive.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="AuthGroupName">AuthGroupName</A></H3>
@@ -1231,10 +1559,10 @@ AuthGroupName lp
 </UL>
 <H4>Description</H4>
 <P>The <CODE>AuthGroupName</CODE> directive sets the group to use for <CODE>
-Group</CODE> authentication. </P>
+Group</CODE> authentication.</P>
 <P>The <CODE>AuthGroupName</CODE> directive must appear inside a <A HREF="#Location">
-<CODE>Location</CODE></A> directive. 
-<!-- NEED 3in -->
+<CODE>Location</CODE></A> directive.
+<!-- NEED 4in -->
 </P>
 <H3><A NAME="AuthType">AuthType</A></H3>
 <HR>
@@ -1244,24 +1572,27 @@ Group</CODE> authentication. </P>
 AuthType None
 AuthType Basic
 AuthType Digest
+AuthType BasicDigest
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>AuthType</CODE> directive defines the type of 
-authentication to perform: </P>
-<UL>
-<LI><CODE>None</CODE> - No authentication should be performed 
- (default.) </LI>
-<LI><CODE>Basic</CODE> - Basic authentication should be  performed 
-using the UNIX password and group files. </LI>
-<LI><CODE>Digest</CODE> - Digest authentication should be  performed 
-using the <VAR>/etc/cups/passwd.md5</VAR> file. </LI>
-</UL>
-<P>When using <CODE>Basic</CODE> or <CODE>Digest</CODE> authentication, 
-clients connecting through the <CODE>localhost</CODE> interface can 
-also authenticate using <A HREF="#CERTIFICATES">certificates</A>. </P>
+<P>The <CODE>AuthType</CODE> directive defines the type of
+ authentication to perform:</P>
+<UL>
+<LI><CODE>None</CODE> - No authentication should be performed (default.)</LI>
+<LI><CODE>Basic</CODE> - Basic authentication should be performed using
+ the UNIX password and group files.</LI>
+<LI><CODE>Digest</CODE> - Digest authentication should be performed
+ using the<VAR> /etc/cups/passwd.md5</VAR> file.</LI>
+<LI><CODE>BasicDigest</CODE> - Basic authentication should be performed
+ using the<VAR> /etc/cups/passwd.md5</VAR> file.</LI>
+</UL>
+<P>When using <CODE>Basic</CODE>, <CODE>Digest</CODE>, or <CODE>
+BasicDigest</CODE> authentication, clients connecting through the <CODE>
+localhost</CODE> interface can also authenticate using <A HREF="#CERTIFICATES">
+certificates</A>.</P>
 <P>The <CODE>AuthType</CODE> directive must appear inside a <A HREF="#Location">
-<CODE>Location</CODE></A> directive. 
+<CODE>Location</CODE></A> directive.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="AutoPurgeJobs">AutoPurgeJobs</A></H3>
@@ -1274,10 +1605,10 @@ AutoPurgeJobs No
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>AutoPurgeJobs</CODE> directive specifies whether or not to 
-purge completed jobs once they are no longer required for quotas. This 
-option has no effect if quotas are not enabled. The default setting is <CODE>
-No</CODE>. 
+<P>The <CODE>AutoPurgeJobs</CODE> directive specifies whether or not to
+ purge completed jobs once they are no longer required for quotas. This
+ option has no effect if quotas are not enabled. The default setting is <CODE>
+No</CODE>.
 <!-- NEED 5in -->
 </P>
 <H3><A NAME="BrowseAddress">BrowseAddress</A></H3>
@@ -1288,27 +1619,30 @@ No</CODE>.
 BrowseAddress 255.255.255.255:631
 BrowseAddress 192.0.2.255:631
 BrowseAddress host.domain.com:631
+BrowseAddress @LOCAL
+BrowseAddress @IF(name)
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>BrowseAddress</CODE> directive specifies an address to 
-send browsing information to. Multiple <CODE>BrowseAddress</CODE>
- directives can be specified to send browsing information to different 
-networks or systems. </P>
-<P>The default address is <CODE>255.255.255.255:631</CODE> which will 
-broadcast the information to all networks the server is connected to. 
+<P>The <CODE>BrowseAddress</CODE> directive specifies an address to send
+ browsing information to. Multiple <CODE>BrowseAddress</CODE> directives
+ can be specified to send browsing information to different networks or
+ systems.</P>
+<P>The <CODE>@LOCAL</CODE> name will broadcast printer information to
+ all local interfaces. The <CODE>@IF(name)</CODE> name will broadcast to
+ the named interface.</P>
+<P>No browse addresses are set by default.</P>
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> NOTE:</B>
-<P>If you are using HP-UX 10.20 and a subnet that is not 24,  16, or 8 
-bits, printer browsing (and in fact all broadcast  reception) will not 
-work. This problem appears to be fixed in  HP-UX 11.0. </P>
+<P>If you are using HP-UX 10.20 and a subnet that is not 24, 16, or 8
+ bits, printer browsing (and in fact all broadcast reception) will not
+ work. This problem appears to be fixed in HP-UX 11.0.</P>
 </TD></TR>
 </TABLE>
 </CENTER>
 
 <!-- NEED 4in -->
-</P>
 <H3><A NAME="BrowseAllow">BrowseAllow</A></H3>
 <HR>
 <H4>Examples</H4>
@@ -1320,18 +1654,23 @@ BrowseAllow from 192.0.2
 BrowseAllow from 192.0.2.0/24
 BrowseAllow from 192.0.2.0/255.255.255.0
 BrowseAllow from *.domain.com
+BrowseAllow from @LOCAL
+BrowseAllow from @IF(name)
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>BrowseAllow</CODE> directive specifies a system or network 
-to accept browse packets from. The default is to accept browse packets 
-from all hosts. </P>
+<P>The <CODE>BrowseAllow</CODE> directive specifies a system or network
+ to accept browse packets from. The default is to accept browse packets
+ from all hosts.</P>
 <P>Host and domain name matching require that you enable the <A HREF="#HostNameLookups">
-<CODE>HostNameLookups</CODE></A> directive. </P>
-<P>IP address matching supports exact matches, partial addresses that 
-match networks using netmasks of 255.0.0.0, 255.255.0.0, and 
-255.255.255.0, or network addresses using the specified netmask or bit 
-count. 
+<CODE>HostNameLookups</CODE></A> directive.</P>
+<P>IP address matching supports exact matches, partial addresses that
+ match networks using netmasks of 255.0.0.0, 255.255.0.0, and
+ 255.255.255.0, or network addresses using the specified netmask or bit
+ count.</P>
+<P>The <CODE>@LOCAL</CODE> name will allow browse data from all local
+ network interfaces, but not remote point-to-point interfaces. The <CODE>
+@IF(name)</CODE> name will allow browse data from the named interface.
 <!-- NEED 4in -->
 </P>
 <H3><A NAME="BrowseDeny">BrowseDeny</A></H3>
@@ -1345,60 +1684,65 @@ BrowseDeny from 192.0.2
 BrowseDeny from 192.0.2.0/24
 BrowseDeny from 192.0.2.0/255.255.255.0
 BrowseDeny from *.domain.com
+BrowseDeny from @LOCAL
+BrowseDeny from @IF(name)
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>BrowseDeny</CODE> directive specifies a system or network 
-to reject browse packets from. The default is to deny browse packets 
-from no hosts. </P>
+<P>The <CODE>BrowseDeny</CODE> directive specifies a system or network
+ to reject browse packets from. The default is to deny browse packets
+ from no hosts.</P>
 <P>Host and domain name matching require that you enable the <A HREF="#HostNameLookups">
-<CODE>HostNameLookups</CODE></A> directive. </P>
-<P>IP address matching supports exact matches, partial addresses that 
-match networks using netmasks of 255.0.0.0, 255.255.0.0, and 
-255.255.255.0, or network addresses using the specified netmask or bit 
-count. 
+<CODE>HostNameLookups</CODE></A> directive.</P>
+<P>IP address matching supports exact matches, partial addresses that
+ match networks using netmasks of 255.0.0.0, 255.255.0.0, and
+ 255.255.255.0, or network addresses using the specified netmask or bit
+ count.</P>
+<P>The <CODE>@LOCAL</CODE> name will block browse data from all local
+ network interfaces, but not remote point-to-point interfaces. The <CODE>
+@IF(name)</CODE> name will block browse data from the named interface.
 <!-- NEED 3in -->
 </P>
-<H3><A NAME="BrowseOrder">BrowseOrder</A></H3>
+<H3><A NAME="BrowseInterval">BrowseInterval</A></H3>
 <HR>
 <H4>Examples</H4>
 <UL>
 <PRE>
-BrowseOrder allow,deny
-BrowseOrder deny,allow
+BrowseInterval 0
+BrowseInterval 30
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>BrowseOrder</CODE> directive specifies the order of 
-allow/deny processing. The default order is <CODE>deny,allow</CODE>: </P>
-<UL>
-<LI><CODE>allow,deny</CODE> - Browse packets are accepted unless 
- specifically denied. </LI>
-<LI><CODE>deny,allow</CODE> - Browse packets are rejected unless 
- specifically allowed. </LI>
-</UL>
-
+<P>The <CODE>BrowseInterval</CODE> directive specifies the maximum
+ amount of time between browsing updates. Specifying a value of 0
+ seconds disables outgoing browse updates but allows a server to receive
+ printer information from other hosts.</P>
+<P>The <CODE>BrowseInterval</CODE> value should always be less than the <A
+HREF="#BrowseTimeout"><CODE>BrowseTimeout</CODE></A> value. Otherwise
+ printers and classes will disappear from client systems between
+ updates.
 <!-- NEED 3in -->
-<H3><A NAME="BrowseInterval">BrowseInterval</A></H3>
+</P>
+<H3><A NAME="BrowseOrder">BrowseOrder</A></H3>
 <HR>
 <H4>Examples</H4>
 <UL>
 <PRE>
-BrowseInterval 0
-BrowseInterval 30
+BrowseOrder allow,deny
+BrowseOrder deny,allow
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>BrowseInterval</CODE> directive specifies the maximum 
-amount of time between browsing updates. Specifying a value of 0 
-seconds disables outgoing browse updates but allows a server to receive 
-printer information from other hosts. </P>
-<P>The <CODE>BrowseInterval</CODE> value should always be less than the <A
-HREF="#BrowseTimeout"><CODE>BrowseTimeout</CODE></A> value. Otherwise 
-printers and classes will disappear from client systems between 
-updates. 
+<P>The <CODE>BrowseOrder</CODE> directive specifies the order of
+ allow/deny processing. The default order is <CODE>deny,allow</CODE>:</P>
+<UL>
+<LI><CODE>allow,deny</CODE> - Browse packets are accepted unless
+ specifically denied.</LI>
+<LI><CODE>deny,allow</CODE> - Browse packets are rejected unless
+ specifically allowed.</LI>
+</UL>
+
 <!-- NEED 3in -->
-</P>
 <H3><A NAME="BrowsePoll">BrowsePoll</A></H3>
 <HR>
 <H4>Examples</H4>
@@ -1409,12 +1753,12 @@ BrowsePoll host.domain.com:631
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>BrowsePoll</CODE> directive polls a server for available 
-printers once every <A HREF="#BrowseInterval"><CODE>BrowseInterval</CODE>
-</A> seconds. Multiple <CODE>BrowsePoll</CODE> directives can be 
-specified to poll multiple servers. </P>
-<P>If <CODE>BrowseInterval</CODE> is set to 0 then the server is polled 
-once every 30 seconds. 
+<P>The <CODE>BrowsePoll</CODE> directive polls a server for available
+ printers once every <A HREF="#BrowseInterval"><CODE>BrowseInterval</CODE>
+</A> seconds. Multiple <CODE>BrowsePoll</CODE> directives can be
+ specified to poll multiple servers.</P>
+<P>If <CODE>BrowseInterval</CODE> is set to 0 then the server is polled
+ once every 30 seconds.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="BrowsePort">BrowsePort</A></H3>
@@ -1427,19 +1771,46 @@ BrowsePort 9999
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>BrowsePort</CODE> directive specifies the UDP port number 
-used for browse packets. The default port number is 631. 
+<P>The <CODE>BrowsePort</CODE> directive specifies the UDP port number
+ used for browse packets. The default port number is 631.</P>
+<CENTER>
+<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
+<TR><TD><B> NOTE:</B>
+<P>You must set the <CODE>BrowsePort</CODE> to the same value on all of
+ the systems that you want to see.</P>
+</TD></TR>
+</TABLE>
+</CENTER>
+
+<!-- NEED 3in -->
+<H3><A NAME="BrowseProtocols">BrowseProtocols</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+BrowseProtocols CUPS
+BrowseProtocols SLP
+BrowseProtocols CUPS SLP
+BrowseProtocols all
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>BrowseProtocols</CODE> directive specifies the protocols to
+ use when collecting and distributing shared printers on the local
+ network. The default protocol is <CODE>CUPS</CODE>, which is a
+ broadcast-based protocol.</P>
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> NOTE:</B>
-<P>You must set the <CODE>BrowsePort</CODE> to the same value  on all 
-of the systems that you want to see. </P>
+<P>When using the <CODE>SLP</CODE> protocol, you must have at least one
+ Directory Agent (DA) server on your network. Otherwise the CUPS
+ scheduler (<CODE>cupsd</CODE>) will not respond to client requests for
+ several seconds while polling the network.</P>
 </TD></TR>
 </TABLE>
 </CENTER>
 
 <!-- NEED 4in -->
-</P>
 <H3><A NAME="BrowseRelay">BrowseRelay</A></H3>
 <HR>
 <H4>Examples</H4>
@@ -1453,20 +1824,20 @@ BrowseRelay host.domain.com 192.0.2.255
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>BrowseRelay</CODE> directive specifies source and 
-destination addresses for relaying browsing information from one host 
-or network to another. Multiple <CODE>BrowseRelay</CODE> directives can 
-be specified as needed. </P>
-<P><CODE>BrowseRelay</CODE> is typically used on systems that bridge 
-multiple subnets using one or more network interfaces. It can also be 
-used to relay printer information from polled servers with the line: </P>
+<P>The <CODE>BrowseRelay</CODE> directive specifies source and
+ destination addresses for relaying browsing information from one host
+ or network to another. Multiple <CODE>BrowseRelay</CODE> directives can
+ be specified as needed.</P>
+<P><CODE>BrowseRelay</CODE> is typically used on systems that bridge
+ multiple subnets using one or more network interfaces. It can also be
+ used to relay printer information from polled servers with the line:</P>
 <UL>
 <PRE>
 BrowseRelay 127.0.0.1 255.255.255.255
 </PRE>
 </UL>
-<P>This effectively provides access to printers on a WAN for all 
-clients on the LAN(s). 
+<P>This effectively provides access to printers on a WAN for all clients
+ on the LAN(s).
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="BrowseShortNames">BrowseShortNames</A></H3>
@@ -1479,12 +1850,12 @@ BrowseShortNames No
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>BrowseShortNames</CODE> directive specifies whether or not 
-short names are used for remote printers when possible. Short names are 
-just the remote printer name, without the server (&quot;printer&quot;). If more 
-than one remote printer is detected with the same name, the printers 
-will have long names (&quot;printer@server1&quot;, &quot;printer@server2&quot;.) </P>
-<P>The default value for this option is <CODE>Yes</CODE>. 
+<P>The <CODE>BrowseShortNames</CODE> directive specifies whether or not
+ short names are used for remote printers when possible. Short names are
+ just the remote printer name, without the server (&quot;printer&quot;). If more
+ than one remote printer is detected with the same name, the printers
+ will have long names (&quot;printer@server1&quot;, &quot;printer@server2&quot;.)</P>
+<P>The default value for this option is <CODE>Yes</CODE>.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="BrowseTimeout">BrowseTimeout</A></H3>
@@ -1497,14 +1868,14 @@ BrowseTimeout 60
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>BrowseTimeout</CODE> directive sets the timeout for 
-printer or class information that is received in browse packets. Once a 
-printer or class times out it is removed from the list of available 
-destinations. </P>
-<P>The <CODE>BrowseTimeout</CODE> value should always be greater than 
-the <A HREF="#BrowseInterval"><CODE>BrowseInterval</CODE></A> value. 
-Otherwise printers and classes will disappear from client systems 
-between updates. 
+<P>The <CODE>BrowseTimeout</CODE> directive sets the timeout for printer
+ or class information that is received in browse packets. Once a printer
+ or class times out it is removed from the list of available
+ destinations.</P>
+<P>The <CODE>BrowseTimeout</CODE> value should always be greater than
+ the <A HREF="#BrowseInterval"><CODE>BrowseInterval</CODE></A> value.
+ Otherwise printers and classes will disappear from client systems
+ between updates.
 <!-- NEED 4in -->
 </P>
 <H3><A NAME="Browsing">Browsing</A></H3>
@@ -1517,20 +1888,19 @@ Browsing Off
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>Browsing</CODE> directive controls whether or not network 
-printer browsing is enabled. The default setting is <CODE>On</CODE>. 
+<P>The <CODE>Browsing</CODE> directive controls whether or not network
+ printer browsing is enabled. The default setting is <CODE>On</CODE>.</P>
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> NOTE:</B>
-<P>If you are using HP-UX 10.20 and a subnet that is not 24,  16, or 8 
-bits, printer browsing (and in fact all broadcast  reception) will not 
-work. This problem appears to be fixed in  HP-UX 11.0. </P>
+<P>If you are using HP-UX 10.20 and a subnet that is not 24, 16, or 8
+ bits, printer browsing (and in fact all broadcast reception) will not
+ work. This problem appears to be fixed in HP-UX 11.0.</P>
 </TD></TR>
 </TABLE>
 </CENTER>
 
 <!-- NEED 3in -->
-</P>
 <H3><A NAME="Classification">Classification</A></H3>
 <HR>
 <H4>Examples</H4>
@@ -1545,11 +1915,45 @@ Classification unclassified
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>Classification</CODE> directive sets the classification 
-level on the server. When this option is set, at least one of the 
-banner pages is forced to the classification level, and the 
-classification is placed on each page of output. The default is no 
-classification level. 
+<P>The <CODE>Classification</CODE> directive sets the classification
+ level on the server. When this option is set, at least one of the
+ banner pages is forced to the classification level, and the
+ classification is placed on each page of output. The default is no
+ classification level.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="ClassifyOverride">ClassifyOverride</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+ClassifyOverride Yes
+ClassifyOverride No
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>ClassifyOverride</CODE> directive specifies whether users
+ can override the default classification level on the server. When the
+ server classification is set, users can change the classification using
+ the <CODE>job-sheets</CODE> option and can choose to only print one
+ security banner before or after the job. If the <CODE>job-sheets</CODE>
+ option is set to <CODE>none</CODE> then the server default
+ classification is used.</P>
+<P>The default is to not allow classification overrides.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="ConfigFilePerm">ConfigFilePerm</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+ConfigFilePerm 0644
+ConfigFilePerm 0600
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>ConfigFilePerm</CODE> directive specifies the permissions
+ to use when writing configuration files. The default is 0600.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="DataDir">DataDir</A></H3>
@@ -1561,8 +1965,8 @@ DataDir /usr/share/cups
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>DataDir</CODE> directive sets the directory to use for 
-data files. 
+<P>The <CODE>DataDir</CODE> directive sets the directory to use for data
+ files.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="DefaultCharset">DefaultCharset</A></H3>
@@ -1576,10 +1980,10 @@ DefaultCharset windows-1251
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>DefaultCharset</CODE> directive sets the default character 
-set to use for client connections. The default character set is <CODE>
-utf-8</CODE> but is overridden by the character set for the language 
-specified by the client or the <CODE>DefaultLanguage</CODE> directive. 
+<P>The <CODE>DefaultCharset</CODE> directive sets the default character
+ set to use for client connections. The default character set is <CODE>
+utf-8</CODE> but is overridden by the character set for the language
+ specified by the client or the <CODE>DefaultLanguage</CODE> directive.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="DefaultLanguage">DefaultLanguage</A></H3>
@@ -1595,10 +1999,10 @@ DefaultLanguage it
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>DefaultLanguage</CODE> directive specifies the default 
-language to use for client connections. Setting the default language 
-also sets the default character set if a language localization file 
-exists for it.  The default language is &quot;en&quot; for English. 
+<P>The <CODE>DefaultLanguage</CODE> directive specifies the default
+ language to use for client connections. Setting the default language
+ also sets the default character set if a language localization file
+ exists for it. The default language is &quot;en&quot; for English.
 <!-- NEED 5in -->
 </P>
 <H3><A NAME="Deny">Deny</A></H3>
@@ -1617,14 +2021,16 @@ Deny from nnn.nnn.nnn.*
 Deny from nnn.nnn.nnn.nnn
 Deny from nnn.nnn.nnn.nnn/mm
 Deny from nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
+Deny from @LOCAL
+Deny from @IF(name)
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>Deny</CODE> directive specifies a hostname, IP address, or 
-network that is allowed access to the server. <CODE>Deny</CODE>
- directives are cummulative, so multiple <CODE>Deny</CODE> directives 
-can be used to allow access for multiple hosts or networks. The <CODE>
-/mm</CODE> notation specifies a CIDR netmask: 
+<P>The <CODE>Deny</CODE> directive specifies a hostname, IP address, or
+ network that is allowed access to the server. <CODE>Deny</CODE>
+ directives are cummulative, so multiple <CODE>Deny</CODE> directives
+ can be used to allow access for multiple hosts or networks. The <CODE>
+/mm</CODE> notation specifies a CIDR netmask:
 <CENTER>
 <TABLE BORDER="1">
 <TR><TH WIDTH="10%">mm</TH><TH WIDTH="20%">netmask</TH><TH WIDTH="10%">
@@ -1640,8 +2046,11 @@ mm</TH><TH WIDTH="20%">netmask</TH></TR>
 </TABLE>
 </CENTER>
 </P>
+<P>The <CODE>@LOCAL</CODE> name will deny access from all local network
+ interfaces, but not remote point-to-point interfaces. The <CODE>
+@IF(name)</CODE> name will deny access from the named interface.</P>
 <P>The <CODE>Deny</CODE> directive must appear inside a <A HREF="#Location">
-<CODE>Location</CODE></A> directive. 
+<CODE>Location</CODE></A> directive.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="DocumentRoot">DocumentRoot</A></H3>
@@ -1654,16 +2063,16 @@ DocumentRoot /foo/bar/doc/cups
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>DocumentRoot</CODE> directive specifies the location of 
-web content for the HTTP server in CUPS. If an absolute path is not 
-specified then it is assumed to be relative to the <A HREF="#ServerRoot">
-<CODE>ServerRoot</CODE></A> directory. The default directory is <VAR>
-/usr/share/doc/cups</VAR>. </P>
-<P>Documents are first looked up in a sub-directory for the primary 
-language requested by the client (e.g. <VAR>/usr/share/doc/cups/fr/...</VAR>
-) and then directly under the <CODE>DocumentRoot</CODE> directory (e.g. <VAR>
-/usr/share/doc/cups/...</VAR>), so it is possible to localize the web 
-content by providing subdirectories for each language needed. 
+<P>The <CODE>DocumentRoot</CODE> directive specifies the location of web
+ content for the HTTP server in CUPS. If an absolute path is not
+ specified then it is assumed to be relative to the <A HREF="#ServerRoot">
+<CODE>ServerRoot</CODE></A> directory. The default directory is<VAR>
+ /usr/share/doc/cups</VAR>.</P>
+<P>Documents are first looked up in a sub-directory for the primary
+ language requested by the client (e.g.<VAR> /usr/share/doc/cups/fr/...</VAR>
+) and then directly under the <CODE>DocumentRoot</CODE> directory (e.g.<VAR>
+ /usr/share/doc/cups/...</VAR>), so it is possible to localize the web
+ content by providing subdirectories for each language needed.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="Encryption">Encryption</A></H3>
@@ -1674,14 +2083,13 @@ content by providing subdirectories for each language needed.
 Encryption Never
 Encryption IfRequested
 Encryption Required
-Encryption Always
 </PRE>
 </UL>
 <H4>Description</H4>
 <P>The <CODE>Encryption</CODE> directive must appear instead a <A HREF="#Location">
-<CODE>Location</CODE></A> section and specifies the encryption settings 
-for that location. The default setting is <CODE>IfRequested</CODE> for 
-all locations. 
+<CODE>Location</CODE></A> section and specifies the encryption settings
+ for that location. The default setting is <CODE>IfRequested</CODE> for
+ all locations.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="ErrorLog">ErrorLog</A></H3>
@@ -1695,14 +2103,76 @@ ErrorLog syslog
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>ErrorLog</CODE> directive sets the name of the error log 
-file. If the filename is not absolute then it is assumed to be relative 
-to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The 
-default error log file is <VAR>/var/log/cups/error_log</VAR>. </P>
+<P>The <CODE>ErrorLog</CODE> directive sets the name of the error log
+ file. If the filename is not absolute then it is assumed to be relative
+ to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
+ default error log file is<VAR> /var/log/cups/error_log</VAR>.</P>
 <P>The server name can be included in the filename by using <CODE>%s</CODE>
- in the name. </P>
-<P>The special name &quot;syslog&quot; can be used to send the error information 
-to the system log instead of a plain file. 
+ in the name.</P>
+<P>The special name &quot;syslog&quot; can be used to send the error information
+ to the system log instead of a plain file.
+<!-- NEED 2in -->
+</P>
+<H3><A NAME="FaxRetryInterval">FaxRetryInterval</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+FaxRetryInterval 300
+FaxRetryInterval 30
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>FaxRetryInterval</CODE> directive determines how often fax
+ print jobs are retried when the backend is unable to send the fax. The
+ value is the number of seconds between tries.</P>
+<P>The default setting is <CODE>300</CODE> seconds.
+<!-- NEED 2in -->
+</P>
+<H3><A NAME="FaxRetryLimit">FaxRetryLimit</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+FaxRetryLimit 5
+FaxRetryLimit 100
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>FaxRetryLimit</CODE> directive determines how many times a
+ fax job is retried before it is canceled.</P>
+<P>The default setting is <CODE>5</CODE>.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="FileDevice">FileDevice</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+FileDevice Yes
+FileDevice No
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>FileDevice</CODE> directive determines whether the
+ scheduler allows new printers to be added using device URIs of the form
+ <CODE>file:/filename</CODE>. File devices are most often used to test
+ new printer drivers and do no support raw file printing.</P>
+<P>The default setting is <CODE>No</CODE>.
+<CENTER>
+<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
+<TR><TD><B> Note:</B>
+<P>File devices are managed by the scheduler. Since the scheduler
+ normally runs as the root user, file devices can be used to overwrite
+ system files and potentially gain unauthorized access to the system. If
+ you must create printers using file devices, we recommend that you set
+ the <CODE>FileDevice</CODE> directive to <CODE>Yes</CODE> for only as
+ long as you need to add the printers to the system, and then reset the
+ directive to <CODE>No</CODE>.</P>
+</TD></TR>
+</TABLE>
+</CENTER>
+
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="FilterLimit">FilterLimit</A></H3>
@@ -1716,15 +2186,33 @@ FilterLimit 1000
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>FilterLimit</CODE> directive sets the maximum cost of all 
-running job filters. It can be used to limit the number of filter 
-programs that are run on a server to minimize disk, memory, and CPU 
-resource problems. A limit of 0 disables filter limiting. </P>
-<P>An average print to a non-PostScript printer needs a filter limit of 
-about 200. A PostScript printer needs about half that (100). Setting 
-the limit below these thresholds will effectively limit the scheduler 
-to printing a single job at any time. </P>
-<P>The default limit is 0. 
+<P>The <CODE>FilterLimit</CODE> directive sets the maximum cost of all
+ running job filters. It can be used to limit the number of filter
+ programs that are run on a server to minimize disk, memory, and CPU
+ resource problems. A limit of 0 disables filter limiting.</P>
+<P>An average print to a non-PostScript printer needs a filter limit of
+ about 200. A PostScript printer needs about half that (100). Setting
+ the limit below these thresholds will effectively limit the scheduler
+ to printing a single job at any time.</P>
+<P>The default limit is 0.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="FilterNice">FilterNice</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+FilterNice 0
+FilterNice 39
+FilterNice -10
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>FilterNice</CODE> directive sets the scheduling priority of
+ job filters. Values larger than 0 give filters a lower priority while
+ values smaller than 0 give filters a higher priority. The <CODE>
+FilterNice</CODE> value does not affect the priority of job backends.</P>
+<P>The default priority is 0.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="FontPath">FontPath</A></H3>
@@ -1737,9 +2225,9 @@ FontPath /usr/share/cups/fonts:/foo/bar/fonts
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>FontPath</CODE> directive specifies the font path to use 
-when searching for fonts. The default font path is <CODE>
-/usr/share/cups/fonts</CODE>. 
+<P>The <CODE>FontPath</CODE> directive specifies the font path to use
+ when searching for fonts. The default font path is <CODE>
+/usr/share/cups/fonts</CODE>.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="Group">Group</A></H3>
@@ -1753,11 +2241,28 @@ Group root
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>Group</CODE> directive specifies the UNIX group that 
-filter and CGI programs run as. The default group is <CODE>sys</CODE>, <CODE>
-system</CODE>, or <CODE>root</CODE> depending on the operating system. 
+<P>The <CODE>Group</CODE> directive specifies the UNIX group that filter
+ and CGI programs run as. The default group is <CODE>sys</CODE>, <CODE>
+system</CODE>, or <CODE>root</CODE> depending on the operating system.
 <!-- NEED 3in -->
 </P>
+<H3><A NAME="HideImplicitMembers">HideImplicitMembers</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+HideImplicitMembers Yes
+HideImplicitMembers No
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>HideImplicitMembers</CODE> directive controls whether the
+ individual printers in an implicit class are shown to the user. The
+ default is <CODE>No</CODE>.</P>
+<P><A HREF="#ImplicitClasses"><CODE>ImplicitClasses</CODE></A> must be
+ enabled for this directive to have any effect.</P>
+
+<!-- NEED 3in -->
 <H3><A NAME="HostNameLookups">HostNameLookups</A></H3>
 <HR>
 <H4>Examples</H4>
@@ -1769,17 +2274,34 @@ HostNameLookups Double
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>HostNameLookups</CODE> directive controls whether or not 
-CUPS looks up the hostname for connecting clients. The <CODE>Double</CODE>
- setting causes CUPS to verify that the hostname resolved from the 
-address matches one of the addresses returned for that hostname. <CODE>
-Double</CODE> lookups also prevent clients with unregistered addresses 
-from connecting to your server.  The default is <CODE>Off</CODE> to 
-avoid the potential server performance problems with hostname lookups. 
-Set this option to <CODE>On</CODE> or <CODE>Double</CODE> only if 
-absolutely required. 
+<P>The <CODE>HostNameLookups</CODE> directive controls whether or not
+ CUPS looks up the hostname for connecting clients. The <CODE>Double</CODE>
+ setting causes CUPS to verify that the hostname resolved from the
+ address matches one of the addresses returned for that hostname. <CODE>
+Double</CODE> lookups also prevent clients with unregistered addresses
+ from connecting to your server. The default is <CODE>Off</CODE> to
+ avoid the potential server performance problems with hostname lookups.
+ Set this option to <CODE>On</CODE> or <CODE>Double</CODE> only if
+ absolutely required.
 <!-- NEED 3in -->
 </P>
+<H3><A NAME="ImplicitAnyClasses">ImplicitAnyClasses</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+ImplicitAnyClasses On
+ImplicitAnyClasses Off
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>ImplicitAnyClasses</CODE> directive controls whether
+ implicit classes for local and remote printers are created with the
+ name <CODE>AnyPrinter</CODE>. The default setting is <CODE>Off</CODE>.</P>
+<P><A HREF="#ImplicitClasses"><CODE>ImplicitClasses</CODE></A> must be
+ enabled for this directive to have any effect.</P>
+
+<!-- NEED 3in -->
 <H3><A NAME="ImplicitClasses">ImplicitClasses</A></H3>
 <HR>
 <H4>Examples</H4>
@@ -1790,13 +2312,29 @@ ImplicitClasses Off
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>ImplicitClasses</CODE> directive controls whether implicit 
-classes are created based upon the available network printers and 
-classes. The default setting is <CODE>On</CODE> but is automatically 
-turned <CODE>Off</CODE> if <A HREF="#Browsing"><CODE>Browsing</CODE></A>
- is turned <CODE>Off</CODE>. 
+<P>The <CODE>ImplicitClasses</CODE> directive controls whether implicit
+ classes are created based upon the available network printers and
+ classes. The default setting is <CODE>On</CODE> but is automatically
+ turned <CODE>Off</CODE> if <A HREF="#Browsing"><CODE>Browsing</CODE></A>
+ is turned <CODE>Off</CODE>.
 <!-- NEED 3in -->
 </P>
+<H3><A NAME="Include">Include</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+Include filename
+Include /foo/bar/filename
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Include</CODE> directive includes the named file in the <CODE>
+cupsd.conf</CODE> file. If no leading path is provided, the file is
+ assumed to be relative to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE>
+</A> directory.</P>
+
+<!-- NEED 3in -->
 <H3><A NAME="KeepAlive">KeepAlive</A></H3>
 <HR>
 <H4>Examples</H4>
@@ -1807,12 +2345,12 @@ KeepAlive Off
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>KeepAlive</CODE> directive controls whether or not to 
-support persistent HTTP connections. The default is <CODE>On</CODE>. </P>
-<P>HTTP/1.1 clients automatically support persistent connections, while 
-HTTP/1.0 clients must specifically request them using the <CODE>
-Keep-Alive</CODE> attribute in the <CODE>Connection:</CODE> field of 
-each request. 
+<P>The <CODE>KeepAlive</CODE> directive controls whether or not to
+ support persistent HTTP connections. The default is <CODE>On</CODE>.</P>
+<P>HTTP/1.1 clients automatically support persistent connections, while
+ HTTP/1.0 clients must specifically request them using the <CODE>
+Keep-Alive</CODE> attribute in the <CODE>Connection:</CODE> field of
+ each request.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="KeepAliveTimeout">KeepAliveTimeout</A></H3>
@@ -1825,9 +2363,9 @@ KeepAliveTimeout 30
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>KeepAliveTimeout</CODE> directive controls how long a 
-persistent HTTP connection will remain open after the last request. The 
-default is 60 seconds. 
+<P>The <CODE>KeepAliveTimeout</CODE> directive controls how long a
+ persistent HTTP connection will remain open after the last request. The
+ default is 60 seconds.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="Limit">Limit</A></H3>
@@ -1845,13 +2383,13 @@ default is 60 seconds.
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>Limit</CODE> directive groups access control directives 
-for specific types of HTTP requests and must appear inside a <A HREF="#Location">
-<CODE>Location</CODE></A> section. Access can be limited for individual 
-request types (<CODE>DELETE</CODE>, <CODE>GET</CODE>, <CODE>HEAD</CODE>
+<P>The <CODE>Limit</CODE> directive groups access control directives for
+ specific types of HTTP requests and must appear inside a <A HREF="#Location">
+<CODE>Location</CODE></A> section. Access can be limited for individual
+ request types (<CODE>DELETE</CODE>, <CODE>GET</CODE>, <CODE>HEAD</CODE>
 , <CODE>OPTIONS</CODE>, <CODE>POST</CODE>, <CODE>PUT</CODE>, and <CODE>
-TRACE</CODE>) or for all request types (<CODE>ALL</CODE>). The request 
-type names are case-sensitive for compatibility with Apache. 
+TRACE</CODE>) or for all request types (<CODE>ALL</CODE>). The request
+ type names are case-sensitive for compatibility with Apache.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="LimitExcept">LimitExcept</A></H3>
@@ -1865,12 +2403,12 @@ type names are case-sensitive for compatibility with Apache.
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>LimitExcept</CODE> directive groups access control 
-directives for specific types of HTTP requests and must appear inside a <A
-HREF="#Location"><CODE>Location</CODE></A> section. Unlike the <A HREF="#Limit">
-<CODE>Limit</CODE></A> directive, <CODE>LimitExcept</CODE> restricts 
-access for all requests <I>except</I> those listed on the <CODE>
-LimitExcept</CODE> line. 
+<P>The <CODE>LimitExcept</CODE> directive groups access control
+ directives for specific types of HTTP requests and must appear inside a
+ <A HREF="#Location"><CODE>Location</CODE></A> section. Unlike the <A HREF="#Limit">
+<CODE>Limit</CODE></A> directive, <CODE>LimitExcept</CODE> restricts
+ access for all requests<I> except</I> those listed on the <CODE>
+LimitExcept</CODE> line.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="LimitRequestBody">LimitRequestBody</A></H3>
@@ -1884,11 +2422,11 @@ LimitRequestBody 0
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>LimitRequestBody</CODE> directive controls the maximum 
-size of print files, IPP requests, and HTML form data in HTTP POST 
-requests. The default limit is 0 which disables the limit check. </P>
+<P>The <CODE>LimitRequestBody</CODE> directive controls the maximum size
+ of print files, IPP requests, and HTML form data in HTTP POST requests.
+ The default limit is 0 which disables the limit check.</P>
 <P>Also see the identical <A HREF="#MaxRequestSize"><CODE>MaxRequestSize</CODE>
-</A> directive. 
+</A> directive.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="Listen">Listen</A></H3>
@@ -1901,12 +2439,12 @@ Listen 192.0.2.1:631
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>Listen</CODE> directive specifies a network address and 
-port to listen for connections. Multiple <CODE>Listen</CODE> directives 
-can be provided to listen on multiple addresses. </P>
+<P>The <CODE>Listen</CODE> directive specifies a network address and
+ port to listen for connections. Multiple <CODE>Listen</CODE> directives
+ can be provided to listen on multiple addresses.</P>
 <P>The <CODE>Listen</CODE> directive is similar to the <A HREF="#Port"><CODE>
-Port</CODE></A> directive but allows you to restrict access to specific 
-interfaces or networks. 
+Port</CODE></A> directive but allows you to restrict access to specific
+ interfaces or networks.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="Location">Location</A></H3>
@@ -1922,16 +2460,76 @@ interfaces or networks.
 ...
 &lt;/Location&gt;
 
+&lt;Location /printers&gt;
+...
+&lt;/Location&gt;
+
 &lt;Location /printers/name&gt;
 ...
 &lt;/Location&gt;
+
+&lt;Location /classes&gt;
+...
+&lt;/Location&gt;
+
+&lt;Location /classes/name&gt;
+...
+&lt;/Location&gt;
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Location</CODE> directive specifies access control and
+ authentication options for the specified HTTP resource or path. The <A HREF="#Allow">
+<CODE>Allow</CODE></A>, <A HREF="#AuthClass"><CODE>AuthClass</CODE></A>,
+ <A HREF="#AuthGroupName"><CODE>AuthGroupName</CODE></A>, <A HREF="#AuthType">
+<CODE>AuthType</CODE></A>, <A HREF="#Deny"><CODE>Deny</CODE></A>, <A HREF="#Encryption">
+<CODE>Encryption</CODE></A>, <A HREF="#Limit"><CODE>Limit</CODE></A>, <A HREF="#LimitExcept">
+<CODE>LimitExcept</CODE></A>, <A HREF="#Order"><CODE>Order</CODE></A>, <A
+HREF="#Require"><CODE>Require</CODE></A>, and <A HREF="#Satisfy"><CODE>
+Satisfy</CODE></A> directives may all appear inside a location.
+<CENTER>
+<TABLE BORDER="1"><CAPTION>Locations on the Server.</CAPTION>
+<TR><TH>Location</TH><TH>Description</TH></TR>
+<TR><TD>/</TD><TD>The path for all get operations (get-printers,
+ get-jobs, etc.)</TD></TR>
+<TR><TD>/admin</TD><TD>The path for all administration operations
+ (add-printer, delete-printer, start-printer, etc.)</TD></TR>
+<TR><TD>/admin/conf</TD><TD>The path for access to the CUPS
+ configuration files (cupsd.conf, client.conf, etc.)</TD></TR>
+<TR><TD>/classes</TD><TD>The path for all classes</TD></TR>
+<TR><TD>/classes/name</TD><TD>The resource for class <CODE>name</CODE></TD>
+</TR>
+<TR><TD>/jobs</TD><TD>The path for all jobs (hold-job, release-job,
+ etc.)</TD></TR>
+<TR><TD>/jobs/id</TD><TD>The resource for job <CODE>id</CODE></TD></TR>
+<TR><TD>/printers</TD><TD>The path for all printers</TD></TR>
+<TR><TD>/printers/name</TD><TD>The path for printer <CODE>name</CODE></TD>
+</TR>
+<TR><TD>/printers/name.ppd</TD><TD>The PPD file path for printer <CODE>
+name</CODE></TD></TR>
+</TABLE>
+</CENTER>
+</P>
+<P>Note that more specific resources override the less specific ones. So
+ the directives inside the <CODE>/printers/name</CODE> location will
+ override ones from <CODE>/printers</CODE>. Directives inside <CODE>
+/printers</CODE> will override ones from <CODE>/</CODE>. &nbsp; None of the
+ directives are inherited. More information can be found in section <A HREF="#PRINTING_SECURITY">
+&quot;Printing System Security&quot;</A>.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="LogFilePerm">LogFilePerm</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+LogFilePerm 0644
+LogFilePerm 0600
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>Location</CODE> directive specifies access control and 
-authentication options for the specified HTTP resource or path. More 
-information can be found later in this chapter in <A HREF="#PRINTING_SECURITY">
-&quot;Printing System Security&quot;</A>. 
+<P>The <CODE>LogFilePerm</CODE> directive specifies the permissions to
+ use when writing configuration files. The default is 0644.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="LogLevel">LogLevel</A></H3>
@@ -1952,23 +2550,23 @@ LogLevel debug2
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>LogLevel</CODE> directive specifies the level of logging 
-for the <A HREF="#ErrorLog"><CODE>ErrorLog</CODE></A> file. The 
-following values are recognized (each level logs everything under the 
-preceding levels): </P>
-<UL>
-<LI><CODE>none</CODE> - Log nothing. </LI>
-<LI><CODE>emerg</CODE> - Log emergency conditions that prevent the 
- server from running. </LI>
-<LI><CODE>alert</CODE> - Log alerts that must be handled immediately. </LI>
-<LI><CODE>crit</CODE> - Log critical errors that don't prevent  the 
-server from running. </LI>
-<LI><CODE>error</CODE> - Log general errors. </LI>
-<LI><CODE>warn</CODE> - Log errors and warnings. </LI>
-<LI><CODE>notice</CODE> - Log temporary error conditions. </LI>
-<LI><CODE>info</CODE> - Log all requests and state changes (default). </LI>
-<LI><CODE>debug</CODE> - Log basic debugging information. </LI>
-<LI><CODE>debug2</CODE> - Log all debugging information. </LI>
+<P>The <CODE>LogLevel</CODE> directive specifies the level of logging
+ for the <A HREF="#ErrorLog"><CODE>ErrorLog</CODE></A> file. The
+ following values are recognized (each level logs everything under the
+ preceding levels):</P>
+<UL>
+<LI><CODE>none</CODE> - Log nothing.</LI>
+<LI><CODE>emerg</CODE> - Log emergency conditions that prevent the
+ server from running.</LI>
+<LI><CODE>alert</CODE> - Log alerts that must be handled immediately.</LI>
+<LI><CODE>crit</CODE> - Log critical errors that don't prevent the
+ server from running.</LI>
+<LI><CODE>error</CODE> - Log general errors.</LI>
+<LI><CODE>warn</CODE> - Log errors and warnings.</LI>
+<LI><CODE>notice</CODE> - Log temporary error conditions.</LI>
+<LI><CODE>info</CODE> - Log all requests and state changes (default).</LI>
+<LI><CODE>debug</CODE> - Log basic debugging information.</LI>
+<LI><CODE>debug2</CODE> - Log all debugging information.</LI>
 </UL>
 
 <!-- NEED 3in -->
@@ -1982,43 +2580,83 @@ MaxClients 1024
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>MaxClients</CODE> directive controls the maximum number of 
-simultaneous clients that will be allowed by the server. The default is 
-100 clients. 
+<P>The <CODE>MaxClients</CODE> directive controls the maximum number of
+ simultaneous clients that will be allowed by the server. The default is
+ 100 clients.</P>
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> NOTE:</B>
-<P>Since each print job requires a file descriptor for the  status 
-pipe, the CUPS server internally limits the <CODE> MaxClients</CODE>
- value to 1/3 of the available file descriptors  to avoid possible 
-problems when printing large numbers of jobs. </P>
+<P>Since each print job requires a file descriptor for the status pipe,
+ the CUPS server internally limits the <CODE>MaxClients</CODE> value to
+ 1/3 of the available file descriptors to avoid possible problems when
+ printing large numbers of jobs.</P>
 </TD></TR>
 </TABLE>
 </CENTER>
 
 <!-- NEED 3in -->
-</P>
-<H3><A NAME="MaxJobs">MaxJobs</A></H3>
+<H3><A NAME="MaxClientsPerHost">MaxClientsPerHost</A></H3>
 <HR>
 <H4>Examples</H4>
 <UL>
 <PRE>
-MaxJobs 100
-MaxJobs 9999
-MaxJobs 0
+MaxClientsPerHost 0
+MaxClientsPerHost 10
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>MaxJobs</CODE> directive controls the maximum number of 
-jobs that are kept in memory. Once the number of jobs reaches the 
-limit, the oldest completed job is automatically purged from the system 
-to make room for the new one. If all of the known jobs are still 
-pending or active then the new job will be rejected. </P>
-<P>Setting the maximum to 0 disables this functionality. The default 
-setting is 0. 
+<P>The <CODE>MaxClientsPerHost</CODE> directive controls the maximum
+ number of simultaneous clients that will be allowed from a single host
+ by the server. The default is the <CODE>MaxClients</CODE> value. A
+ value of 0 uses the automatic setting based on the <CODE>MaxClients</CODE>
+ value.</P>
+<P>This directive provides a small measure of protection against Denial
+ of Service attacks from a single host.
 <!-- NEED 3in -->
 </P>
-<H3><A NAME="MaxJobsPerPrinter">MaxJobsPerPrinter</A></H3>
+<H3><A NAME="MaxCopies">MaxCopies</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+MaxCopies 100
+MaxCopies 65535
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>MaxCopies</CODE> directive controls the maximum number of
+ copies that a user can print of a job. The default is 100 copies.</P>
+<CENTER>
+<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
+<TR><TD><B> NOTE:</B>
+<P>Most HP PCL laser printers internally limit the number of copies to
+ 100.</P>
+</TD></TR>
+</TABLE>
+</CENTER>
+
+<!-- NEED 3in -->
+<H3><A NAME="MaxJobs">MaxJobs</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+MaxJobs 100
+MaxJobs 9999
+MaxJobs 0
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>MaxJobs</CODE> directive controls the maximum number of
+ jobs that are kept in memory. Once the number of jobs reaches the
+ limit, the oldest completed job is automatically purged from the system
+ to make room for the new one. If all of the known jobs are still
+ pending or active then the new job will be rejected.</P>
+<P>Setting the maximum to 0 disables this functionality. The default
+ setting is 500.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="MaxJobsPerPrinter">MaxJobsPerPrinter</A></H3>
 <HR>
 <H4>Examples</H4>
 <UL>
@@ -2029,12 +2667,12 @@ MaxJobsPerPrinter 0
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>MaxJobsPerPrinter</CODE> directive controls the maximum 
-number of active jobs that are allowed for each printer or class. Once 
-a printer or class reaches the limit, new jobs will be rejected until 
-one of the active jobs is completed, stopped, aborted, or cancelled. </P>
-<P>Setting the maximum to 0 disables this functionality. The default 
-setting is 0. 
+<P>The <CODE>MaxJobsPerPrinter</CODE> directive controls the maximum
+ number of active jobs that are allowed for each printer or class. Once
+ a printer or class reaches the limit, new jobs will be rejected until
+ one of the active jobs is completed, stopped, aborted, or cancelled.</P>
+<P>Setting the maximum to 0 disables this functionality. The default
+ setting is 0.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="MaxJobsPerUser">MaxJobsPerUser</A></H3>
@@ -2048,12 +2686,12 @@ MaxJobsPerUser 0
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>MaxJobsPerUser</CODE> directive controls the maximum 
-number of active jobs that are allowed for each user. Once a user 
-reaches the limit, new jobs will be rejected until one of the active 
-jobs is completed, stopped, aborted, or cancelled. </P>
-<P>Setting the maximum to 0 disables this functionality. The default 
-setting is 0. 
+<P>The <CODE>MaxJobsPerUser</CODE> directive controls the maximum number
+ of active jobs that are allowed for each user. Once a user reaches the
+ limit, new jobs will be rejected until one of the active jobs is
+ completed, stopped, aborted, or cancelled.</P>
+<P>Setting the maximum to 0 disables this functionality. The default
+ setting is 0.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="MaxLogSize">MaxLogSize</A></H3>
@@ -2067,11 +2705,11 @@ MaxLogSize 0
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>MaxLogSize</CODE> directive controls the maximum size of 
-each log file. Once a log file reaches or exceeds the maximum size it 
-is closed and renamed to <VAR>filename.O</VAR>. This allows you to 
-rotate the logs automatically. The default size is 1048576 bytes (1MB). </P>
-<P>Setting the maximum size to 0 disables log rotation. 
+<P>The <CODE>MaxLogSize</CODE> directive controls the maximum size of
+ each log file. Once a log file reaches or exceeds the maximum size it
+ is closed and renamed to<VAR> filename.O</VAR>. This allows you to
+ rotate the logs automatically. The default size is 1048576 bytes (1MB).</P>
+<P>Setting the maximum size to 0 disables log rotation.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="MaxRequestSize">MaxRequestSize</A></H3>
@@ -2085,11 +2723,11 @@ MaxRequestSize 0
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>MaxRequestSize</CODE> directive controls the maximum size 
-of print files, IPP requests, and HTML form data in HTTP POST requests. 
-The default limit is 0 which disables the limit check. </P>
+<P>The <CODE>MaxRequestSize</CODE> directive controls the maximum size
+ of print files, IPP requests, and HTML form data in HTTP POST requests.
+ The default limit is 0 which disables the limit check.</P>
 <P>Also see the identical <A HREF="#LimitRequestBody"><CODE>
-LimitRequestBody</CODE></A> directive. 
+LimitRequestBody</CODE></A> directive.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="Order">Order</A></H3>
@@ -2102,16 +2740,16 @@ Order Deny,Allow
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>Order</CODE> directive defines the default access control. 
-The following values are supported: </P>
+<P>The <CODE>Order</CODE> directive defines the default access control.
+ The following values are supported:</P>
 <UL>
-<LI><CODE>Allow,Deny</CODE> - Allow requests from all  systems <I>except</I>
- for those listed in a <CODE>Deny</CODE> directive. </LI>
-<LI><CODE>Deny,Allow</CODE> - Allow requests only from  those listed in 
-an <CODE>Allow</CODE> directive. </LI>
+<LI><CODE>Allow,Deny</CODE> - Allow requests from all systems<I> except</I>
+ for those listed in a <CODE>Deny</CODE> directive.</LI>
+<LI><CODE>Deny,Allow</CODE> - Allow requests only from those listed in
+ an <CODE>Allow</CODE> directive.</LI>
 </UL>
 <P>The <CODE>Order</CODE> directive must appear inside a <A HREF="#Location">
-<CODE>Location</CODE></A> directive. 
+<CODE>Location</CODE></A> directive.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="PageLog">PageLog</A></H3>
@@ -2125,14 +2763,14 @@ PageLog syslog
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>PageLog</CODE> directive sets the name of the page log 
-file. If the filename is not absolute then it is assumed to be relative 
-to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The 
-default page log file is <VAR>/var/log/cups/page_log</VAR>. </P>
+<P>The <CODE>PageLog</CODE> directive sets the name of the page log
+ file. If the filename is not absolute then it is assumed to be relative
+ to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE></A> directory. The
+ default page log file is<VAR> /var/log/cups/page_log</VAR>.</P>
 <P>The server name can be included in the filename by using <CODE>%s</CODE>
- in the name. </P>
-<P>The special name &quot;syslog&quot; can be used to send the page information 
-to the system log instead of a plain file. 
+ in the name.</P>
+<P>The special name &quot;syslog&quot; can be used to send the page information to
+ the system log instead of a plain file.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="Port">Port</A></H3>
@@ -2145,48 +2783,49 @@ Port 80
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>Port</CODE> directive specifies a port to listen on. 
-Multiple <CODE>Port</CODE> lines can be specified to listen on multiple 
-ports. The default port is 631. 
+<P>The <CODE>Port</CODE> directive specifies a port to listen on.
+ Multiple <CODE>Port</CODE> lines can be specified to listen on multiple
+ ports. The <CODE>Port</CODE> directive is equivalent to &quot;<CODE>Listen
+ *:nnn</CODE>&quot;. The default port is 631.
 <!-- NEED 3in -->
 </P>
-<H3><A NAME="PreserveJobHistory">PreserveJobHistory</A></H3>
+<H3><A NAME="PreserveJobFiles">PreserveJobFiles</A></H3>
 <HR>
 <H4>Examples</H4>
 <UL>
 <PRE>
-PreserveJobHistory On
-PreserveJobHistory Off
+PreserveJobFiles On
+PreserveJobFiles Off
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>PreserveJobHistory</CODE> directive controls whether the 
-history of completed, cancelled, or aborted print jobs is stored on 
-disk. </P>
-<P>A value of <CODE>On</CODE> (the default) preserves job information 
-until the administrator purges it with the <CODE>cancel</CODE> command. </P>
-<P>A value of <CODE>Off</CODE> removes the job information as soon as 
-each job is completed, cancelled, or aborted. 
+<P>The <CODE>PreserveJobFiles</CODE> directive controls whether the
+ document files of completed, cancelled, or aborted print jobs are
+ stored on disk.</P>
+<P>A value of <CODE>On</CODE> preserves job files until the
+ administrator purges them with the <CODE>cancel</CODE> command. Jobs
+ can be restarted (and reprinted) as desired until they are purged.</P>
+<P>A value of <CODE>Off</CODE> (the default) removes the job files as
+ soon as each job is completed, cancelled, or aborted.
 <!-- NEED 3in -->
 </P>
-<H3><A NAME="PreserveJobFiles">PreserveJobFiles</A></H3>
+<H3><A NAME="PreserveJobHistory">PreserveJobHistory</A></H3>
 <HR>
 <H4>Examples</H4>
 <UL>
 <PRE>
-PreserveJobFiles On
-PreserveJobFiles Off
+PreserveJobHistory On
+PreserveJobHistory Off
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>PreserveJobFiles</CODE> directive controls whether the 
-document files of completed, cancelled, or aborted print jobs are 
-stored on disk. </P>
-<P>A value of <CODE>On</CODE> preserves job files until the 
-administrator purges them with the <CODE>cancel</CODE> command. Jobs 
-can be restarted (and reprinted) as desired until they are purged. </P>
-<P>A value of <CODE>Off</CODE> (the default) removes the job files as 
-soon as each job is completed, cancelled, or aborted. 
+<P>The <CODE>PreserveJobHistory</CODE> directive controls whether the
+ history of completed, cancelled, or aborted print jobs is stored on
+ disk.</P>
+<P>A value of <CODE>On</CODE> (the default) preserves job information
+ until the administrator purges it with the <CODE>cancel</CODE> command.</P>
+<P>A value of <CODE>Off</CODE> removes the job information as soon as
+ each job is completed, cancelled, or aborted.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="Printcap">Printcap</A></H3>
@@ -2200,18 +2839,18 @@ Printcap /etc/printers.conf
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>Printcap</CODE> directive controls whether or not a 
-printcap file is automatically generated and updated with a list of 
-available printers. If specified with no value, then no printcap file 
-will be generated. The default is to generate a file named <VAR>
-/etc/printcap</VAR>. </P>
-<P>When a filename is specified (e.g. <VAR>/etc/printcap</VAR>), the 
-printcap file is written whenever a printer is added or removed. The 
-printcap file can then be used by applications that are hardcoded to 
-look at the printcap file for the available printers. 
+<P>The <CODE>Printcap</CODE> directive controls whether or not a
+ printcap file is automatically generated and updated with a list of
+ available printers. If specified with no value, then no printcap file
+ will be generated. The default is to generate a file named<VAR>
+ /etc/printcap</VAR>.</P>
+<P>When a filename is specified (e.g.<VAR> /etc/printcap</VAR>), the
+ printcap file is written whenever a printer is added or removed. The
+ printcap file can then be used by applications that are hardcoded to
+ look at the printcap file for the available printers.
 <!-- NEED 3in -->
 </P>
-<H3><A NAME="Printcap">PrintcapFormat</A></H3>
+<H3><A NAME="PrintcapFormat">PrintcapFormat</A></H3>
 <HR>
 <H4>Examples</H4>
 <UL>
@@ -2221,8 +2860,44 @@ PrintcapFormat Solaris
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>PrintcapFormat</CODE> directive controls the output format 
-of the printcap file. The default is to generate a BSD printcap file. 
+<P>The <CODE>PrintcapFormat</CODE> directive controls the output format
+ of the printcap file. The default is to generate a BSD printcap file.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="PrintcapGUI">PrintcapGUI</A></H3>
+<HR>
+<H4>Example</H4>
+<UL>
+<PRE>
+PrintcapGUI /usr/bin/glpoptions
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>PrintcapGUI</CODE> directive sets the program to use when
+ displaying an option panel from an IRIX application that uses the
+ Impressario print API. The default program is the ESP Print Pro
+ &quot;glpoptions&quot; GUI.</P>
+<P>The program must accept the <CODE>-d</CODE> option to specify a
+ printer and the <CODE>-o</CODE> option to specify one or more options.
+ After allowing the user to select/change options, the program must then
+ write the list of printing options without the <CODE>-o</CODE> to the
+ standard output.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="ReloadTimeout">ReloadTimeout</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+ReloadTimeout 60
+ReloadTimeout 3600
+ReloadTimeout 0
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>ReloadTimeout</CODE> directive sets how long the scheduler
+ waits for jobs to complete before reloading the server configuration.
+ The default timeout is 60 seconds.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="RemoteRoot">RemoteRoot</A></H3>
@@ -2235,10 +2910,10 @@ RemoteRoot root
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>RemoteRoot</CODE> directive sets the username for 
-unauthenticated root requests from remote hosts. The default username 
-is <VAR>remroot</VAR>. Setting <CODE>RemoteRoot</CODE> to <VAR>root</VAR>
- effectively disables this security mechanism. 
+<P>The <CODE>RemoteRoot</CODE> directive sets the username for
+ unauthenticated root requests from remote hosts. The default username
+ is<VAR> remroot</VAR>. Setting <CODE>RemoteRoot</CODE> to<VAR> root</VAR>
+ effectively disables this security mechanism.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="RequestRoot">RequestRoot</A></H3>
@@ -2251,11 +2926,34 @@ RequestRoot /foo/bar/spool/cups
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>RequestRoot</CODE> directive sets the directory for 
-incoming IPP requests and HTML forms. If an absolute path is not 
-provided then it is assumed to be relative to the <A HREF="#ServerRoot"><CODE>
-ServerRoot</CODE></A> directory. The default request directory is <VAR>
-/var/spool/cups</VAR>. 
+<P>The <CODE>RequestRoot</CODE> directive sets the directory for
+ incoming IPP requests and HTML forms. If an absolute path is not
+ provided then it is assumed to be relative to the <A HREF="#ServerRoot">
+<CODE>ServerRoot</CODE></A> directory. The default request directory is<VAR>
+ /var/spool/cups</VAR>.
+<!-- NEED 4in -->
+</P>
+<H3><A NAME="Require">Require</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+Require group foo bar
+Require user john mary
+Require valid-user
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Require</CODE> directive specifies that authentication is
+ required for the resource. The <CODE>group</CODE> keyword specifies
+ that the authenticated user must be a member of one or more of the
+ named groups that follow.</P>
+<P>The <CODE>user</CODE> keyword specifies that the authenticated user
+ must be one of the named users that follow.</P>
+<P>The <CODE>valid-user</CODE> keyword specifies that any authenticated
+ user may access the resource.</P>
+<P>The default is to do no authentication. This directive must appear
+ inside a <A HREF="#Location"><CODE>Location</CODE></A> directive.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="RIPCache">RIPCache</A></H3>
@@ -2269,11 +2967,28 @@ RIPCache 2048k
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>RIPCache</CODE> directive sets the size of the memory 
-cache used by Raster Image Processor (&quot;RIP&quot;) filters such as <CODE>
-imagetoraster</CODE> and <CODE>pstoraster</CODE>. The size can be 
-suffixed with a &quot;k&quot; for kilobytes, &quot;m&quot; for megabytes, or &quot;g&quot; for 
-gigabytes. The default cache size is &quot;8m&quot;, or 8 megabytes. 
+<P>The <CODE>RIPCache</CODE> directive sets the size of the memory cache
+ used by Raster Image Processor (&quot;RIP&quot;) filters such as <CODE>
+imagetoraster</CODE> and <CODE>pstoraster</CODE>. The size can be
+ suffixed with a &quot;k&quot; for kilobytes, &quot;m&quot; for megabytes, or &quot;g&quot; for
+ gigabytes. The default cache size is &quot;8m&quot;, or 8 megabytes.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="RootCertDuration">RootCertDuration</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+RootCertDuration 300
+RootCertDuration 0
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>RootCertDuration</CODE> directive controls the interval
+ between updates of the root authentication certificate. The default is <CODE>
+300</CODE> seconds which updates the root certificate approximately once
+ every 5 minutes. Set the interval to 0 to disable certificate updates
+ entirely.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="RunAsUser">RunAsUser</A></H3>
@@ -2286,16 +3001,38 @@ RunAsUser No
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>RunAsUser</CODE> directive controls whether the scheduler 
-runs as the unpriviledged user account (usually <CODE>lp</CODE>). The 
-default is <CODE>No</CODE> which leaves the scheduler running as the <CODE>
-root</CODE> user. </P>
-<P><B>Note:</B> Running as a non-priviledged user may prevent LPD and 
-locally connected printers from working due to permission problems. The <CODE>
-lpd</CODE> backend will automatically use a non-priviledged mode that 
-is not 100% compliant with RFC 1179. The <CODE>parallel</CODE>, <CODE>
-serial</CODE>, and <CODE>usb</CODE> backends will need write access to 
-the corresponding device files. 
+<P>The <CODE>RunAsUser</CODE> directive controls whether the scheduler
+ runs as the unpriviledged user account (usually <CODE>lp</CODE>). The
+ default is <CODE>No</CODE> which leaves the scheduler running as the <CODE>
+root</CODE> user.</P>
+<P><B>Note:</B> Running as a non-priviledged user may prevent LPD and
+ locally connected printers from working due to permission problems. The
+ <CODE>lpd</CODE> backend will automatically use a non-priviledged mode
+ that is not 100% compliant with RFC 1179. The <CODE>parallel</CODE>, <CODE>
+serial</CODE>, and <CODE>usb</CODE> backends will need write access to
+ the corresponding device files.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="Satisfy">Satisfy</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+Satisfy all
+Satisfy any
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Satisfy</CODE> directive specifies whether all conditions
+ must be satisfied to allow access to the resource. If set to <CODE>all</CODE>
+, then all authentication and access control conditions must be satified
+ to allow access.</P>
+<P>Setting <CODE>Satisfy</CODE> to <CODE>any</CODE> allows a user to
+ gain access if the authentication or access control requirements are
+ satisfied. For example, you might require authentication for remote
+ access, but allow local access without authentication.</P>
+<P>The default is <CODE>all</CODE>. This directive must appear inside a <A
+HREF="#Location"><CODE>Location</CODE></A> directive.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="ServerAdmin">ServerAdmin</A></H3>
@@ -2308,10 +3045,10 @@ ServerAdmin root@foo.bar.com
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>ServerAdmin</CODE> directive identifies the email address 
-for the administrator on the system. By default the administrator email 
-address is <CODE>root@server</CODE>, where <CODE>server</CODE> is the 
-server name. 
+<P>The <CODE>ServerAdmin</CODE> directive identifies the email address
+ for the administrator on the system. By default the administrator email
+ address is <CODE>root@server</CODE>, where <CODE>server</CODE> is the
+ server name.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="ServerBin">ServerBin</A></H3>
@@ -2324,11 +3061,11 @@ ServerBin /foo/bar/lib/cups
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>ServerBin</CODE> directive sets the directory for 
-server-run executables. If an absolute path is not provided then it is 
-assumed to be relative to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE>
-</A> directory. The default executable directory is <VAR>/usr/lib/cups</VAR>
- or <VAR>/usr/lib32/cups</VAR> (IRIX 6.5). 
+<P>The <CODE>ServerBin</CODE> directive sets the directory for
+ server-run executables. If an absolute path is not provided then it is
+ assumed to be relative to the <A HREF="#ServerRoot"><CODE>ServerRoot</CODE>
+</A> directory. The default executable directory is<VAR> /usr/lib/cups</VAR>
+.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="ServerCertificate">ServerCertificate</A></H3>
@@ -2340,12 +3077,12 @@ ServerCertificate /etc/cups/ssl/server.crt
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>ServerCertificate</CODE> directive specifies the location 
-of the SSL certificate file used by the server when negotiating 
-encrypted connections. The certificate must not be encrypted (password 
-protected) since the scheduler normally runs in the background and will 
-be unable to ask for a password. The default certificate file is <VAR>
-/etc/cups/ssl/server.crt</VAR>. 
+<P>The <CODE>ServerCertificate</CODE> directive specifies the location
+ of the SSL certificate file used by the server when negotiating
+ encrypted connections. The certificate must not be encrypted (password
+ protected) since the scheduler normally runs in the background and will
+ be unable to ask for a password. The default certificate file is<VAR>
+ /etc/cups/ssl/server.crt</VAR>.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="ServerKey">ServerKey</A></H3>
@@ -2357,10 +3094,10 @@ ServerKey /etc/cups/ssl/server.key
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>ServerKey</CODE> directive specifies the location of the 
-SSL private key file used by the server when negotiating encrypted 
-connections. The default key file is <VAR>/etc/cups/ssl/server.crt</VAR>
-. 
+<P>The <CODE>ServerKey</CODE> directive specifies the location of the
+ SSL private key file used by the server when negotiating encrypted
+ connections. The default key file is<VAR> /etc/cups/ssl/server.crt</VAR>
+.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="ServerName"></A>ServerName</H3>
@@ -2373,8 +3110,8 @@ ServerName myserver.domain.com
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>ServerName</CODE> directive specifies the hostname that is 
-reported to clients. By default the server name is the hostname. 
+<P>The <CODE>ServerName</CODE> directive specifies the hostname that is
+ reported to clients. By default the server name is the hostname.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="ServerRoot">ServerRoot</A></H3>
@@ -2387,10 +3124,30 @@ ServerRoot /foo/bar/cups
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>ServerRoot</CODE> directive specifies the absolute path to 
-the server configuration and state files. It is also used to resolve 
-relative paths in the <VAR>cupsd.conf</VAR> file. The default server 
-directory is <VAR>/etc/cups</VAR>. 
+<P>The <CODE>ServerRoot</CODE> directive specifies the absolute path to
+ the server configuration and state files. It is also used to resolve
+ relative paths in the<VAR> cupsd.conf</VAR> file. The default server
+ directory is<VAR> /etc/cups</VAR>.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="ServerTokens">ServerTokens</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+ServerTokens None
+ServerTokens ProductOnly
+ServerTokens Major
+ServerTokens Minor
+ServerTokens Minimal
+ServerTokens OS
+ServerTokens Full
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>ServerTokens</CODE> directive specifies the information
+ that is included in the Server header of HTTP responses. The default
+ value is <TT>Minor</TT> which generates &quot;CUPS/1.1&quot;.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="SSLListen">SSLListen</A></H3>
@@ -2403,12 +3160,12 @@ SSLListen 192.0.2.1:443
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>SSLListen</CODE> directive specifies a network address and 
-port to listen for secure connections. Multiple <CODE>SSLListen</CODE>
- directives can be provided to listen on multiple addresses. </P>
+<P>The <CODE>SSLListen</CODE> directive specifies a network address and
+ port to listen for secure connections. Multiple <CODE>SSLListen</CODE>
+ directives can be provided to listen on multiple addresses.</P>
 <P>The <CODE>SSLListen</CODE> directive is similar to the <A HREF="#SSLPort">
-<CODE>SSLPort</CODE></A> directive but allows you to restrict access to 
-specific interfaces or networks. 
+<CODE>SSLPort</CODE></A> directive but allows you to restrict access to
+ specific interfaces or networks.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="SSLPort">SSLPort</A></H3>
@@ -2420,9 +3177,9 @@ SSLPort 443
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>SSLPort</CODE> directive specifies a port to listen on for 
-secure connections. Multiple <CODE>SSLPort</CODE> lines can be 
-specified to listen on multiple ports. 
+<P>The <CODE>SSLPort</CODE> directive specifies a port to listen on for
+ secure connections. Multiple <CODE>SSLPort</CODE> lines can be
+ specified to listen on multiple ports.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="SystemGroup">SystemGroup</A></H3>
@@ -2436,10 +3193,10 @@ SystemGroup root
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>SystemGroup</CODE> directive specifies the system 
-administration group for <CODE>System</CODE> authentication. More 
-information can be found later in this chapter in <A HREF="#PRINTING_SECURITY">
-&quot;Printing System Security&quot;</A>. 
+<P>The <CODE>SystemGroup</CODE> directive specifies the system
+ administration group for <CODE>System</CODE> authentication. More
+ information can be found later in this chapter in <A HREF="#PRINTING_SECURITY">
+&quot;Printing System Security&quot;</A>.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="TempDir">TempDir</A></H3>
@@ -2452,13 +3209,13 @@ TempDir /foo/bar/tmp
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>TempDir</CODE> directive specifies an absolute path for 
-the directory to use for temporary files. The default directory is <VAR>
-/var/tmp</VAR>. </P>
-<P>Temporary directories must be world-writable and should have the 
-&quot;sticky&quot; permission bit enabled so that other users cannot delete 
-filter temporary files. The following commands will create an 
-appropriate temporary directory called <VAR>/foo/bar/tmp</VAR>: </P>
+<P>The <CODE>TempDir</CODE> directive specifies an absolute path for the
+ directory to use for temporary files. The default directory is<VAR>
+ /var/tmp</VAR>.</P>
+<P>Temporary directories must be world-writable and should have the
+ &quot;sticky&quot; permission bit enabled so that other users cannot delete
+ filter temporary files. The following commands will create an
+ appropriate temporary directory called<VAR> /foo/bar/tmp</VAR>:</P>
 <UL>
 <PRE>
 <B>mkdir /foo/bar/tmp ENTER</B>
@@ -2477,9 +3234,9 @@ Timeout 90
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>Timeout</CODE> directive controls the amount of time to 
-wait before an active HTTP or IPP request times out. The default 
-timeout is 300 seconds. 
+<P>The <CODE>Timeout</CODE> directive controls the amount of time to
+ wait before an active HTTP or IPP request times out. The default
+ timeout is 300 seconds.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="User">User</A></H3>
@@ -2492,22 +3249,720 @@ User guest
 </PRE>
 </UL>
 <H4>Description</H4>
-<P>The <CODE>User</CODE> directive specifies the UNIX user that filter 
-and CGI programs run as. The default user is <CODE>lp</CODE>. 
+<P>The <CODE>User</CODE> directive specifies the UNIX user that filter
+ and CGI programs run as. The default user is <CODE>lp</CODE>.</P>
+<H2><A NAME="7_5">Changing the Client Configuration</A></H2>
+<P>The CUPS client application (<CODE>lp</CODE>, <CODE>lpr</CODE>, and
+ so forth) use the<VAR> /etc/cups/client.conf</VAR> file for default
+ settings. The client application also look in the user's home directory
+ for a file called<VAR> .cupsrc</VAR>. Each directive is listed on a
+ line by itself followed by its value. Comments are introduced using the
+ number sign (&quot;#&quot;) character at the beginning of a line.</P>
+<P>Since the client configuration file consists of plain text, you can
+ use your favorite text editor to make changes to it.
+<!-- NEED 4in -->
+</P>
+<H2><A NAME="7_6">Client Directives</A></H2>
+<P>The<VAR> client.conf</VAR> file contains two directives that
+ determine how the client behaves:</P>
+<UL>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
+<TR><TD VALIGN="TOP">
+<LI><A HREF="#Encryption"><CODE>Encryption</CODE></A></LI>
+<LI><A HREF="#ServerName"><CODE>ServerName</CODE></A></LI>
+</TD></TR>
+</TABLE>
+</UL>
+
+<!-- NEED 3in -->
+<H3><A NAME="Encryption">Encryption</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+Encryption Never
+Encryption IfRequested
+Encryption Required
+Encryption Always
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Encryption</CODE> directive specifies the default
+ encryption settings for the client. The default setting is<VAR>
+ IfRequested</VAR>.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="ServerName">ServerName</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+ServerName foo.bar.com
+ServerName 11.22.33.44
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>ServerName</CODE> directive specifies sets the remote
+ server that is to be used for all client operations. That is, it
+ redirects all client requests to the remote server. The default is to
+ use the local server (&quot;<VAR>localhost</VAR>&quot;).
 <!-- NEW PAGE -->
 </P>
+<H2><A NAME="7_7">Changing the Printer Configuration</A></H2>
+<P>The CUPS scheduler (cupsd) uses the<VAR> /etc/cups/printers.conf</VAR>
+ file to store the list of available printers. This file contains only
+ locally defined printers, but not remote printers that are created
+ automatically. Each directive is listed on a line by itself followed by
+ its value. Comments are introduced using the number sign (&quot;#&quot;)
+ character at the beginning of a line.</P>
+<P>Since the printer configuration file consists of plain text, you can
+ use your favorite text editor to make changes to it.
+<!-- NEED 4in -->
+</P>
+<H2><A NAME="7_8">Printer Directives</A></H2>
+<P>The<VAR> printers.conf</VAR> file contains many directives that
+ determine how the printer behaves:</P>
+<UL>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
+<TR><TD VALIGN="TOP">
+<LI><A HREF="#Accepting"><CODE>Accepting</CODE></A></LI>
+<LI><A HREF="#AllowUser"><CODE>AllowUser</CODE></A></LI>
+<LI><A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A></LI>
+<LI><A HREF="#DenyUser"><CODE>DenyUser</CODE></A></LI>
+<LI><A HREF="#DeviceURI"><CODE>DeviceURI</CODE></A></LI>
+</TD><TD VALIGN="TOP"> &nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
+<LI><A HREF="#Info"><CODE>Info</CODE></A></LI>
+<LI><A HREF="#JobSheets"><CODE>JobSheets</CODE></A></LI>
+<LI><A HREF="#KLimit"><CODE>KLimit</CODE></A></LI>
+<LI><A HREF="#PrinterLocation"><CODE>Location</CODE></A></LI>
+<LI><A HREF="#PageLimit"><CODE>PageLimit</CODE></A></LI>
+</TD><TD VALIGN="TOP"> &nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
+<LI><A HREF="#Printer"><CODE>Printer</CODE></A></LI>
+<LI><A HREF="#QuotaPeriod"><CODE>QuotaPeriod</CODE></A></LI>
+<LI><A HREF="#State"><CODE>State</CODE></A></LI>
+<LI><A HREF="#StateMessage"><CODE>StateMessage</CODE></A></LI>
+</TD></TR>
+</TABLE>
+</UL>
+
+<!-- NEED 3in -->
+<H3><A NAME="Accepting">Accepting</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+Accepting yes
+
+Accepting no
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Accepting</CODE> directive defines the initial Boolean
+ value for the<VAR> printer-is-accepting-job</VAR> attribute which can
+ be set by the <CODE>accept</CODE> and <CODE>reject</CODE> commands.</P>
+<P>This directive must appear inside a <A HREF="#Printer"><CODE>Printer</CODE>
+</A> or <A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
+ directive.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="AllowUser">AllowUser</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+AllowUser foo_user
+AllowUser bar_user
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>AllowUser</CODE> directive adds a username to the<VAR>
+ requesting-user-name-allowed</VAR> attribute which can be set by the <CODE>
+lpadmin -u</CODE> command.</P>
+<P>This directive must appear inside a <A HREF="#Printer"><CODE>Printer</CODE>
+</A> or <A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
+ directive.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="DefaultPrinter">DefaultPrinter</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+&lt;DefaultPrinter name/&gt;
+...
+&lt;/Printer&gt;
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>DefaultPrinter</CODE> directive begins a printer definition
+ for the default server destination. It can be added by the <CODE>
+lpadmin</CODE> command or if already defined, set as default by the <CODE>
+lpoptions -d</CODE> command.</P>
+
+<!-- NEED 3in -->
+<H3><A NAME="DenyUser">DenyUser</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+DenyUser foo_user
+DenyUser bar_user
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>DenyUser</CODE> directive adds a username to the<VAR>
+ requesting-user-name-allowed</VAR> attribute which can be set by the <CODE>
+lpadmin -u</CODE> command.</P>
+<P>This directive must appear inside a <A HREF="#Printer"><CODE>Printer</CODE>
+</A> or <A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
+ directive.</P>
+
+<!-- NEED 3in -->
+<H3><A NAME="DeviceURI">DeviceURI</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+DeviceURI socket://foo.bar.com:9100
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>DeviceURI</CODE> directive defines the value of the<VAR>
+ device-uri-attribute</VAR> attribute which can be set by the <CODE>
+lpadmin -v</CODE> command.</P>
+<P>This directive must appear inside a <A HREF="#Printer"><CODE>Printer</CODE>
+</A> or <A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
+ directive.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="Info">Info</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+Info My Printer
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Info</CODE> directive defines the string for the<VAR>
+ printer-info</VAR> attribute which can be set by the <CODE>lpadmin -D</CODE>
+ command.</P>
+<P>This directive must appear inside a <A HREF="#Printer"><CODE>Printer</CODE>
+</A> or <A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
+ directive.</P>
+
+<!-- NEED 6in -->
+<H3><A NAME="JobSheets">JobSheets</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+JobSheets none,standard
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>JobSheets</CODE> directive specifies the default banner
+ pages to print before and after a print job. In the above example, only
+ a<VAR> standard</VAR> banner will print after each job.</P>
+<P>The <CODE>lpoptions -o job-sheets=</CODE> command can be used to set
+ banners. For example, the following command would produce the same
+ results of a<VAR> standard</VAR> banner at the end of each print job
+ for the default printer.</P>
+<UL><B> lpoptions -o job-sheets=none,standard</B></UL>
+<P>If only one banner file is specified, it will be printed before the
+ files in the job. If a second banner file is specified, it is printed
+ after the files in the job.</P>
+<P>The available banner pages depend on the local system configuration;
+ CUPS includes the following banner files:</P>
+<UL>
+<LI><CODE>none</CODE> - Do not produce a banner page.</LI>
+<LI><CODE>classified</CODE> - A banner page with a &quot;classified&quot; label at
+ the top and bottom.</LI>
+<LI><CODE>confidential</CODE> - A banner page with a &quot;confidential&quot;
+ label at the top and bottom.</LI>
+<LI><CODE>secret</CODE> - A banner page with a &quot;secret&quot; label at the top
+ and bottom.</LI>
+<LI><CODE>standard</CODE> - A banner page with no label at the top and
+ bottom.</LI>
+<LI><CODE>topsecret</CODE> - A banner page with a &quot;top secret&quot; label at
+ the top and bottom.</LI>
+<LI><CODE>unclassified</CODE> - A banner page with an &quot;unclassified&quot;
+ label at the top and bottom.</LI>
+</UL>
+<P>This directive must appear inside a <A HREF="#Printer"><CODE>Printer</CODE>
+</A> or <A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
+ directive.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="KLimit">KLimit</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+KLimit 1234
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>KLimit</CODE> directive defines the value of the<VAR>
+ job-k-limit</VAR> attribute which can be set by the <CODE>lpadmin -o
+ job-k-limit=</CODE> command.</P>
+<P>This directive must appear inside a <A HREF="#Printer"><CODE>Printer</CODE>
+</A> or <A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
+ directive.</P>
+
+<!-- NEED 6in -->
+<H3><A NAME="PrinterLocation">Location</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+Location Building 3321
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Location</CODE> directive defines the string for the<VAR>
+ printer-location</VAR> attribute which can be set by the <CODE>lpadmin
+ -L</CODE> command.</P>
+<CENTER>
+<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
+<TR><TD><B> NOTE:</B>
+<P>Do not confuse this <CODE>Location</CODE> directive with the one in
+ cupsd.conf. They are completely different.</P>
+</TD></TR>
+</TABLE>
+</CENTER>
+<P>This directive must appear inside a <A HREF="#Printer"><CODE>Printer</CODE>
+</A> or <A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
+ directive.</P>
+
+<!-- NEED 3in -->
+<H3><A NAME="PageLimit">PageLimit</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+PageLimit 1234
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>PageLimit</CODE> directive defines the value of the<VAR>
+ job-page-limit</VAR> attribute which can be set by the <CODE>lpadmin -o
+ job-page-limit=</CODE> command.</P>
+<P>This directive must appear inside a <A HREF="#Printer"><CODE>Printer</CODE>
+</A> or <A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
+ directive.</P>
+
+<!-- NEED 3in -->
+<H3><A NAME="Printer">Printer</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+&lt;Printer name/&gt;
+...
+&lt;/Printer&gt;
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Printer</CODE> directive begins a printer definition. It
+ can be added by the <CODE>lpadmin</CODE> command.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="QuotaPeriod">QuotaPeriod</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+QuotaPeriod 604800
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>QuotaPeriod</CODE> directive defines the value of the<VAR>
+ job-quota-period</VAR> attribute which can be set by the <CODE>lpadmin
+ -o job-quota-period=</CODE> command.</P>
+<P>This directive must appear inside a <A HREF="#Printer"><CODE>Printer</CODE>
+</A> or <A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
+ directive.</P>
+
+<!-- NEED 3in -->
+<H3><A NAME="State">State</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+State stopped
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>State</CODE> directive defines the initial value of the<VAR>
+ printer-state</VAR> attribute. The strings<VAR> idle</VAR> and<VAR>
+ stopped</VAR> correspond to the IPP enumeration values.</P>
+<P>This directive must appear inside a <A HREF="#Printer"><CODE>Printer</CODE>
+</A> or <A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
+ directive.</P>
+
+<!-- NEED 6in -->
+<H3><A NAME="StateMessage">StateMessage</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+StateMessage Ready to print.
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>StateMessage</CODE> directive defines the initial string
+ for the<VAR> printer-state-message</VAR> attribute. The following are
+ some example messages:</P>
+<UL>
+<LI>Connected to<VAR> host_name</VAR>...</LI>
+<LI>Connecting to<VAR> printer_queue</VAR> on port<VAR> port_number</VAR>
+...</LI>
+<LI>Network host<VAR> host_name</VAR> is busy; will retry in 30
+ seconds...</LI>
+<LI>Printer busy; will retry in 10 seconds...</LI>
+<LI>Printer is busy; retrying print job...</LI>
+<LI>Print file accepted - job ID<VAR> id_number</VAR>.</LI>
+<LI>Ready to print.</LI>
+<LI>Waiting for job to complete</LI>
+</UL>
+<P>This directive must appear inside a <A HREF="#Printer"><CODE>Printer</CODE>
+</A> or <A HREF="#DefaultPrinter"><CODE>DefaultPrinter</CODE></A>
+ directive.</P>
+
+<!-- NEW PAGE -->
+<H2><A NAME="7_9">Changing the Classes Configuration</A></H2>
+<P>The CUPS scheduler (cupsd) uses the<VAR> /etc/cups/classes.conf</VAR>
+ file to store the list of available classes. This file contains only
+ locally defined classes, but not remote or implicit classes that are
+ created automatically. Each directive is listed on a line by itself
+ followed by its value. Comments are introduced using the number sign
+ (&quot;#&quot;) character at the beginning of a line.</P>
+<P>Since the classes configuration file consists of plain text, you can
+ use your favorite text editor to make changes to it.
+<!-- NEED 4in -->
+</P>
+<H2><A NAME="7_10">Classes Directives</A></H2>
+<P>The<VAR> classes.conf</VAR> file contains many directives that
+ determine how the classes behaves:</P>
+<UL>
+<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
+<TR><TD VALIGN="TOP">
+<LI><A HREF="#ClassAccepting"><CODE>Accepting</CODE></A></LI>
+<LI><A HREF="#ClassAllowUser"><CODE>AllowUser</CODE></A></LI>
+<LI><A HREF="#Class"><CODE>Class</CODE></A></LI>
+<LI><A HREF="#DefaultClass"><CODE>DefaultClass</CODE></A></LI>
+<LI><A HREF="#ClassDenyUser"><CODE>DenyUser</CODE></A></LI>
+</TD><TD VALIGN="TOP"> &nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
+<LI><A HREF="#ClassInfo"><CODE>Info</CODE></A></LI>
+<LI><A HREF="#ClassJobSheets"><CODE>JobSheets</CODE></A></LI>
+<LI><A HREF="#ClassKLimit"><CODE>KLimit</CODE></A></LI>
+<LI><A HREF="#ClassLocation"><CODE>Location</CODE></A></LI>
+<LI><A HREF="#ClassPageLimit"><CODE>PageLimit</CODE></A></LI>
+</TD><TD VALIGN="TOP"> &nbsp;&nbsp;&nbsp;</TD><TD VALIGN="TOP">
+<LI><A HREF="#ClassPrinter"><CODE>Printer</CODE></A></LI>
+<LI><A HREF="#ClassQuotaPeriod"><CODE>QuotaPeriod</CODE></A></LI>
+<LI><A HREF="#ClassState"><CODE>State</CODE></A></LI>
+<LI><A HREF="#ClassStateMessage"><CODE>StateMessage</CODE></A></LI>
+</TD></TR>
+</TABLE>
+</UL>
+
+<!-- NEED 3in -->
+<H3><A NAME="ClassAccepting">Accepting</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+Accepting yes
+
+Accepting no
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Accepting</CODE> directive defines the initial Boolean
+ value for the<VAR> printer-is-accepting-job</VAR> attribute which can
+ be set by the <CODE>accept</CODE> and <CODE>reject</CODE> commands.</P>
+<P>This directive must appear inside a <A HREF="#Class"><CODE>Class</CODE>
+</A> or <A HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="ClassAllowUser">AllowUser</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+AllowUser foo_user
+AllowUser bar_user
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>AllowUser</CODE> directive adds a username to the<VAR>
+ requesting-user-name-allowed</VAR> attribute which can be set by the <CODE>
+lpadmin -u</CODE> command.</P>
+<P>This directive must appear inside a <A HREF="#Class"><CODE>Class</CODE>
+</A> or <A HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="Class">Class</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+&lt;Class name/&gt;
+...
+&lt;/Class&gt;
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Class</CODE> directive begins a class definition. It can be
+ added by the <CODE>lpadmin -c</CODE> command.</P>
+
+<!-- NEED 3in -->
+<H3><A NAME="DefaultClass">DefaultClass</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+&lt;DefaultClass name/&gt;
+...
+&lt;/DefaultClass&gt;
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>DefaultClass</CODE> directive begins a class definition for
+ the default server destination. It can be added by the <CODE>lpadmin -c</CODE>
+ command or if already defined, set as default by the <CODE>lpoptions -d</CODE>
+ command.</P>
+
+<!-- NEED 3in -->
+<H3><A NAME="ClassDenyUser">DenyUser</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+DenyUser foo_user
+DenyUser bar_user
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>DenyUser</CODE> directive adds a username to the<VAR>
+ requesting-user-name-allowed</VAR> attribute which can be set by the <CODE>
+lpadmin -u</CODE> command.</P>
+<P>This directive must appear inside a <A HREF="#Class"><CODE>Class</CODE>
+</A> or <A HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="ClassInfo">Info</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+Info My Printer
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Info</CODE> directive defines the string for the<VAR>
+ printer-info</VAR> attribute which can be set by the <CODE>lpadmin -D</CODE>
+ command.</P>
+<P>This directive must appear inside a <A HREF="#Class"><CODE>Class</CODE>
+</A> or <A HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
+<!-- NEED 6in -->
+</P>
+<H3><A NAME="ClassJobSheets">JobSheets</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+JobSheets none,standard
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>JobSheets</CODE> directive specifies the default banner
+ pages to print before and after a print job. In the above example, only
+ a<VAR> standard</VAR> banner will print after each job.</P>
+<P>The <CODE>lpoptions -o job-sheets=</CODE> command can be used to set
+ banners. For example, the following command would produce the same
+ results of a<VAR> standard</VAR> banner at the end of each print job
+ for the default class.</P>
+<UL><B> lpoptions -o job-sheets=none,standard</B></UL>
+<P>If only one banner file is specified, it will be printed before the
+ files in the job. If a second banner file is specified, it is printed
+ after the files in the job.</P>
+<P>The available banner pages depend on the local system configuration;
+ CUPS includes the following banner files:</P>
+<UL>
+<LI><CODE>none</CODE> - Do not produce a banner page.</LI>
+<LI><CODE>classified</CODE> - A banner page with a &quot;classified&quot; label at
+ the top and bottom.</LI>
+<LI><CODE>confidential</CODE> - A banner page with a &quot;confidential&quot;
+ label at the top and bottom.</LI>
+<LI><CODE>secret</CODE> - A banner page with a &quot;secret&quot; label at the top
+ and bottom.</LI>
+<LI><CODE>standard</CODE> - A banner page with no label at the top and
+ bottom.</LI>
+<LI><CODE>topsecret</CODE> - A banner page with a &quot;top secret&quot; label at
+ the top and bottom.</LI>
+<LI><CODE>unclassified</CODE> - A banner page with an &quot;unclassified&quot;
+ label at the top and bottom.</LI>
+</UL>
+<P>This directive must appear inside a <A HREF="#Class"><CODE>Class</CODE>
+</A> or <A HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="ClassKLimit">KLimit</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+KLimit 1234
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>KLimit</CODE> directive defines the value of the<VAR>
+ job-k-limit</VAR> attribute which can be set by the <CODE>lpadmin -o
+ job-k-limit=</CODE> command.</P>
+<P>This directive must appear inside a <A HREF="#Class"><CODE>Class</CODE>
+</A> or <A HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
+<!-- NEED 6in -->
+</P>
+<H3><A NAME="ClassLocation">Location</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+Location Building 3321
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Location</CODE> directive defines the string for the<VAR>
+ printer-location</VAR> attribute which can be set by the <CODE>lpadmin
+ -L</CODE> command.</P>
+<CENTER>
+<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
+<TR><TD><B> NOTE:</B>
+<P>Do not confuse this <CODE>Location</CODE> directive with the one in
+ cupsd.conf. They are completely different.</P>
+</TD></TR>
+</TABLE>
+</CENTER>
+<P>This directive must appear inside a <A HREF="#Class"><CODE>Class</CODE>
+</A> or <A HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="ClassPageLimit">PageLimit</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+PageLimit 1234
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>PageLimit</CODE> directive defines the value of the<VAR>
+ job-page-limit</VAR> attribute which can be set by the <CODE>lpadmin -o
+ job-page-limit=</CODE> command.</P>
+<P>This directive must appear inside a <A HREF="#Class"><CODE>Class</CODE>
+</A> or <A HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="ClassPrinter">Printer</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+Printer foo
+Printer bar
+Printer foo@bar
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>Printer</CODE> directive adds a printer to the class. It
+ can be added by the <CODE>lpadmin -c</CODE> command.</P>
+<CENTER>
+<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
+<TR><TD><B> NOTE:</B>
+<P>Do not confuse this <CODE>Printer</CODE> directive with the one in
+ printers.conf. They are completely different.</P>
+</TD></TR>
+</TABLE>
+</CENTER>
+<P>This directive must appear inside a <A HREF="#Class"><CODE>Class</CODE>
+</A> or <A HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.</P>
+
+<!-- NEED 3in -->
+<H3><A NAME="ClassQuotaPeriod">QuotaPeriod</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+QuotaPeriod 604800
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>QuotaPeriod</CODE> directive defines the value of the<VAR>
+ job-quota-period</VAR> attribute which can be set by the <CODE>lpadmin
+ -o job-quota-period=</CODE> command.</P>
+<P>This directive must appear inside a <A HREF="#Class"><CODE>Class</CODE>
+</A> or <A HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
+<!-- NEED 3in -->
+</P>
+<H3><A NAME="ClassState">State</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+State stopped
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>State</CODE> directive defines the initial value of the<VAR>
+ printer-state</VAR> attribute. The strings<VAR> idle</VAR> and<VAR>
+ stopped</VAR> correspond to the IPP enumeration values.</P>
+<P>This directive must appear inside a <A HREF="#Class"><CODE>Class</CODE>
+</A> or <A HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.
+<!-- NEED 6in -->
+</P>
+<H3><A NAME="ClassStateMessage">StateMessage</A></H3>
+<HR>
+<H4>Examples</H4>
+<UL>
+<PRE>
+StateMessage Ready to print.
+</PRE>
+</UL>
+<H4>Description</H4>
+<P>The <CODE>StateMessage</CODE> directive defines the initial string
+ for the<VAR> printer-state-message</VAR> attribute. The following are
+ some example messages:</P>
+<UL>
+<LI>Connected to<VAR> host_name</VAR>...</LI>
+<LI>Connecting to<VAR> class_queue</VAR> on port<VAR> port_number</VAR>
+...</LI>
+<LI>Network host<VAR> host_name</VAR> is busy; will retry in 30
+ seconds...</LI>
+<LI>Printer busy; will retry in 10 seconds...</LI>
+<LI>Printer is busy; retrying print job...</LI>
+<LI>Print file accepted - job ID<VAR> id_number</VAR>.</LI>
+<LI>Ready to print.</LI>
+<LI>Waiting for job to complete</LI>
+</UL>
+<P>This directive must appear inside a <A HREF="#Class"><CODE>Class</CODE>
+</A> or <A HREF="#DefaultClass"><CODE>DefaultClass</CODE></A> directive.</P>
+
+<!-- NEW PAGE -->
 <H2><A NAME="PRINTING_SECURITY">Printing System Security</A></H2>
-<P>CUPS provides support for address, certificate, and password (Basic 
-and Digest) based authentication and access control. Certificate and 
-password authentication provide ways to limit access to individual 
-people or groups. </P>
-<P>Address based access control allows you to limit access to specific 
-systems, networks, or domains. While this does not provide 
-authentication, it does allow you to limit the potential users of your 
-system efficiently. </P>
-<P>CUPS maintains a list of locations that have access control and/or 
-authentication enabled. Locations are specified using the <A HREF="#Location">
-<CODE>Location</CODE></A> directive: </P>
+<P>CUPS provides support for address, certificate, and password (Basic
+ and Digest) based authentication and access control. Certificate and
+ password authentication provide ways to limit access to individual
+ people or groups.</P>
+<P>Address based access control allows you to limit access to specific
+ systems, networks, or domains. While this does not provide
+ authentication, it does allow you to limit the potential users of your
+ system efficiently.</P>
+<P>CUPS maintains a list of locations that have access control and/or
+ authentication enabled. Locations are specified using the <A HREF="#Location">
+<CODE>Location</CODE></A> directive:</P>
 <UL>
 <PRE>
 &lt;Location /resource&gt;
@@ -2522,8 +3977,8 @@ authentication enabled. Locations are specified using the <A HREF="#Location">
 </PRE>
 </UL>
 <P>Locations generally follow the directory structure of the <A HREF="#DocumentRoot">
-<CODE>DocumentRoot</CODE></A> directory, however CUPS does have several 
-virtual locations for administration, classes, jobs, and printers: 
+<CODE>DocumentRoot</CODE></A> directory, however CUPS does have several
+ virtual locations for administration, classes, jobs, and printers:
 <CENTER>
 <TABLE BORDER="1">
 <TR><TH>Location</TH><TH>Description</TH></TR>
@@ -2542,69 +3997,66 @@ name</CODE>.</TD></TR>
 </CENTER>
 </P>
 <H3><A NAME="CERTIFICATES">Authentication Using Certificates</A></H3>
-<P>CUPS supports a local certificate-based authentication scheme that 
-can be used in place of <CODE>Basic</CODE> or <CODE>Digest</CODE>
+<P>CUPS supports a local certificate-based authentication scheme that
+ can be used in place of <CODE>Basic</CODE> or <CODE>Digest</CODE>
  authentication by clients connecting through the <CODE>localhost</CODE>
- interface. Certificate authentication is not supported or allowed from 
-clients on any other interface. </P>
-<P>Certificates are 128-bit random numbers that refer to an internal 
-authentication record in the server. A client connecting via the <CODE>
-localhost</CODE> interface sends a request with an authorization header 
-of: </P>
+ interface. Certificate authentication is not supported or allowed from
+ clients on any other interface.</P>
+<P>Certificates are 128-bit random numbers that refer to an internal
+ authentication record in the server. A client connecting via the <CODE>
+localhost</CODE> interface sends a request with an authorization header
+ of:</P>
 <UL>
 <PRE>
 Authorization: Local 0123456789ABCDEF0123456789ABCDEF
 </PRE>
 </UL>
-<P>The server then looks up the local certificate and authenticates 
-using the username associated with it. </P>
-<P>Certificates are generated by the server automatically and stored in 
-the <VAR>/etc/cups/certs</VAR> directory using the process ID of the 
-CGI program started by the server. Certificate files are only readable 
-by the <A HREF="#User"><CODE>User</CODE></A> and <A HREF="#Group"><CODE>
-Group</CODE></A> defined in the <VAR>cupsd.conf</VAR> file. When the 
-CGI program ends the certificate is removed and invalidated 
-automatically. </P>
-<P>The special file <VAR>/etc/cups/certs/0</VAR> defines the <I>root 
-certificate</I> which can be used by any client running as the 
-super-user or another user that is part of the group defined by the <A HREF="#SystemGroup">
-<CODE>SystemGroup</CODE></A> directive. The root certificate is 
-automatically regenerated every 5 minutes. </P>
-<H3><A NAME="7_5_2">Using Basic Authentication</A></H3>
-<P>Basic authentication uses UNIX users and passwords to authenticate 
-access to resources such as printers and classes, and to limit access 
-to administrative functions. 
+<P>The server then looks up the local certificate and authenticates
+ using the username associated with it.</P>
+<P>Certificates are generated by the server automatically and stored in
+ the<VAR> /etc/cups/certs</VAR> directory using the process ID of the
+ CGI program started by the server. Certificate files are only readable
+ by the <A HREF="#User"><CODE>User</CODE></A> and <A HREF="#Group"><CODE>
+Group</CODE></A> defined in the<VAR> cupsd.conf</VAR> file. When the CGI
+ program ends the certificate is removed and invalidated automatically.</P>
+<P>The special file<VAR> /etc/cups/certs/0</VAR> defines the<I> root
+ certificate</I> which can be used by any client running as the
+ super-user or another user that is part of the group defined by the <A HREF="#SystemGroup">
+<CODE>SystemGroup</CODE></A> directive. The root certificate is
+ automatically regenerated every 5 minutes.</P>
+<H3><A NAME="7_11_2">Using Basic Authentication</A></H3>
+<P>Basic authentication uses UNIX users and passwords to authenticate
+ access to resources such as printers and classes, and to limit access
+ to administrative functions.</P>
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> NOTE:</B>
-<P>Basic authentication sends the username and password Base64  encoded 
-from the client to the server, so it offers no  protection against 
-eavesdropping. This means that a malicious  user can monitor network 
-packets and discover valid users and  passwords that could result in a 
-serious compromise in network  security. Use Basic authentication with 
-extreme care. </P>
+<P>Basic authentication sends the username and password Base64 encoded
+ from the client to the server, so it offers no protection against
+ eavesdropping. This means that a malicious user can monitor network
+ packets and discover valid users and passwords that could result in a
+ serious compromise in network security. Use Basic authentication with
+ extreme care.</P>
 </TD></TR>
 </TABLE>
 </CENTER>
-</P>
-<P>The CUPS implementation of Basic authentication does not allow 
-access through user accounts without a password. If you try to 
-authenticate using an account without a password, your access will be 
-immediately blocked. </P>
-<P>Once a valid username and password is authenticated by CUPS, any 
-additional group membership requirements are checked. 
+<P>The CUPS implementation of Basic authentication does not allow access
+ through user accounts without a password. If you try to authenticate
+ using an account without a password, your access will be immediately
+ blocked.</P>
+<P>Once a valid username and password is authenticated by CUPS, any
+ additional group membership requirements are checked.</P>
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> NOTE:</B>
-<P>The root user is considered by CUPS to be a member of every  group. </P>
+<P>The root user is considered by CUPS to be a member of every group.</P>
 </TD></TR>
 </TABLE>
 </CENTER>
 
 <!-- NEED 1in -->
-</P>
-<P>Use the <CODE>AuthType</CODE> directive to enable Basic 
-authentication: </P>
+<P>Use the <CODE>AuthType</CODE> directive to enable Basic
+ authentication:</P>
 <UL>
 <PRE>
 AuthType Basic
@@ -2612,43 +4064,41 @@ AuthType Basic
 </UL>
 
 <!-- NEED 7in -->
-<H3><A NAME="7_5_3">Using Digest Authentication</A></H3>
-<P>Digest authentication uses users and passwords defined in the <VAR>
-/etc/cups/passwd.md5</VAR> file to authenticate access to resources 
-such as printers and classes, and to limit access to administrative 
-functions. 
+<H3><A NAME="7_11_3">Using Digest Authentication</A></H3>
+<P>Digest authentication uses users and passwords defined in the<VAR>
+ /etc/cups/passwd.md5</VAR> file to authenticate access to resources
+ such as printers and classes, and to limit access to administrative
+ functions.</P>
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> NOTE:</B>
-<P>Unlike Basic authentication, Digest passes the MD5 sum  (basically a 
-complicated checksum) of the username and password  instead of the 
-strings themselves. Also, Digest authentication  does not use the UNIX 
-password file, so if an attacker does  discover the original password 
-it is less likely to result in a  serious security problem so long as 
-you use a different UNIX  password than the corresponding Digest 
-password. </P>
-<P>The current CUPS implementation of Digest authentication  uses the 
-client's hostname or IP address for the &quot;nonce&quot; value.  The nonce value 
-is an additional string added to the username  and password to make 
-guessing the password more difficult. The  server checks that the nonce 
-value matches the client's hostname  or address and rejects the MD5 sum 
-if it doesn't.  Future versions  of CUPS will support Digest &quot;session&quot; 
-authentication which adds  the request data to the MD5 sum, providing 
-even better  authentication and security. </P>
-<P>Digest authentication does not guarantee that an attacker  cannot 
-gain unauthorized access, but it is safer than Basic  authentication 
-and should be used in place of Basic  authentication whenever possible. <B>
-Support for Digest  authentication in web browsers is not yet 
-universally  available.</B></P>
+<P>Unlike Basic authentication, Digest passes the MD5 sum (basically a
+ complicated checksum) of the username and password instead of the
+ strings themselves. Also, Digest authentication does not use the UNIX
+ password file, so if an attacker does discover the original password it
+ is less likely to result in a serious security problem so long as you
+ use a different UNIX password than the corresponding Digest password.</P>
+<P>The current CUPS implementation of Digest authentication uses the
+ client's hostname or IP address for the &quot;nonce&quot; value. The nonce value
+ is an additional string added to the username and password to make
+ guessing the password more difficult. The server checks that the nonce
+ value matches the client's hostname or address and rejects the MD5 sum
+ if it doesn't. Future versions of CUPS will support Digest &quot;session&quot;
+ authentication which adds the request data to the MD5 sum, providing
+ even better authentication and security.</P>
+<P>Digest authentication does not guarantee that an attacker cannot gain
+ unauthorized access, but it is safer than Basic authentication and
+ should be used in place of Basic authentication whenever possible.<B>
+ Support for Digest authentication in web browsers is not yet
+ universally available.</B></P>
 </TD></TR>
 </TABLE>
 </CENTER>
 
 <!-- NEED 2in -->
-</P>
-<P>The <CODE>lppasswd(1)</CODE> command is used to add, change, or 
-remove accounts from the <VAR>passwd.md5</VAR> file. To add a user to 
-the default system group, type: </P>
+<P>The <CODE>lppasswd(1)</CODE> command is used to add, change, or
+ remove accounts from the<VAR> passwd.md5</VAR> file. To add a user to
+ the default system group, type:</P>
 <UL>
 <PRE>
 <B>lppasswd -a user ENTER</B>
@@ -2658,7 +4108,7 @@ Password again: <B>(password) ENTER</B> [password is not echoed]
 </UL>
 
 <!-- NEED 2in -->
-<P>Once added, a user can change his/her password by typing: </P>
+<P>Once added, a user can change his/her password by typing:</P>
 <UL>
 <PRE>
 <B>lppasswd ENTER</B>
@@ -2669,40 +4119,39 @@ Password again: <B>(password) ENTER</B> [password is not echoed]
 </UL>
 
 <!-- NEED 1in -->
-<P>To remove a user from the password file, type: </P>
+<P>To remove a user from the password file, type:</P>
 <UL>
 <PRE>
 <B>lppasswd -x user ENTER</B>
 </PRE>
 </UL>
-<P>Once a valid username and password is authenticated by CUPS, any 
-additional group membership requirements are checked. 
+<P>Once a valid username and password is authenticated by CUPS, any
+ additional group membership requirements are checked.</P>
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> NOTE:</B>
-<P>The root user is considered by CUPS to be a member of every  group. </P>
+<P>The root user is considered by CUPS to be a member of every group.</P>
 </TD></TR>
 </TABLE>
 </CENTER>
-</P>
-<P>Use the <CODE>AuthType</CODE> directive to enable Digest 
-authentication: </P>
+<P>Use the <CODE>AuthType</CODE> directive to enable Digest
+ authentication:</P>
 <UL>
 <PRE>
 AuthType Digest
 </PRE>
 </UL>
-<H3><A NAME="7_5_4">System and Group Authentication</A></H3>
-<P>The <A HREF="#AuthClass"><CODE>AuthClass</CODE></A> directive 
-controls the level of authentication to perform. <CODE>System</CODE>
- and <CODE>Group</CODE> authentication extend the normal user-based 
-authentication to require membership in a UNIX group. For <CODE>System</CODE>
+<H3><A NAME="7_11_4">System and Group Authentication</A></H3>
+<P>The <A HREF="#AuthClass"><CODE>AuthClass</CODE></A> directive
+ controls the level of authentication to perform. <CODE>System</CODE>
+ and <CODE>Group</CODE> authentication extend the normal user-based
+ authentication to require membership in a UNIX group. For <CODE>System</CODE>
  authentication each user must belong to the <CODE>sys</CODE>, <CODE>
-system</CODE>, or <CODE>root</CODE> group; the actual group depends on 
-the operating system. </P>
-<P>For <CODE>Group</CODE> authentication each user must belong to the 
-group named by the <A HREF="#AuthGroupName"><CODE>AuthGroupName</CODE></A>
- directive: </P>
+system</CODE>, or <CODE>root</CODE> group; the actual group depends on
+ the operating system.</P>
+<P>For <CODE>Group</CODE> authentication each user must belong to the
+ group named by the <A HREF="#AuthGroupName"><CODE>AuthGroupName</CODE></A>
+ directive:</P>
 <UL>
 <PRE>
 &lt;Location /path&gt;
@@ -2712,10 +4161,10 @@ AuthGroupName mygroup
 &lt;/Location&gt;
 </PRE>
 </UL>
-<P>The named group must be a valid UNIX user group, usually defined in 
-the <VAR>/etc/group</VAR> or <VAR>/etc/netgroup</VAR> files. 
-Additionally, when using Digest authentication you need to create user 
-accounts with the named group: </P>
+<P>The named group must be a valid UNIX user group, usually defined in
+ the<VAR> /etc/group</VAR> or<VAR> /etc/netgroup</VAR> files.
+ Additionally, when using Digest authentication you need to create user
+ accounts with the named group:</P>
 <UL>
 <PRE>
 <B>lppasswd -g mygroup -a user ENTER</B>
@@ -2726,15 +4175,15 @@ Password again: <B>(password) ENTER</B> [password is not echoed]
 
 <!-- NEW PAGE -->
 <H2><A NAME="PRINTER_ACCOUNTING">Printer Accounting</A></H2>
-<P>ESP Print Pro maintains a log of all accesses, errors, and pages 
-that are printed. The log files are normally stored in the <VAR>
-/var/log/cups</VAR> directory. You can change this by editing the <VAR>
-/etc/cups/cupsd.conf</VAR> configuration file. </P>
-<H3><A NAME="7_6_1">The access_log File</A></H3>
-<P>The <VAR>access_log</VAR> file lists each HTTP resource that is 
-accessed by a web browser or CUPS/IPP client. Each line is in the 
-so-called &quot;Common Log Format&quot; used by many web servers and web 
-reporting tools: </P>
+<P>CUPS maintains a log of all accesses, errors, and pages that are
+ printed. The log files are normally stored in the<VAR> /var/log/cups</VAR>
+ directory. You can change this by editing the<VAR> /etc/cups/cupsd.conf</VAR>
+ configuration file.</P>
+<H3><A NAME="7_12_1">The access_log File</A></H3>
+<P>The<VAR> access_log</VAR> file lists each HTTP resource that is
+ accessed by a web browser or CUPS/IPP client. Each line is in the
+ so-called &quot;Common Log Format&quot; used by many web servers and web
+ reporting tools:</P>
 <UL>
 <PRE>
 host group user date-time \&quot;method resource version\&quot; status bytes
@@ -2743,37 +4192,38 @@ host group user date-time \&quot;method resource version\&quot; status bytes
 127.0.0.1 - mike [20/May/1999:19:20:31 +0000] &quot;POST /admin/ HTTP/1.1&quot; 200 0
 </PRE>
 </UL>
-<P>The <I>host</I> field will normally only be an IP address unless you 
-have enabled the <A HREF="#HostNameLookups"><CODE>HostNameLookups</CODE></A>
- directive in the <VAR>cupsd.conf</VAR> file. </P>
-<P>The <I>group</I> field always contains &quot;-&quot; in CUPS. </P>
-<P>The <I>user</I> field is the authenticated username of the 
-requesting user. If no username and password is supplied for the 
-request then this field contains &quot;-&quot;. </P>
-<P>The <I>date-time</I> field is the date and time of the request in 
-local time and is in the format: </P>
+<P>The<I> host</I> field will normally only be an IP address unless you
+ have enabled the <A HREF="#HostNameLookups"><CODE>HostNameLookups</CODE>
+</A> directive in the<VAR> cupsd.conf</VAR> file.</P>
+<P>The<I> group</I> field always contains &quot;-&quot; in CUPS.</P>
+<P>The<I> user</I> field is the authenticated username of the requesting
+ user. If no username and password is supplied for the request then this
+ field contains &quot;-&quot;.</P>
+<P>The<I> date-time</I> field is the date and time of the request in
+ local time and is in the format:</P>
 <UL>
 <PRE>
 [DD/MON/YYYY:HH:MM:SS +ZZZZ]
 </PRE>
 </UL>
-<P>where <I>ZZZZ</I> is the timezone offset in hours and minutes from 
-Greenwich Mean Time (a.k.a. GMT a.k.a. ZULU.) </P>
-<P>The <I>method</I> field is the HTTP method used (&quot;GET&quot;, &quot;PUT&quot;, 
-&quot;POST&quot;, etc.) </P>
-<P>The <I>resource</I> field is the filename of the requested resource. </P>
-<P>The <I>version</I> field is the HTTP specification version used by 
-the client. For CUPS clients this will always be &quot;HTTP/1.1&quot;. </P>
-<P>The <I>status</I> field contains the HTTP result status of the 
-request. Usually it is &quot;200&quot;, but other HTTP status codes are possible. 
-For example, 401 is the &quot;unauthorized access&quot; status in the example 
-above. </P>
-<P>The <I>bytes</I> field contains the number of bytes in the request. 
-For POST requests the <I>bytes</I> field contains the number of bytes 
-that was received from the client. </P>
-<H3><A NAME="7_6_2">The error_log File</A></H3>
-<P>The <VAR>error_log</VAR> file lists messages from the scheduler 
-(errors, warnings, etc.): </P>
+<P>where<I> ZZZZ</I> is the timezone offset in hours and minutes from
+ coordinated universal time (UTC). UTC may sometimes be referred to as
+ GMT or ZULU on legacy systems.</P>
+<P>The<I> method</I> field is the HTTP method used (&quot;GET&quot;, &quot;PUT&quot;,
+ &quot;POST&quot;, etc.)</P>
+<P>The<I> resource</I> field is the filename of the requested resource.</P>
+<P>The<I> version</I> field is the HTTP specification version used by
+ the client. For CUPS clients this will always be &quot;HTTP/1.1&quot;.</P>
+<P>The<I> status</I> field contains the HTTP result status of the
+ request. Usually it is &quot;200&quot;, but other HTTP status codes are possible.
+ For example, 401 is the &quot;unauthorized access&quot; status in the example
+ above.</P>
+<P>The<I> bytes</I> field contains the number of bytes in the request.
+ For POST requests the<I> bytes</I> field contains the number of bytes
+ that was received from the client.</P>
+<H3><A NAME="7_12_2">The error_log File</A></H3>
+<P>The<VAR> error_log</VAR> file lists messages from the scheduler
+ (errors, warnings, etc.):</P>
 <UL>
 <PRE>
 level date-time message
@@ -2783,110 +4233,115 @@ I [20/May/1999:19:21:02 +0000] Job 2 queued on 'DeskJet' by 'mike'.
 I [20/May/1999:19:22:24 +0000] Job 2 was cancelled by 'mike'.
 </PRE>
 </UL>
-<P>The <I>level</I> field contains the type of message: </P>
+<P>The<I> level</I> field contains the type of message:</P>
 <UL>
-<LI><CODE>E</CODE> - An error occurred. </LI>
-<LI><CODE>W</CODE> - The server was unable to perform some action. </LI>
-<LI><CODE>I</CODE> - Informational message. </LI>
-<LI><CODE>D</CODE> - Debugging message. </LI>
+<LI><CODE>E</CODE> - An error occurred.</LI>
+<LI><CODE>W</CODE> - The server was unable to perform some action.</LI>
+<LI><CODE>I</CODE> - Informational message.</LI>
+<LI><CODE>D</CODE> - Debugging message.</LI>
 </UL>
-<P>The <I>date-time</I> field contains the date and time of when the 
-page started printing. The format of this field is identical to the <I>
-data-time</I> field in the <VAR>access_log</VAR> file. </P>
-<P>The <I>message</I> fields contains a free-form textual message. </P>
-<H3><A NAME="7_6_3">The page_log File</A></H3>
-<P>The <VAR>page_log</VAR> file lists each page that is sent to a 
-printer. Each line contains the following information: </P>
+<P>The<I> date-time</I> field contains the date and time of when the
+ page started printing. The format of this field is identical to the<I>
+ data-time</I> field in the<VAR> access_log</VAR> file.</P>
+<P>The<I> message</I> fields contains a free-form textual message.</P>
+<H3><A NAME="7_12_3">The page_log File</A></H3>
+<P>The<VAR> page_log</VAR> file lists each page that is sent to a
+ printer. Each line contains the following information:</P>
 <UL>
 <PRE>
-printer user job-id date-time page-number num-copies job-billing
+printer user job-id date-time page-number num-copies job-billing hostname
 
-DeskJet root 2 [20/May/1999:19:21:05 +0000] 1 0 acme-123
-</PRE>
-</UL>
-<P>The <I>printer</I> field contains the name of the printer that 
-printed the page. If you send a job to a printer class, this field will 
-contain the name of the printer that was assigned the job. </P>
-<P>The <I>user</I> field contains the name of the user (the IPP <CODE>
-requesting-user-name</CODE> attribute) that submitted this file for 
-printing. </P>
-<P>The <I>job-id</I> field contains the job number of the page being 
-printed. Job numbers are reset to 1 whenever the CUPS server is 
-started, so don't depend on this number being unique! </P>
-<P>The <I>date-time</I> field contains the date and time of when the 
-page started printing. The format of this field is identical to the <I>
-data-time</I> field in the <VAR>access_log</VAR> file. </P>
-<P>The <I>page-number</I> and <I>num-pages</I> fields contain the page 
-number and number of copies being printed of that page. For printer 
-that can not produce copies on their own, the <I>num-pages</I> field 
-will always be 1. </P>
-<P>The <I>job-billing</I> field contains a copy of the <CODE>job-billing</CODE>
+DeskJet root 2 [20/May/1999:19:21:05 +0000] 1 0 acme-123 localhost
+</PRE>
+</UL>
+<P>The<I> printer</I> field contains the name of the printer that
+ printed the page. If you send a job to a printer class, this field will
+ contain the name of the printer that was assigned the job.</P>
+<P>The<I> user</I> field contains the name of the user (the IPP <CODE>
+requesting-user-name</CODE> attribute) that submitted this file for
+ printing.</P>
+<P>The<I> job-id</I> field contains the job number of the page being
+ printed. Job numbers are reset to 1 whenever the CUPS server is
+ started, so don't depend on this number being unique!</P>
+<P>The<I> date-time</I> field contains the date and time of when the
+ page started printing. The format of this field is identical to the<I>
+ data-time</I> field in the<VAR> access_log</VAR> file.</P>
+<P>The<I> page-number</I> and<I> num-pages</I> fields contain the page
+ number and number of copies being printed of that page. For printer
+ that can not produce copies on their own, the<I> num-pages</I> field
+ will always be 1.</P>
+<P>The<I> job-billing</I> field contains a copy of the <CODE>job-billing</CODE>
  attribute provided with the IPP <CODE>create-job</CODE> or <CODE>
-print-job</CODE> requests or &quot;-&quot; if none was provided. 
+print-job</CODE> requests or &quot;-&quot; if none was provided.</P>
+<P>The<I> hostname</I> field contains the name of the host (the IPP <CODE>
+job-originating-host-name</CODE> attribute) that originated the print
+ job.
 <!-- NEW PAGE -->
 </P>
 <H2><A NAME="FILE_TYPING_FILTERING">File Typing and Filtering</A></H2>
-<P>CUPS provides a MIME-based file typing and filtering mechanism to 
-convert files to a printable format for each printer. On startup the 
-CUPS server reads MIME database files from the <VAR>/etc/cups</VAR>
+<P>CUPS provides a MIME-based file typing and filtering mechanism to
+ convert files to a printable format for each printer. On startup the
+ CUPS server reads MIME database files from the<VAR> /etc/cups</VAR>
  directory (or a directory specified by the <A HREF="#ServerRoot"><CODE>
-ServerRoot</CODE></A> directive) to build a file type and conversion 
-database in memory. These database files are plain ASCII text and can 
-be edited with your favorite text editor. </P>
-<P>The <VAR>mime.types</VAR> and <VAR>mime.convs</VAR> files define the 
-standard file types and filters that are available on the system. </P>
-<H3><A NAME="7_7_1">mime.types</A></H3>
-<P>The <VAR>mime.types</VAR> file defines the known file types. Each 
-line of the file starts with the MIME type and may be followed by one 
-or more file type recognition rules. For example, the <CODE>text/html</CODE>
- file type is defined as: </P>
+ServerRoot</CODE></A> directive) to build a file type and conversion
+ database in memory. These database files are plain ASCII text and can
+ be edited with your favorite text editor.</P>
+<P>The<VAR> mime.types</VAR> and<VAR> mime.convs</VAR> files define the
+ standard file types and filters that are available on the system.</P>
+<H3><A NAME="7_13_1">mime.types</A></H3>
+<P>The<VAR> mime.types</VAR> file defines the known file types. Each
+ line of the file starts with the MIME type and may be followed by one
+ or more file type recognition rules. For example, the <CODE>text/html</CODE>
+ file type is defined as:</P>
 <UL>
 <PRE>
 text/html       html htm \
-                printable(0,1024) + \
-                (string(0,&quot;&lt;HTML&gt;&quot;) string(0,&quot;&lt;!DOCTYPE&quot;))
-</PRE>
-</UL>
-<P>The first two rules say that any file with an extension of <VAR>.html</VAR>
- or <VAR>.htm</VAR> is a HTML file. The third rule says that any file 
-whose first 1024 characters are printable text and starts with the 
-strings <CODE>&lt;HTML&gt;</CODE> or <CODE>&lt;!DOCTYPE</CODE> is a HTML file as 
-well. </P>
-<P>The first two rules deal solely with the name of the file being 
-typed. This is useful when the original filename is known, however for 
-print files the server doesn't have a filename to work with. The third 
-rule takes care of this possibility and automatically figures out the 
-file type based upon the contents of the file instead. </P>
-<P>The available tests are: </P>
-<UL>
-<LI><CODE>( expr )</CODE> - Parenthesis for expression grouping </LI>
-<LI><CODE>+</CODE> - Logical AND </LI>
-<LI><CODE>,</CODE> or whitespace - Logical OR </LI>
-<LI><CODE>!</CODE> - Logical NOT </LI>
-<LI><CODE>match(&quot;pattern&quot;)</CODE> - Pattern match on filename </LI>
-<LI><CODE>extension</CODE> - Pattern match on &quot;*.extension&quot; </LI>
-<LI><CODE>ascii(offset,length)</CODE> - True if bytes are valid 
- printable ASCII (CR, NL, TAB, BS, 32-126) </LI>
-<LI><CODE>printable(offset,length)</CODE> - True if bytes are 
- printable 8-bit chars (CR, NL, TAB, BS, 32-126, 160-254) </LI>
-<LI><CODE>string(offset,&quot;string&quot;)</CODE> - True if bytes are  identical 
-to string </LI>
-<LI><CODE>contains(offset,range,&quot;string&quot;)</CODE> - True if the  range 
-of bytes contains the string </LI>
-<LI><CODE>char(offset,value)</CODE> - True if byte is identical </LI>
-<LI><CODE>short(offset,value)</CODE> - True if 16-bit integer  is 
-identical (network or &quot;big-endian&quot; byte order) </LI>
-<LI><CODE>int(offset,value)</CODE> - True if 32-bit integer is 
- identical (network or &quot;big-endian&quot; byte order) </LI>
-<LI><CODE>locale(&quot;string&quot;)</CODE> - True if current locale  matches 
-string </LI>
-</UL>
-<P>All numeric values can be in decimal (123), octal (0123), or 
-hexadecimal (0x123) as desired. 
+       printable(0,1024) + \
+       (string(0,&quot;&lt;HTML&gt;&quot;) string(0,&quot;&lt;!DOCTYPE&quot;))
+</PRE>
+</UL>
+<P>The first two rules say that any file with an extension of<VAR> .html</VAR>
+ or<VAR> .htm</VAR> is a HTML file. The third rule says that any file
+ whose first 1024 characters are printable text and starts with the
+ strings <CODE>&lt;HTML&gt;</CODE> or <CODE>&lt;!DOCTYPE</CODE> is a HTML file as
+ well.</P>
+<P>The first two rules deal solely with the name of the file being
+ typed. This is useful when the original filename is known, however for
+ print files the server doesn't have a filename to work with. The third
+ rule takes care of this possibility and automatically figures out the
+ file type based upon the contents of the file instead.</P>
+<P>The available tests are:</P>
+<UL>
+<LI><CODE>( expr )</CODE> - Parenthesis for expression grouping</LI>
+<LI><CODE>+</CODE> - Logical AND</LI>
+<LI><CODE>,</CODE> or whitespace - Logical OR</LI>
+<LI><CODE>!</CODE> - Logical NOT</LI>
+<LI><CODE>match(&quot;pattern&quot;)</CODE> - Pattern match on filename</LI>
+<LI><CODE>extension</CODE> - Pattern match on &quot;*.extension&quot;</LI>
+<LI><CODE>ascii(offset,length)</CODE> - True if bytes are valid
+ printable ASCII (CR, NL, TAB, BS, 32-126)</LI>
+<LI><CODE>printable(offset,length)</CODE> - True if bytes are printable
+ 8-bit chars (CR, NL, TAB, BS, 32-126, 160-254)</LI>
+<LI><CODE>string(offset,&quot;string&quot;)</CODE> - True if bytes are identical
+ to string</LI>
+<LI><CODE>istring(offset,&quot;string&quot;)</CODE> - True if bytes are identical
+ to string after reducing both strings to lowercase</LI>
+<LI><CODE>contains(offset,range,&quot;string&quot;)</CODE> - True if the range of
+ bytes contains the string</LI>
+<LI><CODE>char(offset,value)</CODE> - True if byte is identical</LI>
+<LI><CODE>short(offset,value)</CODE> - True if 16-bit integer is
+ identical (network or &quot;big-endian&quot; byte order)</LI>
+<LI><CODE>int(offset,value)</CODE> - True if 32-bit integer is identical
+ (network or &quot;big-endian&quot; byte order)</LI>
+<LI><CODE>locale(&quot;string&quot;)</CODE> - True if current locale matches
+ string</LI>
+</UL>
+<P>All numeric values can be in decimal (123), octal (0123), or
+ hexadecimal (0x123) as desired.
 <!-- NEED 2.5in -->
 </P>
-<P>Strings can be in quotes, all by themselves, as a string of 
-hexadecimal values, or some combination: </P>
+<P>Strings can be in quotes, all by themselves, as a string of
+ hexadecimal values, or some combination:</P>
 <UL>
 <PRE>
 &quot;string&quot;
@@ -2896,26 +4351,27 @@ string
 &lt;7374&gt;ring
 </PRE>
 </UL>
-<P>As shown in the <CODE>text/html</CODE> example, rules can continue 
-on multiple lines using the backslash (\) character. A more complex 
-example is the <CODE>image/jpeg</CODE> rules: </P>
+<P>As shown in the <CODE>text/html</CODE> example, rules can continue on
+ multiple lines using the backslash (\) character. A more complex
+ example is the <CODE>image/jpeg</CODE> rules:</P>
 <UL>
 <PRE>
 image/jpeg      jpeg jpg jpe string(0,&lt;FFD8FF&gt;) &amp;&amp;\
-                (char(3,0xe0) char(3,0xe1) char(3,0xe2) char(3,0xe3)\
-                 char(3,0xe4) char(3,0xe5) char(3,0xe6) char(3,0xe7)\
-                 char(3,0xe8) char(3,0xe9) char(3,0xea) char(3,0xeb)\
-                 char(3,0xec) char(3,0xed) char(3,0xee) char(3,0xef))
+       (char(3,0xe0) char(3,0xe1) char(3,0xe2) char(3,0xe3)\
+        char(3,0xe4) char(3,0xe5) char(3,0xe6) char(3,0xe7)\
+        char(3,0xe8) char(3,0xe9) char(3,0xea) char(3,0xeb)\
+        char(3,0xec) char(3,0xed) char(3,0xee) char(3,0xef))
 </PRE>
 </UL>
-<P>This rule states that any file with an extension of <VAR>.jpeg</VAR>
-, <VAR>.jpg</VAR>, or <VAR>.jpe</VAR> is a JPEG file. In addition, any 
-file starting with the hexadecimal string <CODE>&lt;FFD8FF&gt;</CODE> (JPEG 
-Start-Of-Image) followed by a character between and including <CODE>0xe0</CODE>
- and <CODE>0xef</CODE> (JPEG APPn markers) is also a JPEG file. </P>
-<H3><A NAME="7_7_2">mime.convs</A></H3>
-<P>The <VAR>mime.convs</VAR> file defines all of the filter programs 
-that are known to the system. Each line consists of: </P>
+<P>This rule states that any file with an extension of<VAR> .jpeg</VAR>,<VAR>
+ .jpg</VAR>, or<VAR> .jpe</VAR> is a JPEG file. In addition, any file
+ starting with the hexadecimal string <CODE>&lt;FFD8FF&gt;</CODE> (JPEG
+ Start-Of-Image) followed by a character between and including <CODE>
+0xe0</CODE> and <CODE>0xef</CODE> (JPEG APPn markers) is also a JPEG
+ file.</P>
+<H3><A NAME="7_13_2">mime.convs</A></H3>
+<P>The<VAR> mime.convs</VAR> file defines all of the filter programs
+ that are known to the system. Each line consists of:</P>
 <UL>
 <PRE>
 source destination cost program
@@ -2926,107 +4382,109 @@ image/* application/vnd.cups-postscript 50 imagetops
 image/* application/vnd.cups-raster 50 imagetoraster
 </PRE>
 </UL>
-<P>The <I>source</I> field is a MIME type, optionally using a wildcard 
-for the super-type or sub-type (e.g. &quot;text/plain&quot;, &quot;image/*&quot;, 
-&quot;*/postscript&quot;). </P>
-<P>The <I>destination</I> field is a MIME type defined in the <VAR>
-mime.types</VAR> file. </P>
-<P>The <I>cost</I> field defines a relative cost for the filtering 
-operation from 1 to 100. The cost is used to choose between two 
-different sets of filters when converting a file. For example, to 
-convert from <CODE>image/jpeg</CODE> to <CODE>
+<P>The<I> source</I> field is a MIME type, optionally using a wildcard
+ for the super-type or sub-type (e.g. &quot;text/plain&quot;, &quot;image/*&quot;,
+ &quot;*/postscript&quot;).</P>
+<P>The<I> destination</I> field is a MIME type defined in the<VAR>
+ mime.types</VAR> file.</P>
+<P>The<I> cost</I> field defines a relative cost for the filtering
+ operation from 1 to 100. The cost is used to choose between two
+ different sets of filters when converting a file. For example, to
+ convert from <CODE>image/jpeg</CODE> to <CODE>
 application/vnd.cups-raster</CODE>, you could use the <CODE>imagetops</CODE>
  and <CODE>pstoraster</CODE> filters for a total cost of 100, or the <CODE>
-imagetoraster</CODE> filter for a total cost of 50. </P>
-<P>The <I>program</I> field defines the filter program to run; the 
-special program &quot;-&quot; can be used to make two file types equivalent. The 
-program must accept the standard filter arguments and environment 
-variables described in the CUPS Interface Design Description and CUPS 
-Software Programmers Manual: </P>
+imagetoraster</CODE> filter for a total cost of 50.</P>
+<P>The<I> program</I> field defines the filter program to run; the
+ special program &quot;-&quot; can be used to make two file types equivalent. The
+ program must accept the standard filter arguments and environment
+ variables described in the CUPS Interface Design Description and CUPS
+ Software Programmers Manual:</P>
 <UL>
 <PRE>
 program job user title options [filename]
 </PRE>
 </UL>
-<P>If specified, the <I>filename</I> argument defines a file to read 
-when filtering, otherwise the filter must read from the standard input. 
-All filtered output must go to the standard output. 
+<P>If specified, the<I> filename</I> argument defines a file to read
+ when filtering, otherwise the filter must read from the standard input.
+ All filtered output must go to the standard output.
 <!-- NEED 4in -->
 </P>
-<H3><A NAME="7_7_3">Adding Filetypes and Filters</A></H3>
-<P>Adding a new file type or filter is fairly straight-forward. Rather 
-than adding the new type and filter to the <VAR>mime.types</VAR> and <VAR>
-mime.convs</VAR> files which are overwritten when you upgrade to a new 
-version of CUPS, you simple need to create new files with <VAR>.types</VAR>
- and <VAR>.convs</VAR> extensions in the <VAR>/etc/cups</VAR>
directory. We recommend that you use the product or format name, e.g.: </P>
+<H3><A NAME="7_13_3">Adding Filetypes and Filters</A></H3>
+<P>Adding a new file type or filter is fairly straight-forward. Rather
+ than adding the new type and filter to the<VAR> mime.types</VAR> and<VAR>
+ mime.convs</VAR> files which are overwritten when you upgrade to a new
+ version of CUPS, you simple need to create new files with<VAR> .types</VAR>
+ and<VAR> .convs</VAR> extensions in the<VAR> /etc/cups</VAR> directory.
We recommend that you use the product or format name, e.g.:</P>
 <UL>
 <PRE>
 myproduct.types
 myproduct.convs
 </PRE>
 </UL>
-<P>If you are providing a filter for a common file format or printer, 
-add the company or author name: </P>
+<P>If you are providing a filter for a common file format or printer,
+ add the company or author name:</P>
 <UL>
 <PRE>
 acme-msword.types
-acme.msword.convs
+acme-msword.convs
 </PRE>
 </UL>
-<P>This will help to prevent name collisions if you install many 
-different file types and filters. </P>
-<P>Once you choose the names for these files, create them using your 
-favorite text editor as described earlier in this chapter.  Once you 
-have created the files, restart the <CODE>cupsd</CODE> process as 
-described earlier in <A HREF="#RESTARTING">&quot;Restarting the CUPS Server&quot;</A>
-. </P>
-<H3><A NAME="7_7_4">Printer Drivers and PPD Files</A></H3>
-<P>Most CUPS printer drivers utilize one or more printer-specific 
-filters and a PPD file for each printer model. Printer driver filters 
-are registered via the PPD file using <CODE>cupsFilter</CODE>
- attributes: </P>
+<P>This will help to prevent name collisions if you install many
+ different file types and filters.</P>
+<P>Once you choose the names for these files, create them using your
+ favorite text editor as described earlier in this chapter. Once you
+ have created the files, restart the <CODE>cupsd</CODE> process as
+ described earlier in <A HREF="#RESTARTING">&quot;Restarting the CUPS Server&quot;</A>
+.</P>
+<H3><A NAME="7_13_4">Printer Drivers and PPD Files</A></H3>
+<P>Most CUPS printer drivers utilize one or more printer-specific
+ filters and a PPD file for each printer model. Printer driver filters
+ are registered via the PPD file using <CODE>cupsFilter</CODE>
+ attributes:</P>
 <UL>
 <PRE>
 *cupsFilter: &quot;application/vnd.cups-raster 0 rastertohp&quot;
 </PRE>
 </UL>
-<P>The filter is specified using the source file type only; the 
-destination file type is assumed to be <CODE>printer/name</CODE> - 
-suitable for sending to the printer. </P>
-<H3><A NAME="7_7_5">Writing Your Own Filter or Printer Driver</A></H3>
-<P>CUPS supports an unlimited number of file formats and filters, and 
-can handle any printer. If you'd like to write a filter or printer 
-driver for your favorite file format or printer, consult the CUPS 
-Software Programmers Manual for step-by-step instructions. </P>
-<H1 ALIGN="RIGHT"><A NAME="PRINTING_OTHER">7 - Printing with Other 
-Systems</A></H1>
-<P>This chapter describes how to print from client systems that use the 
-LPD, Mac OS, or Windows printing protocols. </P>
+<P>The filter is specified using the source file type only; the
+ destination file type is assumed to be <CODE>printer/name</CODE> -
+ suitable for sending to the printer.</P>
+<H3><A NAME="7_13_5">Writing Your Own Filter or Printer Driver</A></H3>
+<P>CUPS supports an unlimited number of file formats and filters, and
+ can handle any printer. If you'd like to write a filter or printer
+ driver for your favorite file format or printer, consult the CUPS
+ Software Programmers Manual for step-by-step instructions.</P>
+<H1 ALIGN="RIGHT"><A NAME="PRINTING_OTHER">7 - Printing with Other
+ Systems</A></H1>
+<P>This chapter describes how to print from client systems that use the
+ LPD, Mac OS, or Windows printing protocols.</P>
 <H2><A NAME="8_1">The Basics</A></H2>
-<P>CUPS is based on the IPP protocol, so any system that supports IPP 
-can send jobs to and receive jobs from CUPS automatically. However, not 
-all systems support IPP yet. This chapter will show you how to connect 
-these systems to your CUPS server, either to accept jobs from your 
-server for printing, or to send jobs to your server. </P>
+<P>CUPS is based on the IPP protocol, so any system that supports IPP
+ can send jobs to and receive jobs from CUPS automatically. However, not
+ all systems support IPP yet. This chapter will show you how to connect
+ these systems to your CUPS server, either to accept jobs from your
+ server for printing, or to send jobs to your server.</P>
 <H2><A NAME="8_2">Printing from LPD Clients</A></H2>
-<P>CUPS supports limited functionality for LPD-based clients. With LPD 
-you can print files to specific printers, list the queue status, and so 
-forth. However, the automatic client configuration and printer options 
-are not supported by the LPD protocol, so you must manually configure 
-each client for the printers it needs to access. </P>
-<P>The <CODE>cups-lpd(8)</CODE> program provides support for LPD 
-clients. To enable LPD support on your server, edit the <VAR>
-/etc/inetd.conf</VAR> file and add a line reading: </P>
+<P>CUPS supports limited functionality for LPD-based clients. With LPD
+ you can print files to specific printers, list the queue status, and so
+ forth. However, the automatic client configuration and printer options
+ are not supported by the LPD protocol, so you must manually configure
+ each client for the printers it needs to access.</P>
+<P>The <CODE>cups-lpd(8)</CODE> program provides support for LPD clients
+ and can be used from either the <CODE>inetd(8)</CODE> or <CODE>
+xinetd(8)</CODE> programs. Add the following line to the<VAR>
+ /etc/inetd.conf</VAR> file to enable LPD support on your server through
+ the <CODE>inetd</CODE> program:</P>
 <UL>
 <PRE>
 printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd
 </PRE>
 </UL>
-<P>The path to the <CODE>cups-lpd</CODE> may vary depending on your 
-installation. </P>
-<P>Once you have added this line, send the <CODE>inetd(8)</CODE>
- process a <CODE>HUP</CODE> signal or reboot the system: </P>
+<P>The path to the <CODE>cups-lpd</CODE> may vary depending on your
+ installation.</P>
+<P>Once you have added this line, send the <CODE>inetd</CODE> process a <CODE>
+HUP</CODE> signal or reboot the system:</P>
 <UL>
 <PRE>
 <B>killall -HUP inetd ENTER</B> [IRIX and some versions of Linux]
@@ -3034,40 +4492,97 @@ installation. </P>
 <B>reboot ENTER [For all systems if the HUP signal fails]</B>
 </PRE>
 </UL>
-<H2><A NAME="8_3">Printing to LPD Servers</A></H2>
-<P>CUPS provides the <CODE>lpd</CODE> backend for printing to LPD-based 
-servers and printers. Use a device URI of <CODE>lpd://server/name</CODE>
- to print to a printer on an LPD server, where <CODE>server</CODE> is 
-the hostname or IP address of the server and <CODE>name</CODE> is the 
-queue name. </P>
-<P>Microsoft Windows NT provides an LPD service under the name &quot;TCP/IP 
-Printing Services&quot;. To enable LPD printing on NT, open the &quot;Services&quot; 
-control panel, select the &quot;TCP/IP Printing Services&quot; service, and click 
-on the &quot;Start&quot; button. Any shared printer will then be available via 
-the LPD protocol. </P>
-<H2><A NAME="8_4">Printing from Mac OS Clients</A></H2>
-<P>CUPS does not provide Mac OS support directly. However, there are 
-several free and commercial software packages that do. </P>
-<H3><A NAME="8_4_1">Columbia Appletalk Package (CAP)</A></H3>
-<P>Because the CAP LaserWriter server (<CODE>lwsrv(8)</CODE>) does not 
-support specification of PPD files, we do not recommend that you use 
-CAP with CUPS. However, you can run the <CODE>lpsrv</CODE> program for 
-limited printing with the command: </P>
+<P>If you are using the <CODE>xinetd</CODE> program, create a file named<VAR>
+ /etc/xinetd.d/printer</VAR> containing the following lines:</P>
+<UL>
+<PRE>
+service printer
+{
+socket_type = stream
+protocol = tcp
+wait = no
+user = lp
+server = /usr/lib/cups/daemon/cups-lpd
+}
+</PRE>
+</UL>
+<P>The <CODE>xinetd</CODE> program automatically reads the new
+ configuration file and enables LPD printing support.
+<CENTER>
+<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
+<TR><TD><B>Warning:</B>
+<P><CODE>cups-lpd</CODE> currently does not perform any access control
+ based on the settings in<VAR> cupsd.conf</VAR> or in the<VAR>
+ hosts.allow</VAR> or<VAR> hosts.deny</VAR> files used by TCP wrappers.
+ Therefore, running <CODE>cups-lpd</CODE> on your server will allow any
+ computer on your network (and perhaps the entire Internet) to print to
+ your server.</P>
+<P>While <CODE>xinetd</CODE> has built-in access control support, you
+ should use the TCP wrappers package with <CODE>inetd</CODE> to limit
+ access to only those computers that should be able to print through
+ your server.</P>
+</TD></TR>
+</TABLE>
+</CENTER>
+</P>
+<H2><A NAME="LPD">Printing to LPD Servers</A></H2>
+<P>CUPS provides the <CODE>lpd</CODE> backend for printing to LPD-based
+ servers and printers. Use a device URI of <CODE>lpd://server/name</CODE>
+ to print to a printer on an LPD server, where <CODE>server</CODE> is
+ the hostname or IP address of the server and <CODE>name</CODE> is the
+ queue name. Additional options can be specified after the remote queue
+ name to control how the LPD requests are sent - consult <A HREF="#COMMON_NETWORK">
+Appendix B - Common Network Settings</A> for a complete description.</P>
+<P>Microsoft Windows NT provides an LPD service under the name &quot;TCP/IP
+ Printing Services&quot;. To enable LPD printing on NT, open the &quot;Services&quot;
+ control panel, select the &quot;TCP/IP Printing Services&quot; service, and click
+ on the &quot;Start&quot; button. Any shared printer will then be available via
+ the LPD protocol.
+<!-- NEED 4in -->
+</P>
+<H2><A NAME="8_4">Printing from Mac OS 10.2 and Later Clients</A></H2>
+<P>Since Mac OS 10.2 uses CUPS as its printing system, all CUPS printers
+ will be available to the clients automatically.
+<CENTER>
+<TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
+<TR><TD><B>Note:</B>
+<P>Certain legacy MacOS X applications, including most Adobe
+ applications, produce PICT files with embedded PostScript. Since the
+ filter needed to convert these files to pure PostScript is only
+ available on MacOS X, you need to either use a MacOS X print server or
+ replace the MacOS X IPP backend with the standard CUPS IPP backend. The
+ CUPS IPP backend will detect and locally convert these print files to
+ PostScript prior to sending the job to the server.</P>
+</TD></TR>
+</TABLE>
+</CENTER>
+
+<!-- NEED 4in -->
+</P>
+<H2><A NAME="8_5">Printing from Mac OS 10.1 and Earlier Clients</A></H2>
+<P>CUPS does not provide support for Mac OS 10.1 and earlier directly.
+ However, there are several free and commercial software packages that
+ do.</P>
+<H3><A NAME="8_5_1">Columbia Appletalk Package (CAP)</A></H3>
+<P>Because the CAP LaserWriter server (<CODE>lwsrv(8)</CODE>) does not
+ support specification of PPD files, we do not recommend that you use
+ CAP with CUPS. However, you can run the <CODE>lpsrv</CODE> program for
+ limited printing with the command:</P>
 <UL>
 <PRE>
 lwsrv -n &quot;<I>Name</I>&quot; -p <I>printer</I> -a /usr/lib/adicts -f /usr/lib/LW+Fonts
 </PRE>
 </UL>
-<P>where <CODE>Name</CODE> is the name you want to use when sharing the 
-printer, and <CODE>printer</CODE> is the name of the CUPS print queue. 
+<P>where <CODE>Name</CODE> is the name you want to use when sharing the
+ printer, and <CODE>printer</CODE> is the name of the CUPS print queue.
 <!-- NEED 3in -->
 </P>
-<H3><A NAME="8_4_2">XINET KA/Spool</A></H3>
-<P>To use your system as a print server for Mac OS clients, configure 
-each printer using a <CODE>papserver(8)</CODE> in the <VAR>
-/usr/adm/appletalk/services</VAR> file, specifying the corresponding 
-PPD file in the <VAR>/etc/cups/ppd</VAR> directory for each printer. 
- For a printer named <CODE>MyPrinter</CODE> the entry would look like: </P>
+<H3><A NAME="8_5_2">XINET KA/Spool</A></H3>
+<P>To use your system as a print server for Mac OS clients, configure
+ each printer using a <CODE>papserver(8)</CODE> in the<VAR>
+ /usr/adm/appletalk/services</VAR> file, specifying the corresponding
+ PPD file in the<VAR> /etc/cups/ppd</VAR> directory for each printer.
+ For a printer named <CODE>MyPrinter</CODE> the entry would look like:</P>
 <UL>
 <PRE>
 /usr/etc/appletalk/papserver -I -L -P /etc/cups/ppd/MyPrinter.ppd \
@@ -3077,36 +4592,47 @@ PPD file in the <VAR>/etc/cups/ppd</VAR> directory for each printer.
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> NOTE:</B>
-<P>Enter the text above on a single line without the backslash (\) 
- character. </P>
+<P>Enter the text above on a single line without the backslash (\)
+ character.</P>
 </TD></TR>
 </TABLE>
 </CENTER>
-<H3><A NAME="8_4_3">NetATalk</A></H3>
-<P>To use your system as a print server for Mac OS clients, configure 
-each printer in the <VAR>papd.conf</VAR> file, specifying the 
-corresponding PPD file in the <VAR>/etc/cups/ppd</VAR> directory for 
-each printer. For a printer named <CODE>MyPrinter</CODE> the entry 
-would look like: </P>
+
+<!-- NEED 3in -->
+<H3><A NAME="8_5_3">Netatalk</A></H3>
+<P>To use your system as a print server for Mac OS clients, configure
+ each printer in the<VAR> papd.conf</VAR> file, specifying the
+ corresponding PPD file in the<VAR> /etc/cups/ppd</VAR> directory for
+ each printer. For a printer named <CODE>MyPrinter</CODE> the entry
+ would look like:</P>
 <UL>
 <PRE>
-Printer Description:MyPrinter@MyServer:\
-        :pr=|/usr/bin/lp -d MyPrinter:\
-        :op=daemon:\
-        :pd=/etc/cups/ppd/MyPrinter.ppd:
+Printer Name@Zone Name:\
+:pr=|/usr/bin/lp -d MyPrinter:\
+:op=daemon:\
+:pd=/etc/cups/ppd/MyPrinter.ppd:
 </PRE>
 </UL>
 
 <!-- NEED 2in -->
-<H2><A NAME="8_5">Printing to Mac OS Servers</A></H2>
-<P>CUPS currently does not provide a backend to communicate with a Mac 
-OS server. However, you can write and install a short shell script in 
-the <VAR>/usr/lib/cups/backend</VAR> directory that sends a print file 
-using the appropriate command. The following is a short script that 
-will run the <CODE>papif</CODE> command provided with CAP. </P>
-<P>After copying this script to <VAR>/usr/lib/cups/backend/cap</VAR>, 
-specify a device URI of <CODE>cap://server/printer</CODE> to use this 
-backend with a print queue. 
+<H2><A NAME="8_6">Printing to Mac OS 10.2 and Later Servers</A></H2>
+<P>Since MacOS 10.2 and later use CUPS, all you need to do is enable
+ printer sharing to allow CUPS clients to print to a Mac OS server. You
+ will need to download and install ESP Ghostscript on your server to
+ provide PostScript printing support for non-PostScript printers,
+ however.
+<!-- NEED 2in -->
+</P>
+<H2><A NAME="8_7">Printing to Mac OS 10.1 and Earlier Servers</A></H2>
+<P>CUPS currently does not provide a backend to communicate with a Mac
+ OS 10.1 and earlier server. However, you can write and install a short
+ shell script in the<VAR> /usr/lib/cups/backend</VAR> directory that
+ sends a print file using the appropriate command. The following is a
+ short script that will run the <CODE>papif</CODE> command provided with
+ CAP.</P>
+<P>After copying this script to<VAR> /usr/lib/cups/backend/cap</VAR>,
+ specify a device URI of <CODE>cap://server/printer</CODE> to use this
+ backend with a print queue.
 <!-- NEED 8in -->
 </P>
 <UL>
@@ -3120,8 +4646,8 @@ backend with a print queue.
 # No arguments means show available devices...
 
 if test ${#argv} = 0; then
-       echo &quot;network cap \&quot;Unknown\&quot; \&quot;Mac OS Printer via CAP\&quot;&quot;
-       exit 0
+echo &quot;network cap \&quot;Unknown\&quot; \&quot;Mac OS Printer via CAP\&quot;&quot;
+exit 0
 fi
 
 # Collect arguments...
@@ -3130,20 +4656,20 @@ user=$2
 copies=$4
 
 if test ${#argv} = 5; then
-       # Get print file from stdin; copies have already been handled...
-       file=/var/tmp/$$.prn
-       copies=1
-       cat &gt; $file
+# Get print file from stdin; copies have already been handled...
+file=/var/tmp/$$.prn
+copies=1
+cat &gt; $file
 else
-       # Print file is on command-line...
-       file=$6
+# Print file is on command-line...
+file=$6
 fi
 
 # Create a dummy cap.printers file for this printer based
 # upon a device URI of &quot;cap://server/printer&quot;...
 
 echo $PRINTER/$DEVICE_URI | \
-       awk -F/ '{print $1 &quot;=&quot; $5 &quot;:LaserWriter@&quot; $4}' &gt; /var/tmp/$$.cap
+awk -F/ '{print $1 &quot;=&quot; $5 &quot;:LaserWriter@&quot; $4}' &gt; /var/tmp/$$.cap
 
 CAPPRINTERS=/var/tmp/$$.cap; export CAPPRINTERS
 
@@ -3151,14 +4677,14 @@ CAPPRINTERS=/var/tmp/$$.cap; export CAPPRINTERS
 # have properly initialized the cap.printers file...
 
 while [ $copies -gt 0 ]; do
-       papif -n $user &lt; $file
+papif -n $user &lt; $file
 
-        copies=`expr $copies - 1`
+copies=`expr $copies - 1`
 done
 
 # Remove any temporary files...
 if test ${#argv} = 5; then
-       /bin/rm -f $file
+/bin/rm -f $file
 fi
 
 /bin/rm -f /var/tmp/$$.cap
@@ -3168,47 +4694,131 @@ exit 0
 </UL>
 
 <!-- NEED 2in -->
-<H2><A NAME="8_6">Printing from Windows Clients</A></H2>
-<P>While CUPS does not provide Windows support directly, the free SAMBA 
-software package does. SAMBA version 2.0.6 is the first release of 
-SAMBA that supports CUPS. You can download SAMBA from: </P>
+<H2><A NAME="8_8">Printing from Windows Clients</A></H2>
+<P>While CUPS does not provide Windows support directly, the free SAMBA
+ software package does. SAMBA version 2.0.6 is the first release of
+ SAMBA that supports CUPS. You can download SAMBA from:</P>
 <UL>
 <PRE>
 <A HREF="http://www.samba.org">http://www.samba.org</A>
 </PRE>
 </UL>
-<P>To configure SAMBA for CUPS, edit the <VAR>smb.conf</VAR> file and 
-replace the existing printing commands and options with the line: </P>
+<P>To configure SAMBA for CUPS, edit the<VAR> smb.conf</VAR> file and
+ replace the existing printing commands and options with the line:</P>
 <UL>
 <PRE>
 printing = cups
+printcap name = cups
+</PRE>
+</UL>
+<P>That's all there is to it! Remote users will now be able to browse
+ and print to printers on your system.</P>
+<H3><A NAME="8_8_1">Exporting Printer Drivers</A></H3>
+<P>You can optionally export printer drivers from your CUPS server using
+ the <CODE>cupsaddsmb</CODE> command and the SAMBA 2.2.0 or higher
+ software.</P>
+<P>Before you can export the printers you must download the CUPS drivers
+ for Windows from the CUPS site (<A HREF="http://www.cups.org/">
+http://www.cups.org/</A>) or the current Adobe PostScript printer
+ drivers from the Adobe web site (<A HREF="http://www.adobe.com/">
+http://www.adobe.com/</A>). If you download the Adobe drivers, use the
+ free <CODE>unzip</CODE> software to extract the files from the
+ self-extracting ZIP file containing the drivers; you will need the
+ following files:</P>
+<UL>
+<PRE>
+ADFONTS.MFM
+ADOBEPS4.DRV
+ADOBEPS4.HLP
+ADOBEPS5.DLL
+ADOBEPSU.DLL
+ADOBEPSU.HLP
+DEFPRTR2.PPD
+ICONLIB.DLL
+PSMON.DLL
+</PRE>
+</UL>
+<P>Copy these files to the<VAR> /usr/share/cups/drivers</VAR> directory
+ - you may need to rename some of the files so the filenames are all
+ UPPERCASE.</P>
+<P>Next, configure SAMBA (via the<VAR> smb.conf</VAR> file) to support
+ printing through CUPS and provide a printer driver download share, as
+ follows:</P>
+<UL>
+<PRE>
+[global]
+load printers = yes
+printing = cups
+printcap name = cups
+
+[printers]
+comment = All Printers
+path = /var/spool/samba
+browseable = no
+public = yes
+guest ok = yes
+writable = no
+printable = yes
+printer admin = root
+
+[print$]
+comment = Printer Drivers
+path = /etc/samba/drivers
+browseable = yes
+guest ok = no
+read only = yes
+write list = root
+</PRE>
+</UL>
+<P>This configuration assumes a FHS-compliant installation of SAMBA;
+ adjust the [printers] and [print$] share paths accordingly on your
+ system as needed. That is, the directory for your printer drivers can
+ be anywhere on the system; just make sure it is writable by the users
+ specified by the <CODE>write list</CODE> directive plus readable and
+ executable by all users. Also, make sure that you have SAMBA passwords
+ defined for each user in the <CODE>write list</CODE> using SAMBA's <CODE>
+smbpasswd(1)</CODE> command. Otherwise you will not be able to
+ authenticate.</P>
+<P>Finally, run the <CODE>cupsaddsmb</CODE> command to export the
+ printer drivers for one or more queues:</P>
+<UL>
+<PRE>
+<B>cupsaddsmb -U root printer1 ... printerN <I>ENTER</I></B>
+</PRE>
+</UL>
+<P>Running <CODE>cupsaddsmb</CODE> with the <CODE>-a</CODE> option will
+ export all printers:</P>
+<UL>
+<PRE>
+<B>cupsaddsmb -U root -a <I>ENTER</I></B>
 </PRE>
 </UL>
-<P>That's all there is to it!  Remote users will now be able to browse 
-and print to printers on your system. </P>
-<H2><A NAME="8_7">Printing to Windows Servers</A></H2>
-<P>CUPS can print to Windows servers in one of two ways. The first way 
-uses the LPD protocol on the CUPS system and the &quot;TCP/IP Printing 
-Services&quot; on the Windows system. You can find out more about this 
-configuration in the <A HREF="#LPD">LPD</A> section earlier in this 
-chapter. </P>
-<P>The second way is through the Microsoft Server Message Block (&quot;SMB&quot;) 
-protocol. Support for this protocol is provided with the free SAMBA 
-software package. You can download SAMBA from: </P>
+<P>Notice in the above examples that the user <CODE>root</CODE> was used
+ which was defined in the <CODE>write list</CODE> of the<VAR> smb.conf</VAR>
+ file.</P>
+<H2><A NAME="8_9">Printing to Windows Servers</A></H2>
+<P>CUPS can print to Windows servers in one of two ways. The first way
+ uses the LPD protocol on the CUPS system and the &quot;TCP/IP Printing
+ Services&quot; on the Windows system. You can find out more about this
+ configuration in the <A HREF="#LPD">LPD</A> section earlier in this
+ chapter.</P>
+<P>The second way is through the Microsoft Server Message Block (&quot;SMB&quot;)
+ protocol. Support for this protocol is provided with the free SAMBA
+ software package. You can download SAMBA from:</P>
 <UL>
 <PRE>
 <A HREF="http://www.samba.org">http://www.samba.org</A>
 </PRE>
 </UL>
-<P>To configure CUPS for SAMBA, run the following command: </P>
+<P>To configure CUPS for SAMBA, run the following command:</P>
 <UL>
 <PRE>
 <B>ln -s `which smbspool` /usr/lib/cups/backend/smb ENTER</B>
 </PRE>
 </UL>
-<P>The <CODE>smbspool(1)</CODE> program is provided with SAMBA starting 
-with SAMBA 2.0.6. Once you have made the link you can configure your 
-printers with one of the following device URIs: </P>
+<P>The <CODE>smbspool(1)</CODE> program is provided with SAMBA starting
+ with SAMBA 2.0.6. Once you have made the link you can configure your
+ printers with one of the following device URIs:</P>
 <UL>
 <PRE>
 smb://workgroup/server/sharename
@@ -3217,96 +4827,125 @@ smb://user:pass@workgroup/server/sharename
 smb://user:pass@server/sharename
 </PRE>
 </UL>
-<P>The <CODE>workgroup</CODE> name need only be specified if your 
-system is using a different workgroup. The <CODE>user:pass</CODE>
- strings are required when printing to Windows NT servers or to shares 
-with passwords enabled under Windows 95 and 98. </P>
+<P>The <CODE>workgroup</CODE> name need only be specified if your system
+ is using a different workgroup. The <CODE>user:pass</CODE> strings are
+ required when printing to Windows NT servers or to shares with
+ passwords enabled under Windows 95 and 98.</P>
 <H1 ALIGN="RIGHT"><A NAME="LICENSE">A - Software License Agreement</A></H1>
-<H2 ALIGN="CENTER"><A NAME="9_1">Common UNIX Printing System License 
-Agreement</A></H2>
-<P ALIGN="CENTER">Copyright 1997-2001 by Easy Software Products
+<H2 ALIGN="CENTER"><A NAME="9_1">Common UNIX Printing System License
+ Agreement</A></H2>
+<P ALIGN="CENTER">Copyright 1997-2005 by Easy Software Products
 <BR> 44141 AIRPORT VIEW DR STE 204
-<BR> HOLLYWOOD, MARYLAND 20636-3111 USA
+<BR> HOLLYWOOD, MARYLAND 20636 USA
 <BR>
 <BR> Voice: +1.301.373.9600
 <BR> Email: <A HREF="mailto:cups-info@cups.org">cups-info@cups.org</A>
 <BR> WWW: <A HREF="http://www.cups.org">http://www.cups.org</A></P>
 <H3><A NAME="9_1_1">Introduction</A></H3>
-<P>The Common UNIX Printing System<SUP>TM</SUP>, (&quot;CUPS<SUP>TM</SUP>&quot;), 
-is provided under the GNU General Public License (&quot;GPL&quot;) and GNU 
-Library General Public License (&quot;LGPL&quot;), Version 2. A copy of these 
-licenses follow this introduction. </P>
-<P>The GNU LGPL applies to the CUPS API library, located in the &quot;cups&quot; 
-subdirectory of the CUPS source distribution and in the 
-&quot;/usr/include/cups&quot; directory and &quot;libcups.a&quot;, &quot;libcups.sl&quot;, or 
-&quot;libcups.so&quot; files in the binary distributions. </P>
-<P>The GNU GPL applies to the remainder of the CUPS distribution, 
-including the &quot;pstoraster&quot; filter which is based upon GNU Ghostscript 
-5.50 and the &quot;pdftops&quot; filter which is based upon Xpdf 0.90. </P>
-<P>For those not familiar with the GNU GPL, the license basically 
-allows you to: </P>
-<UL>
-<LI>Use the CUPS software at no charge. </LI>
-<LI>Distribute verbatim copies of the software in source or  binary 
-form. </LI>
-<LI>Sell verbatim copies of the software for a media fee, or  sell 
-support for the software. </LI>
-<LI>Distribute or sell printer drivers and filters that use  CUPS so 
-long as source code is made available under the GPL. </LI>
-</UL>
-<P>What this license <B>does not</B> allow you to do is make changes or 
-add features to CUPS and then sell a binary distribution without source 
-code. You must provide source for any new drivers, changes, or 
-additions to the software, and all code must be provided under the GPL 
-or LGPL as appropriate. </P>
-<P>The GNU LGPL relaxes the &quot;link-to&quot; restriction, allowing you to 
-develop applications that use the CUPS API library under other licenses 
-and/or conditions as appropriate for your application. </P>
-<H3><A NAME="9_1_2">Trademarks</A></H3>
-<P>Easy Software Products has trademarked the Common UNIX Printing 
-System, CUPS, and CUPS logo. These names and logos may be used freely 
-in any direct port or binary distribution of CUPS. To use them in 
-derivative products, please contract Easy Software Products for written 
-permission. Our intention is to protect the value of these trademarks 
-and ensure that any derivative product meets the same high-quality 
-standards as the original. </P>
-<H3><A NAME="9_1_3">Binary Distribution Rights</A></H3>
-<P>Easy Software Products also sells rights to the CUPS source code 
-under a binary distribution license for vendors that are unable to 
-release source code for their drivers, additions, and modifications to 
-CUPS under the GNU GPL and LGPL. For information please contact us at 
-the address shown above. </P>
-<P>The Common UNIX Printing System provides a &quot;pstoraster&quot; filter that 
-utilizes the GNU GhostScript 5.50 core to convert PostScript files into 
-a stream of raster images. For binary distribution licensing of this 
-software, please contact: <BLOCKQUOTE> Miles Jones
-<BR> Director of Marketing
-<BR> Artifex Software Inc.
-<BR> 454 Las Gallinas Ave., Suite 108
-<BR> San Rafael, CA 94903 USA
-<BR> Voice: +1.415.492.9861
-<BR> Fax: +1.415.492.9862
-<BR> EMail: <A HREF="mailto:info@arsoft.com">info@arsoft.com</A></BLOCKQUOTE>
-</P>
-<P>The &quot;pdftops&quot; filter is based on the Xpdf 0.90 software. For binary 
-distribution licensing of this software, please contact: <BLOCKQUOTE>
- Derek B. Noonburg
+<P>The Common UNIX Printing System<SUP>TM</SUP>, (&quot;CUPS<SUP>TM</SUP>&quot;),
+ is provided under the GNU General Public License (&quot;GPL&quot;) and GNU
+ Library General Public License (&quot;LGPL&quot;), Version 2, with exceptions for
+ Apple operating systems and the OpenSSL toolkit. A copy of the
+ exceptions and licenses follow this introduction.</P>
+<P>The GNU LGPL applies to the CUPS API library, located in the &quot;cups&quot;
+ subdirectory of the CUPS source distribution and in the &quot;cups&quot; include
+ directory and library files in the binary distributions. The GNU GPL
+ applies to the remainder of the CUPS distribution, including the
+ &quot;pdftops&quot; filter which is based upon Xpdf and the CUPS imaging library.</P>
+<P>For those not familiar with the GNU GPL, the license basically allows
+ you to:</P>
+<UL>
+<LI>Use the CUPS software at no charge.</LI>
+<LI>Distribute verbatim copies of the software in source or binary form.</LI>
+<LI>Sell verbatim copies of the software for a media fee, or sell
+ support for the software.</LI>
+<LI>Distribute or sell printer drivers and filters that use CUPS so long
+ as source code is made available under the GPL.</LI>
+</UL>
+<P>What this license<B> does not</B> allow you to do is make changes or
+ add features to CUPS and then sell a binary distribution without source
+ code. You must provide source for any new drivers, changes, or
+ additions to the software, and all code must be provided under the GPL
+ or LGPL as appropriate. The only exceptions to this are the portions of
+ the CUPS software covered by the Apple operating system license
+ exceptions outlined later in this license agreement.</P>
+<P>The GNU LGPL relaxes the &quot;link-to&quot; restriction, allowing you to
+ develop applications that use the CUPS API library under other licenses
+ and/or conditions as appropriate for your application.</P>
+<H3><A NAME="9_1_2">License Exceptions</A></H3>
+<P>In addition, as the copyright holder of CUPS, Easy Software Products
+ grants the following special exceptions:</P>
+<OL>
+<LI><B>Apple Operating System Development License Exception</B>;
+<OL TYPE="a">
+<LI>Software that is developed by any person or entity for an Apple
+ Operating System (&quot;Apple OS-Developed Software&quot;), including but not
+ limited to Apple and third party printer drivers, filters, and backends
+ for an Apple Operating System, that is linked to the CUPS imaging
+ library or based on any sample filters or backends provided with CUPS
+ shall not be considered to be a derivative work or collective work
+ based on the CUPS program and is exempt from the mandatory source code
+ release clauses of the GNU GPL. You may therefore distribute linked
+ combinations of the CUPS imaging library with Apple OS-Developed
+ Software without releasing the source code of the Apple OS-Developed
+ Software. You may also use sample filters and backends provided with
+ CUPS to develop Apple OS-Developed Software without releasing the
+ source code of the Apple OS-Developed Software.</LI>
+<LI>An Apple Operating System means any operating system software
+ developed and/or marketed by Apple Computer, Inc., including but not
+ limited to all existing releases and versions of Apple's Darwin, Mac OS
+ X, and Mac OS X Server products and all follow-on releases and future
+ versions thereof.</LI>
+<LI>This exception is only available for Apple OS-Developed Software and
+ does not apply to software that is distributed for use on other
+ operating systems.</LI>
+<LI>All CUPS software that falls under this license exception have the
+ following text at the top of each source file:<BLOCKQUOTE>This file is
+ subject to the Apple OS-Developed Software exception.</BLOCKQUOTE></LI>
+</OL>
+</LI>
+<LI><B>OpenSSL Toolkit License Exception</B>;
+<OL TYPE="a">
+<LI>Easy Software Products explicitly allows the compilation and
+ distribution of the CUPS software with the OpenSSL Toolkit.</LI>
+</OL>
+</LI>
+</OL>
+<P>No developer is required to provide these exceptions in a derived
+ work.</P>
+<H3><A NAME="9_1_3">Trademarks</A></H3>
+<P>Easy Software Products has trademarked the Common UNIX Printing
+ System, CUPS, and CUPS logo. You may use these names and logos in any
+ direct port or binary distribution of CUPS. Please contact Easy
+ Software Products for written permission to use them in derivative
+ products. Our intention is to protect the value of these trademarks and
+ ensure that any derivative product meets the same high-quality
+ standards as the original.</P>
+<H3><A NAME="9_1_4">Binary Distribution Rights</A></H3>
+<P>Easy Software Products also sells rights to the CUPS source code
+ under a binary distribution license for vendors that are unable to
+ release source code for their drivers, additions, and modifications to
+ CUPS under the GNU GPL and LGPL. For information please contact us at
+ the address shown above.</P>
+<P>The Common UNIX Printing System provides a &quot;pdftops&quot; filter that is
+ based on the Xpdf software. For binary distribution licensing of this
+ software, please contact:<BLOCKQUOTE> Derek B. Noonburg
 <BR> Email: <A HREF="mailto:derekn@foolabs.com">derekn@foolabs.com</A>
 <BR> WWW: <A HREF="http://www.foolabs.com/xpdf/">
 http://www.foolabs.com/xpdf/</A></BLOCKQUOTE></P>
-<H3><A NAME="9_1_4">Support</A></H3>
-<P>Easy Software Products sells software support for CUPS as well as a 
-commercial printing product based on CUPS called ESP Print Pro. You can 
-find out more at our web site: </P>
+<H3><A NAME="9_1_5">Support</A></H3>
+<P>Easy Software Products sells software support for CUPS as well as a
+ commercial printing product based on CUPS called ESP Print Pro. You can
+ find out more at our web site:</P>
 <UL>
 <PRE>
-<A HREF="http://www.easysw.com">http://www.easysw.com</A>
+<A HREF="http://www.easysw.com/">http://www.easysw.com/</A>
 </PRE>
 </UL>
 
 <!-- NEW PAGE -->
 <H2><A NAME="9_2">GNU GENERAL PUBLIC LICENSE</A></H2>
-<P>Version 2, June 1991 </P>
+<P>Version 2, June 1991</P>
 <PRE>
 Copyright 1989, 1991 Free Software Foundation, Inc.
 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
@@ -3314,256 +4953,310 @@ Copyright 1989, 1991 Free Software Foundation, Inc.
 Everyone is permitted to copy and distribute verbatim
 copies of this license document, but changing it is not allowed.
 </PRE>
-<PRE>
-
-</PRE>
-<H4>Preamble</H4>
-<P>The licenses for most software are designed to take away your 
-freedom to share and change it.  By contrast, the GNU General Public 
-License is intended to guarantee your freedom to share and change free 
-software--to make sure the software is free for all its users.  This 
-General Public License applies to most of the Free Software 
-Foundation's software and to any other program whose authors commit to 
-using it.  (Some other Free Software Foundation software is covered by 
-the GNU Library General Public License instead.)  You can apply it to 
-your programs, too. </P>
-<P>When we speak of free software, we are referring to freedom, not 
-price.  Our General Public Licenses are designed to make sure that you 
-have the freedom to distribute copies of free software (and charge for 
-this service if you wish), that you receive source code or can get it 
-if you want it, that you can change the software or use pieces of it in 
-new free programs; and that you know you can do these things. </P>
-<P>To protect your rights, we need to make restrictions that forbid 
-anyone to deny you these rights or to ask you to surrender the rights. 
-These restrictions translate to certain responsibilities for you if you 
-distribute copies of the software, or if you modify it. </P>
-<P>For example, if you distribute copies of such a program, whether 
-gratis or for a fee, you must give the recipients all the rights that 
-you have.  You must make sure that they, too, receive or can get the 
-source code.  And you must show them these terms so they know their 
-rights. </P>
-<P>We protect your rights with two steps: (1) copyright the software, 
-and (2) offer you this license which gives you legal permission to 
-copy, distribute and/or modify the software. </P>
-<P>Also, for each author's protection and ours, we want to make certain 
-that everyone understands that there is no warranty for this free 
-software.  If the software is modified by someone else and passed on, 
-we want its recipients to know that what they have is not the original, 
-so that any problems introduced by others will not reflect on the 
-original authors' reputations. </P>
-<P>Finally, any free program is threatened constantly by software 
-patents.  We wish to avoid the danger that redistributors of a free 
-program will individually obtain patent licenses, in effect making the 
-program proprietary.  To prevent this, we have made it clear that any 
-patent must be licensed for everyone's free use or not licensed at all. </P>
-<P>The precise terms and conditions for copying, distribution and 
-modification follow. </P>
+<H3><A NAME="9_2_1">Preamble</A></H3>
+<P>The licenses for most software are designed to take away your freedom
+ to share and change it. By contrast, the GNU General Public License is
+ intended to guarantee your freedom to share and change free
+ software--to make sure the software is free for all its users. This
+ General Public License applies to most of the Free Software
+ Foundation's software and to any other program whose authors commit to
+ using it. (Some other Free Software Foundation software is covered by
+ the GNU Library General Public License instead.) You can apply it to
+ your programs, too.</P>
+<P>When we speak of free software, we are referring to freedom, not
+ price. Our General Public Licenses are designed to make sure that you
+ have the freedom to distribute copies of free software (and charge for
+ this service if you wish), that you receive source code or can get it
+ if you want it, that you can change the software or use pieces of it in
+ new free programs; and that you know you can do these things.</P>
+<P>To protect your rights, we need to make restrictions that forbid
+ anyone to deny you these rights or to ask you to surrender the rights.
+ These restrictions translate to certain responsibilities for you if you
+ distribute copies of the software, or if you modify it.</P>
+<P>For example, if you distribute copies of such a program, whether
+ gratis or for a fee, you must give the recipients all the rights that
+ you have. You must make sure that they, too, receive or can get the
+ source code. And you must show them these terms so they know their
+ rights.</P>
+<P>We protect your rights with two steps: (1) copyright the software,
+ and (2) offer you this license which gives you legal permission to
+ copy, distribute and/or modify the software.</P>
+<P>Also, for each author's protection and ours, we want to make certain
+ that everyone understands that there is no warranty for this free
+ software. If the software is modified by someone else and passed on, we
+ want its recipients to know that what they have is not the original, so
+ that any problems introduced by others will not reflect on the original
+ authors' reputations.</P>
+<P>Finally, any free program is threatened constantly by software
+ patents. We wish to avoid the danger that redistributors of a free
+ program will individually obtain patent licenses, in effect making the
+ program proprietary. To prevent this, we have made it clear that any
+ patent must be licensed for everyone's free use or not licensed at all.</P>
+<P>The precise terms and conditions for copying, distribution and
+ modification follow.</P>
 <H4>GNU GENERAL PUBLIC LICENSE
 <BR> TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</H4>
 <OL START="0">
-<LI>This License applies to any program or other work which contains a 
-notice placed by the copyright holder saying it may be distributed 
-under the terms of this General Public License.  The &quot;Program&quot;, below, 
-refers to any such program or work, and a &quot;work based on the Program&quot; 
-means either the Program or any derivative work under copyright law: 
-that is to say, a work containing the Program or a portion of it, 
-either verbatim or with modifications and/or translated into another 
-language.  (Hereinafter, translation is included without limitation in 
-the term &quot;modification&quot;.)  Each licensee is addressed as &quot;you&quot;. </LI>
-<P>Activities other than copying, distribution and modification are not 
-covered by this License; they are outside its scope.  The act of 
-running the Program is not restricted, and the output from the Program 
-is covered only if its contents constitute a work based on the Program 
-(independent of having been made by running the Program). Whether that 
-is true depends on what the Program does. </P>
-<LI>You may copy and distribute verbatim copies of the Program's source 
-code as you receive it, in any medium, provided that you conspicuously 
-and appropriately publish on each copy an appropriate copyright notice 
-and disclaimer of warranty; keep intact all the notices that refer to 
-this License and to the absence of any warranty; and give any other 
-recipients of the Program a copy of this License along with the 
-Program. </LI>
-<P>You may charge a fee for the physical act of transferring a copy, 
-and you may at your option offer warranty protection in exchange for a 
-fee. </P>
-<LI>You may modify your copy or copies of the Program or any portion of 
-it, thus forming a work based on the Program, and copy and distribute 
-such modifications or work under the terms of Section 1 above, provided 
-that you also meet all of these conditions: 
+<LI>This License applies to any program or other work which contains a
+ notice placed by the copyright holder saying it may be distributed
+ under the terms of this General Public License. The &quot;Program&quot;, below,
+ refers to any such program or work, and a &quot;work based on the Program&quot;
+ means either the Program or any derivative work under copyright law:
+ that is to say, a work containing the Program or a portion of it,
+ either verbatim or with modifications and/or translated into another
+ language. (Hereinafter, translation is included without limitation in
+ the term &quot;modification&quot;.) Each licensee is addressed as &quot;you&quot;.
+<P>Activities other than copying, distribution and modification are not
+ covered by this License; they are outside its scope. The act of running
+ the Program is not restricted, and the output from the Program is
+ covered only if its contents constitute a work based on the Program
+ (independent of having been made by running the Program). Whether that
+ is true depends on what the Program does.</P>
+</LI>
+<LI>You may copy and distribute verbatim copies of the Program's source
+ code as you receive it, in any medium, provided that you conspicuously
+ and appropriately publish on each copy an appropriate copyright notice
+ and disclaimer of warranty; keep intact all the notices that refer to
+ this License and to the absence of any warranty; and give any other
+ recipients of the Program a copy of this License along with the
+ Program.
+<P>You may charge a fee for the physical act of transferring a copy, and
+ you may at your option offer warranty protection in exchange for a fee.</P>
+</LI>
+<LI>You may modify your copy or copies of the Program or any portion of
+ it, thus forming a work based on the Program, and copy and distribute
+ such modifications or work under the terms of Section 1 above, provided
+ that you also meet all of these conditions:
 <OL TYPE="a">
-<LI>You must cause the modified files to carry prominent notices 
-stating that you changed the files and the date of any change. </LI>
-<LI>You must cause any work that you distribute or publish, that in 
-whole or in part contains or is derived from the Program or any part 
-thereof, to be licensed as a whole at no charge to all third parties 
-under the terms of this License. </LI>
-<LI>if the modified program normally reads commands interactively when 
-run, you must cause it, when started running for such interactive use 
-in the most ordinary way, to print or display an announcement including 
-an appropriate copyright notice and a notice that there is no warranty 
-(or else, saying that you provide a warranty) and that users may 
-redistribute the program under these conditions, and telling the user 
-how to view a copy of this License.  (Exception: if the Program itself 
-is interactive but does not normally print such an announcement, your 
-work based on the Program is not required to print an announcement.) </LI>
+<LI>You must cause the modified files to carry prominent notices stating
+ that you changed the files and the date of any change.</LI>
+<LI>You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any part
+ thereof, to be licensed as a whole at no charge to all third parties
+ under the terms of this License.</LI>
+<LI>if the modified program normally reads commands interactively when
+ run, you must cause it, when started running for such interactive use
+ in the most ordinary way, to print or display an announcement including
+ an appropriate copyright notice and a notice that there is no warranty
+ (or else, saying that you provide a warranty) and that users may
+ redistribute the program under these conditions, and telling the user
+ how to view a copy of this License. (Exception: if the Program itself
+ is interactive but does not normally print such an announcement, your
+ work based on the Program is not required to print an announcement.)</LI>
 </OL>
+<P>These requirements apply to the modified work as a whole. If
+ identifiable sections of that work are not derived from the Program,
+ and can be reasonably considered independent and separate works in
+ themselves, then this License, and its terms, do not apply to those
+ sections when you distribute them as separate works. But when you
+ distribute the same sections as part of a whole which is a work based
+ on the Program, the distribution of the whole must be on the terms of
+ this License, whose permissions for other licensees extend to the
+ entire whole, and thus to each and every part regardless of who wrote
+ it.</P>
+<P>Thus, it is not the intent of this section to claim rights or contest
+ your rights to work written entirely by you; rather, the intent is to
+ exercise the right to control the distribution of derivative or
+ collective works based on the Program.</P>
+<P>In addition, mere aggregation of another work not based on the
+ Program with the Program (or with a work based on the Program) on a
+ volume of a storage or distribution medium does not bring the other
+ work under the scope of this License.</P>
 </LI>
-<P>These requirements apply to the modified work as a whole.  If 
-identifiable sections of that work are not derived from the Program, 
-and can be reasonably considered independent and separate works in 
-themselves, then this License, and its terms, do not apply to those 
-sections when you distribute them as separate works.  But when you 
-distribute the same sections as part of a whole which is a work based 
-on the Program, the distribution of the whole must be on the terms of 
-this License, whose permissions for other licensees extend to the 
-entire whole, and thus to each and every part regardless of who wrote 
-it. </P>
-<P>Thus, it is not the intent of this section to claim rights or 
-contest your rights to work written entirely by you; rather, the intent 
-is to exercise the right to control the distribution of derivative or 
-collective works based on the Program. </P>
-<P>In addition, mere aggregation of another work not based on the 
-Program with the Program (or with a work based on the Program) on a 
-volume of a storage or distribution medium does not bring the other 
-work under the scope of this License. </P>
-<LI>You may copy and distribute the Program (or a work based on it, 
-under Section 2) in object code or executable form under the terms of 
-Sections 1 and 2 above provided that you also do one of the following: 
+<LI>You may copy and distribute the Program (or a work based on it,
+ under Section 2) in object code or executable form under the terms of
+ Sections 1 and 2 above provided that you also do one of the following:
 <OL TYPE="a">
-<LI>Accompany it with the complete corresponding machine-readable 
-source code, which must be distributed under the terms of Sections 1 
-and 2 above on a medium customarily used for software interchange; or, </LI>
-<LI>Accompany it with a written offer, valid for at least three years, 
-to give any third party, for a charge no more than your cost of 
-physically performing source distribution, a complete machine-readable 
-copy of the corresponding source code, to be distributed under the 
-terms of Sections 1 and 2 above on a medium customarily used for 
-software interchange; or, </LI>
-<LI>Accompany it with the information you received as to the offer to 
-distribute corresponding source code.  (This alternative is allowed 
-only for noncommercial distribution and only if you received the 
-program in object code or executable form with such an offer, in accord 
-with Subsection b above.) </LI>
+<LI>Accompany it with the complete corresponding machine-readable source
+ code, which must be distributed under the terms of Sections 1 and 2
+ above on a medium customarily used for software interchange; or,</LI>
+<LI>Accompany it with a written offer, valid for at least three years,
+ to give any third party, for a charge no more than your cost of
+ physically performing source distribution, a complete machine-readable
+ copy of the corresponding source code, to be distributed under the
+ terms of Sections 1 and 2 above on a medium customarily used for
+ software interchange; or,</LI>
+<LI>Accompany it with the information you received as to the offer to
+ distribute corresponding source code. (This alternative is allowed only
+ for noncommercial distribution and only if you received the program in
+ object code or executable form with such an offer, in accord with
+ Subsection b above.)</LI>
 </OL>
+<P>The source code for a work means the preferred form of the work for
+ making modifications to it. For an executable work, complete source
+ code means all the source code for all modules it contains, plus any
+ associated interface definition files, plus the scripts used to control
+ compilation and installation of the executable. However, as a special
+ exception, the source code distributed need not include anything that
+ is normally distributed (in either source or binary form) with the
+ major components (compiler, kernel, and so on) of the operating system
+ on which the executable runs, unless that component itself accompanies
+ the executable.</P>
+<P>If distribution of executable or object code is made by offering
+ access to copy from a designated place, then offering equivalent access
+ to copy the source code from the same place counts as distribution of
+ the source code, even though third parties are not compelled to copy
+ the source along with the object code.</P>
+</LI>
+<LI>You may not copy, modify, sublicense, or distribute the Program
+ except as expressly provided under this License. Any attempt otherwise
+ to copy, modify, sublicense or distribute the Program is void, and will
+ automatically terminate your rights under this License. However,
+ parties who have received copies, or rights, from you under this
+ License will not have their licenses terminated so long as such parties
+ remain in full compliance.</LI>
+<LI>You are not required to accept this License, since you have not
+ signed it. However, nothing else grants you permission to modify or
+ distribute the Program or its derivative works. These actions are
+ prohibited by law if you do not accept this License. Therefore, by
+ modifying or distributing the Program (or any work based on the
+ Program), you indicate your acceptance of this License to do so, and
+ all its terms and conditions for copying, distributing or modifying the
+ Program or works based on it.</LI>
+<LI>Each time you redistribute the Program (or any work based on the
+ Program), the recipient automatically receives a license from the
+ original licensor to copy, distribute or modify the Program subject to
+ these terms and conditions. You may not impose any further restrictions
+ on the recipients' exercise of the rights granted herein. You are not
+ responsible for enforcing compliance by third parties to this License.</LI>
+<LI>If, as a consequence of a court judgment or allegation of patent
+ infringement or for any other reason (not limited to patent issues),
+ conditions are imposed on you (whether by court order, agreement or
+ otherwise) that contradict the conditions of this License, they do not
+ excuse you from the conditions of this License. If you cannot
+ distribute so as to satisfy simultaneously your obligations under this
+ License and any other pertinent obligations, then as a consequence you
+ may not distribute the Program at all. For example, if a patent license
+ would not permit royalty-free redistribution of the Program by all
+ those who receive copies directly or indirectly through you, then the
+ only way you could satisfy both it and this License would be to refrain
+ entirely from distribution of the Program.
+<P>If any portion of this section is held invalid or unenforceable under
+ any particular circumstance, the balance of the section is intended to
+ apply and the section as a whole is intended to apply in other
+ circumstances.</P>
+<P>It is not the purpose of this section to induce you to infringe any
+ patents or other property right claims or to contest validity of any
+ such claims; this section has the sole purpose of protecting the
+ integrity of the free software distribution system, which is
+ implemented by public license practices. Many people have made generous
+ contributions to the wide range of software distributed through that
+ system in reliance on consistent application of that system; it is up
+ to the author/donor to decide if he or she is willing to distribute
+ software through any other system and a licensee cannot impose that
+ choice.</P>
+<P>This section is intended to make thoroughly clear what is believed to
+ be a consequence of the rest of this License.</P>
 </LI>
-<P>The source code for a work means the preferred form of the work for 
-making modifications to it.  For an executable work, complete source 
-code means all the source code for all modules it contains, plus any 
-associated interface definition files, plus the scripts used to control 
-compilation and installation of the executable.  However, as a special 
-exception, the source code distributed need not include anything that 
-is normally distributed (in either source or binary form) with the 
-major components (compiler, kernel, and so on) of the operating system 
-on which the executable runs, unless that component itself accompanies 
-the executable. </P>
-<P>If distribution of executable or object code is made by offering 
-access to copy from a designated place, then offering equivalent access 
-to copy the source code from the same place counts as distribution of 
-the source code, even though third parties are not compelled to copy 
-the source along with the object code. </P>
-<LI>You may not copy, modify, sublicense, or distribute the Program 
-except as expressly provided under this License.  Any attempt otherwise 
-to copy, modify, sublicense or distribute the Program is void, and will 
-automatically terminate your rights under this License. However, 
-parties who have received copies, or rights, from you under this 
-License will not have their licenses terminated so long as such parties 
-remain in full compliance. </LI>
-<LI>You are not required to accept this License, since you have not 
-signed it.  However, nothing else grants you permission to modify or 
-distribute the Program or its derivative works.  These actions are 
-prohibited by law if you do not accept this License.  Therefore, by 
-modifying or distributing the Program (or any work based on the 
-Program), you indicate your acceptance of this License to do so, and 
-all its terms and conditions for copying, distributing or modifying the 
-Program or works based on it. </LI>
-<LI>Each time you redistribute the Program (or any work based on the 
-Program), the recipient automatically receives a license from the 
-original licensor to copy, distribute or modify the Program subject to 
-these terms and conditions.  You may not impose any further 
-restrictions on the recipients' exercise of the rights granted herein. 
-You are not responsible for enforcing compliance by third parties to 
-this License. </LI>
-<LI>If, as a consequence of a court judgment or allegation of patent 
-infringement or for any other reason (not limited to patent issues), 
-conditions are imposed on you (whether by court order, agreement or 
-otherwise) that contradict the conditions of this License, they do not 
-excuse you from the conditions of this License.  If you cannot 
-distribute so as to satisfy simultaneously your obligations under this 
-License and any other pertinent obligations, then as a consequence you 
-may not distribute the Program at all.  For example, if a patent 
-license would not permit royalty-free redistribution of the Program by 
-all those who receive copies directly or indirectly through you, then 
-the only way you could satisfy both it and this License would be to 
-refrain entirely from distribution of the Program. </LI>
-<P>If any portion of this section is held invalid or unenforceable 
-under any particular circumstance, the balance of the section is 
-intended to apply and the section as a whole is intended to apply in 
-other circumstances. </P>
-<P>It is not the purpose of this section to induce you to infringe any 
-patents or other property right claims or to contest validity of any 
-such claims; this section has the sole purpose of protecting the 
-integrity of the free software distribution system, which is 
-implemented by public license practices.  Many people have made 
-generous contributions to the wide range of software distributed 
-through that system in reliance on consistent application of that 
-system; it is up to the author/donor to decide if he or she is willing 
-to distribute software through any other system and a licensee cannot 
-impose that choice. </P>
-<P>This section is intended to make thoroughly clear what is believed 
-to be a consequence of the rest of this License. </P>
-<LI>If the distribution and/or use of the Program is restricted in 
-certain countries either by patents or by copyrighted interfaces, the 
-original copyright holder who places the Program under this License may 
-add an explicit geographical distribution limitation excluding those 
-countries, so that distribution is permitted only in or among countries 
-not thus excluded.  In such case, this License incorporates the 
-limitation as if written in the body of this License. </LI>
-<LI>The Free Software Foundation may publish revised and/or new 
-versions of the General Public License from time to time.  Such new 
-versions will be similar in spirit to the present version, but may 
-differ in detail to address new problems or concerns. </LI>
-<P>Each version is given a distinguishing version number.  If the 
-Program specifies a version number of this License which applies to it 
-and &quot;any later version&quot;, you have the option of following the terms and 
-conditions either of that version or of any later version published by 
-the Free Software Foundation.  If the Program does not specify a 
-version number of this License, you may choose any version ever 
-published by the Free Software Foundation. </P>
-<LI>If you wish to incorporate parts of the Program into other free 
-programs whose distribution conditions are different, write to the 
-author to ask for permission.  For software which is copyrighted by the 
-Free Software Foundation, write to the Free Software Foundation; we 
-sometimes make exceptions for this.  Our decision will be guided by the 
-two goals of preserving the free status of all derivatives of our free 
-software and of promoting the sharing and reuse of software generally. </LI>
+<LI>If the distribution and/or use of the Program is restricted in
+ certain countries either by patents or by copyrighted interfaces, the
+ original copyright holder who places the Program under this License may
+ add an explicit geographical distribution limitation excluding those
+ countries, so that distribution is permitted only in or among countries
+ not thus excluded. In such case, this License incorporates the
+ limitation as if written in the body of this License.</LI>
+<LI>The Free Software Foundation may publish revised and/or new versions
+ of the General Public License from time to time. Such new versions will
+ be similar in spirit to the present version, but may differ in detail
+ to address new problems or concerns.
+<P>Each version is given a distinguishing version number. If the Program
+ specifies a version number of this License which applies to it and &quot;any
+ later version&quot;, you have the option of following the terms and
+ conditions either of that version or of any later version published by
+ the Free Software Foundation. If the Program does not specify a version
+ number of this License, you may choose any version ever published by
+ the Free Software Foundation.</P>
+</LI>
+<LI>If you wish to incorporate parts of the Program into other free
+ programs whose distribution conditions are different, write to the
+ author to ask for permission. For software which is copyrighted by the
+ Free Software Foundation, write to the Free Software Foundation; we
+ sometimes make exceptions for this. Our decision will be guided by the
+ two goals of preserving the free status of all derivatives of our free
+ software and of promoting the sharing and reuse of software generally.</LI>
 </OL>
 <H4>NO WARRANTY</H4>
 <OL START="11">
-<LI>BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO 
-WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. 
- EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR 
-OTHER PARTIES PROVIDE THE PROGRAM &quot;AS IS&quot; WITHOUT WARRANTY OF ANY KIND, 
-EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 
- THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS 
-WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION. </LI>
-<LI>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN 
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY 
-AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU 
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR 
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE 
-PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING 
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A 
-FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF 
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 
-DAMAGES. </LI>
+<LI>BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+ FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+ OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+ PROVIDE THE PROGRAM &quot;AS IS&quot; WITHOUT WARRANTY OF ANY KIND, EITHER
+ EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
+ ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
+ YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+ NECESSARY SERVICING, REPAIR OR CORRECTION.</LI>
+<LI>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+ WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+ AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU
+ FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+ CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+ PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+ RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+ FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF
+ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ DAMAGES.</LI>
 </OL>
 <H4>END OF TERMS AND CONDITIONS</H4>
+<H4>How to Apply These Terms to Your New Programs</H4>
+<P>If you develop a new program, and you want it to be of the greatest
+ possible use to the public, the best way to achieve this is to make it
+ free software which everyone can redistribute and change under these
+ terms.</P>
+<P>To do so, attach the following notices to the program. It is safest
+ to attach them to the start of each source file to most effectively
+ convey the exclusion of warranty; and each file should have at least
+ the &quot;copyright&quot; line and a pointer to where the full notice is found.</P>
+<PRE>
+<VAR>one line to give the program's name and an idea of what it does.</VAR>
+Copyright (C) <VAR>yyyy</VAR>  <VAR>name of author</VAR>
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+</PRE>
+<P>Also add information on how to contact you by electronic and paper
+ mail.</P>
+<P>If the program is interactive, make it output a short notice like
+ this when it starts in an interactive mode:</P>
+<PRE>
+Gnomovision version 69, Copyright (C) <VAR>year</VAR> <VAR>name of author</VAR>
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
+type `show w'.  This is free software, and you are welcome
+to redistribute it under certain conditions; type `show c' 
+for details.
+</PRE>
+<P>The hypothetical commands <SAMP>`show w'</SAMP> and <SAMP>`show c'</SAMP>
+ should show the appropriate parts of the General Public License. Of
+ course, the commands you use may be called something other than <SAMP>
+`show w'</SAMP> and <SAMP>`show c'</SAMP>; they could even be
+ mouse-clicks or menu items--whatever suits your program.</P>
+<P>You should also get your employer (if you work as a programmer) or
+ your school, if any, to sign a &quot;copyright disclaimer&quot; for the program,
+ if necessary. Here is a sample; alter the names:</P>
+<PRE>
+Yoyodyne, Inc., hereby disclaims all copyright
+interest in the program `Gnomovision'
+(which makes passes at compilers) written 
+by James Hacker.
+
+<VAR>signature of Ty Coon</VAR>, 1 April 1989
+Ty Coon, President of Vice
+</PRE>
 
 <!-- NEW PAGE -->
 <H2><A NAME="9_3">GNU LIBRARY GENERAL PUBLIC LICENSE</A></H2>
-<P>Version 2, June 1991 </P>
+<P>Version 2, June 1991</P>
 <PRE>
 Copyright (C) 1991 Free Software Foundation, Inc.
 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
@@ -3573,401 +5266,448 @@ of this license document, but changing it is not allowed.
 [This is the first released version of the library GPL.  It is
  numbered 2 because it goes with version 2 of the ordinary GPL.]
 </PRE>
-<H4>Preamble</H4>
-<P>The licenses for most software are designed to take away your 
-freedom to share and change it.  By contrast, the GNU General Public 
-Licenses are intended to guarantee your freedom to share and change 
-free software--to make sure the software is free for all its users. </P>
-<P>This license, the Library General Public License, applies to some 
-specially designated Free Software Foundation software, and to any 
-other libraries whose authors decide to use it.  You can use it for 
-your libraries, too. </P>
-<P>When we speak of free software, we are referring to freedom, not 
-price.  Our General Public Licenses are designed to make sure that you 
-have the freedom to distribute copies of free software (and charge for 
-this service if you wish), that you receive source code or can get it 
-if you want it, that you can change the software or use pieces of it in 
-new free programs; and that you know you can do these things. </P>
-<P>To protect your rights, we need to make restrictions that forbid 
-anyone to deny you these rights or to ask you to surrender the rights. 
-These restrictions translate to certain responsibilities for you if you 
-distribute copies of the library, or if you modify it. </P>
-<P>For example, if you distribute copies of the library, whether gratis 
-or for a fee, you must give the recipients all the rights that we gave 
-you.  You must make sure that they, too, receive or can get the source 
-code.  If you link a program with the library, you must provide 
-complete object files to the recipients so that they can relink them 
-with the library, after making changes to the library and recompiling 
-it.  And you must show them these terms so they know their rights. </P>
-<P>Our method of protecting your rights has two steps: (1) copyright 
-the library, and (2) offer you this license which gives you legal 
-permission to copy, distribute and/or modify the library. </P>
-<P>Also, for each distributor's protection, we want to make certain 
-that everyone understands that there is no warranty for this free 
-library.  If the library is modified by someone else and passed on, we 
-want its recipients to know that what they have is not the original 
-version, so that any problems introduced by others will not reflect on 
-the original authors' reputations. </P>
-<P>Finally, any free program is threatened constantly by software 
-patents.  We wish to avoid the danger that companies distributing free 
-software will individually obtain patent licenses, thus in effect 
-transforming the program into proprietary software.  To prevent this, 
-we have made it clear that any patent must be licensed for everyone's 
-free use or not licensed at all. </P>
-<P>Most GNU software, including some libraries, is covered by the 
-ordinary GNU General Public License, which was designed for utility 
-programs.  This license, the GNU Library General Public License, 
-applies to certain designated libraries.  This license is quite 
-different from the ordinary one; be sure to read it in full, and don't 
-assume that anything in it is the same as in the ordinary license. </P>
-<P>The reason we have a separate public license for some libraries is 
-that they blur the distinction we usually make between modifying or 
-adding to a program and simply using it.  Linking a program with a 
-library, without changing the library, is in some sense simply using 
-the library, and is analogous to running a utility program or 
-application program.  However, in a textual and legal sense, the linked 
-executable is a combined work, a derivative of the original library, 
-and the ordinary General Public License treats it as such. </P>
-<P>Because of this blurred distinction, using the ordinary General 
-Public License for libraries did not effectively promote software 
-sharing, because most developers did not use the libraries.  We 
-concluded that weaker conditions might promote sharing better. </P>
-<P>However, unrestricted linking of non-free programs would deprive the 
-users of those programs of all benefit from the free status of the 
-libraries themselves.  This Library General Public License is intended 
-to permit developers of non-free programs to use free libraries, while 
-preserving your freedom as a user of such programs to change the free 
-libraries that are incorporated in them.  (We have not seen how to 
-achieve this as regards changes in header files, but we have achieved 
-it as regards changes in the actual functions of the Library.)  The 
-hope is that this will lead to faster development of free libraries. </P>
-<P>The precise terms and conditions for copying, distribution and 
-modification follow.  Pay close attention to the difference between a 
-&quot;work based on the library&quot; and a &quot;work that uses the library&quot;.  The 
-former contains code derived from the library, while the latter only 
-works together with the library. </P>
-<P>Note that it is possible for a library to be covered by the ordinary 
-General Public License rather than by this special one. </P>
+<H3><A NAME="9_3_1">Preamble</A></H3>
+<P>The licenses for most software are designed to take away your freedom
+ to share and change it. By contrast, the GNU General Public Licenses
+ are intended to guarantee your freedom to share and change free
+ software--to make sure the software is free for all its users.</P>
+<P>This license, the Library General Public License, applies to some
+ specially designated Free Software Foundation software, and to any
+ other libraries whose authors decide to use it. You can use it for your
+ libraries, too.</P>
+<P>When we speak of free software, we are referring to freedom, not
+ price. Our General Public Licenses are designed to make sure that you
+ have the freedom to distribute copies of free software (and charge for
+ this service if you wish), that you receive source code or can get it
+ if you want it, that you can change the software or use pieces of it in
+ new free programs; and that you know you can do these things.</P>
+<P>To protect your rights, we need to make restrictions that forbid
+ anyone to deny you these rights or to ask you to surrender the rights.
+ These restrictions translate to certain responsibilities for you if you
+ distribute copies of the library, or if you modify it.</P>
+<P>For example, if you distribute copies of the library, whether gratis
+ or for a fee, you must give the recipients all the rights that we gave
+ you. You must make sure that they, too, receive or can get the source
+ code. If you link a program with the library, you must provide complete
+ object files to the recipients so that they can relink them with the
+ library, after making changes to the library and recompiling it. And
+ you must show them these terms so they know their rights.</P>
+<P>Our method of protecting your rights has two steps: (1) copyright the
+ library, and (2) offer you this license which gives you legal
+ permission to copy, distribute and/or modify the library.</P>
+<P>Also, for each distributor's protection, we want to make certain that
+ everyone understands that there is no warranty for this free library.
+ If the library is modified by someone else and passed on, we want its
+ recipients to know that what they have is not the original version, so
+ that any problems introduced by others will not reflect on the original
+ authors' reputations.</P>
+<P>Finally, any free program is threatened constantly by software
+ patents. We wish to avoid the danger that companies distributing free
+ software will individually obtain patent licenses, thus in effect
+ transforming the program into proprietary software. To prevent this, we
+ have made it clear that any patent must be licensed for everyone's free
+ use or not licensed at all.</P>
+<P>Most GNU software, including some libraries, is covered by the
+ ordinary GNU General Public License, which was designed for utility
+ programs. This license, the GNU Library General Public License, applies
+ to certain designated libraries. This license is quite different from
+ the ordinary one; be sure to read it in full, and don't assume that
+ anything in it is the same as in the ordinary license.</P>
+<P>The reason we have a separate public license for some libraries is
+ that they blur the distinction we usually make between modifying or
+ adding to a program and simply using it. Linking a program with a
+ library, without changing the library, is in some sense simply using
+ the library, and is analogous to running a utility program or
+ application program. However, in a textual and legal sense, the linked
+ executable is a combined work, a derivative of the original library,
+ and the ordinary General Public License treats it as such.</P>
+<P>Because of this blurred distinction, using the ordinary General
+ Public License for libraries did not effectively promote software
+ sharing, because most developers did not use the libraries. We
+ concluded that weaker conditions might promote sharing better.</P>
+<P>However, unrestricted linking of non-free programs would deprive the
+ users of those programs of all benefit from the free status of the
+ libraries themselves. This Library General Public License is intended
+ to permit developers of non-free programs to use free libraries, while
+ preserving your freedom as a user of such programs to change the free
+ libraries that are incorporated in them. (We have not seen how to
+ achieve this as regards changes in header files, but we have achieved
+ it as regards changes in the actual functions of the Library.) The hope
+ is that this will lead to faster development of free libraries.</P>
+<P>The precise terms and conditions for copying, distribution and
+ modification follow. Pay close attention to the difference between a
+ &quot;work based on the library&quot; and a &quot;work that uses the library&quot;. The
+ former contains code derived from the library, while the latter only
+ works together with the library.</P>
+<P>Note that it is possible for a library to be covered by the ordinary
+ General Public License rather than by this special one.</P>
 <H4>TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</H4>
-<P><STRONG>0.</STRONG> This License Agreement applies to any software 
-library which contains a notice placed by the copyright holder or other 
-authorized party saying it may be distributed under the terms of this 
-Library General Public License (also called &quot;this License&quot;).  Each 
-licensee is addressed as &quot;you&quot;. </P>
-<P>A &quot;library&quot; means a collection of software functions and/or data 
-prepared so as to be conveniently linked with application programs 
-(which use some of those functions and data) to form executables. </P>
-<P>The &quot;Library&quot;, below, refers to any such software library or work 
-which has been distributed under these terms.  A &quot;work based on the 
-Library&quot; means either the Library or any derivative work under 
-copyright law: that is to say, a work containing the Library or a 
-portion of it, either verbatim or with modifications and/or translated 
-straightforwardly into another language.  (Hereinafter, translation is 
-included without limitation in the term &quot;modification&quot;.) </P>
-<P>&quot;Source code&quot; for a work means the preferred form of the work for 
-making modifications to it.  For a library, complete source code means 
-all the source code for all modules it contains, plus any associated 
-interface definition files, plus the scripts used to control 
-compilation and installation of the library. </P>
-<P>Activities other than copying, distribution and modification are not 
-covered by this License; they are outside its scope.  The act of 
-running a program using the Library is not restricted, and output from 
-such a program is covered only if its contents constitute a work based 
-on the Library (independent of the use of the Library in a tool for 
-writing it).  Whether that is true depends on what the Library does and 
-what the program that uses the Library does. </P>
-<P><STRONG>1.</STRONG> You may copy and distribute verbatim copies of 
-the Library's complete source code as you receive it, in any medium, 
-provided that you conspicuously and appropriately publish on each copy 
-an appropriate copyright notice and disclaimer of warranty; keep intact 
-all the notices that refer to this License and to the absence of any 
-warranty; and distribute a copy of this License along with the Library. </P>
-<P>You may charge a fee for the physical act of transferring a copy, 
-and you may at your option offer warranty protection in exchange for a 
-fee. </P>
-<P><STRONG>2.</STRONG> You may modify your copy or copies of the 
-Library or any portion of it, thus forming a work based on the Library, 
-and copy and distribute such modifications or work under the terms of 
-Section 1 above, provided that you also meet all of these conditions: </P>
+<P><STRONG>0.</STRONG> This License Agreement applies to any software
+ library which contains a notice placed by the copyright holder or other
+ authorized party saying it may be distributed under the terms of this
+ Library General Public License (also called &quot;this License&quot;). Each
+ licensee is addressed as &quot;you&quot;.</P>
+<P>A &quot;library&quot; means a collection of software functions and/or data
+ prepared so as to be conveniently linked with application programs
+ (which use some of those functions and data) to form executables.</P>
+<P>The &quot;Library&quot;, below, refers to any such software library or work
+ which has been distributed under these terms. A &quot;work based on the
+ Library&quot; means either the Library or any derivative work under
+ copyright law: that is to say, a work containing the Library or a
+ portion of it, either verbatim or with modifications and/or translated
+ straightforwardly into another language. (Hereinafter, translation is
+ included without limitation in the term &quot;modification&quot;.)</P>
+<P>&quot;Source code&quot; for a work means the preferred form of the work for
+ making modifications to it. For a library, complete source code means
+ all the source code for all modules it contains, plus any associated
+ interface definition files, plus the scripts used to control
+ compilation and installation of the library.</P>
+<P>Activities other than copying, distribution and modification are not
+ covered by this License; they are outside its scope. The act of running
+ a program using the Library is not restricted, and output from such a
+ program is covered only if its contents constitute a work based on the
+ Library (independent of the use of the Library in a tool for writing
+ it). Whether that is true depends on what the Library does and what the
+ program that uses the Library does.</P>
+<P><STRONG>1.</STRONG> You may copy and distribute verbatim copies of
+ the Library's complete source code as you receive it, in any medium,
+ provided that you conspicuously and appropriately publish on each copy
+ an appropriate copyright notice and disclaimer of warranty; keep intact
+ all the notices that refer to this License and to the absence of any
+ warranty; and distribute a copy of this License along with the Library.</P>
+<P>You may charge a fee for the physical act of transferring a copy, and
+ you may at your option offer warranty protection in exchange for a fee.</P>
+<P><STRONG>2.</STRONG> You may modify your copy or copies of the Library
+ or any portion of it, thus forming a work based on the Library, and
+ copy and distribute such modifications or work under the terms of
+ Section 1 above, provided that you also meet all of these conditions:</P>
 <OL TYPE="a">
-<LI>The modified work must itself be a software library. </LI>
+<LI>The modified work must itself be a software library.
 <P></P>
-<LI>You must cause the files modified to carry prominent notices 
- stating that you changed the files and the date of any change. </LI>
+</LI>
+<LI>You must cause the files modified to carry prominent notices stating
+ that you changed the files and the date of any change.
 <P></P>
-<LI>You must cause the whole of the work to be licensed at no  charge 
-to all third parties under the terms of this License. </LI>
+</LI>
+<LI>You must cause the whole of the work to be licensed at no charge to
+ all third parties under the terms of this License.
 <P></P>
-<LI>If a facility in the modified Library refers to a function or a 
- table of data to be supplied by an application program that uses  the 
-facility, other than as an argument passed when the facility  is 
-invoked, then you must make a good faith effort to ensure that,  in the 
-event an application does not supply such function or  table, the 
-facility still operates, and performs whatever part of  its purpose 
-remains meaningful. </LI>
-<P>(For example, a function in a library to compute square roots has  a 
-purpose that is entirely well-defined independent of the  application. 
- Therefore, Subsection 2d requires that any  application-supplied 
-function or table used by this function must  be optional: if the 
-application does not supply it, the square  root function must still 
-compute square roots.) </P>
+</LI>
+<LI>If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses the
+ facility, other than as an argument passed when the facility is
+ invoked, then you must make a good faith effort to ensure that, in the
+ event an application does not supply such function or table, the
+ facility still operates, and performs whatever part of its purpose
+ remains meaningful.
+<P>(For example, a function in a library to compute square roots has a
+ purpose that is entirely well-defined independent of the application.
+ Therefore, Subsection 2d requires that any application-supplied
+ function or table used by this function must be optional: if the
+ application does not supply it, the square root function must still
+ compute square roots.)</P>
+</LI>
 </OL>
-<P>These requirements apply to the modified work as a whole.  If 
-identifiable sections of that work are not derived from the Library, 
-and can be reasonably considered independent and separate works in 
-themselves, then this License, and its terms, do not apply to those 
-sections when you distribute them as separate works.  But when you 
-distribute the same sections as part of a whole which is a work based 
-on the Library, the distribution of the whole must be on the terms of 
-this License, whose permissions for other licensees extend to the 
-entire whole, and thus to each and every part regardless of who wrote 
-it. </P>
-<P>Thus, it is not the intent of this section to claim rights or 
-contest your rights to work written entirely by you; rather, the intent 
-is to exercise the right to control the distribution of derivative or 
-collective works based on the Library. </P>
-<P>In addition, mere aggregation of another work not based on the 
-Library with the Library (or with a work based on the Library) on a 
-volume of a storage or distribution medium does not bring the other 
-work under the scope of this License. </P>
-<P><STRONG>3.</STRONG> You may opt to apply the terms of the ordinary 
-GNU General Public License instead of this License to a given copy of 
-the Library.  To do this, you must alter all the notices that refer to 
-this License, so that they refer to the ordinary GNU General Public 
-License, version 2, instead of to this License.  (If a newer version 
-than version 2 of the ordinary GNU General Public License has appeared, 
-then you can specify that version instead if you wish.)  Do not make 
-any other change in these notices. </P>
-<P>Once this change is made in a given copy, it is irreversible for 
-that copy, so the ordinary GNU General Public License applies to all 
-subsequent copies and derivative works made from that copy. </P>
-<P>This option is useful when you wish to copy part of the code of the 
-Library into a program that is not a library. </P>
-<P><STRONG>4.</STRONG> You may copy and distribute the Library (or a 
-portion or derivative of it, under Section 2) in object code or 
-executable form under the terms of Sections 1 and 2 above provided that 
-you accompany it with the complete corresponding machine-readable 
-source code, which must be distributed under the terms of Sections 1 
-and 2 above on a medium customarily used for software interchange. </P>
-<P>If distribution of object code is made by offering access to copy 
-from a designated place, then offering equivalent access to copy the 
-source code from the same place satisfies the requirement to distribute 
-the source code, even though third parties are not compelled to copy 
-the source along with the object code. </P>
-<P><STRONG>5.</STRONG> A program that contains no derivative of any 
-portion of the Library, but is designed to work with the Library by 
-being compiled or linked with it, is called a &quot;work that uses the 
-Library&quot;.  Such a work, in isolation, is not a derivative work of the 
-Library, and therefore falls outside the scope of this License. </P>
-<P>However, linking a &quot;work that uses the Library&quot; with the Library 
-creates an executable that is a derivative of the Library (because it 
-contains portions of the Library), rather than a &quot;work that uses the 
-library&quot;.  The executable is therefore covered by this License. Section 
-6 states terms for distribution of such executables. </P>
-<P>When a &quot;work that uses the Library&quot; uses material from a header file 
-that is part of the Library, the object code for the work may be a 
-derivative work of the Library even though the source code is not. 
-Whether this is true is especially significant if the work can be 
-linked without the Library, or if the work is itself a library.  The 
-threshold for this to be true is not precisely defined by law. </P>
-<P>If such an object file uses only numerical parameters, data 
-structure layouts and accessors, and small macros and small inline 
-functions (ten lines or less in length), then the use of the object 
-file is unrestricted, regardless of whether it is legally a derivative 
-work.  (Executables containing this object code plus portions of the 
-Library will still fall under Section 6.) </P>
-<P>Otherwise, if the work is a derivative of the Library, you may 
-distribute the object code for the work under the terms of Section 6. 
-Any executables containing that work also fall under Section 6, whether 
-or not they are linked directly with the Library itself. </P>
-<P><STRONG>6.</STRONG> As an exception to the Sections above, you may 
-also compile or link a &quot;work that uses the Library&quot; with the Library to 
-produce a work containing portions of the Library, and distribute that 
-work under terms of your choice, provided that the terms permit 
-modification of the work for the customer's own use and reverse 
-engineering for debugging such modifications. </P>
-<P>You must give prominent notice with each copy of the work that the 
-Library is used in it and that the Library and its use are covered by 
-this License.  You must supply a copy of this License.  If the work 
-during execution displays copyright notices, you must include the 
-copyright notice for the Library among them, as well as a reference 
-directing the user to the copy of this License.  Also, you must do one 
-of these things: </P>
+<P>These requirements apply to the modified work as a whole. If
+ identifiable sections of that work are not derived from the Library,
+ and can be reasonably considered independent and separate works in
+ themselves, then this License, and its terms, do not apply to those
+ sections when you distribute them as separate works. But when you
+ distribute the same sections as part of a whole which is a work based
+ on the Library, the distribution of the whole must be on the terms of
+ this License, whose permissions for other licensees extend to the
+ entire whole, and thus to each and every part regardless of who wrote
+ it.</P>
+<P>Thus, it is not the intent of this section to claim rights or contest
+ your rights to work written entirely by you; rather, the intent is to
+ exercise the right to control the distribution of derivative or
+ collective works based on the Library.</P>
+<P>In addition, mere aggregation of another work not based on the
+ Library with the Library (or with a work based on the Library) on a
+ volume of a storage or distribution medium does not bring the other
+ work under the scope of this License.</P>
+<P><STRONG>3.</STRONG> You may opt to apply the terms of the ordinary
+ GNU General Public License instead of this License to a given copy of
+ the Library. To do this, you must alter all the notices that refer to
+ this License, so that they refer to the ordinary GNU General Public
+ License, version 2, instead of to this License. (If a newer version
+ than version 2 of the ordinary GNU General Public License has appeared,
+ then you can specify that version instead if you wish.) Do not make any
+ other change in these notices.</P>
+<P>Once this change is made in a given copy, it is irreversible for that
+ copy, so the ordinary GNU General Public License applies to all
+ subsequent copies and derivative works made from that copy.</P>
+<P>This option is useful when you wish to copy part of the code of the
+ Library into a program that is not a library.</P>
+<P><STRONG>4.</STRONG> You may copy and distribute the Library (or a
+ portion or derivative of it, under Section 2) in object code or
+ executable form under the terms of Sections 1 and 2 above provided that
+ you accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections 1
+ and 2 above on a medium customarily used for software interchange.</P>
+<P>If distribution of object code is made by offering access to copy
+ from a designated place, then offering equivalent access to copy the
+ source code from the same place satisfies the requirement to distribute
+ the source code, even though third parties are not compelled to copy
+ the source along with the object code.</P>
+<P><STRONG>5.</STRONG> A program that contains no derivative of any
+ portion of the Library, but is designed to work with the Library by
+ being compiled or linked with it, is called a &quot;work that uses the
+ Library&quot;. Such a work, in isolation, is not a derivative work of the
+ Library, and therefore falls outside the scope of this License.</P>
+<P>However, linking a &quot;work that uses the Library&quot; with the Library
+ creates an executable that is a derivative of the Library (because it
+ contains portions of the Library), rather than a &quot;work that uses the
+ library&quot;. The executable is therefore covered by this License. Section
+ 6 states terms for distribution of such executables.</P>
+<P>When a &quot;work that uses the Library&quot; uses material from a header file
+ that is part of the Library, the object code for the work may be a
+ derivative work of the Library even though the source code is not.
+ Whether this is true is especially significant if the work can be
+ linked without the Library, or if the work is itself a library. The
+ threshold for this to be true is not precisely defined by law.</P>
+<P>If such an object file uses only numerical parameters, data structure
+ layouts and accessors, and small macros and small inline functions (ten
+ lines or less in length), then the use of the object file is
+ unrestricted, regardless of whether it is legally a derivative work.
+ (Executables containing this object code plus portions of the Library
+ will still fall under Section 6.)</P>
+<P>Otherwise, if the work is a derivative of the Library, you may
+ distribute the object code for the work under the terms of Section 6.
+ Any executables containing that work also fall under Section 6, whether
+ or not they are linked directly with the Library itself.</P>
+<P><STRONG>6.</STRONG> As an exception to the Sections above, you may
+ also compile or link a &quot;work that uses the Library&quot; with the Library to
+ produce a work containing portions of the Library, and distribute that
+ work under terms of your choice, provided that the terms permit
+ modification of the work for the customer's own use and reverse
+ engineering for debugging such modifications.</P>
+<P>You must give prominent notice with each copy of the work that the
+ Library is used in it and that the Library and its use are covered by
+ this License. You must supply a copy of this License. If the work
+ during execution displays copyright notices, you must include the
+ copyright notice for the Library among them, as well as a reference
+ directing the user to the copy of this License. Also, you must do one
+ of these things:</P>
 <OL TYPE="a">
-<LI>Accompany the work with the complete corresponding 
- machine-readable source code for the Library including whatever 
- changes were used in the work (which must be distributed under 
- Sections 1 and 2 above); and, if the work is an executable linked 
- with the Library, with the complete machine-readable &quot;work that  uses 
-the Library&quot;, as object code and/or source code, so that the  user can 
-modify the Library and then relink to produce a modified  executable 
-containing the modified Library.  (It is understood  that the user who 
-changes the contents of definitions files in the  Library will not 
-necessarily be able to recompile the application  to use the modified 
-definitions.) </LI>
+<LI>Accompany the work with the complete corresponding machine-readable
+ source code for the Library including whatever changes were used in the
+ work (which must be distributed under Sections 1 and 2 above); and, if
+ the work is an executable linked with the Library, with the complete
+ machine-readable &quot;work that uses the Library&quot;, as object code and/or
+ source code, so that the user can modify the Library and then relink to
+ produce a modified executable containing the modified Library. (It is
+ understood that the user who changes the contents of definitions files
+ in the Library will not necessarily be able to recompile the
+ application to use the modified definitions.)
 <P></P>
-<LI>Accompany the work with a written offer, valid for at  least three 
-years, to give the same user the materials  specified in Subsection 6a, 
-above, for a charge no more  than the cost of performing this 
-distribution. </LI>
+</LI>
+<LI>Accompany the work with a written offer, valid for at least three
+ years, to give the same user the materials specified in Subsection 6a,
+ above, for a charge no more than the cost of performing this
+ distribution.
 <P></P>
-<LI>If distribution of the work is made by offering access to copy 
- from a designated place, offer equivalent access to copy the above 
- specified materials from the same place. </LI>
+</LI>
+<LI>If distribution of the work is made by offering access to copy from
+ a designated place, offer equivalent access to copy the above specified
+ materials from the same place.
 <P></P>
-<LI>Verify that the user has already received a copy of these 
- materials or that you have already sent this user a copy. </LI>
+</LI>
+<LI>Verify that the user has already received a copy of these materials
+ or that you have already sent this user a copy.</LI>
 </OL>
-<P>For an executable, the required form of the &quot;work that uses the 
-Library&quot; must include any data and utility programs needed for 
-reproducing the executable from it.  However, as a special exception, 
-the source code distributed need not include anything that is normally 
-distributed (in either source or binary form) with the major components 
-(compiler, kernel, and so on) of the operating system on which the 
-executable runs, unless that component itself accompanies the 
-executable. </P>
-<P>It may happen that this requirement contradicts the license 
-restrictions of other proprietary libraries that do not normally 
-accompany the operating system.  Such a contradiction means you cannot 
-use both them and the Library together in an executable that you 
-distribute. </P>
-<P><STRONG>7.</STRONG> You may place library facilities that are a work 
-based on the Library side-by-side in a single library together with 
-other library facilities not covered by this License, and distribute 
-such a combined library, provided that the separate distribution of the 
-work based on the Library and of the other library facilities is 
-otherwise permitted, and provided that you do these two things: </P>
+<P>For an executable, the required form of the &quot;work that uses the
+ Library&quot; must include any data and utility programs needed for
+ reproducing the executable from it. However, as a special exception,
+ the source code distributed need not include anything that is normally
+ distributed (in either source or binary form) with the major components
+ (compiler, kernel, and so on) of the operating system on which the
+ executable runs, unless that component itself accompanies the
+ executable.</P>
+<P>It may happen that this requirement contradicts the license
+ restrictions of other proprietary libraries that do not normally
+ accompany the operating system. Such a contradiction means you cannot
+ use both them and the Library together in an executable that you
+ distribute.</P>
+<P><STRONG>7.</STRONG> You may place library facilities that are a work
+ based on the Library side-by-side in a single library together with
+ other library facilities not covered by this License, and distribute
+ such a combined library, provided that the separate distribution of the
+ work based on the Library and of the other library facilities is
+ otherwise permitted, and provided that you do these two things:</P>
 <OL TYPE="a">
-<LI>Accompany the combined library with a copy of the same work  based 
-on the Library, uncombined with any other library  facilities.  This 
-must be distributed under the terms of the  Sections above. </LI>
+<LI>Accompany the combined library with a copy of the same work based on
+ the Library, uncombined with any other library facilities. This must be
+ distributed under the terms of the Sections above.
 <P></P>
-<LI>Give prominent notice with the combined library of the fact  that 
-part of it is a work based on the Library, and explaining  where to 
-find the accompanying uncombined form of the same work. </LI>
+</LI>
+<LI>Give prominent notice with the combined library of the fact that
+ part of it is a work based on the Library, and explaining where to find
+ the accompanying uncombined form of the same work.</LI>
 </OL>
-<P><STRONG>8.</STRONG> You may not copy, modify, sublicense, link with, 
-or distribute the Library except as expressly provided under this 
-License.  Any attempt otherwise to copy, modify, sublicense, link with, 
-or distribute the Library is void, and will automatically terminate 
-your rights under this License.  However, parties who have received 
-copies, or rights, from you under this License will not have their 
-licenses terminated so long as such parties remain in full compliance. </P>
-<P><STRONG>9.</STRONG> You are not required to accept this License, 
-since you have not signed it.  However, nothing else grants you 
-permission to modify or distribute the Library or its derivative works. 
- These actions are prohibited by law if you do not accept this License. 
- Therefore, by modifying or distributing the Library (or any work based 
-on the Library), you indicate your acceptance of this License to do so, 
-and all its terms and conditions for copying, distributing or modifying 
-the Library or works based on it. </P>
-<P><STRONG>10.</STRONG> Each time you redistribute the Library (or any 
-work based on the Library), the recipient automatically receives a 
-license from the original licensor to copy, distribute, link with or 
-modify the Library subject to these terms and conditions.  You may not 
-impose any further restrictions on the recipients' exercise of the 
-rights granted herein. You are not responsible for enforcing compliance 
-by third parties to this License. </P>
-<P><STRONG>11.</STRONG> If, as a consequence of a court judgment or 
-allegation of patent infringement or for any other reason (not limited 
-to patent issues), conditions are imposed on you (whether by court 
-order, agreement or otherwise) that contradict the conditions of this 
-License, they do not excuse you from the conditions of this License. 
- If you cannot distribute so as to satisfy simultaneously your 
-obligations under this License and any other pertinent obligations, 
-then as a consequence you may not distribute the Library at all.  For 
-example, if a patent license would not permit royalty-free 
-redistribution of the Library by all those who receive copies directly 
-or indirectly through you, then the only way you could satisfy both it 
-and this License would be to refrain entirely from distribution of the 
-Library. </P>
-<P>If any portion of this section is held invalid or unenforceable 
-under any particular circumstance, the balance of the section is 
-intended to apply, and the section as a whole is intended to apply in 
-other circumstances. </P>
-<P>It is not the purpose of this section to induce you to infringe any 
-patents or other property right claims or to contest validity of any 
-such claims; this section has the sole purpose of protecting the 
-integrity of the free software distribution system which is implemented 
-by public license practices.  Many people have made generous 
-contributions to the wide range of software distributed through that 
-system in reliance on consistent application of that system; it is up 
-to the author/donor to decide if he or she is willing to distribute 
-software through any other system and a licensee cannot impose that 
-choice. </P>
-<P>This section is intended to make thoroughly clear what is believed 
-to be a consequence of the rest of this License. </P>
-<P><STRONG>12.</STRONG> If the distribution and/or use of the Library 
-is restricted in certain countries either by patents or by copyrighted 
-interfaces, the original copyright holder who places the Library under 
-this License may add an explicit geographical distribution limitation 
-excluding those countries, so that distribution is permitted only in or 
-among countries not thus excluded.  In such case, this License 
-incorporates the limitation as if written in the body of this License. </P>
-<P><STRONG>13.</STRONG> The Free Software Foundation may publish 
-revised and/or new versions of the Library General Public License from 
-time to time. Such new versions will be similar in spirit to the 
-present version, but may differ in detail to address new problems or 
-concerns. </P>
-<P>Each version is given a distinguishing version number.  If the 
-Library specifies a version number of this License which applies to it 
-and &quot;any later version&quot;, you have the option of following the terms and 
-conditions either of that version or of any later version published by 
-the Free Software Foundation.  If the Library does not specify a 
-license version number, you may choose any version ever published by 
-the Free Software Foundation. </P>
-<P><STRONG>14.</STRONG> If you wish to incorporate parts of the Library 
-into other free programs whose distribution conditions are incompatible 
-with these, write to the author to ask for permission.  For software 
-which is copyrighted by the Free Software Foundation, write to the Free 
-Software Foundation; we sometimes make exceptions for this.  Our 
-decision will be guided by the two goals of preserving the free status 
-of all derivatives of our free software and of promoting the sharing 
-and reuse of software generally. </P>
+<P><STRONG>8.</STRONG> You may not copy, modify, sublicense, link with,
+ or distribute the Library except as expressly provided under this
+ License. Any attempt otherwise to copy, modify, sublicense, link with,
+ or distribute the Library is void, and will automatically terminate
+ your rights under this License. However, parties who have received
+ copies, or rights, from you under this License will not have their
+ licenses terminated so long as such parties remain in full compliance.</P>
+<P><STRONG>9.</STRONG> You are not required to accept this License,
+ since you have not signed it. However, nothing else grants you
+ permission to modify or distribute the Library or its derivative works.
+ These actions are prohibited by law if you do not accept this License.
+ Therefore, by modifying or distributing the Library (or any work based
+ on the Library), you indicate your acceptance of this License to do so,
+ and all its terms and conditions for copying, distributing or modifying
+ the Library or works based on it.</P>
+<P><STRONG>10.</STRONG> Each time you redistribute the Library (or any
+ work based on the Library), the recipient automatically receives a
+ license from the original licensor to copy, distribute, link with or
+ modify the Library subject to these terms and conditions. You may not
+ impose any further restrictions on the recipients' exercise of the
+ rights granted herein. You are not responsible for enforcing compliance
+ by third parties to this License.</P>
+<P><STRONG>11.</STRONG> If, as a consequence of a court judgment or
+ allegation of patent infringement or for any other reason (not limited
+ to patent issues), conditions are imposed on you (whether by court
+ order, agreement or otherwise) that contradict the conditions of this
+ License, they do not excuse you from the conditions of this License. If
+ you cannot distribute so as to satisfy simultaneously your obligations
+ under this License and any other pertinent obligations, then as a
+ consequence you may not distribute the Library at all. For example, if
+ a patent license would not permit royalty-free redistribution of the
+ Library by all those who receive copies directly or indirectly through
+ you, then the only way you could satisfy both it and this License would
+ be to refrain entirely from distribution of the Library.</P>
+<P>If any portion of this section is held invalid or unenforceable under
+ any particular circumstance, the balance of the section is intended to
+ apply, and the section as a whole is intended to apply in other
+ circumstances.</P>
+<P>It is not the purpose of this section to induce you to infringe any
+ patents or other property right claims or to contest validity of any
+ such claims; this section has the sole purpose of protecting the
+ integrity of the free software distribution system which is implemented
+ by public license practices. Many people have made generous
+ contributions to the wide range of software distributed through that
+ system in reliance on consistent application of that system; it is up
+ to the author/donor to decide if he or she is willing to distribute
+ software through any other system and a licensee cannot impose that
+ choice.</P>
+<P>This section is intended to make thoroughly clear what is believed to
+ be a consequence of the rest of this License.</P>
+<P><STRONG>12.</STRONG> If the distribution and/or use of the Library is
+ restricted in certain countries either by patents or by copyrighted
+ interfaces, the original copyright holder who places the Library under
+ this License may add an explicit geographical distribution limitation
+ excluding those countries, so that distribution is permitted only in or
+ among countries not thus excluded. In such case, this License
+ incorporates the limitation as if written in the body of this License.</P>
+<P><STRONG>13.</STRONG> The Free Software Foundation may publish revised
+ and/or new versions of the Library General Public License from time to
+ time. Such new versions will be similar in spirit to the present
+ version, but may differ in detail to address new problems or concerns.</P>
+<P>Each version is given a distinguishing version number. If the Library
+ specifies a version number of this License which applies to it and &quot;any
+ later version&quot;, you have the option of following the terms and
+ conditions either of that version or of any later version published by
+ the Free Software Foundation. If the Library does not specify a license
+ version number, you may choose any version ever published by the Free
+ Software Foundation.</P>
+<P><STRONG>14.</STRONG> If you wish to incorporate parts of the Library
+ into other free programs whose distribution conditions are incompatible
+ with these, write to the author to ask for permission. For software
+ which is copyrighted by the Free Software Foundation, write to the Free
+ Software Foundation; we sometimes make exceptions for this. Our
+ decision will be guided by the two goals of preserving the free status
+ of all derivatives of our free software and of promoting the sharing
+ and reuse of software generally.</P>
 <P><STRONG>NO WARRANTY</STRONG></P>
-<P><STRONG>15.</STRONG> BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, 
-THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY 
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY &quot;AS IS&quot; WITHOUT 
-WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT 
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
-PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE 
-OF THE LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU 
-ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. </P>
-<P><STRONG>16.</STRONG> IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW 
-OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY 
-WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE 
-LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL 
-OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE 
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING 
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A 
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF 
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 
-DAMAGES. </P>
+<P><STRONG>15.</STRONG> BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE,
+ THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY
+ APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+ HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY &quot;AS IS&quot; WITHOUT
+ WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+ OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU
+ ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.</P>
+<P><STRONG>16.</STRONG> IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR
+ AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO
+ MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE
+ LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL
+ OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+ LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+ RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+ FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+ SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+ DAMAGES.</P>
 <H4>END OF TERMS AND CONDITIONS</H4>
+<H4>How to Apply These Terms to Your New Libraries</H4>
+<P>If you develop a new library, and you want it to be of the greatest
+ possible use to the public, we recommend making it free software that
+ everyone can redistribute and change. You can do so by permitting
+ redistribution under these terms (or, alternatively, under the terms of
+ the ordinary General Public License).</P>
+<P>To apply these terms, attach the following notices to the library. It
+ is safest to attach them to the start of each source file to most
+ effectively convey the exclusion of warranty; and each file should have
+ at least the &quot;copyright&quot; line and a pointer to where the full notice is
+ found.</P>
+<PRE>
+<VAR>one line to give the library's name and an idea of what it does.</VAR>
+Copyright (C) <VAR>year</VAR>  <VAR>name of author</VAR>
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+</PRE>
+<P>Also add information on how to contact you by electronic and paper
+ mail.</P>
+<P>You should also get your employer (if you work as a programmer) or
+ your school, if any, to sign a &quot;copyright disclaimer&quot; for the library,
+ if necessary. Here is a sample; alter the names:</P>
+<PRE>
+Yoyodyne, Inc., hereby disclaims all copyright interest in
+the library `Frob' (a library for tweaking knobs) written
+by James Random Hacker.
+
+<VAR>signature of Ty Coon</VAR>, 1 April 1990
+Ty Coon, President of Vice
+</PRE>
+<P>That's all there is to it!</P>
 <H1 ALIGN="RIGHT"><A NAME="COMMON_NETWORK">B - Common Network Settings</A>
 </H1>
-<P>This appendix covers many of the popular TCP/IP network interfaces 
-and printer servers available on the market today. </P>
+<P>This appendix covers many of the popular TCP/IP network interfaces
+ and printer servers available on the market today.</P>
 <H2><A NAME="10_1">Configuring a Network Interface</A></H2>
-<P>When you first install a network printer or print server on your 
-LAN, you need to set the Internet Protocol (&quot;IP&quot;) address. On most 
-higher-end &quot;workgroup&quot; printers, you can set the address through the 
-printer control panel. However, in most cases you will want to assign 
-the addresses remotely from your workstation. This makes administration 
-a bit easier and avoids assigning duplicate addresses accidentally. </P>
-<P>To setup your printer or print server for remote address assignment, 
-you'll need the Ethernet Media Access Control (&quot;MAC&quot;) address, also 
-sometimes called a node address, and the IP address you want to use for 
-the device. The Ethernet MAC address can often be found on the printer 
-test page or bottom of the print server. 
+<P>When you first install a network printer or print server on your LAN,
+ you need to set the Internet Protocol (&quot;IP&quot;) address. On most
+ higher-end &quot;workgroup&quot; printers, you can set the address through the
+ printer control panel. However, in most cases you will want to assign
+ the addresses remotely from your workstation. This makes administration
+ a bit easier and avoids assigning duplicate addresses accidentally.</P>
+<P>To setup your printer or print server for remote address assignment,
+ you'll need the Ethernet Media Access Control (&quot;MAC&quot;) address, also
+ sometimes called a node address, and the IP address you want to use for
+ the device. The Ethernet MAC address can often be found on the printer
+ test page or bottom of the print server.
 <!-- NEED 3in -->
 </P>
 <H3><A NAME="10_1_1">Configuring the IP Address Using ARP</A></H3>
-<P>The easiest way to set the IP address of a network device is to use 
-the <CODE>arp(8)</CODE> command.  The <CODE>arp</CODE> sends an Address 
-Resolution Protocol (&quot;ARP&quot;) packet to the specified Ethernet MAC 
-address, setting the network device's IP address: </P>
+<P>The easiest way to set the IP address of a network device is to use
+ the <CODE>arp(8)</CODE> command. The <CODE>arp</CODE> sends an Address
+ Resolution Protocol (&quot;ARP&quot;) packet to the specified Ethernet MAC
+ address, setting the network device's IP address:</P>
 <UL>
 <PRE>
 <B>arp -s ip-address ethernet-address ENTER</B>
@@ -3976,50 +5716,50 @@ address, setting the network device's IP address: </P>
 </PRE>
 </UL>
 <H3><A NAME="10_1_2">Configuring the IP Address Using RARP</A></H3>
-<P>The most flexible way to remotely assign IP addresses under UNIX is 
-through the Reverse Address Resolution Protocol (&quot;RARP&quot;). RARP allows a 
-network device to request an IP address using its Ethernet MAC address, 
-and one or more RARP servers on the network will respond with an ARP 
-packet with the IP address the device can use. </P>
-<P>RARP should be used when you have to manage many printers or print 
-servers, or when you have a network device that does not remember its 
-IP address after a power cycle. If you just have a single printer or 
-print server, the <CODE>arp</CODE> command is the way to go. </P>
+<P>The most flexible way to remotely assign IP addresses under UNIX is
+ through the Reverse Address Resolution Protocol (&quot;RARP&quot;). RARP allows a
+ network device to request an IP address using its Ethernet MAC address,
+ and one or more RARP servers on the network will respond with an ARP
+ packet with the IP address the device can use.</P>
+<P>RARP should be used when you have to manage many printers or print
+ servers, or when you have a network device that does not remember its
+ IP address after a power cycle. If you just have a single printer or
+ print server, the <CODE>arp</CODE> command is the way to go.</P>
 <P>Some UNIX operating systems use a program called <CODE>rarpd(8)</CODE>
- to manage RARP. Others, like Linux, support this protocol in the 
-kernel. For systems that provide the <CODE>rarpd</CODE> program you 
-will need to start it before RARP lookups will work: </P>
+ to manage RARP. Others, like Linux, support this protocol in the
+ kernel. For systems that provide the <CODE>rarpd</CODE> program you
+ will need to start it before RARP lookups will work:</P>
 <UL>
 <PRE>
 <B>rarpd ENTER</B>
 </PRE>
 </UL>
-<P>Under IRIX you can enable this functionality by default using: </P>
+<P>Under IRIX you can enable this functionality by default using:</P>
 <UL>
 <PRE>
 <B>chkconfig rarpd on ENTER</B>
 </PRE>
 </UL>
-<P>Both the <CODE>rarpd</CODE> program and kernel RARP support read a 
-list of Ethernet and IP addresses from the file <VAR>/etc/ethers</VAR>. 
-Each line contains the Ethernet address (colon delimited) followed by 
-an IP address or hostname like: </P>
+<P>Both the <CODE>rarpd</CODE> program and kernel RARP support read a
+ list of Ethernet and IP addresses from the file<VAR> /etc/ethers</VAR>.
+ Each line contains the Ethernet address (colon delimited) followed by
+ an IP address or hostname like:</P>
 <UL>
 <PRE>
 08:00:69:00:12:34 myprinter.mydomain.com
 08:00:69:00:12:34 192.0.2.2
 </PRE>
 </UL>
-<P>Add a line to this file and cycle the power on the printer or print 
-server to set its address. 
+<P>Add a line to this file and cycle the power on the printer or print
+ server to set its address.
 <!-- NEED 2in -->
 </P>
 <H3><A NAME="10_1_3">Configuring the IP Address Using BOOTP</A></H3>
-<P>The BOOTP protocol is used when you need to provide additional 
-information such as the location of a configuration file to the network 
-interface. Using the standard <CODE>bootpd(8)</CODE> program supplied 
-with UNIX you simply need to add a line to the <VAR>/etc/bootptab</VAR>
- file; for IRIX: </P>
+<P>The BOOTP protocol is used when you need to provide additional
+ information such as the location of a configuration file to the network
+ interface. Using the standard <CODE>bootpd(8)</CODE> program supplied
+ with UNIX you simply need to add a line to the<VAR> /etc/bootptab</VAR>
+ file; for IRIX:</P>
 <UL>
 <PRE>
 myprinter 08:00:69:00:12:34 192.0.2.2 <VAR>myprinter.boot</VAR>
@@ -4027,36 +5767,35 @@ myprinter 08:00:69:00:12:34 192.0.2.2 <VAR>myprinter.boot</VAR>
 </UL>
 
 <!-- NEED 1in -->
-<P>Newer versions of <CODE>bootpd</CODE> use a different format: </P>
+<P>Newer versions of <CODE>bootpd</CODE> use a different format:</P>
 <UL>
 <PRE>
 myprinter:ha=080069001234:ip=192.0.2.2:<VAR>t144=myprinter.boot</VAR>
 </PRE>
 </UL>
-<P>The <VAR>myprinter.boot</VAR> file resides in the <VAR>
-/usr/local/boot</VAR> directory by default. If you do not need to 
-provide a boot file you may leave the last part of the line blank. 
-<!-- NEED 2in -->
+<P>The<VAR> myprinter.boot</VAR> file resides in the<VAR>
+ /usr/local/boot</VAR> directory by default. If you do not need to
+ provide a boot file you may leave the last part of the line blank.</P>
 
+<!-- NEED 2in -->
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> NOTE:</B>
-<P>Some versions of UNIX do not enable the BOOTP service by  default. 
-The <VAR>/etc/inetd.conf</VAR> usually contains a  line for the BOOTP 
-service that can be uncommented if  needed. </P>
+<P>Some versions of UNIX do not enable the BOOTP service by default. The<VAR>
+ /etc/inetd.conf</VAR> usually contains a line for the BOOTP service
+ that can be uncommented if needed.</P>
 </TD></TR>
 </TABLE>
 </CENTER>
-</P>
 <H2><A NAME="10_2">Verifying the Printer Connection</A></H2>
-<P>To test that the IP address has been successfully assigned and that 
-the printer is properly connected to your LAN, type: </P>
+<P>To test that the IP address has been successfully assigned and that
+ the printer is properly connected to your LAN, type:</P>
 <UL>
 <PRE>
 <B>ping ip-address ENTER</B>
 </PRE>
 </UL>
-<P>If the connection is working properly you will see something like: </P>
+<P>If the connection is working properly you will see something like:</P>
 <UL>
 <PRE>
 <B>ping myprinter ENTER</B>
@@ -4067,27 +5806,27 @@ PING myprinter (192.0.2.2): 56 data bytes
 64 bytes from 192.0.2.2: icmp_seq=3 ttl=15 time=3 ms
 </PRE>
 </UL>
-<P>If not, verify that the printer or print server is connected to the 
-LAN, it is powered on, the LAN cabling is good, and the IP address is 
-set correctly. You can usually see the current IP address and network 
-status by printing a configuration or test page on the device. 
+<P>If not, verify that the printer or print server is connected to the
+ LAN, it is powered on, the LAN cabling is good, and the IP address is
+ set correctly. You can usually see the current IP address and network
+ status by printing a configuration or test page on the device.
 <!-- NEED 4in -->
 </P>
 <H2><A NAME="10_3">Common Network Interface Settings</A></H2>
-<P>Once you have set the IP address you can access the printer or print 
-server using the <CODE>ipp</CODE>, <CODE>lpd</CODE>, or <CODE>socket</CODE>
- backends. The following is a list of common network interfaces and 
-printer servers and the settings you should use with CUPS: 
+<P>Once you have set the IP address you can access the printer or print
+ server using the <CODE>ipp</CODE>, <CODE>lpd</CODE>, or <CODE>socket</CODE>
+ backends. The following is a list of common network interfaces and
+ printer servers and the settings you should use with CUPS:
 <CENTER>
 <TABLE BORDER="1">
-<TR ALIGN="LEFT" VALIGN="TOP"><TH>Model/Manufacturer</TH><TH>Device 
-URI(s)</TH></TR>
+<TR ALIGN="LEFT" VALIGN="TOP"><TH>Model/Manufacturer</TH><TH>Device
+ URI(s)</TH></TR>
 <TR ALIGN="LEFT" VALIGN="TOP"><TD>Apple LaserWriter</TD><TD>lpd://<I>
 address</I>/PASSTHRU</TD></TR>
 
 <!-- NEED 1in -->
 <TR ALIGN="LEFT" VALIGN="TOP"><TD>Axis w/o IPP
-<BR><A HREF="#AXIS"> (see directions)</A></TD><TD>socket://<I>address</I>
+<BR> <A HREF="#AXIS">(see directions)</A></TD><TD>socket://<I>address</I>
 :9100
 <BR> socket://<I>address</I>:9101
 <BR> socket://<I>address</I>:9102</TD></TR>
@@ -4111,8 +5850,8 @@ lpd://<I>address</I>/pr1
 <BR> lpd://<I>address</I>/pr3</TD></TR>
 <TR ALIGN="LEFT" VALIGN="TOP"><TD>EFI&reg; Fiery&reg; RIP</TD><TD>lpd://<I>
 address</I>/print</TD></TR>
-<TR ALIGN="LEFT" VALIGN="TOP"><TD>EPSON&reg; Multiprotocol Ethernet 
-Interface Board</TD><TD>socket://<I>address</I></TD></TR>
+<TR ALIGN="LEFT" VALIGN="TOP"><TD>EPSON&reg; Multiprotocol Ethernet
+ Interface Board</TD><TD>socket://<I>address</I></TD></TR>
 
 <!-- NEED 1in -->
 <TR ALIGN="LEFT" VALIGN="TOP"><TD>Extended System ExtendNET</TD><TD>
@@ -4143,7 +5882,7 @@ lpd://<I>address</I>/ps</TD></TR>
 
 <!-- NEED 1in -->
 <TR ALIGN="LEFT" VALIGN="TOP"><TD>Linksys EtherFast&reg;
-<BR><A HREF="#LINKSYS"> (see directions)</A></TD><TD>socket://<I>address</I>
+<BR> <A HREF="#LINKSYS">(see directions)</A></TD><TD>socket://<I>address</I>
 :4010
 <BR> socket://<I>address</I>:4020
 <BR> socket://<I>address</I>:4030</TD></TR>
@@ -4163,16 +5902,16 @@ address</I>:5503</TD></TR>
 </CENTER>
 </P>
 <H2><A NAME="AXIS">Configuring Axis Print Servers</A></H2>
-<P>The Axis print servers can be configured using ARP, RARP, or BOOTP. 
-However, on models that do not provide IPP support an additional step 
-must be performed to configure the TCP/IP portion of the print server 
-for use with CUPS. 
+<P>The Axis print servers can be configured using ARP, RARP, or BOOTP.
+ However, on models that do not provide IPP support an additional step
+ must be performed to configure the TCP/IP portion of the print server
+ for use with CUPS.
 <!-- NEED 3in -->
 </P>
-<P>Each print server contains a configuration file named <VAR>config</VAR>
- that contains a list of network parameters used by the server. To 
-modify this file you must first download it from the print server using 
-the <CODE>ftp(1)</CODE> program: </P>
+<P>Each print server contains a configuration file named<VAR> config</VAR>
+ that contains a list of network parameters used by the server. To
+ modify this file you must first download it from the print server using
+ the <CODE>ftp(1)</CODE> program:</P>
 <UL>
 <PRE>
 <B>ftp ip-address ENTER</B>
@@ -4195,8 +5934,8 @@ ftp&gt; <B>quit ENTER</B>
 </UL>
 
 <!-- NEED 2in -->
-<P>Next, edit the file with your favorite text editor and locate the 
-lines beginning with: </P>
+<P>Next, edit the file with your favorite text editor and locate the
+ lines beginning with:</P>
 <UL>
 <PRE>
 RTN_OPT.     : YES
@@ -4212,7 +5951,7 @@ RTEL_PR8.    : 0
 </UL>
 
 <!-- NEED 1in -->
- Change the <CODE>RTN_OPT</CODE> line to read: 
+ Change the <CODE>RTN_OPT</CODE> line to read:
 <UL>
 <PRE>
 RTN_OPT.     : <B>NO</B>
@@ -4220,9 +5959,9 @@ RTN_OPT.     : <B>NO</B>
 </UL>
 
 <!-- NEED 2in -->
-<P>This disables the Reverse TELNET protocol and enables the standard 
-TELNET protocol on the print server. Next, assign a port number for 
-each parallel and serial port on the server as follows: </P>
+<P>This disables the Reverse TELNET protocol and enables the standard
+ TELNET protocol on the print server. Next, assign a port number for
+ each parallel and serial port on the server as follows:</P>
 <UL>
 <PRE>
 RTEL_PR1.    : <B>9100</B>
@@ -4237,9 +5976,9 @@ RTEL_PR8.    : <B>9107</B>
 </UL>
 
 <!-- NEED 4in -->
-<P>This essentially makes the Axis print server look like a Hewlett 
-Packard JetDirect EX print server. Save the file and then upload the 
-new <VAR>config</VAR> file using the <CODE>ftp</CODE> command: </P>
+<P>This essentially makes the Axis print server look like a Hewlett
+ Packard JetDirect EX print server. Save the file and then upload the
+ new<VAR> config</VAR> file using the <CODE>ftp</CODE> command:</P>
 <UL>
 <PRE>
 <B>ftp ip-address ENTER</B>
@@ -4263,18 +6002,18 @@ ftp&gt; <B>quit ENTER</B>
 221 Goodbye.
 </PRE>
 </UL>
-<P>Your Axis print server is now ready for use! </P>
+<P>Your Axis print server is now ready for use!</P>
 <H2><A NAME="LINKSYS">Configuring Linksys Print Servers</A></H2>
-<P>The Linksys print servers can be configured using ARP, RARP, or 
-BOOTP. Like older Axis print servers, an additional step must be 
-performed to configure the TCP/IP portion of the print server for use 
-with CUPS. 
+<P>The Linksys print servers can be configured using ARP, RARP, or
+ BOOTP. Like older Axis print servers, an additional step must be
+ performed to configure the TCP/IP portion of the print server for use
+ with CUPS.
 <!-- NEED 3in -->
 </P>
-<P>Each print server contains a configuration file named <VAR>CONFIG</VAR>
- that contains a list of network parameters used by the server. To 
-modify this file you must first download it from the print server using 
-the <CODE>ftp(1)</CODE> program: </P>
+<P>Each print server contains a configuration file named<VAR> CONFIG</VAR>
+ that contains a list of network parameters used by the server. To
+ modify this file you must first download it from the print server using
+ the <CODE>ftp(1)</CODE> program:</P>
 <UL>
 <PRE>
 <B>ftp -n ip-address ENTER</B>
@@ -4295,8 +6034,8 @@ ftp&gt; <B>quit ENTER</B>
 </UL>
 
 <!-- NEED 2in -->
-<P>Next, edit the file with your favorite text editor and locate the 
-lines beginning with: </P>
+<P>Next, edit the file with your favorite text editor and locate the
+ lines beginning with:</P>
 <UL>
 <PRE>
 0100 L1_PROUT:P1
@@ -4304,8 +6043,8 @@ lines beginning with: </P>
 0140 L3_PROUT:P1
 </PRE>
 </UL>
-<P>Change the port number for each parallel and serial port on the 
-server as follows: </P>
+<P>Change the port number for each parallel and serial port on the
+ server as follows:</P>
 <UL>
 <PRE>
 0100 L1_PROUT:<B>P1</B>
@@ -4315,9 +6054,9 @@ server as follows: </P>
 </UL>
 
 <!-- NEED 4in -->
-<P>This maps each virtual printer with a physical port. Save the file 
-and then upload the new <VAR>CONFIG</VAR> file using the <CODE>ftp</CODE>
- command: </P>
+<P>This maps each virtual printer with a physical port. Save the file
+ and then upload the new<VAR> CONFIG</VAR> file using the <CODE>ftp</CODE>
+ command:</P>
 <UL>
 <PRE>
 <B>ftp -n ip-address ENTER</B>
@@ -4334,96 +6073,179 @@ ftp&gt; <B>quit ENTER</B>
 221 Goodbye.
 </PRE>
 </UL>
-<P>Your Linksys print server is now ready for use! </P>
+<P>Your Linksys print server is now ready for use!</P>
+<H2><A NAME="LPD_OPTIONS">Configuring LPD Printing Options</A></H2>
+<P>The LPD backend supports several options which are included in the
+ device URI, e.g.:</P>
+<PRE>
+    lpd://server/name?option1=value1+option2=value2+...+optionN=valueN
+</PRE>
+<P>The following table summarizes the options and values that are
+ supported:
+<!-- NEED 9in -->
+<CENTER>
+<TABLE BORDER="1" WIDTH="80%">
+<TR><TH>Option=Value</TH><TH>Description</TH></TR>
+<TR><TD>banner=off
+<BR> banner=no
+<BR> banner=false</TD><TD VALIGN="TOP">Does not request a LPD banner
+ page for the job. (Default)</TD></TR>
+<TR><TD>banner=on
+<BR> banner=yes
+<BR> banner=true</TD><TD VALIGN="TOP">Requests a LPD banner page for the
+ job.</TD></TR>
+<TR><TD>format=c
+<BR> format=d
+<BR> format=f
+<BR> format=g
+<BR> format=l
+<BR> format=n
+<BR> format=o
+<BR> format=p
+<BR> format=r
+<BR> format=t
+<BR> format=v</TD><TD VALIGN="TOP">Specifies the LPD format code of the
+ print job. &quot;format=l&quot; is raw output, while &quot;format=o&quot; is PostScript.
+ (Default is &quot;format=l&quot; for raw output)</TD></TR>
+<TR><TD>manual_copies=off
+<BR> manual_copies=no
+<BR> manual_copies=false</TD><TD VALIGN="TOP">Specifies that the backend
+ should not send multiple copies of a print job in the print data file.</TD>
+</TR>
+<TR><TD>manual_copies=on
+<BR> manual_copies=yes
+<BR> manual_copies=true</TD><TD VALIGN="TOP">Specifies that the backend
+ should send multiple copies of a print job in the print data file to
+ print more than one copy. (Default)</TD></TR>
+<TR><TD>order=control,data</TD><TD VALIGN="TOP">Specifies that the LPD
+ control file should be sent before the print data file. (Default)</TD></TR>
+<TR><TD>order=data,control=</TD><TD VALIGN="TOP">Specifies that the
+ print data file should be sent before the LPD control file.</TD></TR>
+<TR><TD>reserve=off
+<BR> reserve=no
+<BR> reserve=false</TD><TD VALIGN="TOP">Specifies that the backend
+ should not reserve a priviledged source port as required by RFC 1179.</TD>
+</TR>
+<TR><TD>reserve=on
+<BR> reserve=yes
+<BR> reserve=true
+<BR> reserve=rfc1179</TD><TD VALIGN="TOP">Specifies that the backend
+ should reserve a priviledges source port from 721 to 731 inclusive as
+ required by RFC 1179. This option may cause reduced printing
+ performance when more than 11 LPD printers are defined on the server
+ due to port contention issues.</TD></TR>
+<TR><TD>reserve=any</TD><TD VALIGN="TOP">Specifies that the backend
+ should reserve a priviledges source port from 1 to 1023 inclusive. This
+ often works with LPD implementations that require a priviledged source
+ port but do not limit it to the range defined by RFC 1179, allowing for
+ more printers to be active at the same time. (Default)</TD></TR>
+<TR><TD>sanitize_title=off
+<BR> sanitize_title=no
+<BR> sanitize_title=false</TD><TD VALIGN="TOP">Specifies that the
+ backend should not sanitize the job title string. (Default on OSX)</TD></TR>
+<TR><TD>sanitize_title=on
+<BR> sanitize_title=yes
+<BR> sanitize_title=true</TD><TD VALIGN="TOP">Specifies that the backend
+ should sanitize the job title string. (Default on all but OSX)</TD></TR>
+<TR><TD>timeout=N</TD><TD VALIGN="TOP">Specifies the response timeout
+ for all LPD commands and transactions in seconds. (Default is 300
+ seconds)</TD></TR>
+</TABLE>
+</CENTER>
+</P>
 <H1 ALIGN="RIGHT"><A NAME="PRINTER_DRIVERS">C - Printer Drivers</A></H1>
-<P>This appendix lists the printer drivers that are provided with CUPS. </P>
+<P>This appendix lists the printer drivers that are provided with CUPS.</P>
 <H2><A NAME="11_1">Printer Drivers</A></H2>
-<P>CUPS includes the following printer drivers: </P>
+<P>CUPS includes the following printer drivers:</P>
 <UL>
-<LI><A HREF="#EPSON9">EPSON 9-pin Dot Matrix</A>, <VAR>epson9.ppd</VAR></LI>
-<LI><A HREF="#EPSON24">EPSON 24-pin Dot Matrix</A>, <VAR>epson24.ppd</VAR>
+<LI><A HREF="#DYMO">DYMO Label Printer</A>,<VAR> dymo.ppd</VAR></LI>
+<LI><A HREF="#EPSON9">EPSON 9-pin Dot Matrix</A>,<VAR> epson9.ppd</VAR></LI>
+<LI><A HREF="#EPSON24">EPSON 24-pin Dot Matrix</A>,<VAR> epson24.ppd</VAR>
 </LI>
-<LI><A HREF="#STCOLOR">EPSON Stylus Color</A>, <VAR>stcolor.ppd</VAR></LI>
-<LI><A HREF="#STPHOTO">EPSON Stylus Photo</A>, <VAR>stphoto.ppd</VAR></LI>
-<LI><A HREF="#DESKJET">HP DeskJet</A>, <VAR>deskjet.ppd</VAR></LI>
-<LI><A HREF="#LASERJET">HP LaserJet</A>, <VAR>laserjet.ppd</VAR></LI>
-</UL>
+<LI><A HREF="#STCOLOR">EPSON Stylus Color</A>,<VAR> stcolor.ppd</VAR></LI>
+<LI><A HREF="#STPHOTO">EPSON Stylus Photo</A>,<VAR> stphoto.ppd</VAR></LI>
+<LI><A HREF="#DESKJET">HP DeskJet</A>,<VAR> deskjet.ppd</VAR></LI>
+<LI><A HREF="#LASERJET">HP LaserJet</A>,<VAR> laserjet.ppd</VAR></LI>
+</UL>
+<H2><A NAME="DYMO">DYMO Label Printer</A></H2>
+<P>The DYMO Label Printer driver (<VAR>dymo.ppd</VAR>) supports the DYMO
+ LabelWriter 300 series (300/310/315/320/330/330 Turbo) thermal label
+ printers. It provides 136, 203, and 300 DPI output in black only.</P>
 <H2><A NAME="EPSON9">EPSON 9-pin Dot Matrix</A></H2>
-<P>The EPSON 9-pin Dot Matrix driver (<VAR>epson9.ppd</VAR>) supports 
-9-pin dot matrix printers that implement the ESC/P command set. It 
-provides 60x72, 120x72, and 240x72 DPI output in black only. </P>
+<P>The EPSON 9-pin Dot Matrix driver (<VAR>epson9.ppd</VAR>) supports
+ 9-pin dot matrix printers that implement the ESC/P command set. It
+ provides 60x72, 120x72, and 240x72 DPI output in black only.</P>
 <H2><A NAME="EPSON24">EPSON 24-pin Dot Matrix</A></H2>
-<P>The EPSON 24-pin Dot Matrix driver (<VAR>epson9.ppd</VAR>) supports 
-24-pin dot matrix printers that implement the ESC/P command set. It 
-provides 120x180, 180x180, 360x180, and 360x360 DPI output in black 
-only. </P>
+<P>The EPSON 24-pin Dot Matrix driver (<VAR>epson9.ppd</VAR>) supports
+ 24-pin dot matrix printers that implement the ESC/P command set. It
+ provides 120x180, 180x180, 360x180, and 360x360 DPI output in black
+ only.</P>
 <H2><A NAME="STCOLOR">EPSON Stylus Color</A></H2>
-<P>The EPSON Stylus Color driver (<VAR>stcolor.ppd</VAR>) supports 
-EPSON Stylus Color printers that implement the ESC/P2 command set. It 
-provides 180, 360, and 720 DPI output in black and color (CMYK). </P>
+<P>The EPSON Stylus Color driver (<VAR>stcolor.ppd</VAR>) supports EPSON
+ Stylus Color printers that implement the ESC/P2 command set. It
+ provides 180, 360, and 720 DPI output in black and color (CMYK).</P>
 <H2><A NAME="STPHOTO">EPSON Stylus Photo</A></H2>
-<P>The EPSON Stylus Photo driver (<VAR>stphoto.ppd</VAR>) supports 
-EPSON Stylus Photo printers that implement the ESC/P2 command set. It 
-provides 180, 360, and 720 DPI output in black and color (CMYKcm). </P>
+<P>The EPSON Stylus Photo driver (<VAR>stphoto.ppd</VAR>) supports EPSON
+ Stylus Photo printers that implement the ESC/P2 command set. It
+ provides 180, 360, and 720 DPI output in black and color (CMYKcm).</P>
 <H2><A NAME="DESKJET">HP DeskJet</A></H2>
-<P>The HP DeskJet driver (<VAR>deskjet.ppd</VAR>) supports HP DeskJet 
-printers that implement the PCL command set. It provides 150, 300, and 
-600 DPI output in black and color (CMYK). </P>
-<P>The DeskJet printers that implement the HP-PPA command set (720C, 
-722C, 820C, and 1100C) are <B>not</B> supported due to a complete lack 
-of documentation and support from Hewlett Packard. </P>
-<P>The duplexer provided with the HP DeskJet 900 series printers is 
-also not supported for similar reasons. </P>
+<P>The HP DeskJet driver (<VAR>deskjet.ppd</VAR>) supports HP DeskJet
+ printers that implement the PCL command set. It provides 150, 300, and
+ 600 DPI output in black and color (CMYK).</P>
+<P>The DeskJet printers that implement the HP-PPA command set (720C,
+ 722C, 820C, and 1100C) are<B> not</B> supported due to a complete lack
+ of documentation and support from Hewlett Packard.</P>
+<P>The duplexer provided with the HP DeskJet 900 series printers is also
+ not supported for similar reasons.</P>
 <H2><A NAME="LASERJET">HP LaserJet</A></H2>
-<P>The HP LaserJet driver (<VAR>laserjet.ppd</VAR>) supports HP 
-LaserJet printers that implement the PCL command set. It provides 150, 
-300, and 600 DPI output in black only and supports the duplexer if 
-installed. </P>
-<P>LaserJet printers that do not implement PCL (3100, 3150) are not 
-supported due to a complete lack of documentation and support from 
-Hewlett Packard. </P>
+<P>The HP LaserJet driver (<VAR>laserjet.ppd</VAR>) supports HP LaserJet
+ printers that implement the PCL command set. It provides 150, 300, and
+ 600 DPI output in black only and supports the duplexer if installed.</P>
+<P>LaserJet printers that do not implement PCL (3100, 3150) are not
+ supported due to a complete lack of documentation and support from
+ Hewlett Packard.</P>
 <H1 ALIGN="RIGHT"><A NAME="FILES">D - List of Files</A></H1>
-<P>This appendix lists the files and directories that are installed for 
-the Common UNIX Printing System. 
+<P>This appendix lists the files and directories that are installed for
+ the Common UNIX Printing System.
 <CENTER>
 <TABLE BORDER="1" WIDTH="80%">
 <TR VALIGN="TOP"><TH>Pathname</TH><TH>Description</TH></TR>
-<TR VALIGN="TOP"><TD>/etc/cups/certs/</TD><TD>The location of 
-authentication certificate files for local  HTTP clients.</TD></TR>
-<TR VALIGN="TOP"><TD>/etc/cups/classes.conf</TD><TD>The printer classes 
-configuration file for the scheduler.</TD></TR>
-<TR VALIGN="TOP"><TD>/etc/cups/cupsd.conf</TD><TD>The scheduler 
-configuration file.</TD></TR>
-<TR VALIGN="TOP"><TD>/etc/cups/interfaces/</TD><TD>The location of 
-System V interface scripts for printers.</TD></TR>
-<TR VALIGN="TOP"><TD>/etc/cups/mime.convs</TD><TD>The list of standard 
-file filters included with ESP Print Pro.</TD></TR>
-<TR VALIGN="TOP"><TD>/etc/cups/mime.types</TD><TD>The list of 
-recognized file types for ESP Print Pro.</TD></TR>
-<TR VALIGN="TOP"><TD>/etc/cups/ppd/</TD><TD>The location of PostScript 
-Printer Description (&quot;PPD&quot;) files for  printers.</TD></TR>
-<TR VALIGN="TOP"><TD>/etc/cups/printers.conf</TD><TD>The printer 
-configuration file for the scheduler.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/bin/cancel</TD><TD>The System V cancel job(s) 
-command.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/bin/disable</TD><TD>The System V disable 
-printer command.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/bin/enable</TD><TD>The System V enable 
-printer command.</TD></TR>
+<TR VALIGN="TOP"><TD>/etc/cups/certs/</TD><TD>The location of
+ authentication certificate files for local HTTP clients.</TD></TR>
+<TR VALIGN="TOP"><TD>/etc/cups/classes.conf</TD><TD>The printer classes
+ configuration file for the scheduler.</TD></TR>
+<TR VALIGN="TOP"><TD>/etc/cups/cupsd.conf</TD><TD>The scheduler
+ configuration file.</TD></TR>
+<TR VALIGN="TOP"><TD>/etc/cups/interfaces/</TD><TD>The location of
+ System V interface scripts for printers.</TD></TR>
+<TR VALIGN="TOP"><TD>/etc/cups/mime.convs</TD><TD>The list of standard
+ file filters included with CUPS.</TD></TR>
+<TR VALIGN="TOP"><TD>/etc/cups/mime.types</TD><TD>The list of recognized
+ file types for CUPS.</TD></TR>
+<TR VALIGN="TOP"><TD>/etc/cups/ppd/</TD><TD>The location of PostScript
+ Printer Description (&quot;PPD&quot;) files for printers.</TD></TR>
+<TR VALIGN="TOP"><TD>/etc/cups/printers.conf</TD><TD>The printer
+ configuration file for the scheduler.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/bin/cancel</TD><TD>The System V cancel job(s)
+ command.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/bin/disable</TD><TD>The System V disable
+ printer command.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/bin/enable</TD><TD>The System V enable printer
+ command.</TD></TR>
 <TR VALIGN="TOP"><TD>/usr/bin/lp</TD><TD>The System V print command.</TD>
 </TR>
-<TR VALIGN="TOP"><TD>/usr/bin/lpoptions</TD><TD>Sets user-defined 
-printing options and defaults.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/bin/lppasswd</TD><TD>Adds, changes, or 
-removes Digest password accounts.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/bin/lpoptions</TD><TD>Sets user-defined
+ printing options and defaults.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/bin/lppasswd</TD><TD>Adds, changes, or removes
+ Digest password accounts.</TD></TR>
 <TR VALIGN="TOP"><TD>/usr/bin/lpq</TD><TD>The Berkeley status command.</TD>
 </TR>
 <TR VALIGN="TOP"><TD>/usr/bin/lpr</TD><TD>The Berkeley print command.</TD>
 </TR>
-<TR VALIGN="TOP"><TD>/usr/bin/lprm</TD><TD>The Berkeley cancel job(s) 
-command.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/bin/lpstat</TD><TD>The System V status 
-command.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/bin/lprm</TD><TD>The Berkeley cancel job(s)
+ command.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/bin/lpstat</TD><TD>The System V status
+ command.</TD></TR>
 <TR VALIGN="TOP"><TD>/usr/include/cups/</TD><TD>CUPS API header files.</TD>
 </TR>
 <TR VALIGN="TOP"><TD>/usr/lib32/libcups.a
@@ -4438,118 +6260,126 @@ command.</TD></TR>
 <TR VALIGN="TOP"><TD>/usr/lib/libcups.so.2
 <BR> /usr/lib/libcupsimage.so.2</TD><TD>Shared libraries (all others)</TD>
 </TR>
-<TR VALIGN="TOP"><TD>/usr/lib/cups/backend/</TD><TD>Backends for 
-various types of printer connections.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/lib/cups/cgi-bin/</TD><TD>CGI programs for 
-the scheduler.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/lib/cups/daemon/</TD><TD>Daemons for polling 
-and LPD support.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/lib/cups/filter/</TD><TD>Filters for various 
-types of files.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/lib/locale/</TD><TD>The location of 
-language-specific message files. (System V)</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/lib/nls/msg/</TD><TD>The location of 
-language-specific message files. (Compaq Tru64 UNIX)</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/share/locale/</TD><TD>The location of 
-language-specific message files. (Linux, *BSD)</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/libexec/cups/backend/</TD><TD>Backends for
+ various types of printer connections (*BSD and OSX)</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/lib/cups/backend/</TD><TD>Backends for various
+ types of printer connections (all others)</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/libexec/cups/cgi-bin/</TD><TD>CGI programs for
+ the scheduler (*BSD and OSX)</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/lib/cups/cgi-bin/</TD><TD>CGI programs for the
+ scheduler (all others)</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/libexec/cups/daemon/</TD><TD>Daemons for
+ polling and LPD support (*BSD and OSX)</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/lib/cups/daemon/</TD><TD>Daemons for polling
+ and LPD support (all others)</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/libexec/cups/filter/</TD><TD>Filters for
+ various types of files (*BSD and OSX)</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/lib/cups/filter/</TD><TD>Filters for various
+ types of files (all others)</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/lib/locale/</TD><TD>The location of
+ language-specific message files. (System V)</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/lib/nls/msg/</TD><TD>The location of
+ language-specific message files. (Compaq Tru64 UNIX)</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/share/locale/</TD><TD>The location of
+ language-specific message files. (Linux, *BSD)</TD></TR>
 <TR VALIGN="TOP"><TD>/usr/sbin/accept</TD><TD>The accept-jobs command.</TD>
 </TR>
 <TR VALIGN="TOP"><TD>/usr/sbin/cupsd</TD><TD>The CUPS print scheduler.</TD>
 </TR>
-<TR VALIGN="TOP"><TD>/usr/sbin/lpadmin</TD><TD>The System V printer 
-administration tool.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/sbin/lpc</TD><TD>The Berkeley printer 
-administration tool.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/sbin/lpinfo</TD><TD>The get-devices and 
-get-ppds command.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/sbin/lpadmin</TD><TD>The System V printer
+ administration tool.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/sbin/lpc</TD><TD>The Berkeley printer
+ administration tool.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/sbin/lpinfo</TD><TD>The get-devices and
+ get-ppds command.</TD></TR>
 <TR VALIGN="TOP"><TD>/usr/sbin/lpmove</TD><TD>The move-jobs command.</TD>
 </TR>
 <TR VALIGN="TOP"><TD>/usr/sbin/reject</TD><TD>The reject-jobs command.</TD>
 </TR>
 <TR VALIGN="TOP"><TD>/usr/share/catman/a_man/
 <BR> /usr/share/catman/u_man/</TD><TD>Man pages (IRIX)</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/share/man/</TD><TD>Man pages (Compaq Tru64 
-UNIX, HP-UX, Solaris)</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/share/man/</TD><TD>Man pages (Compaq Tru64
+ UNIX, HP-UX, Solaris)</TD></TR>
 <TR VALIGN="TOP"><TD>/usr/man/</TD><TD>Man pages (all others)</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/share/cups/data/</TD><TD>The location of 
-filter data files.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/share/cups/data/testprint.ps</TD><TD>The 
-PostScript test page file.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/share/cups/fonts/</TD><TD>The location of 
-PostScript fonts for the PostScript RIP.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/share/cups/model/</TD><TD>The location of 
-PostScript Printer Description (&quot;PPD&quot;) files and  interface scripts 
-that may be used to setup a printer queue.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/share/cups/pstoraster/</TD><TD>Other 
-PostScript RIP initialization files.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/share/cups/pstoraster/Fontmap</TD><TD>The 
-font mapping file (converts filenames to fontnames)</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/share/cups/templates/</TD><TD>The location of 
-HTML template files for the web interfaces.</TD></TR>
-<TR VALIGN="TOP"><TD>/usr/share/doc/cups/</TD><TD>Documentation and web 
-page data for the scheduler.</TD></TR>
-<TR VALIGN="TOP"><TD>/var/log/cups/</TD><TD>The location of scheduler 
-log files.</TD></TR>
-<TR VALIGN="TOP"><TD>/var/spool/cups/</TD><TD>The location of print 
-files waiting to be printed.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/share/cups/data/</TD><TD>The location of
+ filter data files.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/share/cups/data/testprint.ps</TD><TD>The
+ PostScript test page file.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/share/cups/fonts/</TD><TD>The location of
+ PostScript fonts for the PostScript RIP.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/share/cups/model/</TD><TD>The location of
+ PostScript Printer Description (&quot;PPD&quot;) files and interface scripts that
+ may be used to setup a printer queue.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/share/cups/pstoraster/</TD><TD>Other
+ PostScript RIP initialization files.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/share/cups/pstoraster/Fontmap</TD><TD>The font
+ mapping file (converts filenames to fontnames)</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/share/cups/templates/</TD><TD>The location of
+ HTML template files for the web interfaces.</TD></TR>
+<TR VALIGN="TOP"><TD>/usr/share/doc/cups/</TD><TD>Documentation and web
+ page data for the scheduler.</TD></TR>
+<TR VALIGN="TOP"><TD>/var/log/cups/</TD><TD>The location of scheduler
+ log files.</TD></TR>
+<TR VALIGN="TOP"><TD>/var/spool/cups/</TD><TD>The location of print
+ files waiting to be printed.</TD></TR>
 </TABLE>
 </CENTER>
 </P>
 <H1 ALIGN="RIGHT"><A NAME="FAQ">E - Troubleshooting Common Problems</A></H1>
-<P>This appendix covers some of the common problems first-time users 
-encounter when installing and configuring CUPS. </P>
-<P>Commercial support for CUPS is available from Easy Software 
-Products. For more information please contact us at: </P>
+<P>This appendix covers some of the common problems first-time users
+ encounter when installing and configuring CUPS.</P>
+<P>Commercial support for CUPS is available from Easy Software Products.
+ For more information please contact us at:</P>
 <UL>
-<LI>WWW: <A HREF="http://www.easysw.com"><CODE> http://www.easysw.com</CODE>
-</A></LI>
+<LI>WWW: <A HREF="http://www.easysw.com/cups/"> <CODE>
+http://www.easysw.com/cups/</CODE></A></LI>
 <LI>EMail: <A HREF="mailto:info@easysw.com">info@easysw.com</A></LI>
-<LI>Telephone (M-F, 9-5 EST): +1.301.373.9600 </LI>
+<LI>Telephone (M-F, 9-5 EST): +1.301.373.9600</LI>
 </UL>
 <H2><A NAME="13_1">My Applications Don't See the Available Printers</A></H2>
-<P>Many applications read the <VAR>/etc/printcap</VAR> file to get a 
-list of available printers. </P>
-<P>The default CUPS configuration does not create the <VAR>/etc/printcap</VAR>
- file automatically. To enable automatic creation and updating of this 
-file, use the <A HREF="#Printcap"><CODE>Printcap</CODE></A> directive 
-described in <A HREF="#PRINTING_MANAGEMENT">Chapter 6, &quot;Printing System 
-Management&quot;</A>. </P>
+<P>Many applications read the<VAR> /etc/printcap</VAR> file to get a
+ list of available printers.</P>
+<P>The default CUPS configuration creates the<VAR> /etc/printcap</VAR>
+ file automatically. To enable or disable automatic creation and
+ updating of this file, use the <A HREF="#Printcap"><CODE>Printcap</CODE>
+</A> directive described in <A HREF="#PRINTING_MANAGEMENT">Chapter 6,
+ &quot;Printing System Management&quot;</A>.</P>
 <H2><A NAME="13_2">CUPS Doesn't Recognize My Username or Password!</A></H2>
-<P>CUPS will ask you for a UNIX username and password when you perform 
-printer administration tasks remotely or via a web browser. The default 
-configuration requires that you use the <CODE>root</CODE> username and 
-the corresponding password to authenticate the request. </P>
-<P>CUPS does not allow you to authenticate an administration request 
-with an account that has no password for security reasons. If you do 
-not have a password on your <CODE>root</CODE> account then you won't be 
-able to add printers remotely or via the web interface! 
+<P>CUPS will ask you for a UNIX username and password when you perform
+ printer administration tasks remotely or via a web browser. The default
+ configuration requires that you use the <CODE>root</CODE> username and
+ the corresponding password to authenticate the request.</P>
+<P>CUPS does not allow you to authenticate an administration request
+ with an account that has no password for security reasons. If you do
+ not have a password on your <CODE>root</CODE> account then you won't be
+ able to add printers remotely or via the web interface!
 <!-- NEED 2in -->
 </P>
-<P>To disable password authentication you need to edit the <VAR>
-/etc/cups/cupsd.conf</VAR> file and comment out the lines reading: </P>
+<P>To disable password authentication you need to edit the<VAR>
+ /etc/cups/cupsd.conf</VAR> file and comment out the lines reading:</P>
 <UL>
 <PRE>
 AuthType Basic
 AuthClass System
 </PRE>
 </UL>
- for the <VAR>/admin</VAR> location. Then restart the CUPS server as 
-described in <A HREF="PRINTING_MANAGEMENT">Chapter 8, &quot;Printing System 
-Management&quot;</A>. 
+<P>for the<VAR> /admin</VAR> location. Then restart the CUPS server as
+ described in <A HREF="#PRINTING_MANAGEMENT">Chapter 6, &quot;Printing System
+ Management&quot;</A>.</P>
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> NOTE:</B>
-<P>Disabling password checks will allow any local user to  change your 
-printer and class configuration, but remote  administration from 
-another machine will still not be allowed. </P>
+<P>Disabling password checks will allow any local user to change your
+ printer and class configuration, but remote administration from another
+ machine will still not be allowed.</P>
 </TD></TR>
 </TABLE>
 </CENTER>
-<H2><A NAME="13_3">I Can't Do Administration Tasks from Another Machine!</A>
-</H2>
-<P>The default CUPS configuration limits administration to the local 
-machine. To open up access, edit the <VAR>/etc/cups/cupsd.conf</VAR>
- and comment out the lines reading: </P>
+<H2><A NAME="ALLOW_REMOTE">I Can't Do Administration Tasks from Another
+ Machine!</A></H2>
+<P>The default CUPS configuration limits administration to the local
+ machine. To open up access, edit the<VAR> /etc/cups/cupsd.conf</VAR>
+ and comment out the lines reading:</P>
 <UL>
 <PRE>
 Order deny,allow
@@ -4557,16 +6387,16 @@ Deny from all
 Allow from 127.0.0.1
 </PRE>
 </UL>
- for the <VAR>/admin</VAR> location. Then restart the CUPS server as 
-described in <A HREF="PRINTING_MANAGEMENT">Chapter 8, &quot;Printing System 
-Management&quot;</A>. 
+<P>for the<VAR> /admin</VAR> location. Then restart the CUPS server as
+ described in <A HREF="#PRINTING_MANAGEMENT">Chapter 6, &quot;Printing System
+ Management&quot;</A>.</P>
 <CENTER>
 <TABLE BGCOLOR="#cccccc" BORDER="1" CELLPADDING="5" WIDTH="80%">
 <TR><TD><B> NOTE:</B>
-<P>Allowing administration access from all hosts is a potential 
- security risk. Please read <A HREF="PRINTING_SECURITY">Chapter  6, 
-&quot;Printing System Management&quot;</A> for a description of these  risks and 
-ways to minimize them. </P>
+<P>Allowing administration access from all hosts is a potential security
+ risk. Please read <A HREF="#PRINTING_SECURITY">Chapter 6, &quot;Printing
+ System Management&quot;</A> for a description of these risks and ways to
+ minimize them.</P>
 </TD></TR>
 </TABLE>
 </CENTER>
@@ -4574,48 +6404,48 @@ ways to minimize them. </P>
 <!-- NEED 4in -->
 <H2><A NAME="13_4">I Can't Do Administration Tasks from My Web Browser!</A>
 </H2>
-<P>This problem is usually caused by: </P>
+<P>This problem is usually caused by:</P>
 <OL>
-<LI>not specifying the correct password for the  root account. </LI>
-<LI>accessing the CUPS server using the hostname or IP  address of the 
-server without enabling remote access for  administration functions. 
-This can be corrected by following  the instructions in the <A HREF="#ALLOW_REMOTE">
-&quot;I Can't Do  Administration Tasks from Another Machine!&quot;</A> section 
-earlier  in this appendix. </LI>
-<LI>not setting a password on the root account. CUPS will not 
- authenticate a user account that does not have a password for 
security reasons. </LI>
-<LI>authenticating using an account other than root, but the  account 
-you are using is not a member of the system group. </LI>
-<LI>configuring CUPS to use Digest authentication, but  your web 
-browser does not support Digest authentication. </LI>
+<LI>not specifying the correct password for the root account.</LI>
+<LI>accessing the CUPS server using the hostname or IP address of the
+ server without enabling remote access for administration functions.
+ This can be corrected by following the instructions in the <A HREF="#ALLOW_REMOTE">
+&quot;I Can't Do Administration Tasks from Another Machine!&quot;</A> section
+ earlier in this appendix.</LI>
+<LI>not setting a password on the root account. CUPS will not
+ authenticate a user account that does not have a password for security
reasons.</LI>
+<LI>authenticating using an account other than root, but the account you
+ are using is not a member of the system group.</LI>
+<LI>configuring CUPS to use Digest authentication, but your web browser
+ does not support Digest authentication.</LI>
 </OL>
 <H2><A NAME="13_5">Connection Refused Messages</A></H2>
-<P>Under normal circumstances, &quot;connection refused&quot; messages for a 
-networked printer should be expected from time to time. Most network 
-interfaces only allow a single connection to be made at any given time 
-(one job at a time) and will refuse access to all other systems while 
-the first connection is active. CUPS automatically retries the 
-connection once every 30 seconds. </P>
-<P>If the problem persists and you are unable to print any jobs to the 
-printer, verify that another machine is not maintaining a connection 
-with the printer, and that you have selected the proper port or printer 
-name for the printer. </P>
-<P>Also, most external print servers will refuse connections if the 
-connected printer is turned off or is off-line. Verify that the 
-affected printer is turned on and is online. </P>
+<P>Under normal circumstances, &quot;connection refused&quot; messages for a
+ networked printer should be expected from time to time. Most network
+ interfaces only allow a single connection to be made at any given time
+ (one job at a time) and will refuse access to all other systems while
+ the first connection is active. CUPS automatically retries the
+ connection once every 30 seconds.</P>
+<P>If the problem persists and you are unable to print any jobs to the
+ printer, verify that another machine is not maintaining a connection
+ with the printer, and that you have selected the proper port or printer
+ name for the printer.</P>
+<P>Also, most external print servers will refuse connections if the
+ connected printer is turned off or is off-line. Verify that the
+ affected printer is turned on and is online.</P>
 <H2><A NAME="13_6">Write Error Messages</A></H2>
-<P>If you get &quot;write error&quot; messages on a printer queue the printer 
-interface (usually a Hewlett Packard JetDirect interface) has timed out 
-and reset the network connection from your workstation. </P>
-<P>The error is caused by that startup delay between the initial setup 
-of the printer or plotter and the first page of print data that is 
-sent. 
+<P>If you get &quot;write error&quot; messages on a printer queue the printer
+ interface (usually a Hewlett Packard JetDirect interface) has timed out
+ and reset the network connection from your workstation.</P>
+<P>The error is caused by that startup delay between the initial setup
+ of the printer or plotter and the first page of print data that is
+ sent.
 <!-- NEED 3in -->
 </P>
-<P>To correct the problem, change the idle timeout on the interface to 
-at least 180 seconds or 3 minutes. To change the timeout on a Hewlett 
-Packard JetDirect interface, type: </P>
+<P>To correct the problem, change the idle timeout on the interface to
+ at least 180 seconds or 3 minutes. To change the timeout on a Hewlett
+ Packard JetDirect interface, type:</P>
 <UL>
 <PRE>
 <B>telnet ip-address ENTER</B>