- Timestamp:
- Mar 1, 2010, 3:05:48 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/samba-3.3.x/docs/htmldocs/Samba3-Developers-Guide/parsing.html
r368 r411 1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 11. The smb.conf file</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.7 5.2"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt03.html" title="Part III. Samba Subsystems"><link rel="prev" href="vfs.html" title="Chapter 10. VFS Modules"><link rel="next" href="wins.html" title="Chapter 12. Samba WINS Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. The smb.conf file</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="vfs.html">Prev</a> </td><th width="60%" align="center">Part III. Samba Subsystems</th><td width="20%" align="right"> <a accesskey="n" href="wins.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 11. The smb.conf file"><div class="titlepage"><div><div><h2 class="title"><a name="parsing"></a>Chapter 11. The smb.conf file</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Chris</span> <span class="surname">Hertel</span></h3></div></div><div><p class="pubdate">November 1997</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="parsing.html#id2566406">Lexical Analysis</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2566478">Handling of Whitespace</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2566523">Handling of Line Continuation</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2566574">Line Continuation Quirks</a></span></dt></dl></dd><dt><span class="sect1"><a href="parsing.html#id2566651">Syntax</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2566709">About params.c</a></span></dt></dl></dd></dl></div><div class="sect1" title="Lexical Analysis"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2566406"></a>Lexical Analysis</h2></div></div></div><p>1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 11. The smb.conf file</title><link rel="stylesheet" href="../samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.74.0"><link rel="home" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt03.html" title="Part III. Samba Subsystems"><link rel="prev" href="vfs.html" title="Chapter 10. VFS Modules"><link rel="next" href="wins.html" title="Chapter 12. Samba WINS Internals"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. The smb.conf file</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="vfs.html">Prev</a> </td><th width="60%" align="center">Part III. Samba Subsystems</th><td width="20%" align="right"> <a accesskey="n" href="wins.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="parsing"></a>Chapter 11. The smb.conf file</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Chris</span> <span class="surname">Hertel</span></h3></div></div><div><p class="pubdate">November 1997</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="parsing.html#id2560333">Lexical Analysis</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2560405">Handling of Whitespace</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2560450">Handling of Line Continuation</a></span></dt><dt><span class="sect2"><a href="parsing.html#id2560502">Line Continuation Quirks</a></span></dt></dl></dd><dt><span class="sect1"><a href="parsing.html#id2560579">Syntax</a></span></dt><dd><dl><dt><span class="sect2"><a href="parsing.html#id2560636">About params.c</a></span></dt></dl></dd></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2560333"></a>Lexical Analysis</h2></div></div></div><p> 2 2 Basically, the file is processed on a line by line basis. There are 3 3 four types of lines that are recognized by the lexical analyzer 4 4 (params.c): 5 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>5 </p><div class="orderedlist"><ol type="1"><li><p> 6 6 Blank lines - Lines containing only whitespace. 7 </p></li><li class="listitem"><p>7 </p></li><li><p> 8 8 Comment lines - Lines beginning with either a semi-colon or a 9 9 pound sign (';' or '#'). 10 </p></li><li class="listitem"><p>10 </p></li><li><p> 11 11 Section header lines - Lines beginning with an open square bracket ('['). 12 </p></li><li class="listitem"><p>12 </p></li><li><p> 13 13 Parameter lines - Lines beginning with any other character. 14 14 (The default line type.) … … 16 16 The first two are handled exclusively by the lexical analyzer, which 17 17 ignores them. The latter two line types are scanned for 18 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>18 </p><div class="orderedlist"><ol type="1"><li><p> 19 19 - Section names 20 </p></li><li class="listitem"><p>20 </p></li><li><p> 21 21 - Parameter names 22 </p></li><li class="listitem"><p>22 </p></li><li><p> 23 23 - Parameter values 24 24 </p></li></ol></div><p> … … 26 26 (loadparm.c). Parameter names and values are divided from one 27 27 another by an equal sign: '='. 28 </p><div class="sect2" title="Handling of Whitespace"><div class="titlepage"><div><div><h3 class="title"><a name="id2566478"></a>Handling of Whitespace</h3></div></div></div><p>28 </p><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2560405"></a>Handling of Whitespace</h3></div></div></div><p> 29 29 Whitespace is defined as all characters recognized by the isspace() 30 30 function (see ctype(3C)) except for the newline character ('\n') 31 31 The newline is excluded because it identifies the end of the line. 32 </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>32 </p><div class="orderedlist"><ol type="1"><li><p> 33 33 The lexical analyzer scans past white space at the beginning of a line. 34 </p></li><li class="listitem"><p>34 </p></li><li><p> 35 35 Section and parameter names may contain internal white space. All 36 36 whitespace within a name is compressed to a single space character. 37 </p></li><li class="listitem"><p>37 </p></li><li><p> 38 38 Internal whitespace within a parameter value is kept verbatim with 39 39 the exception of carriage return characters ('\r'), all of which 40 40 are removed. 41 </p></li><li class="listitem"><p>41 </p></li><li><p> 42 42 Leading and trailing whitespace is removed from names and values. 43 </p></li></ol></div></div><div class="sect2" title="Handling of Line Continuation"><div class="titlepage"><div><div><h3 class="title"><a name="id2566523"></a>Handling of Line Continuation</h3></div></div></div><p>43 </p></li></ol></div></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2560450"></a>Handling of Line Continuation</h3></div></div></div><p> 44 44 Long section header and parameter lines may be extended across 45 45 multiple lines by use of the backslash character ('\\'). Line … … 64 64 of comments. They are *only* recognized within section and parameter 65 65 lines. 66 </p></div><div class="sect2" title="Line Continuation Quirks"><div class="titlepage"><div><div><h3 class="title"><a name="id2566574"></a>Line Continuation Quirks</h3></div></div></div><p>Note the following example:</p><pre class="programlisting">66 </p></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2560502"></a>Line Continuation Quirks</h3></div></div></div><p>Note the following example:</p><pre class="programlisting"> 67 67 param name = parameter value string \ 68 68 \ … … 88 88 [section name] 89 89 param name = value 90 </pre></div></div><div class="sect1" title="Syntax"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2566651"></a>Syntax</h2></div></div></div><p>The syntax of the smb.conf file is as follows:</p><pre class="programlisting">90 </pre></div></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2560579"></a>Syntax</h2></div></div></div><p>The syntax of the smb.conf file is as follows:</p><pre class="programlisting"> 91 91 <file> :== { <section> } EOF 92 92 <section> :== <section header> { <parameter line> } 93 93 <section header> :== '[' NAME ']' 94 94 <parameter line> :== NAME '=' VALUE NL 95 </pre><p>Basically, this means that</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>95 </pre><p>Basically, this means that</p><div class="orderedlist"><ol type="1"><li><p> 96 96 a file is made up of zero or more sections, and is terminated by 97 97 an EOF (we knew that). 98 </p></li><li class="listitem"><p>98 </p></li><li><p> 99 99 A section is made up of a section header followed by zero or more 100 100 parameter lines. 101 </p></li><li class="listitem"><p>101 </p></li><li><p> 102 102 A section header is identified by an opening bracket and 103 103 terminated by the closing bracket. The enclosed NAME identifies 104 104 the section. 105 </p></li><li class="listitem"><p>105 </p></li><li><p> 106 106 A parameter line is divided into a NAME and a VALUE. The *first* 107 107 equal sign on the line separates the NAME from the VALUE. The 108 108 VALUE is terminated by a newline character (NL = '\n'). 109 </p></li></ol></div><div class="sect2" title="About params.c"><div class="titlepage"><div><div><h3 class="title"><a name="id2566709"></a>About params.c</h3></div></div></div><p>109 </p></li></ol></div><div class="sect2" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="id2560636"></a>About params.c</h3></div></div></div><p> 110 110 The parsing of the config file is a bit unusual if you are used to 111 111 lex, yacc, bison, etc. Both lexical analysis (scanning) and parsing
Note:
See TracChangeset
for help on using the changeset viewer.