Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 27 May 2011 16:00:37 +0000 (UTC)
From:      Jilles Tjoelker <jilles@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r222362 - head/bin/sh
Message-ID:  <201105271600.p4RG0bMN042346@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jilles
Date: Fri May 27 16:00:37 2011
New Revision: 222362
URL: http://svn.freebsd.org/changeset/base/222362

Log:
  sh: Various updates to the TOUR document.

Modified:
  head/bin/sh/TOUR

Modified: head/bin/sh/TOUR
==============================================================================
--- head/bin/sh/TOUR	Fri May 27 15:56:13 2011	(r222361)
+++ head/bin/sh/TOUR	Fri May 27 16:00:37 2011	(r222362)
@@ -27,10 +27,8 @@ programs is:
         mkbuiltins      builtins            builtins.h builtins.c
         mkinit          *.c                 init.c
         mknodes         nodetypes           nodes.h nodes.c
-        mksignames          -               signames.h signames.c
         mksyntax            -               syntax.h syntax.c
         mktokens            -               token.h
-        bltin/mkexpr    unary_op binary_op  operators.h operators.c
 
 There are undoubtedly too many of these.  Mkinit searches all the
 C source files for entries looking like:
@@ -64,14 +62,6 @@ tion:
 Preprocessor #define statements are copied to init.c without any
 special action to request this.
 
-INDENTATION:  The ash source is indented in multiples of six
-spaces.  The only study that I have heard of on the subject con-
-cluded that the optimal amount to indent is in the range of four
-to six spaces.  I use six spaces since it is not too big a jump
-from the widely used eight spaces.  If you really hate six space
-indentation, use the adjind (source included) program to change
-it to something else.
-
 EXCEPTIONS:  Code for dealing with exceptions appears in
 exceptions.c.  The C language doesn't include exception handling,
 so I implement it using setjmp and longjmp.  The global variable
@@ -115,7 +105,7 @@ repeatedly parses and executes commands.
 
 OPTIONS.C:  This file contains the option processing code.  It is
 called from main to parse the shell arguments when the shell is
-invoked, and it also contains the set builtin.  The -i and -j op-
+invoked, and it also contains the set builtin.  The -i and -m op-
 tions (the latter turns on job control) require changes in signal
 handling.  The routines setjobctl (in jobs.c) and setinteractive
 (in trap.c) are called to handle changes to these options.
@@ -123,10 +113,11 @@ handling.  The routines setjobctl (in jo
 PARSING:  The parser code is all in parser.c.  A recursive des-
 cent parser is used.  Syntax tables (generated by mksyntax) are
 used to classify characters during lexical analysis.  There are
-three tables:  one for normal use, one for use when inside single
-quotes, and one for use when inside double quotes.  The tables
-are machine dependent because they are indexed by character vari-
-ables and the range of a char varies from machine to machine.
+four tables:  one for normal use, one for use when inside single
+quotes and dollar single quotes, one for use when inside double
+quotes and one for use in arithmetic.  The tables are machine
+dependent because they are indexed by character variables and
+the range of a char varies from machine to machine.
 
 PARSE OUTPUT:  The output of the parser consists of a tree of
 nodes.  The various types of nodes are defined in the file node-
@@ -242,12 +233,7 @@ The routine shellexec is the interface t
 EXPAND.C:  Arguments are processed in three passes.  The first
 (performed by the routine argstr) performs variable and command
 substitution.  The second (ifsbreakup) performs word splitting
-and the third (expandmeta) performs file name generation.  If the
-"/u" directory is simulated, then when "/u/username" is replaced
-by the user's home directory, the flag "didudir" is set.  This
-tells the cd command that it should print out the directory name,
-just as it would if the "/u" directory were implemented using
-symbolic links.
+and the third (expandmeta) performs file name generation.
 
 VAR.C:  Variables are stored in a hash table.  Probably we should
 switch to extensible hashing.  The variable name is stored in the
@@ -292,14 +278,7 @@ when the program is linked into ash.  Th
 before bltin.h is included; bltin.h will #undef main if the pro-
 gram is to be compiled stand-alone.
 
-CD.C:  This file defines the cd and pwd builtins.  The pwd com-
-mand runs /bin/pwd the first time it is invoked (unless the user
-has already done a cd to an absolute pathname), but then
-remembers the current directory and updates it when the cd com-
-mand is run, so subsequent pwd commands run very fast.  The main
-complication in the cd command is in the docd command, which
-resolves symbolic links into actual names and informs the user
-where the user ended up if he crossed a symbolic link.
+CD.C:  This file defines the cd and pwd builtins.
 
 SIGNALS:  Trap.c implements the trap command.  The routine set-
 signal figures out what action should be taken when a signal is



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105271600.p4RG0bMN042346>