Home | History | Annotate | Download | only in common
      1 Here is an overview of the source code organization for ksh93.
      2 
      3 Directory layout:
      4 
      5 	The directory include contains header files for ksh93.
      6 	The files nval.h and shell.h are intended to be public
      7 	headers and can be used to add runtime builtin command.
      8 	The remainder are private.
      9 
     10 	The directory data contains readonly data files for ksh93.
     11 	The man pages for built-ins are in builtins.c rather
     12 	than included as statics with the implementations in the
     13 	bltins directory because some systems don't make static const
     14 	data readonly and we want these to be shared by all running
     15 	shells.
     16 
     17 	The directory edit contains the code for command line
     18 	editing and history.
     19 
     20 	The fun directory contains some shell function such as
     21 	pushd, popd, and dirs.
     22 
     23 	The directory features contains files that are used to generate
     24 	header files in the FEATURE directory.  Most of these files
     25 	are in a format that is processed by iffe.
     26 
     27 	The directory bltins contains code for most of the built-in
     28 	commands.  Additional built-in commands are part of libcmd.
     29 
     30 	The directory sh contains most of the code for ksh93.
     31 
     32 	The directory tests contains a number of regression tests.
     33 	In most cases, when a bug gets fixed, a test is added to
     34 	one of these files.  The regression tests can be run by
     35 	going to this directory and running
     36 		SHELL=shell_path shell_path shtests
     37 	where shell_path is an absolute pathname for the shell to
     38 	be tested.
     39 
     40 	The top level directory contains the nmake Makefile, a README,
     41 	and several documentation files.  The RELEASE file contains
     42 	the list of bug fixes and new features since the original
     43 	ksh93 release.  The file COMPATIBILITY is a list of all
     44 	known incompatibilities with ksh88.
     45 
     46 	The  bash_pre_rc.sh is a startup script used when emulating
     47 	bash if the shell is compiled with SHOPT_BASH and the shell
     48 	is invoked as bash.  The bash emulation is not complete.
     49  
     50 Include directory:
     51 	1.	argnod.h contains the type definitions for command
     52 		nodes, io nodes, argument nodes, and for positional
     53 		parameters.a  It defines the prototypes for
     54 		all the positional parameters functions.
     55 	2.	builtins.h contains prototypes for builtins as well
     56 		as symbolic constants that refer to the name-pairs
     57 		that are associated with some of the built-ins.
     58 		It also contains prototypes for many of the strings.
     59 	3.	defs.h is the catch all for all definitions that
     60 		don't fit elsewhere and it includes several other
     61 		headers.  It defines a strucuture that contains ksh
     62 		global data, sh, and a structure that contains per
     63 		function data, sh.st. 
     64 	4.	edit.h contains definitions that are common to both
     65 		vi and emacs edit modes.
     66 	5.	env.h contains interfaces for creating and modifying
     67 		environment variables. 
     68 	6.	fault.h contains prototypes for signal related
     69 		functions and trap and fault handling.
     70 	7.	fcin.h contains macro and function definitions for
     71 		reading from a file or string.
     72 	8.	history.h contains macros and functions definitions
     73 		related to history file processing.
     74 	9.	jobs.h contains the definitions relating to job
     75 		processing and control.
     76 	10.	lexstates.h contains the states associated with
     77 		lexical processing.
     78 	11.	name.h contains the internal definitions related
     79 		to name-value pair processing.
     80 	12.	national.h contains a few I18N definitions, mostly
     81 		obsolete.
     82 	13.	nval.h is the public interface to the name-value
     83 		pair library that is documented with nval.3.
     84 	14.	path.h contains the interface for pathname processing
     85 		and pathname searching.
     86 	15.	shell.h is the public interface for shell functions
     87 		that are documented int shell.3.
     88 	16.	shlex.h contains the lexical token definitions and
     89 		interfaces for lexical analysis.
     90 	17.	shnodes.h contains the definition of the structures
     91 		for each of the parse nodes and flags for the attributes.
     92 	18.	shtable.h contains some interfaces and functions for
     93 		table lookup.
     94 	19.	streval.h contains the interface to the arithmetic
     95 		functions.
     96 	20.	terminal.h is a header file that includes the appropriate
     97 		terminal include.
     98 	21.	test.h contains the definitions for the test and [[...]]
     99 		commands.
    100 	22.	timeout.h contains the define constant for the maximum
    101 		shell timeout.
    102 	23.	ulimit.h includes the appropriate resource header.
    103 	24.	variables.h contains symbolic constants for the built-in
    104 		shell variables.
    105 
    106 sh directory:
    107 	1.	args.c contains functions for parsing shell options
    108 		and for processing positional parameters.
    109 	2.	arith.c contains callback functions for the streval.c
    110 		library and the interface to shell arithmetic.
    111 	3.	array.c contains the code for indexed and associative
    112 		arrays.
    113 	4.      bash.h contains code used when compiling with SHOPT_BASH
    114 		to add bash specific features such as shopt.
    115 	5.	defs.c contains the data definitions for global symbols.
    116 	6.	deparse.c contains code to generate shell script from
    117 		a parse tree.
    118 	7.	env.c contains code to add and delete environment variables
    119 		to an environment list.
    120 	8.	expand.c contains code for file name expansion and
    121 		file name generation.
    122 	9.	fault.c contains code for signal processing, trap
    123 		handling and termination.
    124 	10.	fcin.c contains code for reading and writing a character
    125 		at a time from a file or string.
    126 	11.	init.c contains initialization code and callbacks
    127 		for get and set functions for built-in variables.	
    128 	12.	io.o contains code for redirections and managing file
    129 		descriptors and file streams.
    130 	13.	jobs.c contains the code for job management.
    131 	14.	lex.c contains the code for the lexical analyzer.
    132 	15.	macro.c contains code for the $ macro expansions, including
    133 		here-documents.
    134 	16.	main.c contains the calls to initialization, profile
    135 		processing and the main evaluation loop as well as
    136 		mail processing.
    137 	17.	name.c contains the name-value pair routines that are
    138 		built on the hash library in libast.
    139 	18.	nvdisc.c contains code related to name-value pair disciplines.
    140 	19.	nvtree.c contains code for compound variables and for
    141 		walking the namespace.
    142 	20.	nvtype.c contains most of the code related to types that
    143 		are created with typeset -T.
    144 	21.	parse.c contains the code for the shell parser.
    145 	22.	path.c contains the code for pathname lookup and
    146 		some path functions.  It also contains the code
    147 		that executes commands and scripts.
    148 	23.	pmain.c is just a calls sh_main() so that all of the
    149 		rest of the shell can be in a shared library.
    150 	24.	shcomp.c contains the main program to the shell
    151 		compiler.  This program parses a script and creates
    152 		a file that the shell can read containing the parse tree.
    153 	25.	streval.c is an C arithmetic evaluator.
    154 	26.	string.c contains some string related functions.
    155 	27.	subshell.c contains the code to save and restore
    156 		environments so that subshells can run without creating
    157 		a new process.
    158 	28.	suid_exec.c contains the program from running execute
    159 		only and/or setuid/setgid scripts.
    160 	29.	tdump.c contains the code to dump a parse tree into
    161 		a file.
    162 	30.	timers.c contains code for multiple event timeouts.
    163 	31.	trestore contians the code for restoring the parse
    164 		tree from the file created by tdump.
    165 	32.	userinit.c contains a dummy userinit() function.
    166 		This is now obsolete with the new version of sh_main().
    167 	33.	waitevent.c contains the sh_waitnotify function so
    168 		that builtins can handle processing events when the
    169 		shell is waiting for input or for process completion.
    170 	34.	xec.c is the main shell executuion loop.
    171