diff options
Diffstat (limited to 'system')
40 files changed, 537 insertions, 1840 deletions
diff --git a/system/COPYRIGHT b/system/COPYRIGHT index 444efcd6f5..94e9795b16 100644 --- a/system/COPYRIGHT +++ b/system/COPYRIGHT @@ -5,7 +5,7 @@ This software is subject to the following Copyrights and Licenses: %CopyrightBegin% -Copyright Ericsson AB 1997-2010. All Rights Reserved. +Copyright Ericsson AB 1997-2011. All Rights Reserved. The contents of this file are subject to the Erlang Public License, Version 1.1, (the "License"); you may not use this file except in diff --git a/system/README b/system/README index 317030373c..234fc23dbd 100644 --- a/system/README +++ b/system/README @@ -1,7 +1,7 @@ -Erlang/OTP June 11, 2010 +Erlang/OTP March 11, 2011 -LAST MINUTE INFORMATION -- Release of Erlang 5.8/OTP R14A +LAST MINUTE INFORMATION -- Release of Erlang 5.8.3/OTP R14B02 1. GENERAL @@ -35,7 +35,7 @@ LAST MINUTE INFORMATION -- Release of Erlang 5.8/OTP R14A R11B-1). BEAM files from R10B or earlier are not supported. To get the best performance, you should recompile your - application code with the R13B04 compiler. + application code with the R14B02 compiler. 2. NOTES ABOUT THE SOLARIS VERSION @@ -61,7 +61,7 @@ LAST MINUTE INFORMATION -- Release of Erlang 5.8/OTP R14A 4.1 The following linux distributions/version combinations are supported and tested: - Suse 9.4 x86, Suse 10.1 x86 + Suse 9.4 x86, Suse 10.1 x86, Suse 10.1 x86_64 5. APPLICATIONS NOTES ------------------ diff --git a/system/doc/Books/src/HOWTO.txt b/system/doc/Books/src/HOWTO.txt deleted file mode 100644 index 1fa47446e3..0000000000 --- a/system/doc/Books/src/HOWTO.txt +++ /dev/null @@ -1,35 +0,0 @@ -Peter H�gfeldt 2001-04-27 A - -HOWTO for building books for printing -------------------------------------- - -Note: Books are also built automatically by a daily build script. - That is the only safe way to build books. - -Note: Manual handling of dependency files has been removed. - -1. To build a book, ug say, in pdf format with a frame, be sure - to have a clean view, and run - - i) clearmake -V clean - ii) clearmake -V depend - iii) clearmake -V ug.frame.pdf - - You can build the following variants: ug.ps, ug.pdf, ug.frame.ps, - ug.frame.pdf, ug.crop.ps, and ug.crop.pdf. - - To build all frame.pdf and crop.pdf books replace iii) by - - iii) clearmake -V release_books TESTROOT=/some/dest/dir - - and you will get all books in /some/dest/dir. - -2. To change the contents of a book you have to: - - i) Edit the sgml book file, e.g. ug.sgml. - - ii) Do the corresponding changes in the Makefile (if needed). - - - - diff --git a/system/doc/Books/src/Makefile b/system/doc/Books/src/Makefile deleted file mode 100644 index 9d346cb230..0000000000 --- a/system/doc/Books/src/Makefile +++ /dev/null @@ -1,127 +0,0 @@ -# ---------------------------------------------------- -# Copyright (C) 1997, Ericsson Telecommunications -# Author: Lars Thorsen, Hans Nilsson -# ---------------------------------------------------- -include $(ERL_TOP)/make/target.mk -include $(ERL_TOP)/make/$(TARGET)/otp.mk - -# ---------------------------------------------------- -# Include dependency -# ---------------------------------------------------- - -ifeq (ug.dep,$(wildcard ug.dep)) -include ug.dep -include database_management.dep -include orber_ic.dep -include basic_application.dep -include tools.dep -include operation_maintenance.dep -include interfaces.dep -include stdlib.dep -include corba_service.dep -endif - -# ---------------------------------------------------- -# Target Specs -# ---------------------------------------------------- -BOOKS = \ - ug \ - database_management \ - orber_ic \ - corba_service \ - basic_application \ - tools \ - operation_maintenance \ - interfaces \ - stdlib - -TEX_FILES = $(shell for i in $(BOOKS) ; do (echo $$i.tex); done) - -FRAME_CROP_PDF_FILES = $(BOOKS:%=%.frame.pdf) $(BOOKS:%=%.crop.pdf) - -# ---------------------------------------------------- -# FLAGS -# ---------------------------------------------------- -XML_FLAG_booksty = -booksty otpBOOK -DVIPS_FLAGS += -O '19mm,32.5mm' - -# ---------------------------------------------------- -# Targets -# ---------------------------------------------------- - -all: $(FRAME_CROP_PDF_FILES) - -books: all - -clean: - rm -f $(TEX_FILES) - rm -f *.psframe *.pscrop *.ps - rm -f $(TOP_PS_FILES) - rm -f errs core *~ $(LATEX_CLEAN) - rm -f *.dep *.pdf - -dep depend: - @for i in $(BOOKS); do \ - echo "Running docdepend for $$i ..." ; \ - docdepend $$i.xml | \ - sed s/insidecover.tex/insidecover.xml/ > $$i.dep ; \ - done - -# ---------------------------------------------------- -# Rules -# ---------------------------------------------------- -.SUFFIXES: .psframe .pscrop - -# The following rules are for multiple suffixes, e.g. kalle.pdf, -# kalle.frame.pdf. The order of the rules is important. Default rules -# from otp.mk are disabled in order to get it right. - -%.pdf: %.ps - -%.ps: %.dvi - -%.pdf: %.dvi - -%.frame.ps: %.dvi - BOOK=$@ ./make_headers - $(DVI2PS) -frame $(DVIPS_FLAGS) -f $< > $@ - -%.frame.pdf: %.dvi - BOOK=$@ ./make_headers - $(DVI2PS) -frame $(DVIPS_FLAGS) -f $< | \ - $(DISTILL) $(DISTILL_FLAGS) > $@ - -%.crop.ps: %.dvi - BOOK=$@ ./make_headers - $(DVI2PS) -crop $(DVIPS_FLAGS) -f $< > $@ - -%.crop.pdf: %.dvi - BOOK=$@ ./make_headers - $(DVI2PS) -crop $(DVIPS_FLAGS) -f $< | \ - $(DISTILL) $(DISTILL_FLAGS) > $@ - -%.pdf: %.dvi - $(DVI2PS) $(DVIPS_FLAGS) -f $< | \ - $(DISTILL) $(DISTILL_FLAGS) > $@ - -%.ps: %.dvi - $(DVI2PS) $(DVIPS_FLAGS) -f $< > $@ - -%.pdf: %.dvi - $(DVI2PS) $(DVIPS_FLAGS) -f $< | \ - $(DISTILL) $(DISTILL_FLAGS) > $@ - -# ---------------------------------------------------- -# Release targets -# ---------------------------------------------------- -# - -ifeq ($(TESTROOT),) -release_books: all - -else -release_books: all - $(INSTALL_DIR) $(TESTROOT)/books - $(INSTALL_DATA) $(FRAME_CROP_PDF_FILES) $(TESTROOT)/books -endif - diff --git a/system/doc/Books/src/basic_application.xml b/system/doc/Books/src/basic_application.xml deleted file mode 100644 index 8097dafd7e..0000000000 --- a/system/doc/Books/src/basic_application.xml +++ /dev/null @@ -1,107 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE book SYSTEM "book.dtd"> - -<book> - <header titlestyle="special"> - <copyright> - <year>2000</year> - <year>2007</year> - <holder>Ericsson AB, All Rights Reserved</holder> - </copyright> - <legalnotice> - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - The Initial Developer of the Original Code is Ericsson AB. - </legalnotice> - - <title>Erlang 5.1/OTP R8 Run-Time System and Basic Applications</title> - <prepared>Bengt Nilsson</prepared> - <docno></docno> - <date>2000-10-17</date> - <rev></rev> - </header> - <insidecover> - <include file="insidecover"></include> - </insidecover> - <pagetext>Erlang/OTP Run-Time System and Basic Applications</pagetext> - <preamble> - <contents level="2"></contents> - <preface> - <p><em>Introduction</em> <br></br> -This documentation describes the Open - Telecom Platform (Erlang/OTP), a middle-ware based on the Erlang - programming language, aiming at providing time-saving and flexible - development for robust, adaptable telecom systems.</p> - <p><em>Organization of the Documentation</em> <br></br> - - The documentation is divided into eight parts:</p> - <list type="bulleted"> - <item>Erlang 5.0/OTP R7 System Documentation, EN/LZT 1084095 R1</item> - <item>Erlang 5.0/OTP R7 Run-Time System and Basic Applications, - EN/LZT 108 4106 R1</item> - <item>Erlang 5.0/OTP R7 Standard Library Application, EN/LZT 108 4107 - R1</item> - <item>Erlang 5.0/OTP R7 Database Applications, EN/LZT 108 194 R3</item> - <item>Erlang 5.0/OTP R7 CORBA and IDL Applications, - EN/LZT 151 810 R2</item> - <item>Erlang 5.0/OTP R7 Interface and Communication Applications, - EN/LZT 108 4110 R1</item> - <item>Erlang 5.0/OTP R7 Operation and Maintenance Applications, - EN/LZT 108 4108 R1</item> - <item>Erlang 5.0/OTP R7 Tool Applications, EN/LZT 108 4109 R1</item> - </list> - <p><em>About this Book</em> <br></br> -This book is a collection of User's Guides for</p> - <list type="bulleted"> - <item>ERTS</item> - <item>SASL</item> - </list> - <p>and of Reference Manuals for</p> - <list type="bulleted"> - <item>ERTS</item> - <item>SASL</item> - <item>Compiler</item> - <item>Kernel</item> - </list> - <p>The Standard Libraries (STDLIB), which are in close - connection with Kernel, are documented in a volume of its - own.</p> - <br></br> - </preface> - </preamble> - <pagetext>ERTS</pagetext> - <parts lift="no"> - <title>ERTS User's Guide</title> - <include file="../../../../erts/erts/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../erts/erts/doc/src/application"></include> - </applications> - <pagetext>SASL</pagetext> - <parts lift="no"> - <title>SASL User's Guide</title> - <include file="../../../../erts/lib/sasl/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../erts/lib/sasl/doc/src/application"></include> - </applications> - <pagetext>Kernel</pagetext> - <applications> - <include file="../../../../erts/lib/kernel/doc/src/application_holder"></include> - </applications> - <pagetext>Compiler</pagetext> - <applications> - <include file="../../../../erts/lib/compiler/doc/src/application"></include> - </applications> - <pagetext>Erlang/OTP Run-Time System and Basic Applications</pagetext> -</book> - diff --git a/system/doc/Books/src/corba_service.xml b/system/doc/Books/src/corba_service.xml deleted file mode 100644 index dce2894a52..0000000000 --- a/system/doc/Books/src/corba_service.xml +++ /dev/null @@ -1,137 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE book SYSTEM "book.dtd"> - -<book> - <header titlestyle="special"> - <copyright> - <year>2001</year> - <year>2007</year> - <holder>Ericsson AB, All Rights Reserved</holder> - </copyright> - <legalnotice> - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - The Initial Developer of the Original Code is Ericsson AB. - </legalnotice> - - <title>Erlang 5.1/OTP R8 CORBA Services </title> - <prepared></prepared> - <docno>EN/LZT 151 ??? R1</docno> - <date>1997-05-27</date> - <rev></rev> - <abbreviation></abbreviation> - </header> - <insidecover> - <include file="insidecover"></include> - </insidecover> - <pagetext>Erlang/OTP CORBA Services</pagetext> - <preamble> - <contents level="2"></contents> - <preface> - <p><em>Introduction</em> <br></br> - - This documentation describes the Open - Telecom Platform (Erlang/OTP), a middle-ware based on the Erlang - programming language, aiming at providing time-saving and flexible - development for robust, adaptable telecom systems.</p> - <p><em>Organization of the Documentation</em> <br></br> - - The documentation is divided into eight parts:</p> - <list type="bulleted"> - <item>Erlang 5.0/OTP R7 System Documentation, EN/LZT 1084095 R1</item> - <item>Erlang 5.0/OTP R7 Run-Time System and Basic Applications, - EN/LZT 108 4106 R1</item> - <item>Erlang 5.0/OTP R7 Standard Library Application, EN/LZT 108 4107 - R1</item> - <item>Erlang 5.0/OTP R7 Database Applications, EN/LZT 108 194 R3</item> - <item>Erlang 5.0/OTP R7 CORBA and IDL Applications, - EN/LZT 151 810 R2</item> - <item>Erlang 5.0/OTP R7 Interface and Communication Applications, - EN/LZT 108 4110 R1</item> - <item>Erlang 5.0/OTP R7 Operation and Maintenance Applications, - EN/LZT 108 4108 R1</item> - <item>Erlang 5.0/OTP R7 Tool Applications, EN/LZT 108 4109 R1</item> - </list> - <p><em>About this Book</em> <br></br> -</p> - <p>This book contains documentation about the six applications in Erlang/OTP that - implement the CORBA services. - These applications are:</p> - <list type="bulleted"> - <item><em>cosEvent</em>, an Erlang implementation of the - CORBA service CosEvent.</item> - <item><em>cosEventDomain</em>, an Erlang implementation of the - CORBA service CosEventDomainAdmin.</item> - <item><em>cosFileTransfer</em>, an Erlang implementation of the - CORBA service CosFileTransfer.</item> - <item><em>cosNotificaton</em>, an Erlang implementation of the - CORBA service CosNotification.</item> - <item><em>cosProperty</em>, an Erlang implementation of the - CORBA service CosProperty.</item> - <item><em>cosTime</em>, an Erlang implementation of the - CORBA service CosTime.</item> - <item><em>cosTransaction</em>, an Erlang implementation of the - CORBA service CosTransaction.</item> - </list> - </preface> - </preamble> - <pagetext>cosEvent</pagetext> - <parts lift="no"> - <title>cosEvent User's Guide</title> - <include file="../../../../libraries/cosEvent/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/cosEvent/doc/src/application"></include> - </applications> - <pagetext>cosEventDomain</pagetext> - <parts lift="no"> - <title>cosEventDomain User's Guide</title> - <include file="../../../../libraries/cosEventDomain/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/cosEventDomain/doc/src/application"></include> - </applications> - <pagetext>cosFileTransfert</pagetext> - <parts lift="no"> - <title>cosFileTransfer User's Guide</title> - <include file="../../../../libraries/cosFileTransfer/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/cosFileTransfer/doc/src/application"></include> - </applications> - <pagetext>cosNotification</pagetext> - <parts lift="no"> - <title>cosNotification User's Guide</title> - <include file="../../../../libraries/cosNotification/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/cosNotification/doc/src/application"></include> - </applications> - <pagetext>cosTime</pagetext> - <parts lift="no"> - <title>cosTime User's Guide</title> - <include file="../../../../libraries/cosTime/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/cosTime/doc/src/application"></include> - </applications> - <pagetext>cosProperty</pagetext> - <parts lift="no"> - <title>cosProperty User's Guide</title> - <include file="../../../../libraries/cosProperty/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/cosProperty/doc/src/application"></include> - </applications> - <pagetext>Erlang/OTP CORBA Services</pagetext> -</book> - diff --git a/system/doc/Books/src/database_management.xml b/system/doc/Books/src/database_management.xml deleted file mode 100644 index 268612a990..0000000000 --- a/system/doc/Books/src/database_management.xml +++ /dev/null @@ -1,118 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE book SYSTEM "book.dtd"> - -<book> - <header titlestyle="special"> - <copyright> - <year>1997</year> - <year>2007</year> - <holder>Ericsson AB, All Rights Reserved</holder> - </copyright> - <legalnotice> - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - The Initial Developer of the Original Code is Ericsson AB. - </legalnotice> - - <title>Erlang 5.1/OTP R8 Database Applications </title> - <prepared></prepared> - <docno>EN/LZT 108 194 R2</docno> - <date>1997-05-27</date> - <rev></rev> - <abbreviation></abbreviation> - </header> - <insidecover> - <include file="insidecover"></include> - </insidecover> - <pagetext>Erlang/OTP Database Applications</pagetext> - <preamble> - <contents level="2"></contents> - <preface> - <p><em>Introduction</em> <br></br> -This documentation describes the Open - Telecom Platform (Erlang/OTP), a middle-ware based on the Erlang - programming language, aiming at providing time-saving and flexible - development for robust, adaptable telecom systems.</p> - <p><em>Organization of the Documentation</em> <br></br> - - The documentation is divided into eight parts:</p> - <list type="bulleted"> - <item>Erlang 5.0/OTP R7 System Documentation, EN/LZT 1084095 R1</item> - <item>Erlang 5.0/OTP R7 Run-Time System and Basic Applications, - EN/LZT 108 4106 R1</item> - <item>Erlang 5.0/OTP R7 Standard Library Application, EN/LZT 108 4107 - R1</item> - <item>Erlang 5.0/OTP R7 Database Applications, EN/LZT 108 194 R3</item> - <item>Erlang 5.0/OTP R7 CORBA and IDL Applications, - EN/LZT 151 810 R2</item> - <item>Erlang 5.0/OTP R7 Interface and Communication Applications, - EN/LZT 108 4110 R1</item> - <item>Erlang 5.0/OTP R7 Operation and Maintenance Applications, - EN/LZT 108 4108 R1</item> - <item>Erlang 5.0/OTP R7 Tool Applications, EN/LZT 108 4109 R1</item> - </list> - <p><em>About this Book</em> <br></br> -</p> - <p>This book is common for the four applications in Erlang/OTP, which - manage databases. These applications are:</p> - <list type="bulleted"> - <item><em>Mnesia</em>; to be used when - a continuous - operation and soft real-time properties are required.</item> - <item><em>Mnesia_Session</em>; to be used when the Mnesia Database - Management - System has to be accessed from other programming languages than - Erlang.</item> - <item><em>Mnemosyne</em>; to be used as a query language for the - Mnesia Database - Management System. </item> - <item><em>ODBC,</em> Open DataBase Connectivity; to be used when - various SQL - databases will be accessed.</item> - </list> - </preface> - </preamble> - <pagetext>Mnesia</pagetext> - <parts lift="no"> - <title>Mnesia User's Guide</title> - <include file="../../../../libraries/mnesia/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/mnesia/doc/src/application"></include> - </applications> - <pagetext>Mnesia_Session</pagetext> - <parts lift="no"> - <title>Mnesia_Session User's Guide</title> - <include file="../../../../libraries/mnesia_session/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/mnesia_session/doc/src/application"></include> - </applications> - <pagetext>Mnemosyne</pagetext> - <parts lift="no"> - <title>Mnemosyne User's Guide</title> - <include file="../../../../libraries/mnemosyne/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/mnemosyne/doc/src/application"></include> - </applications> - <pagetext>ODBC </pagetext> - <parts lift="no"> - <title>ODBC User's Guide</title> - <include file="../../../../libraries/odbc/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/odbc/doc/src/application"></include> - </applications> - <pagetext>Erlang/OTP Database Applications</pagetext> -</book> - diff --git a/system/doc/Books/src/frame_crop.header.src b/system/doc/Books/src/frame_crop.header.src deleted file mode 100644 index 131045ef8d..0000000000 --- a/system/doc/Books/src/frame_crop.header.src +++ /dev/null @@ -1,101 +0,0 @@ -%% This PostScript file centers the page on an A4 paper and draws a -%% crop marks. dvips is assumed. - -%% DEBUG -%% /mydict 20 dict def mydict begin - -%% Millimeter to postscript points: - -/mm{ 25.4 div 72 mul }def - - -%% The size of the retangle is: - -/papw 172 mm def -/paph 232 mm def - -%% The text area size is: - -%%/txtw{131 mm}def -%%/txth{285 mm}def - - -%% A4 size is: - -/A4w 209 mm def -/A4h 296 mm def - -%% Draw crop marks - -/mkcrop{ - 0.3 setlinewidth - 0 0 mkonecrop - papw 0 mkonecrop - 0 paph mkonecrop - papw paph mkonecrop -} def - -/mkonecrop{gsave - translate - newpath - 0 18 moveto - 0 -18 lineto - stroke - newpath - -18 0 moveto - 18 0 lineto - stroke - grestore } def - -%% Draw a frame - -/mkframe{ - gsave - 0 A4h paph sub moveto - papw 0 rlineto - 0 paph rlineto - papw neg 0 rlineto - 0 paph neg rlineto - stroke - grestore -} def - -/mkmarks{mk@MARKS@} def - -/mkinfo{ gsave - 72 68 moveto (Book: @BOOK@) show - 72 60 moveto (Generated by dvips: @DATE@) show - 72 52 moveto (Config spec: @CSFILE@) show - 72 44 moveto (View: @VIEW@) show - 72 36 moveto (User: @USER@) show - 72 28 moveto (Latex: @LATEX@) show - 72 20 moveto (@DOCBVSN@ @DOCB@) show - 72 12 moveto (@DVIPSVSN@ @DVIPS@) show - 288 68 moveto (Book build: @BOOKBUILD@) show - 288 60 moveto (Build script: @BUILDSCRIPT@) show - grestore -} def - - -%% Beginning-of-page hook (the thing called by dvips): - -/bop-hook{ - gsave - /Helvetica findfont 7 scalefont setfont - gsave - A4w papw sub 2 div - A4h paph sub 2 div neg - translate - mkmarks - grestore - mkinfo - grestore -} def - -%% DEBUG -%%/bop-hook -%%showpage -%%end - - - diff --git a/system/doc/Books/src/insidecover.xml b/system/doc/Books/src/insidecover.xml deleted file mode 100644 index e6b4b4206c..0000000000 --- a/system/doc/Books/src/insidecover.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE bookinsidecover SYSTEM "bookinsidecover.dtd"> - -<bookinsidecover> -Ericsson Utvecklings AB provides this publication ``as is'' without warranty of any kind. In no event shall Ericsson Utvecklings AB be liable for any damage arising from any defect or error in this publication. The contents of this publication is subject to revision without notice due to continued progress in design. <br></br> - <br></br> -Copyright © 1996-2000 Ericsson Utvecklings AB. <br></br> - <br></br> -All rights reserved including the right of reproduction in whole or in part in any form. <br></br> - <vfill></vfill> - <br></br> - <bold>Editors & Layout:</bold> -Anna Fedoriw and Bengt Nilsson <br></br> - <bold>Written and Produced by:</bold> -The Open Telecom Platform Project <br></br> - <bold>Cover by:</bold> -Röjning & Co <br></br> - <br></br> -Fourth revised and restructured edition. <br></br> - <br></br> -Printed in Sweden by XBS Koncerntryck, Stockholm 2000 <br></br> - <br></br> - <vfill></vfill> - <br></br> -For more information: URL <tt>http://www.erlang.se</tt> - <br></br> - <br></br> - <br></br> -Ericsson Utvecklings AB <br></br> -OTP Product Development <br></br> -Box 1505 <br></br> -SE-125 25 ÄLVSJÖ <br></br> -Sweden <br></br> -</bookinsidecover> - diff --git a/system/doc/Books/src/interfaces.xml b/system/doc/Books/src/interfaces.xml deleted file mode 100644 index b225f9581a..0000000000 --- a/system/doc/Books/src/interfaces.xml +++ /dev/null @@ -1,144 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE book SYSTEM "book.dtd"> - -<book> - <header titlestyle="special"> - <copyright> - <year>2000</year> - <year>2007</year> - <holder>Ericsson AB, All Rights Reserved</holder> - </copyright> - <legalnotice> - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - The Initial Developer of the Original Code is Ericsson AB. - </legalnotice> - - <title>Erlang 5.1/OTP R8 Interface and Communication Applications</title> - <prepared>Bengt Nilsson</prepared> - <docno></docno> - <date>2000-02-09</date> - <rev></rev> - </header> - <insidecover> - <include file="insidecover"></include> - </insidecover> - <pagetext>Erlang/OTP Interface and Communication </pagetext> - <preamble> - <contents level="2"></contents> - <preface> - <p><em>Introduction</em> <br></br> -This documentation describes the Open - Telecom Platform (Erlang/OTP), a middle-ware based on the Erlang - programming language, aiming at providing time-saving and flexible - development for robust, adaptable telecom systems.</p> - <p><em>Organization of the Documentation</em> <br></br> - - The documentation is divided into eight parts:</p> - <list type="bulleted"> - <item>Erlang 5.0/OTP R7 System Documentation, EN/LZT 1084095 R1</item> - <item>Erlang 5.0/OTP R7 Run-Time System and Basic Applications, - EN/LZT 108 4106 R1</item> - <item>Erlang 5.0/OTP R7 Standard Library Application, EN/LZT 108 4107 - R1</item> - <item>Erlang 5.0/OTP R7 Database Applications, EN/LZT 108 194 R3</item> - <item>Erlang 5.0/OTP R7 CORBA and IDL Applications, - EN/LZT 151 810 R2</item> - <item>Erlang 5.0/OTP R7 Interface and Communication Applications, - EN/LZT 108 4110 R1</item> - <item>Erlang 5.0/OTP R7 Operation and Maintenance Applications, - EN/LZT 108 4108 R1</item> - <item>Erlang 5.0/OTP R7 Tool Applications, EN/LZT 108 4109 R1</item> - </list> - <p><em>About this Book</em> <br></br> -</p> - <p>This book is a collection of the documentation of following applications:</p> - <list type="bulleted"> - <item>Asn1</item> - <item>Comet</item> - <item>Crypto</item> - <item>Erl_Interface</item> - <item>GS</item> - <item>Inets</item> - <item>Jinterface</item> - <item>Megaco</item> - <item>SSL</item> - </list> - </preface> - </preamble> - <pagetext>Asn1</pagetext> - <parts lift="yes"> - <title>Asn1 User's Guide</title> - <include file="../../../../erts/lib/asn1/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../erts/lib/asn1/doc/src/application"></include> - </applications> - <pagetext>Comet </pagetext> - <parts lift="no"> - <title>Comet User's Guide</title> - <include file="../../../../erts/lib/comet/doc/src/users_guide"></include> - </parts> - <applications> - <include file="../../../../erts/lib/comet/doc/src/refman"></include> - </applications> - <pagetext>Crypto</pagetext> - <applications> - <include file="../../../../erts/lib/crypto/doc/src/refman"></include> - </applications> - <pagetext>Erl_Interface</pagetext> - <parts lift="yes"> - <title>Erl_Interface User's Guide</title> - <include file="../../../../erts/lib/erl_interface/doc/src/part_erl_interface"></include> - </parts> - <applications> - <include file="../../../../erts/lib/erl_interface/doc/src/application_erl_interface"></include> - </applications> - <pagetext>GS</pagetext> - <parts lift="no"> - <title>GS User's Guide</title> - <include file="../../../../erts/lib/gs/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../erts/lib/gs/doc/src/application"></include> - </applications> - <pagetext>Inets</pagetext> - <applications> - <include file="../../../../libraries/inets/doc/src/application"></include> - </applications> - <pagetext>Jinterface </pagetext> - <parts lift="yes"> - <title>Jinterface User's Guide</title> - <include file="../../../../erts/lib/jinterface/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../erts/lib/jinterface/doc/src/application"></include> - </applications> - <pagetext>Megaco</pagetext> - <parts lift="no"> - <title>Megaco User's Guide</title> - <include file="../../../../erts/lib/megaco/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../erts/lib/megaco/doc/src/application"></include> - </applications> - <pagetext>SSL </pagetext> - <parts lift="yes"> - <title>SSL Users Guide</title> - <include file="../../../../erts/lib/ssl/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../erts/lib/ssl/doc/src/refman"></include> - </applications> - <pagetext>Erlang/OTP Interface and Communication </pagetext> -</book> - diff --git a/system/doc/Books/src/make_headers b/system/doc/Books/src/make_headers deleted file mode 100755 index 0ec7aca632..0000000000 --- a/system/doc/Books/src/make_headers +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/sh -# -# Make Postscript header files (frame and crop marks) -# -# From environment: BOOK CSFILE USER BOOKBUILD - -DATE=`date` -VIEW=`cleartool pwv -s -set` -LATEX=`which latex` -DVIPSVSN=`dvips -version` -DVIPS=`which dvips` -DOCBVSN=`docb_transform -version` -DOCB=`which docb_transform` -for marks in frame crop; do - sed -e "s/@DATE@/$DATE/g" \ - -e "s/@BOOK@/$BOOK/g" \ - -e "s/@MARKS@/$marks/g" \ - -e "s;@CSFILE@;$CSFILE;g" \ - -e "s/@VIEW@/$VIEW/g" \ - -e "s/@USER@/$USER/g" \ - -e "s;@LATEX@;$LATEX;g" \ - -e "s;@DVIPSVSN@;$DVIPSVSN;g" \ - -e "s;@DVIPS@;$DVIPS;g" \ - -e "s/@DOCBVSN@/$DOCBVSN/g" \ - -e "s;@DOCB@;$DOCB;g" \ - -e "s;@BOOKBUILD@;$BOOKBUILD;g" \ - -e "s;@BUILDSCRIPT@;$BUILDSCRIPT;g" \ - frame_crop.header.src > $marks.header -done - diff --git a/system/doc/Books/src/operation_maintenance.xml b/system/doc/Books/src/operation_maintenance.xml deleted file mode 100644 index 41bdd3dff7..0000000000 --- a/system/doc/Books/src/operation_maintenance.xml +++ /dev/null @@ -1,94 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE book SYSTEM "book.dtd"> - -<book> - <header titlestyle="special"> - <copyright> - <year>2000</year> - <year>2007</year> - <holder>Ericsson AB, All Rights Reserved</holder> - </copyright> - <legalnotice> - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - The Initial Developer of the Original Code is Ericsson AB. - </legalnotice> - - <title>Erlang 5.1/OTP R8 Operation and Maintenance Applications</title> - <prepared>Bengt Nilsson</prepared> - <docno></docno> - <date>2000-02-09</date> - <rev></rev> - </header> - <insidecover> - <include file="insidecover"></include> - </insidecover> - <pagetext>Erlang/OTP Operation and Maintenance</pagetext> - <preamble> - <contents level="2"></contents> - <preface> - <p><em>Introduction</em> <br></br> -This documentation describes the Open - Telecom Platform (Erlang/OTP), a middle-ware based on the Erlang - programming language, aiming at providing time-saving and flexible - development for robust, adaptable telecom systems.</p> - <p><em>Organization of the Documentation</em> <br></br> -the documentation is - divided into eight parts:</p> - <list type="bulleted"> - <item>Erlang 5.0/OTP R7 System Documentation, EN/LZT 1084095 R1</item> - <item>Erlang 5.0/OTP R7 Run-Time System and Basic Applications, - EN/LZT 108 4106 R1</item> - <item>Erlang 5.0/OTP R7 Standard Library Application, EN/LZT 108 4107 R1</item> - <item>Erlang 5.0/OTP R7 Database Applications, EN/LZT 108 194 R3</item> - <item>Erlang 5.0/OTP R7 CORBA and IDL Applications, - EN/LZT 151 810 R2</item> - <item>Erlang 5.0/OTP R7 Interface and Communication Applications, - EN/LZT 108 4110 R1</item> - <item>Erlang 5.0/OTP R7 Operation and Maintenance Applications, - EN/LZT 108 4108 R1</item> - <item>Erlang 5.0/OTP R7 Tool Applications, EN/LZT 108 4109 R1</item> - </list> - <p><em>About this Book</em> <br></br> - - This book is a collection of Erlang application used during Operation and Maintenance. The following applications are covered:</p> - <list type="bulleted"> - <item>EVA</item> - <item>OS_Mon </item> - <item>SNMP</item> - </list> - </preface> - </preamble> - <pagetext>EVA</pagetext> - <parts lift="no"> - <title>EVA User's Guide</title> - <include file="../../../../libraries/eva/doc/src/users_guide"></include> - </parts> - <applications> - <include file="../../../../libraries/eva/doc/src/refman"></include> - <include file="../../../../libraries/eva/doc/src/refman_snmp"></include> - </applications> - <pagetext>OS_Mon</pagetext> - <applications> - <include file="../../../../erts/lib/os_mon/doc/src/application"></include> - </applications> - <pagetext>SNMP</pagetext> - <parts lift="no"> - <title>SNMP User's Guide</title> - <include file="../../../../libraries/snmp/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/snmp/doc/src/application"></include> - </applications> - <pagetext>Erlang/OTP Operation and Maintenance</pagetext> -</book> - diff --git a/system/doc/Books/src/orber_ic.xml b/system/doc/Books/src/orber_ic.xml deleted file mode 100644 index 16eb076dc7..0000000000 --- a/system/doc/Books/src/orber_ic.xml +++ /dev/null @@ -1,112 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE book SYSTEM "book.dtd"> - -<book> - <header titlestyle="special"> - <copyright> - <year>1999</year> - <year>2007</year> - <holder>Ericsson AB, All Rights Reserved</holder> - </copyright> - <legalnotice> - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - The Initial Developer of the Original Code is Ericsson AB. - </legalnotice> - - <title>Erlang 5.1/OTP R8 CORBA and IDL Applications </title> - <prepared></prepared> - <docno>EN/LZT 151 810 R1</docno> - <date>1997-05-27</date> - <rev></rev> - <abbreviation></abbreviation> - </header> - <insidecover> - <include file="insidecover"></include> - </insidecover> - <pagetext>Erlang/OTP CORBA and IDL</pagetext> - <preamble> - <contents level="2"></contents> - <preface> - <p><em>Introduction</em> <br></br> - - This documentation describes the Open - Telecom Platform (Erlang/OTP), a middle-ware based on the Erlang - programming language, aiming at providing time-saving and flexible - development for robust, adaptable telecom systems.</p> - <p><em>Organization of the Documentation</em> <br></br> - - The documentation is divided into eight parts:</p> - <list type="bulleted"> - <item>Erlang 5.0/OTP R7 System Documentation, EN/LZT 1084095 R1</item> - <item>Erlang 5.0/OTP R7 Run-Time System and Basic Applications, - EN/LZT 108 4106 R1</item> - <item>Erlang 5.0/OTP R7 Standard Library Application, EN/LZT 108 4107 - R1</item> - <item>Erlang 5.0/OTP R7 Database Applications, EN/LZT 108 194 R3</item> - <item>Erlang 5.0/OTP R7 CORBA and IDL Applications, - EN/LZT 151 810 R2</item> - <item>Erlang 5.0/OTP R7 Interface and Communication Applications, - EN/LZT 108 4110 R1</item> - <item>Erlang 5.0/OTP R7 Operation and Maintenance Applications, - EN/LZT 108 4108 R1</item> - <item>Erlang 5.0/OTP R7 Tool Applications, EN/LZT 108 4109 R1</item> - </list> - <p><em>About this Book</em> <br></br> -</p> - <p>This book contains documentation about the six applications in Erlang/OTP that - implement the CORBA standard. - These applications are:</p> - <list type="bulleted"> - <item> - <p><em>IC</em>, a compiler for OMG Interface Definition - Language (IDL). - The OMG IDL is used for - language-independent interface specifications.</p> - <p>The compiler - is capable of producing;</p> - <list type="bulleted"> - <item>Erlang stub/skeleton code for CORBA (default behavior)</item> - <item>Erlang stub/skeleton code for OTP generic servers</item> - <item>C stub/skeleton code for OTP generic servers</item> - <item>Java stub/skeleton code for OTP generic servers</item> - <item>Erlang code for module interfaces</item> - </list> - </item> - <item><em>Orber</em>, which is an Object Request Broker that can be - used for - accessing distributed services in an - soft real-time environment. It is especially useful for applications - that use a heterogeneous - language environments.</item> - </list> - </preface> - </preamble> - <pagetext>IC</pagetext> - <parts lift="no"> - <title>IC User's Guide </title> - <include file="../../../../libraries/ic/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/ic/doc/src/application"></include> - </applications> - <pagetext>Orber</pagetext> - <parts lift="no"> - <title>Orber User's Guide</title> - <include file="../../../../libraries/orber/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/orber/doc/src/application"></include> - </applications> - <pagetext>Erlang/OTP CORBA and IDL</pagetext> -</book> - diff --git a/system/doc/Books/src/stdlib.xml b/system/doc/Books/src/stdlib.xml deleted file mode 100644 index 31ea0d6962..0000000000 --- a/system/doc/Books/src/stdlib.xml +++ /dev/null @@ -1,73 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE book SYSTEM "book.dtd"> - -<book> - <header titlestyle="special"> - <copyright> - <year>2000</year> - <year>2007</year> - <holder>Ericsson AB, All Rights Reserved</holder> - </copyright> - <legalnotice> - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - The Initial Developer of the Original Code is Ericsson AB. - </legalnotice> - - <title>Erlang 5.1/OTP R8 Standard Library Application</title> - <prepared>Bengt Nilsson</prepared> - <docno></docno> - <date>2000-05-30</date> - <rev></rev> - </header> - <insidecover> - <include file="insidecover"></include> - </insidecover> - <pagetext>Erlang/OTP Standard Library Application</pagetext> - <preamble> - <contents level="2"></contents> - <preface> - <p><em>Introduction</em> <br></br> -This documentation describes the Open - Telecom Platform (Erlang/OTP), a middle-ware based on the Erlang - programming language, aiming at providing time-saving and flexible - development for robust, adaptable telecom systems.</p> - <p><em>Organization of the Documentation</em> <br></br> - - The documentation is divided into eight parts:</p> - <list type="bulleted"> - <item>Erlang 5.0/OTP R7 System Documentation, EN/LZT 1084095 R1</item> - <item>Erlang 5.0/OTP R7 Run-Time System and Basic Applications, - EN/LZT 108 4106 R1</item> - <item>Erlang 5.0/OTP R7 Standard Library Application, EN/LZT 108 4107 - R1</item> - <item>Erlang 5.0/OTP R7 Database Applications, EN/LZT 108 194 R3</item> - <item>Erlang 5.0/OTP R7 CORBA and IDL Applications, - EN/LZT 151 810 R2</item> - <item>Erlang 5.0/OTP R7 Interface and Communication Applications, - EN/LZT 108 4110 R1</item> - <item>Erlang 5.0/OTP R7 Operation and Maintenance Applications, - EN/LZT 108 4108 R1</item> - <item>Erlang 5.0/OTP R7 Tool Applications, EN/LZT 108 4109 R1</item> - </list> - <p><em>About this Book</em> <br></br> -</p> - <p>This book describes all standard libraries in Erlang/OTP. - It contains modules for manipulating lists, strings, and files etc. - </p> - </preface> - </preamble> - <applications> - <include file="../../../../erts/lib/stdlib/doc/src/application"></include> - </applications> -</book> - diff --git a/system/doc/Books/src/tools.xml b/system/doc/Books/src/tools.xml deleted file mode 100644 index 9d7bf45f31..0000000000 --- a/system/doc/Books/src/tools.xml +++ /dev/null @@ -1,139 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE book SYSTEM "book.dtd"> - -<book> - <header titlestyle="special"> - <copyright> - <year>2000</year> - <year>2007</year> - <holder>Ericsson AB, All Rights Reserved</holder> - </copyright> - <legalnotice> - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - The Initial Developer of the Original Code is Ericsson AB. - </legalnotice> - - <title>Erlang 5.1/OTP R8 Tool Applications</title> - <prepared>Bengt Nilsson</prepared> - <docno></docno> - <date>2000-02-09</date> - <rev></rev> - </header> - <insidecover> - <include file="insidecover"></include> - </insidecover> - <pagetext>Erlang/OTP Tools</pagetext> - <preamble> - <contents level="1"></contents> - <preface> - <p><em>Introduction</em> <br></br> -This documentation describes the Open - Telecom Platform (Erlang/OTP), a middle-ware based on the Erlang - programming language, aiming at providing time-saving and flexible - development for robust, adaptable telecom systems.</p> - <p><em>Organization of the Documentation</em> <br></br> - - The documentation is divided into eight parts:</p> - <list type="bulleted"> - <item>Erlang 5.0/OTP R7 System Documentation, EN/LZT 1084095 R1</item> - <item>Erlang 5.0/OTP R7 Run-Time System and Basic Applications, - EN/LZT 108 4106 R1</item> - <item>Erlang 5.0/OTP R7 Standard Library Application, - EN/LZT 108 4107 R1</item> - <item>Erlang 5.0/OTP R7 Database Applications, EN/LZT 108 194 R3</item> - <item>Erlang 5.0/OTP R7 CORBA and IDL Applications, - EN/LZT 151 810 R2</item> - <item>Erlang 5.0/OTP R7 Interface and Communication Applications, - EN/LZT 108 4110 R1</item> - <item>Erlang 5.0/OTP R7 Operation and Maintenance Applications, - EN/LZT 108 4108 R1</item> - <item>Erlang 5.0/OTP R7 Tool Applications, EN/LZT 108 4109 R1</item> - </list> - <p><em>About this Book</em> <br></br> -This book contains User's Guides - and Reference Manuals - for the following applications:</p> - <list type="bulleted"> - <item>Appmon</item> - <item>Debugger</item> - <item>Pman</item> - <item>Toolbar</item> - <item>Tools</item> - <item>TV</item> - </list> - <p>For the following applications, only Reference Manuals are available:</p> - <list type="bulleted"> - <item>Parsetools</item> - <item>Runtime_Tools</item> - </list> - </preface> - </preamble> - <pagetext>Appmon</pagetext> - <parts lift="yes"> - <title>Appmon User's Guide</title> - <include file="../../../../libraries/appmon/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../libraries/appmon/doc/src/application"></include> - </applications> - <pagetext>Debugger</pagetext> - <parts lift="yes"> - <title>Debugger User's Guide</title> - <include file="../../../../tools/debugger/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../tools/debugger/doc/src/application"></include> - </applications> - <pagetext>Pman</pagetext> - <parts lift="yes"> - <title>Pman User's Guide</title> - <include file="../../../../tools/pman/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../tools/pman/doc/src/application"></include> - </applications> - <pagetext>Toolbar</pagetext> - <parts lift="yes"> - <title>Toolbar User's Guide</title> - <include file="../../../../tools/toolbar/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../tools/toolbar/doc/src/application"></include> - </applications> - <pagetext>Tools</pagetext> - <parts lift="no"> - <title>Tools User's Guide</title> - <include file="../../../../tools/tools/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../tools/tools/doc/src/application"></include> - </applications> - <pagetext>TV</pagetext> - <parts lift="yes"> - <title>TV User's Guide</title> - <include file="../../../../tools/tv/doc/src/part"></include> - </parts> - <applications> - <include file="../../../../tools/tv/doc/src/application"></include> - </applications> - <pagetext>Parsetools</pagetext> - <applications> - <include file="../../../../tools/parsetools/doc/src/application"></include> - </applications> - <pagetext>Runtime_Tools</pagetext> - <applications> - <include file="../../../../tools/runtime_tools/doc/src/refman"></include> - </applications> - <pagetext>Erlang/OTP Tools</pagetext> -</book> - diff --git a/system/doc/Books/src/ug.xml b/system/doc/Books/src/ug.xml deleted file mode 100644 index 15b3dc0a31..0000000000 --- a/system/doc/Books/src/ug.xml +++ /dev/null @@ -1,127 +0,0 @@ -<?xml version="1.0" encoding="latin1" ?> -<!DOCTYPE book SYSTEM "book.dtd"> - -<book> - <header titlestyle="special"> - <copyright> - <year>1997</year> - <year>2007</year> - <holder>Ericsson AB, All Rights Reserved</holder> - </copyright> - <legalnotice> - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - The Initial Developer of the Original Code is Ericsson AB. - </legalnotice> - - <title>Erlang 5.1/OTP R8 System Documentation</title> - <prepared></prepared> - <docno>EN/LZT 151 247 R2</docno> - <date></date> - <rev></rev> - </header> - <insidecover> - <include file="insidecover"></include> - </insidecover> - <pagetext>Erlang/OTP System Documentation</pagetext> - <preamble> - <contents level="2"></contents> - <preface> - <p><em>Introduction</em> <br></br> -This documentation describes the Open - Telecom Platform (Erlang/OTP), a middle-ware based on the Erlang - programming language, aiming at providing time-saving and flexible - development for robust, adaptable telecom systems.</p> - <p><em>Organization of the Documentation</em> <br></br> - - The documentation is divided into eight parts:</p> - <list type="bulleted"> - <item>Erlang 5.0/OTP R7 System Documentation, EN/LZT 1084095 R1</item> - <item>Erlang 5.0/OTP R7 Run-Time System and Basic Applications, - EN/LZT 108 4106 R1</item> - <item>Erlang 5.0/OTP R7 Standard Library Application, EN/LZT 108 4107 - R1</item> - <item>Erlang 5.0/OTP R7 Database Applications, EN/LZT 108 194 R3</item> - <item>Erlang 5.0/OTP R7 CORBA and IDL Applications, - EN/LZT 151 810 R2</item> - <item>Erlang 5.0/OTP R7 Interface and Communication Applications, - EN/LZT 108 4110 R1</item> - <item>Erlang 5.0/OTP R7 Operation and Maintenance Applications, - EN/LZT 108 4108 R1</item> - <item>Erlang 5.0/OTP R7 Tool Applications, EN/LZT 108 4109 R1</item> - </list> - <p><em>About this Book</em> <br></br> - This book is the starting point of the documentation and contains information about the Erlang programming language and runtime system, the OTP design principles, and how to install and configure Erlang/OTP.</p> - <list type="bulleted"> - <item>Chapter 1: Introduction</item> - <item>Chapter 2: "Getting Started with Erlang" gives an introduction to the Erlang runtime system and to tools such as Compiler and Debugger.</item> - <item>Chapter 3: "OTP Design Principles" describes a way to structure Erlang code in terms of applications and supervision trees. The standard behaviors are described and examples illustrate how to apply these behaviors to typical applications.</item> - <item>Chapter 4: "System Principles" describes the strategies - and options, which are available to start an Erlang/OTP system. </item> - <item>Chapter 5: "Operation and Management Principles" describes the model for operation and maintenance of sub-systems.</item> - <item>Chapter 6: "Installation Guide"gives guidelines on how to install Erlang/OTP on UNIX or Windows.</item> - <item>Chapter 7: "Embedded Systems" is a supplement to "Installation Guide", It describes issues that are specific for running Erlang/OTP on an embedded system.</item> - <item>Chapter 8: "Erlang Extensions Since 4.4" lists all extensions to the Erlang programming languages since the latest version of the book <em>Concurrent Programming in ERLANG</em>.</item> - <item>Chapter 9: "Interoperability Tutorial" gives an orientation of the different - interoperability mechanisms, which can be used when integrating an - Erlang program with a program written in an other programming language.</item> - </list> - </preface> - </preamble> - <pagetext>Introduction</pagetext> - <parts lift="yes"> - <title>Introduction</title> - <include file="../../system_architecture_intro/part"></include> - </parts> - <pagetext>Getting Started with Erlang</pagetext> - <parts lift="yes"> - <title>Getting Started with Erlang</title> - <include file="../../getting_started/part"></include> - </parts> - <pagetext>Design Principles</pagetext> - <parts lift="no"> - <title>OTP Design Principles</title> - <include file="../../design_principles/part"></include> - </parts> - <pagetext>System Principles</pagetext> - <parts lift="yes"> - <title>System Principles</title> - <include file="../../system_principles/part"></include> - </parts> - <pagetext>Operation and Management Principles</pagetext> - <parts lift="yes"> - <title>Operation and Management Principles</title> - <include file="../../oam/part"></include> - </parts> - <pagetext>Installation Guide</pagetext> - <parts lift="no"> - <title>Installation Guide</title> - <include file="../../../../system/doc/installation_guide/part"></include> - </parts> - <pagetext>Embedded System</pagetext> - <parts lift="no"> - <title>Embedded System</title> - <include file="../../../../system/doc/embedded/part"></include> - </parts> - <pagetext>Erlang Extensions since 4.4</pagetext> - <parts lift="no"> - <title>Erlang Extensions since 4.4</title> - <include file="../../../../system/doc/extensions/part"></include> - </parts> - <pagetext>Interoperability Tutorial</pagetext> - <parts lift="no"> - <title>Interoperability Tutorial</title> - <include file="../../tutorial/part"></include> - </parts> - <pagetext>Erlang/OTP System Documentation</pagetext> -</book> - diff --git a/system/doc/design_principles/events.xml b/system/doc/design_principles/events.xml index 5579f1e459..23a9b8c7bc 100644 --- a/system/doc/design_principles/events.xml +++ b/system/doc/design_principles/events.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>1997</year><year>2009</year> + <year>1997</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -217,5 +217,22 @@ terminate(_Args, Fd) -> ok</pre> </section> </section> + <section> + <title>Handling Other Messages</title> + <p>If the gen_event should be able to receive other messages than + events, the callback function <c>handle_info(Info, StateName, StateData)</c> + must be implemented to handle them. Examples of + other messages are exit messages, if the gen_event is linked to + other processes (than the supervisor) and trapping exit signals.</p> + <code type="none"> +handle_info({'EXIT', Pid, Reason}, State) -> + ..code to handle exits here.. + {ok, NewState}.</code> + <p>The code_change method also has to be implemented.</p> + <code type="none"> +code_change(OldVsn, State, Extra) -> + ..code to convert state (and more) during code change + {ok, NewState}</code> + </section> </chapter> diff --git a/system/doc/design_principles/fsm.xml b/system/doc/design_principles/fsm.xml index 7cdd62057b..edb2e20605 100644 --- a/system/doc/design_principles/fsm.xml +++ b/system/doc/design_principles/fsm.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>1997</year><year>2009</year> + <year>1997</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -308,6 +308,11 @@ terminate(normal, _StateName, _StateData) -> handle_info({'EXIT', Pid, Reason}, StateName, StateData) -> ..code to handle exits here.. {next_state, StateName1, StateData1}.</code> + <p>The code_change method also has to be implemented.</p> + <code type="none"> +code_change(OldVsn, StateName, StateData, Extra) -> + ..code to convert state (and more) during code change + {ok, NextStateName, NewStateData}</code> </section> </chapter> diff --git a/system/doc/design_principles/gen_server_concepts.xml b/system/doc/design_principles/gen_server_concepts.xml index 8131c47a69..a904390999 100644 --- a/system/doc/design_principles/gen_server_concepts.xml +++ b/system/doc/design_principles/gen_server_concepts.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>1997</year><year>2009</year> + <year>1997</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -264,6 +264,11 @@ terminate(normal, State) -> handle_info({'EXIT', Pid, Reason}, State) -> ..code to handle exits here.. {noreply, State1}.</code> + <p>The code_change method also has to be implemented.</p> + <code type="none"> +code_change(OldVsn, State, Extra) -> + ..code to convert state (and more) during code change + {ok, NewState}.</code> </section> </chapter> diff --git a/system/doc/efficiency_guide/advanced.xml b/system/doc/efficiency_guide/advanced.xml index 2383e3cf3d..821175bb09 100644 --- a/system/doc/efficiency_guide/advanced.xml +++ b/system/doc/efficiency_guide/advanced.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2001</year><year>2010</year> + <year>2001</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -34,7 +34,7 @@ <p>A good start when programming efficiently is to have knowledge about how much memory different data types and operations require. It is implementation-dependent how much memory the Erlang data types and - other items consume, but here are some figures for + other items consume, but here are some figures for the erts-5.2 system (OTP release R9B). (There have been no significant changes in R13.)</p> @@ -200,7 +200,7 @@ On 64-bit architectures: 4 words for a reference from the current local node, an <seealso marker="#ports">the maximum number of Erlang ports</seealso> available, and operating system specific settings and limits.</item> <tag><em>Number of arguments to a function or fun</em></tag> - <item>256</item> + <item>255</item> </taglist> </section> </chapter> diff --git a/system/doc/efficiency_guide/appendix.xml b/system/doc/efficiency_guide/appendix.xml index 631ef9bee7..6eaaeffbc4 100644 --- a/system/doc/efficiency_guide/appendix.xml +++ b/system/doc/efficiency_guide/appendix.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>2002</year> - <year>2007</year> + <year>2011</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> diff --git a/system/doc/efficiency_guide/binaryhandling.xml b/system/doc/efficiency_guide/binaryhandling.xml index 8746de4b60..425d6308cf 100644 --- a/system/doc/efficiency_guide/binaryhandling.xml +++ b/system/doc/efficiency_guide/binaryhandling.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>2007</year> - <year>2007</year> + <year>2011</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> @@ -114,7 +114,7 @@ my_binary_to_list(<<>>) -> [].]]></code> data. For each field that is matched out of a binary, the position in the match context will be incremented.</p> - <p>In R11B, a match context was only using during a binary matching + <p>In R11B, a match context was only used during a binary matching operation.</p> <p>In R12B, the compiler tries to avoid generating code that @@ -205,7 +205,7 @@ Bin4 = <<Bin1/binary,17>>, %% 5 !!! ProcBin for the binary. The reason is that the binary object can be moved (reallocated) during an append operation, and when that happens the pointer in the ProcBin must be updated. If there would be more than - on ProcBin pointing to the binary object, it would not be possible to + one ProcBin pointing to the binary object, it would not be possible to find and update all of them.</p> <p>Therefore, certain operations on a binary will mark it so that @@ -291,7 +291,7 @@ my_binary_to_list(<<>>) -> [].]]></code> that initializes the matching operation will basically do nothing when it sees that it was passed a match context instead of a binary.</p> - <p>When the end of the binary is reached and second clause matches, + <p>When the end of the binary is reached and the second clause matches, the match context will simply be discarded (removed in the next garbage collection, since there is no longer any reference to it).</p> diff --git a/system/doc/efficiency_guide/drivers.xml b/system/doc/efficiency_guide/drivers.xml index 9fe54fb19a..1967fd7ada 100644 --- a/system/doc/efficiency_guide/drivers.xml +++ b/system/doc/efficiency_guide/drivers.xml @@ -40,7 +40,7 @@ any code in a driver.</p> <p>By default, that lock will be at the driver level, meaning that - if several ports has been opened to the same driver, only code for + if several ports have been opened to the same driver, only code for one port at the same time can be running.</p> <p>A driver can be configured to instead have one lock for each port.</p> diff --git a/system/doc/efficiency_guide/functions.xml b/system/doc/efficiency_guide/functions.xml index fe14a4f000..6be49dd7c9 100644 --- a/system/doc/efficiency_guide/functions.xml +++ b/system/doc/efficiency_guide/functions.xml @@ -127,7 +127,7 @@ map_pairs2(_Map, [_|_]=Xs, [] ) -> map_pairs2(Map, [X|Xs], [Y|Ys]) -> [Map(X, Y)|map_pairs2(Map, Xs, Ys)].]]></code> - <p>the compiler is free rearrange the clauses. It will generate code + <p>the compiler is free to rearrange the clauses. It will generate code similar to this</p> <p><em>DO NOT (already done by the compiler)</em></p> diff --git a/system/doc/efficiency_guide/myths.xml b/system/doc/efficiency_guide/myths.xml index 65113c9372..6fdeb5c4f9 100644 --- a/system/doc/efficiency_guide/myths.xml +++ b/system/doc/efficiency_guide/myths.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>2007</year> - <year>2007</year> + <year>2011</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> diff --git a/system/doc/efficiency_guide/processes.xml b/system/doc/efficiency_guide/processes.xml index a25ec53370..b75be7d531 100644 --- a/system/doc/efficiency_guide/processes.xml +++ b/system/doc/efficiency_guide/processes.xml @@ -105,7 +105,7 @@ loop() -> <seealso marker="erts:erlang#spawn_opt/4">spawn_opt/4</seealso>.</p> <p>The gain is twofold: Firstly, although the garbage collector will - grow the heap, it will it grow it step by step, which will be more + grow the heap, it will grow it step by step, which will be more costly than directly establishing a larger heap when the process is spawned. Secondly, the garbage collector may also shrink the heap if it is much larger than the amount of data stored on it; @@ -172,7 +172,7 @@ days_in_month(M) -> <p>Shared sub-terms are <em>not</em> preserved when a term is sent to another process, passed as the initial process arguments in the <c>spawn</c> call, or stored in an ETS table. - That is an optimization. Most applications do not send message + That is an optimization. Most applications do not send messages with shared sub-terms.</p> <p>Here is an example of how a shared sub-term can be created:</p> @@ -237,8 +237,8 @@ true <section> <title>The SMP emulator</title> - <p>The SMP emulator (introduced in R11B) will take advantage of - multi-core or multi-CPU computer by running several Erlang schedulers + <p>The SMP emulator (introduced in R11B) will take advantage of a + multi-core or multi-CPU computer by running several Erlang scheduler threads (typically, the same as the number of cores). Each scheduler thread schedules Erlang processes in the same way as the Erlang scheduler in the non-SMP emulator.</p> diff --git a/system/doc/efficiency_guide/profiling.xml b/system/doc/efficiency_guide/profiling.xml index 65d13408bc..8be1c7175d 100644 --- a/system/doc/efficiency_guide/profiling.xml +++ b/system/doc/efficiency_guide/profiling.xml @@ -74,7 +74,7 @@ <title>What to look for</title> <p>When analyzing the result file from the profiling activity you should look for functions that are called many - times and have a long "own" execution time (time excluded calls + times and have a long "own" execution time (time excluding calls to other functions). Functions that just are called very many times can also be interesting, as even small things can add up to quite a bit if they are repeated often. Then you need to @@ -87,7 +87,7 @@ <item>Are there redundant tests that can be removed? </item> <item>Is there some expression calculated giving the same result each time? </item> - <item>Is there other ways of doing this that are equivalent and + <item>Are there other ways of doing this that are equivalent and more efficient?</item> <item>Can I use another internal data representation to make things more efficient? </item> @@ -138,7 +138,7 @@ <p><c>cprof</c> is something in between <c>fprof</c> and <c>cover</c> regarding features. It counts how many times each function is called when the program is run, on a per module - basis. <c>cprof</c> has a low performance degradation (versus + basis. <c>cprof</c> has a low performance degradation effect (versus <c>fprof</c> and <c>eprof</c>) and does not need to recompile any modules to profile (versus <c>cover</c>).</p> </section> @@ -231,7 +231,7 @@ consistent from run to run. The disadvantage is that the time spent in the operating system kernel (such as swapping and I/O) are not included. Therefore, measuring CPU time is misleading if - any I/O (file or sockets) are involved.</p> + any I/O (file or socket) is involved.</p> <p>It is probably a good idea to do both wall-clock measurements and CPU time measurements.</p> @@ -239,18 +239,18 @@ <p>Some additional advice:</p> <list type="bulleted"> - <item>The granularity of both types measurement could be quite + <item>The granularity of both types of measurement could be quite high so you should make sure that each individual measurement lasts for at least several seconds.</item> <item>To make the test fair, each new test run should run in its own, - newly created Erlang process. Otherwise, if all tests runs in the + newly created Erlang process. Otherwise, if all tests run in the same process, the later tests would start out with larger heap sizes - and therefore probably does less garbage collections. You could + and therefore probably do less garbage collections. You could also consider restarting the Erlang emulator between each test.</item> <item>Do not assume that the fastest implementation of a given algorithm - on computer architecture X also is the fast on computer architecture Y.</item> + on computer architecture X also is the fastest on computer architecture Y.</item> </list> </section> diff --git a/system/doc/efficiency_guide/tablesDatabases.xml b/system/doc/efficiency_guide/tablesDatabases.xml index 4b53348c4c..2f5103a08b 100644 --- a/system/doc/efficiency_guide/tablesDatabases.xml +++ b/system/doc/efficiency_guide/tablesDatabases.xml @@ -280,9 +280,9 @@ lists:filter(fun(X) -> X#person.name == "Bryan" end, TabList), <p>A simple solution would be to use the <c>name</c> field as the key instead of the <c>idno</c> field, but that would cause problems if the names were not unique. A more general solution - would be create a second table with name as key and idno as - data, i.e. to index (invert) the table with regards to the - <c>name</c> field. The second table would of course have to be + would be to create a second table with <c>name</c> as key and + <c>idno</c> as data, i.e. to index (invert) the table with regards + to the <c>name</c> field. The second table would of course have to be kept consistent with the master table. Mnesia could do this for you, but a home brew index table could be very efficient compared to the overhead involved in using Mnesia.</p> diff --git a/system/doc/embedded/intro.xml b/system/doc/embedded/intro.xml index 3eafffd6fa..545500c9c9 100644 --- a/system/doc/embedded/intro.xml +++ b/system/doc/embedded/intro.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>1997</year> - <year>2007</year> + <year>2011</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> diff --git a/system/doc/embedded/vme_problems.xml b/system/doc/embedded/vme_problems.xml index 7f9b929875..03a70bae3b 100644 --- a/system/doc/embedded/vme_problems.xml +++ b/system/doc/embedded/vme_problems.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>1997</year> - <year>2007</year> + <year>2011</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> diff --git a/system/doc/embedded/xntp.xml b/system/doc/embedded/xntp.xml index 564b63fc7d..270d986cf1 100644 --- a/system/doc/embedded/xntp.xml +++ b/system/doc/embedded/xntp.xml @@ -5,7 +5,7 @@ <header> <copyright> <year>1997</year> - <year>2007</year> + <year>2011</year> <holder>Ericsson AB, All Rights Reserved</holder> </copyright> <legalnotice> diff --git a/system/doc/reference_manual/errors.xml b/system/doc/reference_manual/errors.xml index 02885a3813..4e207021d3 100644 --- a/system/doc/reference_manual/errors.xml +++ b/system/doc/reference_manual/errors.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2003</year><year>2009</year> + <year>2003</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -48,10 +48,8 @@ The Erlang programming language has built-in features for handling of run-time errors.</p> <p>A run-time error can also be emulated by calling - <c>erlang:error(Reason)</c>, <c>erlang:error(Reason, Args)</c> - (those appeared in Erlang 5.4/OTP-R10), - <c>erlang:fault(Reason)</c> or <c>erlang:fault(Reason, Args)</c> - (old equivalents).</p> + <c>erlang:error(Reason)</c> or <c>erlang:error(Reason, Args)</c> + (those appeared in Erlang 5.4/OTP-R10).</p> <p>A run-time error is another name for an exception of class <c>error</c>. </p> @@ -91,7 +89,7 @@ </row> <row> <cell align="left" valign="middle"><c>error</c></cell> - <cell align="left" valign="middle">Run-time error for example <c>1+a</c>, or the process called <c>erlang:error/1,2</c> (appeared in Erlang 5.4/OTP-R10B) or <c>erlang:fault/1,2</c> (old equivalent)</cell> + <cell align="left" valign="middle">Run-time error for example <c>1+a</c>, or the process called <c>erlang:error/1,2</c> (appeared in Erlang 5.4/OTP-R10B)</cell> </row> <row> <cell align="left" valign="middle"><c>exit</c></cell> @@ -108,7 +106,7 @@ and a stack trace (that aids in finding the code location of the exception).</p> <p>The stack trace can be retrieved using - <c>erlang:get_stacktrace/0</c> (new in Erlang 5.4/OTP-R10B + <c>erlang:get_stacktrace/0</c> (new in Erlang 5.4/OTP-R10B) from within a <c>try</c> expression, and is returned for exceptions of class <c>error</c> from a <c>catch</c> expression.</p> <p>An exception of class <c>error</c> is also known as a run-time diff --git a/system/doc/reference_manual/expressions.xml b/system/doc/reference_manual/expressions.xml index 714ecccaf6..497d7eb464 100644 --- a/system/doc/reference_manual/expressions.xml +++ b/system/doc/reference_manual/expressions.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2003</year><year>2010</year> + <year>2003</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -269,7 +269,7 @@ fun lists:append/2([1,2], [3,4]) set of auto-imported BIFs does not silently change the behavior of old code.</p> - <p>However, to avoid that old (pre R14) code changed it's + <p>However, to avoid that old (pre R14) code changed its behavior when compiled with OTP version R14A or later, the following restriction applies: If you override the name of a BIF that was auto-imported in OTP versions prior to R14A (ERTS version diff --git a/system/doc/reference_manual/typespec.xml b/system/doc/reference_manual/typespec.xml index a3660713e4..f08639f9a1 100755 --- a/system/doc/reference_manual/typespec.xml +++ b/system/doc/reference_manual/typespec.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2003</year><year>2009</year> + <year>2003</year><year>2010</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -32,29 +32,24 @@ <section> <title>Introduction of Types</title> <p> - Although Erlang is a dynamically typed language this section describes - an extension to the Erlang language for declaring sets of Erlang terms - to form a particular type, effectively forming a specific sub-type of the - set of all Erlang terms. + Erlang is a dynamically typed language. Still, it comes with a + language extension for declaring sets of Erlang terms to form a + particular type, effectively forming a specific sub-type of the set + of all Erlang terms. </p> <p> - Subsequently, these types can be used to specify types of record fields - and the argument and return types of functions. + Subsequently, these types can be used to specify types of record fields + and the argument and return types of functions. </p> <p> - Type information can be used to document function interfaces, - provide more information for bug detection tools such as <c>Dialyzer</c>, - and can be exploited by documentation tools such as <c>Edoc</c> for - generating program documentation of various forms. - It is expected that the type language described in this document will - supersede and replace the purely comment-based <c>@type</c> and + Type information can be used to document function interfaces, + provide more information for bug detection tools such as <c>Dialyzer</c>, + and can be exploited by documentation tools such as <c>Edoc</c> for + generating program documentation of various forms. + It is expected that the type language described in this document will + supersede and replace the purely comment-based <c>@type</c> and <c>@spec</c> declarations used by <c>Edoc</c>. </p> - <warning> - The syntax and semantics described here is still preliminary and might be - slightly changed and extended before it becomes officially supported. - The plan is that this will happen in R14B. - </warning> </section> <section> <marker id="syntax"></marker> @@ -96,7 +91,7 @@ Type :: any() %% The top type, the set of all Erlang terms. | none() %% The bottom type, contains no terms. | pid() | port() - | ref() + | reference() | [] %% nil | Atom | Binary @@ -139,326 +134,334 @@ Tuple :: tuple() %% stands for a tuple of any size TList :: Type | Type, TList ]]></pre> - <p> - Because lists are commonly used, they have shorthand type notations. - The type <c>list(T)</c> has the shorthand <c>[T]</c>. The shorthand <c>[T,...]</c> stands for - the set of non-empty proper lists whose elements are of type <c>T</c>. - The only difference between the two shorthands is that <c>[T]</c> may be an - empty list but <c>[T,...]</c> may not. - </p> - <p> - Notice that the shorthand for <c>list()</c>, i.e. the list of elements of unknown type, - is <c>[_]</c> (or <c>[any()]</c>), not <c>[]</c>. - The notation <c>[]</c> specifies the singleton type for the empty list. - </p> - <p> - For convenience, the following types are also built-in. - They can be thought as predefined aliases for the type unions also shown in - the table. (Some type unions below slightly abuse the syntax of types.) - </p> - <table> - <row> - <cell><b>Built-in type</b></cell><cell><b>Stands for</b></cell> - </row> - <row> - <cell><c>term()</c></cell><cell><c>any()</c></cell> - </row> - <row> - <cell><c>bool()</c></cell><cell><c>'false' | 'true'</c></cell> - </row> - <row> - <cell><c>byte()</c></cell><cell><c>0..255</c></cell> - </row> - <row> - <cell><c>char()</c></cell><cell><c>0..16#10ffff</c></cell> - </row> - <row> - <cell><c>non_neg_integer()</c></cell><cell><c>0..</c></cell> - </row> - <row> - <cell><c>pos_integer()</c></cell><cell><c>1..</c></cell> - </row> - <row> - <cell><c>neg_integer()</c></cell><cell><c>..-1</c></cell> - </row> - <row> - <cell><c>number()</c></cell><cell><c>integer() | float()</c></cell> - </row> - <row> - <cell><c>list()</c></cell><cell><c>[any()]</c></cell> - </row> - <row> - <cell><c>maybe_improper_list()</c></cell><cell><c>maybe_improper_list(any(), any())</c></cell> - </row> - <row> - <cell><c>maybe_improper_list(T)</c></cell><cell><c>maybe_improper_list(T, any())</c></cell> - </row> - <row> - <cell><c>string()</c></cell><cell><c>[char()]</c></cell> - </row> - <row> - <cell><c>nonempty_string()</c></cell><cell><c>[char(),...]</c></cell> - </row> - <row> - <cell><c>iolist()</c></cell><cell><c>maybe_improper_list( -char() | binary() | iolist(), binary() | [])</c></cell> - </row> - <row> - <cell><c>module()</c></cell><cell><c>atom()</c></cell> - </row> - <row> - <cell><c>mfa()</c></cell><cell><c>{atom(),atom(),byte()}</c></cell> - </row> - <row> - <cell><c>node()</c></cell><cell><c>atom()</c></cell> - </row> - <row> - <cell><c>timeout()</c></cell><cell><c>'infinity' | non_neg_integer()</c></cell> - </row> - <row> - <cell><c>no_return()</c></cell><cell><c>none()</c></cell> - </row> - </table> - - <p> - Users are not allowed to define types with the same names as the predefined or - built-in ones. - This is checked by the compiler and its violation results in a compilation - error. - (For bootstrapping purposes, it can also result to just a warning if this - involves a built-in type which has just been introduced.) - </p> - <note> - The following built-in list types also exist, - but they are expected to be rarely used. Hence, they have long names: - </note> - <pre> + <p> + Because lists are commonly used, they have shorthand type notations. + The type <c>list(T)</c> has the shorthand <c>[T]</c>. + The shorthand <c>[T,...]</c> stands for + the set of non-empty proper lists whose elements are of type <c>T</c>. + The only difference between the two shorthands is that <c>[T]</c> may be an + empty list but <c>[T,...]</c> may not. + </p> + <p> + Notice that the shorthand for <c>list()</c>, i.e. the list of + elements of unknown type, is <c>[_]</c> (or <c>[any()]</c>), not <c>[]</c>. + The notation <c>[]</c> specifies the singleton type for the empty list. + </p> + <p> + For convenience, the following types are also built-in. + They can be thought as predefined aliases for the type unions also shown in + the table. (Some type unions below slightly abuse the syntax of types.) + </p> + <table> + <row> + <cell><b>Built-in type</b></cell><cell><b>Stands for</b></cell> + </row> + <row> + <cell><c>term()</c></cell><cell><c>any()</c></cell> + </row> + <row> + <cell><c>boolean()</c></cell><cell><c>'false' | 'true'</c></cell> + </row> + <row> + <cell><c>byte()</c></cell><cell><c>0..255</c></cell> + </row> + <row> + <cell><c>char()</c></cell><cell><c>0..16#10ffff</c></cell> + </row> + <row> + <cell><c>non_neg_integer()</c></cell><cell><c>0..</c></cell> + </row> + <row> + <cell><c>pos_integer()</c></cell><cell><c>1..</c></cell> + </row> + <row> + <cell><c>neg_integer()</c></cell><cell><c>..-1</c></cell> + </row> + <row> + <cell><c>number()</c></cell><cell><c>integer() | float()</c></cell> + </row> + <row> + <cell><c>list()</c></cell><cell><c>[any()]</c></cell> + </row> + <row> + <cell><c>maybe_improper_list()</c></cell><cell><c>maybe_improper_list(any(), any())</c></cell> + </row> + <row> + <cell><c>maybe_improper_list(T)</c></cell><cell><c>maybe_improper_list(T, any())</c></cell> + </row> + <row> + <cell><c>string()</c></cell><cell><c>[char()]</c></cell> + </row> + <row> + <cell><c>nonempty_string()</c></cell><cell><c>[char(),...]</c></cell> + </row> + <row> + <cell><c>iolist()</c></cell><cell><c>maybe_improper_list(char() | binary() | iolist(), binary() | [])</c></cell> + </row> + <row> + <cell><c>module()</c></cell><cell><c>atom()</c></cell> + </row> + <row> + <cell><c>mfa()</c></cell><cell><c>{atom(),atom(),byte()}</c></cell> + </row> + <row> + <cell><c>node()</c></cell><cell><c>atom()</c></cell> + </row> + <row> + <cell><c>timeout()</c></cell><cell><c>'infinity' | non_neg_integer()</c></cell> + </row> + <row> + <cell><c>no_return()</c></cell><cell><c>none()</c></cell> + </row> + </table> + + <p> + Users are not allowed to define types with the same names as the + predefined or built-in ones. This is checked by the compiler and + its violation results in a compilation error. + (For bootstrapping purposes, it can also result to just a warning if this + involves a built-in type which has just been introduced.) + </p> + <note> + The following built-in list types also exist, + but they are expected to be rarely used. Hence, they have long names: + </note> + <pre> nonempty_maybe_improper_list(Type) :: nonempty_maybe_improper_list(Type, any()) -nonempty_maybe_improper_list() :: nonempty_maybe_improper_list(any()) - </pre> - <p> - where the following two types - define the set of Erlang terms one would expect: - </p> - <pre> +nonempty_maybe_improper_list() :: nonempty_maybe_improper_list(any())</pre> + <p> + where the following two types + define the set of Erlang terms one would expect: + </p> + <pre> nonempty_improper_list(Type1, Type2) -nonempty_maybe_improper_list(Type1, Type2) - </pre> - <p> - Also for convenience, we allow for record notation to be used. - Records are just shorthands for the corresponding tuples. - </p> - <pre> +nonempty_maybe_improper_list(Type1, Type2)</pre> + <p> + Also for convenience, we allow for record notation to be used. + Records are just shorthands for the corresponding tuples. + </p> + <pre> Record :: #Erlang_Atom{} - | #Erlang_Atom{Fields} - </pre> + | #Erlang_Atom{Fields}</pre> + <p> + Records have been extended to possibly contain type information. + This is described in the sub-section <seealso marker="#typeinrecords">"Type information in record declarations"</seealso> below. + </p> + </section> + + <section> + <title>Type declarations of user-defined types</title> <p> - Records have been extended to possibly contain type information. - This is described in the sub-section <seealso marker="#typeinrecords">"Type information in record declarations"</seealso> below. - </p> - </section> - - <section> - <title>Type declarations of user-defined types</title> - <p> - As seen, the basic syntax of a type is an atom followed by closed - parentheses. New types are declared using '-type' compiler attributes - as in the following: - </p> - <pre> --type my_type() :: Type. - </pre> - <p> - where the type name is an atom (<c>'my_type'</c> in the above) followed by - parenthesis. Type is a type as defined in the previous section. - A current restriction is that Type can contain only predefined types - or user-defined types which have been previously defined. - This restriction is enforced by the compiler and results in a - compilation error. (A similar restriction currently exists for records). - </p> - <p> - This means that currently general recursive types cannot be defined. - Lifting this restriction is future work. - </p> - <p> - Type declarations can also be parameterized by including type variables - between the parentheses. The syntax of type variables is the same as - Erlang variables (starts with an upper case letter). - Naturally, these variables can - and should - appear on the RHS of the - definition. A concrete example appears below: - </p> - <pre> --type orddict(Key, Val) :: [{Key, Val}]. - </pre> - - </section> - - <marker id="typeinrecords"/> - <section> - <title> - Type information in record declarations - </title> - <p> - The types of record fields can be specified in the declaration of the - record. The syntax for this is: - </p> - <pre> --record(rec, {field1 :: Type1, field2, field3 :: Type3}). - </pre> - <p> - For fields without type annotations, their type defaults to any(). - I.e., the above is a shorthand for: - </p> - <pre> --record(rec, {field1 :: Type1, field2 :: any(), field3 :: Type3}). - </pre> - <p> - In the presence of initial values for fields, - the type must be declared after the initialization as in the following: - </p> - <pre> --record(rec, {field1 = [] :: Type1, field2, field3 = 42 :: Type3}). - </pre> - <p> - Naturally, the initial values for fields should be compatible - with (i.e. a member of) the corresponding types. - This is checked by the compiler and results in a compilation error - if a violation is detected. For fields without initial values, - the singleton type <c>'undefined'</c> is added to all declared types. - In other words, the following two record declarations have identical - effects: - </p> - <pre> + As seen, the basic syntax of a type is an atom followed by closed + parentheses. New types are declared using '-type' and '-opaque' + compiler attributes as in the following: + </p> + <pre> +-type my_struct_type() :: Type. +-opaque my_opaq_type() :: Type.</pre> + <p> + where the type name is an atom (<c>'my_struct_type'</c> in the above) + followed by parentheses. Type is a type as defined in the + previous section. + A current restriction is that Type can contain only predefined types, + or user-defined types which are either module-local (i.e., with a + definition that is present in the code of the module) or are remote + types (i.e., types defined in and exported by other modules; see below). + For module-local types, the restriction that their definition + exists in the module is enforced by the compiler and results in a + compilation error. (A similar restriction currently exists for records.) + </p> + <p> + Type declarations can also be parameterized by including type variables + between the parentheses. The syntax of type variables is the same as + Erlang variables (starts with an upper case letter). + Naturally, these variables can - and should - appear on the RHS of the + definition. A concrete example appears below: + </p> + <pre> +-type orddict(Key, Val) :: [{Key, Val}].</pre> + <p> + A module can export some types in order to declare that other modules + are allowed to refer to them as <em>remote types</em>. + This declaration has the following form: + <pre> +-export_type([T1/A1, ..., Tk/Ak]).</pre> + where the Ti's are atoms (the name of the type) and the Ai's are their + arguments. An example is given below: + <pre> +-export_type([my_struct_type/0, orddict/2]).</pre> + Assuming that these types are exported from module <c>'mod'</c> then + one can refer to them from other modules using remote type expressions + like those below: + <pre> +mod:my_struct_type() +mod:orddict(atom(), term())</pre> + One is not allowed to refer to types which are not declared as exported. + </p> + <p> + Types declared as <c>opaque</c> represent sets of terms whose + structure is not supposed to be visible in any way outside of + their defining module (i.e., only the module defining them is + allowed to depend on their term structure). Consequently, such + types do not make much sense as module local - module local + types are not accessible by other modules anyway - and should + always be exported. + </p> + </section> + + <marker id="typeinrecords"/> + <section> + <title>Type information in record declarations</title> + <p> + The types of record fields can be specified in the declaration of the + record. The syntax for this is: + </p> + <pre> +-record(rec, {field1 :: Type1, field2, field3 :: Type3}).</pre> + <p> + For fields without type annotations, their type defaults to any(). + I.e., the above is a shorthand for: + </p> + <pre> +-record(rec, {field1 :: Type1, field2 :: any(), field3 :: Type3}).</pre> + <p> + In the presence of initial values for fields, + the type must be declared after the initialization as in the following: + </p> + <pre> +-record(rec, {field1 = [] :: Type1, field2, field3 = 42 :: Type3}).</pre> + <p> + Naturally, the initial values for fields should be compatible + with (i.e. a member of) the corresponding types. + This is checked by the compiler and results in a compilation error + if a violation is detected. For fields without initial values, + the singleton type <c>'undefined'</c> is added to all declared types. + In other words, the following two record declarations have identical + effects: + </p> + <pre> -record(rec, {f1 = 42 :: integer(), f2 :: float(), - f3 :: 'a' | 'b'). + f3 :: 'a' | 'b'}). -record(rec, {f1 = 42 :: integer(), f2 :: 'undefined' | float(), - f3 :: 'undefined' | 'a' | 'b'). - </pre> - <p> - For this reason, it is recommended that records contain initializers, - whenever possible. - </p> - <p> - Any record, containing type information or not, once defined, - can be used as a type using the syntax: - </p> - <pre> -#rec{} - </pre> - <p> - In addition, the record fields can be further specified when using - a record type by adding type information about the field in the following - manner: - </p> - <pre> -#rec{some_field :: Type} - </pre> - <p> - Any unspecified fields are assumed to have the type in the original - record declaration. - </p> - </section> + f3 :: 'undefined' | 'a' | 'b'}).</pre> + <p> + For this reason, it is recommended that records contain initializers, + whenever possible. + </p> + <p> + Any record, containing type information or not, once defined, + can be used as a type using the syntax: + </p> + <pre> +#rec{}</pre> + <p> + In addition, the record fields can be further specified when using + a record type by adding type information about the field in + the following manner: + </p> + <pre> +#rec{some_field :: Type}</pre> + <p> + Any unspecified fields are assumed to have the type in the original + record declaration. + </p> + </section> - <section> - <title>Specifications (contracts) for functions</title> - <p> - A contract (or specification) for a function is given using the new - compiler attribute <c>'-spec'</c>. The basic format is as follows: - </p> - <pre> --spec Module:Function(ArgType1, ..., ArgTypeN) -> ReturnType. - </pre> - <p> - The arity of the function has to match the number of arguments, - or else a compilation error occurs. - </p> - <p> - This form can also be used in header files (.hrl) to declare type - information for exported functions. - Then these header files can be included in files that (implicitly or - explicitly) import these functions. - </p> - <p> - For most uses within a given module, the following shorthand is allowed: - </p> - <pre> --spec Function(ArgType1, ..., ArgTypeN) -> ReturnType. - </pre> - <p> - Also, for documentation purposes, argument names can be given: - </p> - <pre> --spec Function(ArgName1 :: Type1, ..., ArgNameN :: TypeN) -> RT. - </pre> - <p> - A function specification can be overloaded. - That is, it can have several types, separated by a semicolon (<c>;</c>): - </p> - <pre> + <section> + <title>Specifications for functions</title> + <p> + A specification (or contract) for a function is given using the new + compiler attribute <c>'-spec'</c>. The general format is as follows: + </p> + <pre> +-spec Module:Function(ArgType1, ..., ArgTypeN) -> ReturnType.</pre> + <p> + The arity of the function has to match the number of arguments, + or else a compilation error occurs. + </p> + <p> + This form can also be used in header files (.hrl) to declare type + information for exported functions. + Then these header files can be included in files that (implicitly or + explicitly) import these functions. + </p> + <p> + For most uses within a given module, the following shorthand suffices: + </p> + <pre> +-spec Function(ArgType1, ..., ArgTypeN) -> ReturnType.</pre> + <p> + Also, for documentation purposes, argument names can be given: + </p> + <pre> +-spec Function(ArgName1 :: Type1, ..., ArgNameN :: TypeN) -> RT.</pre> + <p> + A function specification can be overloaded. + That is, it can have several types, separated by a semicolon (<c>;</c>): + </p> + <pre> -spec foo(T1, T2) -> T3 - ; (T4, T5) -> T6. - </pre> - <p> - A current restriction, which currently results in a warning - (OBS: not an error) by the compiler, is that the domains of the argument - types cannot be overlapping. - For example, the following specification results in a warning: - </p> - <pre> + ; (T4, T5) -> T6.</pre> + <p> + A current restriction, which currently results in a warning + (OBS: not an error) by the compiler, is that the domains of + the argument types cannot be overlapping. + For example, the following specification results in a warning: + </p> + <pre> -spec foo(pos_integer()) -> pos_integer() - ; (integer()) -> integer(). - </pre> - <p> - Type variables can be used in specifications to specify relations for - the input and output arguments of a function. - For example, the following specification defines the type of a - polymorphic identity function: - </p> - <pre> --spec id(X) -> X. - </pre> - <p> - However, note that the above specification does not restrict the input - and output type in any way. - We can constrain these types by guard-like subtype constraints: - </p> - <pre> --spec id(X) -> X when is_subtype(X, tuple()). - </pre> - <p> - and provide bounded quantification. Currently, - the <c>is_subtype/2</c> guard is the only guard which can - be used in a <c>'-spec'</c> attribute. - </p> - <p> - The scope of an <c>is_subtype/2</c> constraint is the - <c>(...) -> RetType</c> - specification after which it appears. To avoid confusion, - we suggest that different variables are used in different constituents of - an overloaded contract as in the example below: - </p> - <pre> --spec foo({X, integer()}) -> X when is_subtype(X, atom()) - ; ([Y]) -> Y when is_subtype(Y, number()). - </pre> - <p> - Some functions in Erlang are not meant to return; - either because they define servers or because they are used to - throw exceptions as the function below: - </p> - <pre> -my_error(Err) -> erlang:throw({error, Err}). - </pre> - <p> - For such functions we recommend the use of the special no_return() - type for their "return", via a contract of the form: - </p> - <pre> --spec my_error(term()) -> no_return(). - </pre> - </section> + ; (integer()) -> integer().</pre> + <p> + Type variables can be used in specifications to specify relations for + the input and output arguments of a function. + For example, the following specification defines the type of a + polymorphic identity function: + </p> + <pre> +-spec id(X) -> X.</pre> + <p> + However, note that the above specification does not restrict the input + and output type in any way. + We can constrain these types by guard-like subtype constraints: + </p> + <pre> +-spec id(X) -> X when is_subtype(X, tuple()).</pre> + <p> + or equivalently by the more succinct and more modern form of the above: + </p> + <pre> +-spec id(X) -> X when X :: tuple().</pre> + <p> + and provide bounded quantification. Currently, the <c>::</c> constraint + (the <c>is_subtype/2</c> guard) is the only guard constraint which can + be used in the <c>'when'</c> part of a <c>'-spec'</c> attribute. + </p> + <p> + The scope of an <c>::</c> constraint is the + <c>(...) -> RetType</c> + specification after which it appears. To avoid confusion, + we suggest that different variables are used in different + constituents of an overloaded contract as in the example below: + </p> + <pre> +-spec foo({X, integer()}) -> X when X :: atom() + ; ([Y]) -> Y when Y :: number().</pre> + <p> + Some functions in Erlang are not meant to return; + either because they define servers or because they are used to + throw exceptions as the function below: + </p> + <pre> +my_error(Err) -> erlang:throw({error, Err}).</pre> + <p> + For such functions we recommend the use of the special no_return() + type for their "return", via a contract of the form: + </p> + <pre> +-spec my_error(term()) -> no_return().</pre> + </section> </chapter> diff --git a/system/doc/top/Makefile b/system/doc/top/Makefile index 154deb006b..aac90fcaa4 100644 --- a/system/doc/top/Makefile +++ b/system/doc/top/Makefile @@ -111,6 +111,10 @@ GLOSSARY = $(HTMLDIR)/glossary.html GLOSSARY_SRC = $(ERL_TOP)/system/internal_tools/doctools/src/glossary.erl GLOSSARY_SCRIPT = $(EBIN)/glossary.$(EMULATOR) +TEMPLATES = \ + templates/index.html.src \ + templates/applications.html.src + #-------------------------------------------------------------------------- $(INDEX_SCRIPT): $(INDEX_SRC) @@ -119,8 +123,14 @@ $(INDEX_SCRIPT): $(INDEX_SRC) # We don't list toc_*.html as targets because we don't know $(HTMLDIR)/index.html + $(HTMLDIR)/applications.html: $(INDEX_SCRIPT) echo "Generating index $@" - $(ERL) -noshell -pa $(EBIN) -s erl_html_tools top_index $(ERL_TOP) \ - $(HTMLDIR) $(SYSTEM_VSN) -s erlang halt +# Check if we are building the index from source or an installed release + if test "$$RELEASE_ROOT" = "" ; then \ + $(ERL) -noshell -pa $(EBIN) -s erl_html_tools top_index src $(ERL_TOP) \ + $(HTMLDIR) $(SYSTEM_VSN) -s erlang halt ;\ + else \ + $(ERL) -noshell -pa $(EBIN) -s erl_html_tools top_index rel $(RELEASE_ROOT) \ + $(HTMLDIR) $(SYSTEM_VSN) -s erlang halt ;\ + fi #-------------------------------------------------------------------------- @@ -139,8 +149,15 @@ $(MAN_INDEX_SCRIPT): $(MAN_INDEX_SRC) $(ERLC) -o$(EBIN) +warn_unused_vars $< $(MAN_INDEX): $(MAN_INDEX_SCRIPT) - $(ERL) -noshell -pa $(EBIN) -s otp_man_index gen $(ERL_TOP) $@ \ - -s erlang halt +# Check if we are building the index from source or an installed release + if test "$$RELEASE_ROOT" = "" ; then \ + $(ERL) -noshell -pa $(EBIN) -s otp_man_index gen src $(ERL_TOP) $@ \ + -s erlang halt ;\ + else \ + $(ERL) -noshell -pa $(EBIN) -s otp_man_index gen rel $(RELEASE_ROOT) $@ \ + -s erlang halt ;\ + fi + #-------------------------------------------------------------------------- @@ -226,7 +243,11 @@ release_docs_spec: docs $(INSTALL_DIR) $(RELSYSDIR)/js $(INSTALL_DATA) \ $(JAVASCRIPT) $(RELSYSDIR)/js - $(INSTALL_DATA) $(INDEX_FILES) $(MAN_INDEX) $(TOP_HTML_FILES) $(RELSYSDIR) + $(INSTALL_DATA) $(INDEX_FILES) $(MAN_INDEX) $(TOP_HTML_FILES) $(RELSYSDIR) + $(INSTALL_DIR) $(RELSYSDIR)/docbuild + $(INSTALL_DATA) $(INDEX_SCRIPT) $(MAN_INDEX_SCRIPT) $(JAVASCRIPT_BUILD_SCRIPT) \ + $(INDEX_SRC) $(MAN_INDEX_SRC) $(JAVASCRIPT_BUILD_SCRIPT_SRC) \ + $(TEMPLATES) $(RELSYSDIR)/docbuild release_spec: diff --git a/system/doc/top/src/erl_html_tools.erl b/system/doc/top/src/erl_html_tools.erl index c920245f94..bb6a9a9f0a 100644 --- a/system/doc/top/src/erl_html_tools.erl +++ b/system/doc/top/src/erl_html_tools.erl @@ -2,7 +2,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 2009-2010. All Rights Reserved. +%% Copyright Ericsson AB 2009-2011. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -26,7 +26,7 @@ %%----------------------------------------------------------------- -module(erl_html_tools). --export([top_index/0,top_index/1,top_index/3,top_index_silent/3]). +-export([top_index/0,top_index/1,top_index/4,top_index_silent/3]). -include_lib("kernel/include/file.hrl"). @@ -40,7 +40,8 @@ group_order() -> {test, "Test"}, {doc, "Documentation"}, {orb, "Object Request Broker & IDL"}, - {misc, "Miscellaneous"} + {misc, "Miscellaneous"}, + {eric, "Ericsson Internal"} ]. top_index() -> @@ -49,19 +50,22 @@ top_index() -> io:format("Variable ERL_TOP is required\n",[]); Value -> {_,RelName} = init:script_id(), - top_index(Value, filename:join(Value, "doc"), RelName) + top_index(src, Value, filename:join(Value, "doc"), RelName) end. -top_index([RootDir, DestDir, OtpRel]) +top_index([src, RootDir, DestDir, OtpRel]) when is_atom(RootDir), is_atom(DestDir), is_atom(OtpRel) -> - top_index(atom_to_list(RootDir), atom_to_list(DestDir), atom_to_list(OtpRel)); -top_index(RootDir) when is_atom(RootDir) -> + top_index(src, atom_to_list(RootDir), atom_to_list(DestDir), atom_to_list(OtpRel)); +top_index([rel, RootDir, DestDir, OtpRel]) + when is_atom(RootDir), is_atom(DestDir), is_atom(OtpRel) -> + top_index(rel, atom_to_list(RootDir), atom_to_list(DestDir), atom_to_list(OtpRel)); +top_index(RootDir) when is_atom(RootDir) -> {_,RelName} = init:script_id(), - top_index(RootDir, filename:join(RootDir, "doc"), RelName). + top_index(rel, RootDir, filename:join(RootDir, "doc"), RelName). -top_index(RootDir, DestDir, OtpRel) -> +top_index(Source, RootDir, DestDir, OtpRel) -> report("****\nRootDir: ~p", [RootDir]), report("****\nDestDir: ~p", [DestDir]), report("****\nOtpRel: ~p", [OtpRel]), @@ -72,13 +76,13 @@ top_index(RootDir, DestDir, OtpRel) -> report("****\nTemplates: ~p", [Templates]), Bases = [{"../lib/", filename:join(RootDir,"lib")}, {"../", RootDir}], - Groups = find_information(Bases), + Groups = find_information(Source, Bases), report("****\nGroups: ~p", [Groups]), process_templates(Templates, DestDir, Groups). top_index_silent(RootDir, DestDir, OtpRel) -> put(silent,true), - Result = top_index(RootDir, DestDir, OtpRel), + Result = top_index(rel, RootDir, DestDir, OtpRel), erase(silent), Result. @@ -130,10 +134,10 @@ subst_file(Group, OutFile, Template, Info) -> file:write(Stream, Text), file:close(Stream); Error -> - error("Can't write to file ~s: ~w", [OutFile,Error]) + local_error("Can't write to file ~s: ~w", [OutFile,Error]) end; Error -> - error("Can't write to file ~s: ~w", [OutFile,Error]) + local_error("Can't write to file ~s: ~w", [OutFile,Error]) end. @@ -152,15 +156,15 @@ find_templates([SearchPath | SearchPaths], AllSearchPaths) -> Result end; find_templates([], AllSearchPaths) -> - error("No templates found in ~p",[AllSearchPaths]). + local_error("No templates found in ~p",[AllSearchPaths]). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This function read all application names and if present all "info" files. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -find_information(Bases) -> - Paths = find_application_paths(Bases), +find_information(Source, Bases) -> + Paths = find_application_paths(Source, Bases), % report("****\nPaths: ~p", [Paths]), Apps = find_application_infos(Paths), % report("****\nApps: ~p", [Apps]), @@ -176,35 +180,47 @@ find_information(Bases) -> % % We know URL ends in a slash. -find_application_paths([]) -> +find_application_paths(_, []) -> []; -find_application_paths([{URL, Dir} | Paths]) -> +find_application_paths(Source, [{URL, Dir} | Paths]) -> + + AppDirs = get_app_dirs(Dir), + AppPaths = get_app_paths(Source, AppDirs, URL), + AppPaths ++ find_application_paths(Source, Paths). + + +get_app_paths(src, AppDirs, URL) -> Sub1 = "doc/html/index.html", %% Sub2 = "doc/index.html", + lists:map( + fun({App, AppPath}) -> + VsnFile = filename:join(AppPath, "vsn.mk"), + VsnStr = + case file:read_file(VsnFile) of + {ok, Bin} -> + case re:run(Bin, ".*VSN\s*=\s*([0-9\.]+).*",[{capture,[1],list}]) of + {match, [V]} -> + V; + nomatch -> + exit(io_lib:format("No VSN variable found in ~s\n", + [VsnFile])) + end; + {error, Reason} -> + exit(io_lib:format("~p : ~s\n", [Reason, VsnFile])) + end, + AppURL = URL ++ App ++ "-" ++ VsnStr, + {App, VsnStr, AppPath, AppURL ++ "/" ++ Sub1} + end, AppDirs); +get_app_paths(rel, AppDirs, URL) -> + Sub1 = "doc/html/index.html", +%% Sub2 = "doc/index.html", + lists:map( + fun({App, AppPath}) -> + [AppName, VsnStr] = string:tokens(App, "-"), + AppURL = URL ++ App, + {AppName, VsnStr, AppPath, AppURL ++ "/" ++ Sub1} + end, AppDirs). - AppDirs = get_app_dirs(Dir), - - AppPaths = - lists:map( - fun({App, AppPath}) -> - VsnFile = filename:join(AppPath, "vsn.mk"), - VsnStr = - case file:read_file(VsnFile) of - {ok, Bin} -> - case re:run(Bin, ".*VSN\s*=\s*([0-9\.]+).*",[{capture,[1],list}]) of - {match, [V]} -> - V; - nomatch -> - exit(io_lib:format("No VSN variable found in ~s\n", - [VsnFile])) - end; - {error, Reason} -> - exit(io_lib:format("~p : ~s\n", [Reason, VsnFile])) - end, - AppURL = URL ++ App ++ "-" ++ VsnStr, - {App, VsnStr, AppPath, AppURL ++ "/" ++ Sub1} - end, AppDirs), - AppPaths ++ find_application_paths(Paths). get_app_dirs(Dir) -> {ok, Files} = file:list_dir(Dir), @@ -212,7 +228,7 @@ get_app_dirs(Dir) -> lists:map(fun(File) -> {File, filename:join([Dir, File])} end, Files), lists:zf(fun is_app_with_doc/1, AFiles). -is_app_with_doc({"." ++ ADir, _APath}) -> +is_app_with_doc({"." ++ _ADir, _APath}) -> false; is_app_with_doc({ADir, APath}) -> case file:read_file_info(filename:join([APath, "info"])) of @@ -253,7 +269,7 @@ find_application_infos([{App, Vsn, AppPath, IndexURL} | Paths]) -> string:substr(G0,N+1)} end; false -> - error("No group given",[]) + local_error("No group given",[]) end, Text = case lists:keysearch("short", 1, Db) of @@ -411,7 +427,7 @@ subst_applinks_1([{G, Heading}|Gs], Info0, Group) -> end; subst_applinks_1([], [], _) -> []; subst_applinks_1([], Info, _) -> - error("Info left: ~p\n", [Info]), + local_error("Info left: ~p\n", [Info]), []. html_applinks([{Name,[{_,_,URL,_}|_]}|AppNames]) -> @@ -653,7 +669,7 @@ sub_repl([], _Fun, Acc, S, Pos) -> {string:substr(S, Pos+1), Acc}. % Error and warnings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -error(Format, Args) -> +local_error(Format, Args) -> io:format("ERROR: " ++ Format ++ "\n", Args), exit(1). diff --git a/system/doc/top/src/otp_man_index.erl b/system/doc/top/src/otp_man_index.erl index 0fdc531b37..4ad975c53d 100644 --- a/system/doc/top/src/otp_man_index.erl +++ b/system/doc/top/src/otp_man_index.erl @@ -27,14 +27,20 @@ -module(otp_man_index). --export([gen/1]). +-export([gen/1, gen/2]). -include_lib("kernel/include/file.hrl"). -gen([RootDir, OutFile]) when is_atom(RootDir), is_atom(OutFile)-> +gen([Source, RootDir, OutFile]) when is_atom(RootDir), is_atom(OutFile)-> + gen(Source, RootDir, OutFile). + +gen(RootDir, OutFile) -> + gen(rel, RootDir, OutFile). + +gen(Source, RootDir, OutFile) -> Bases = [{"../lib/", filename:join(RootDir, "lib")}, {"../", RootDir}], - Apps = find_application_paths(Bases), + Apps = find_application_paths(Source, Bases), RefPages = find_ref_files(Apps), gen_html(RefPages, atom_to_list(OutFile)). @@ -81,43 +87,52 @@ find_ref_files([{App, Vsn, AppPath, RelPath} |Apps], Acc) -> find_ref_files(Apps, Refs2 ++ Acc) end. -find_application_paths([]) -> +find_application_paths(_, []) -> []; -find_application_paths([{URL, Dir} | Paths]) -> - Sub1 = "doc/html", +find_application_paths(Source, [{URL, Dir} | Paths]) -> AppDirs = get_app_dirs(Dir), - - AppPaths = - lists:map( - fun({App, AppPath}) -> - VsnFile = filename:join(AppPath, "vsn.mk"), - VsnStr = - case file:read_file(VsnFile) of - {ok, Bin} -> - case re:run(Bin, ".*VSN\s*=\s*([0-9\.]+).*",[{capture,[1],list}]) of - {match, [V]} -> - V; - nomatch -> - exit(io_lib:format("No VSN variable found in ~s\n", - [VsnFile])) - end; - {error, Reason} -> - exit(io_lib:format("~p : ~s\n", [Reason, VsnFile])) - end, - AppURL = URL ++ App ++ "-" ++ VsnStr, - {App, VsnStr, AppPath ++ "/" ++ Sub1, AppURL ++ "/" ++ Sub1} - end, AppDirs), - AppPaths ++ find_application_paths(Paths). - + AppPaths = get_app_paths(Source, AppDirs, URL), + AppPaths ++ find_application_paths(Source, Paths). +get_app_paths(src, AppDirs, URL) -> + Sub1 = "doc/html", + lists:map( + fun({App, AppPath}) -> + VsnFile = filename:join(AppPath, "vsn.mk"), + VsnStr = + case file:read_file(VsnFile) of + {ok, Bin} -> + case re:run(Bin, ".*VSN\s*=\s*([0-9\.]+).*",[{capture,[1],list}]) of + {match, [V]} -> + V; + nomatch -> + exit(io_lib:format("No VSN variable found in ~s\n", + [VsnFile])) + end; + {error, Reason} -> + exit(io_lib:format("~p : ~s\n", [Reason, VsnFile])) + end, + AppURL = URL ++ App ++ "-" ++ VsnStr, + {App, VsnStr, AppPath ++ "/" ++ Sub1, AppURL ++ "/" ++ Sub1} + end, AppDirs); +get_app_paths(rel, AppDirs, URL) -> + Sub1 = "doc/html", + lists:map( + fun({App, AppPath}) -> + [AppName, VsnStr] = string:tokens(App, "-"), + AppURL = URL ++ App, + {AppName, VsnStr, AppPath ++ "/" ++ Sub1, AppURL ++ "/" ++ Sub1} + end, AppDirs). + + get_app_dirs(Dir) -> {ok, Files} = file:list_dir(Dir), AFiles = lists:map(fun(File) -> {File, filename:join([Dir, File])} end, Files), lists:zf(fun is_app_with_doc/1, AFiles). -is_app_with_doc({"." ++ ADir, _APath}) -> +is_app_with_doc({"." ++ _ADir, _APath}) -> false; is_app_with_doc({ADir, APath}) -> case file:read_file_info(filename:join([APath, "info"])) of diff --git a/system/doc/top/templates/index.html.src b/system/doc/top/templates/index.html.src index 88d425ac1d..655f532a5d 100644 --- a/system/doc/top/templates/index.html.src +++ b/system/doc/top/templates/index.html.src @@ -39,10 +39,6 @@ under the License. <small><a href="applications.html">Applications</a><br> <a href="man_index.html">Modules</a></small> <p/> -<small><a href="highlights.html">Release highlights</a><br/> -<a href="incompatible.html">Potential incompatibilities</a><br/> -</small> -<br> <a href="javascript:openAllFlips()">Expand All</a><br> <a href="javascript:closeAllFlips()">Contract All</a> <p/> diff --git a/system/doc/tutorial/c_port.xmlsrc b/system/doc/tutorial/c_port.xmlsrc index 7e6034807b..b139fe0678 100644 --- a/system/doc/tutorial/c_port.xmlsrc +++ b/system/doc/tutorial/c_port.xmlsrc @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2000</year><year>2009</year> + <year>2000</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -70,7 +70,7 @@ loop(Port) -> {call, Caller, Msg} -> Port ! {self(), {command, encode(Msg)}}, receive -\011{Port, {data, Data}} -> + {Port, {data, Data}} -> Caller ! {complex, decode(Data)} end, loop(Port) diff --git a/system/doc/tutorial/nif.xmlsrc b/system/doc/tutorial/nif.xmlsrc index f9197c69dd..6cb54ff7ff 100644 --- a/system/doc/tutorial/nif.xmlsrc +++ b/system/doc/tutorial/nif.xmlsrc @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2000</year><year>2009</year> + <year>2000</year><year>2011</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> |