From d68d99de92a7bf5a72e8665b88b3d66d419cb05f Mon Sep 17 00:00:00 2001 From: bubulle Date: Wed, 24 Feb 2010 21:30:19 +0000 Subject: Load samba-3.4.6 into branches/samba/upstream. git-svn-id: svn://svn.debian.org/svn/pkg-samba/branches/samba/upstream@3321 fc4039ab-9d04-0410-8cac-899223bdd6b0 --- docs/htmldocs/Samba3-Developers-Guide/parsing.html | 42 +++++++++++----------- 1 file changed, 21 insertions(+), 21 deletions(-) (limited to 'docs/htmldocs/Samba3-Developers-Guide/parsing.html') diff --git a/docs/htmldocs/Samba3-Developers-Guide/parsing.html b/docs/htmldocs/Samba3-Developers-Guide/parsing.html index c392165ddd..c776bbf48f 100644 --- a/docs/htmldocs/Samba3-Developers-Guide/parsing.html +++ b/docs/htmldocs/Samba3-Developers-Guide/parsing.html @@ -1,46 +1,46 @@ -Chapter 11. The smb.conf file

Chapter 11. The smb.conf file

Chris Hertel

November 1997

Lexical Analysis

+Chapter 11. The smb.conf file

Chapter 11. The smb.conf file

Chris Hertel

November 1997

Lexical Analysis

Basically, the file is processed on a line by line basis. There are four types of lines that are recognized by the lexical analyzer (params.c): -

  1. +

    1. Blank lines - Lines containing only whitespace. -

    2. +

    3. Comment lines - Lines beginning with either a semi-colon or a pound sign (';' or '#'). -

    4. +

    5. Section header lines - Lines beginning with an open square bracket ('['). -

    6. +

    7. Parameter lines - Lines beginning with any other character. (The default line type.)

    The first two are handled exclusively by the lexical analyzer, which ignores them. The latter two line types are scanned for -

    1. +

      1. - Section names -

      2. +

      3. - Parameter names -

      4. +

      5. - Parameter values

      These are the only tokens passed to the parameter loader (loadparm.c). Parameter names and values are divided from one another by an equal sign: '='. -

      Handling of Whitespace

      +

      Handling of Whitespace

      Whitespace is defined as all characters recognized by the isspace() function (see ctype(3C)) except for the newline character ('\n') The newline is excluded because it identifies the end of the line. -

      1. +

        1. The lexical analyzer scans past white space at the beginning of a line. -

        2. +

        3. Section and parameter names may contain internal white space. All whitespace within a name is compressed to a single space character. -

        4. +

        5. Internal whitespace within a parameter value is kept verbatim with the exception of carriage return characters ('\r'), all of which are removed. -

        6. +

        7. Leading and trailing whitespace is removed from names and values. -

      Handling of Line Continuation

      +

Handling of Line Continuation

Long section header and parameter lines may be extended across multiple lines by use of the backslash character ('\\'). Line continuation is ignored for blank and comment lines. @@ -63,7 +63,7 @@ line, plus the four preceeding the word 'with' in the second line. Line continuation characters are ignored on blank lines and at the end of comments. They are *only* recognized within section and parameter lines. -

Line Continuation Quirks

Note the following example:

+

Line Continuation Quirks

Note the following example:

 	param name = parameter value string \
     \
     with line continuation.
@@ -87,26 +87,26 @@ terminating character, and the rest of the line is ignored.  The lines
 

are read as

 	[section name]
     param name = value
-

Syntax

The syntax of the smb.conf file is as follows:

+

Syntax

The syntax of the smb.conf file is as follows:

   <file>            :==  { <section> } EOF
   <section>         :==  <section header> { <parameter line> }
   <section header>  :==  '[' NAME ']'
   <parameter line>  :==  NAME '=' VALUE NL
-

Basically, this means that

  1. +

    Basically, this means that

    1. a file is made up of zero or more sections, and is terminated by an EOF (we knew that). -

    2. +

    3. A section is made up of a section header followed by zero or more parameter lines. -

    4. +

    5. A section header is identified by an opening bracket and terminated by the closing bracket. The enclosed NAME identifies the section. -

    6. +

    7. A parameter line is divided into a NAME and a VALUE. The *first* equal sign on the line separates the NAME from the VALUE. The VALUE is terminated by a newline character (NL = '\n'). -

    About params.c

    +

About params.c

The parsing of the config file is a bit unusual if you are used to lex, yacc, bison, etc. Both lexical analysis (scanning) and parsing are performed by params.c. Values are loaded via callbacks to -- cgit v1.2.3