From 87b8f318b0d5d5d8b74c888458be6a0e8fea83f9 Mon Sep 17 00:00:00 2001
From: Fred Drake <fdrake@acm.org>
Date: Fri, 23 Apr 1999 17:26:24 +0000
Subject: Fixed some logical markup nits.

Added a pointer to Grail in the see-also section, since it's used as
an example.
---
 Doc/lib/librestricted.tex | 47 ++++++++++++++++++++++++++---------------------
 1 file changed, 26 insertions(+), 21 deletions(-)

diff --git a/Doc/lib/librestricted.tex b/Doc/lib/librestricted.tex
index cbd38c5..2e1c11a 100644
--- a/Doc/lib/librestricted.tex
+++ b/Doc/lib/librestricted.tex
@@ -1,15 +1,14 @@
-\chapter{Restricted Execution}
-\label{restricted}
+\chapter{Restricted Execution \label{restricted}}
 
 In general, Python programs have complete access to the underlying
 operating system throug the various functions and classes, For
 example, a Python program can open any file for reading and writing by
-using the \code{open()} built-in function (provided the underlying OS
-gives you permission!).  This is exactly what you want for most
+using the \function{open()} built-in function (provided the underlying
+OS gives you permission!).  This is exactly what you want for most
 applications.
 
 There exists a class of applications for which this ``openness'' is
-inappropriate.  Take Grail: a web browser that accepts ``applets'',
+inappropriate.  Take Grail: a web browser that accepts ``applets,''
 snippets of Python code, from anywhere on the Internet for execution
 on the local system.  This can be used to improve the user interface
 of forms, for instance.  Since the originator of the code is unknown,
@@ -38,27 +37,28 @@ determined by the supervisor, different restrictions can be imposed,
 depending on the application.  For example, it might be deemed
 ``safe'' for untrusted code to read any file within a specified
 directory, but never to write a file.  In this case, the supervisor
-may redefine the built-in
-\code{open()} function so that it raises an exception whenever the
-\var{mode} parameter is \code{'w'}.  It might also perform a
-\code{chroot()}-like operation on the \var{filename} parameter, such
-that root is always relative to some safe ``sandbox'' area of the
-filesystem.  In this case, the untrusted code would still see an
-built-in \code{open()} function in its environment, with the same
-calling interface.  The semantics would be identical too, with
-\code{IOError}s being raised when the supervisor determined that an
-unallowable parameter is being used.
+may redefine the built-in \function{open()} function so that it raises
+an exception whenever the \var{mode} parameter is \code{'w'}.  It
+might also perform a \cfunction{chroot()}-like operation on the
+\var{filename} parameter, such that root is always relative to some
+safe ``sandbox'' area of the filesystem.  In this case, the untrusted
+code would still see an built-in \function{open()} function in its
+environment, with the same calling interface.  The semantics would be
+identical too, with \exception{IOError}s being raised when the
+supervisor determined that an unallowable parameter is being used.
 
 The Python run-time determines whether a particular code block is
 executing in restricted execution mode based on the identity of the
 \code{__builtins__} object in its global variables: if this is (the
-dictionary of) the standard \code{__builtin__} module, the code is
-deemed to be unrestricted, else it is deemed to be restricted.
+dictionary of) the standard \refmodule[builtin]{__builtin__} module,
+the code is deemed to be unrestricted, else it is deemed to be
+restricted.
 
 Python code executing in restricted mode faces a number of limitations
 that are designed to prevent it from escaping from the padded cell.
-For instance, the function object attribute \code{func_globals} and the
-class and instance object attribute \code{__dict__} are unavailable.
+For instance, the function object attribute \member{func_globals} and
+the class and instance object attribute \member{__dict__} are
+unavailable.
 
 Two modules provide the framework for setting up restricted execution
 environments:
@@ -66,6 +66,11 @@ environments:
 \localmoduletable
 
 \begin{seealso}
-\seetext{Andrew Kuchling, ``Restricted Execution HOWTO.''  Available
-online at \url{http://www.python.org/doc/howto/rexec/}.}
+  \seetext{Andrew Kuchling, ``Restricted Execution HOWTO.''  Available
+           online at \url{http://www.python.org/doc/howto/rexec/}.}
+
+  \seetext{Grail, an Internet browser written in Python, is available
+           at \url{http://grail.cnri.reston.va.us/grail/}.  More
+           information on the use of Python's restricted execution
+           mode in Grail is available on the Web site.}
 \end{seealso}
-- 
cgit v0.12

