www-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

www/doc .symlinks C-library.jpg CLib-fund-front...


From: Yavor Doganov
Subject: www/doc .symlinks C-library.jpg CLib-fund-front...
Date: Tue, 20 Jan 2009 14:18:45 +0000

CVSROOT:        /web/www
Module name:    www
Changes by:     Yavor Doganov <yavor>   09/01/20 14:18:42

Modified files:
        doc            : .symlinks 
Removed files:
        doc            : C-library.jpg CLib-fund-front.png 
                         CLib-system-front.png CLib1-draft.png 
                         CLib2-draft.png ELisp-sales-flyer.pdf 
                         Elisp-used.pdf Intro-2.5ed-frontcover2.png 
                         Intro-Elisp-Review1.pdf Make-381.png 
                         Radius-frontcover.jpg Stallmanawards.html 
                         Using-frontcover.png bison.png bison1875.png 
                         book10.html book10.jpg book11.html book12.html 
                         book13.fr.html book13.html book14.html 
                         book15.html book16.html book17.html book2.html 
                         book2.jpg book3.html book3.jpg book4.html 
                         book4.jpg book5.html book5.jpg book6.html 
                         book7.html book7.jpg book8.html book8.jpg 
                         book9.html clib-fund.html clib-system.html 
                         creditapp.html doc-team.html emacs15.html 
                         emacs15.png emacs16.html emacs16.png flexsm.jpg 
                         free-software-free-society.png gdb-manual.html 
                         glibc-application.texi glibc-system.texi 
                         intro-elisp-2.5.html intro-elisp-2.5.png 
                         isbn.html libc-manual.html make-manual.html 
                         mdk-1.5-cover.png mdk.html mdk.png 
                         onlinedoc.html placeholder.jpg radius.html 
                         resellers.es.html resellers.html 
                         texinfo-manual.html texinfo.jpg tmppage.html 
                         upcomingtitles.html using.html 
                         volunteer-distribution.html windows.html 
                         windows.jpg 
        doc/Press-use  : 20th-mug.png GNU-Press-styleguide.aux 
                         GNU-Press-styleguide.cp GNU-Press-styleguide.fn 
                         GNU-Press-styleguide.ky 
                         GNU-Press-styleguide.log 
                         GNU-Press-styleguide.pdf 
                         GNU-Press-styleguide.pg 
                         GNU-Press-styleguide.texi 
                         GNU-Press-styleguide.toc 
                         GNU-Press-styleguide.tp GNU-Press-styleguide.vr 
                         PengyandGnu-banner.tif PengyandGnu.tif 
                         Shirt-1.png Shirt-3.png Shirt-6.png form2.pdf 
                         form3.pdf tech-doc.html 
        doc/Press-use/3-image: 3-image-master.eps a-gnu-head.eps 
                               beastie.eps button-design.ps penguin.eps 
        doc/Press-use/MDK: Makefile.am mdk.texi mdk_ack.texi 
                           mdk_bugs.texi mdk_copying.texi mdk_emacs.texi 
                           mdk_findex.texi mdk_gmixvm.texi 
                           mdk_gstart.texi mdk_index.texi 
                           mdk_install.texi mdk_intro.texi 
                           mdk_mixasm.texi mdk_mixguile.texi 
                           mdk_mixvm.texi mdk_tut.texi 
        doc/cover      : make-back-big.jpg make-back-small.jpg 
                         make-front-big.jpg make-front-small.jpg 

Log message:
        Delete outdated and unmaintained pages; now available at shop.fsf.org.

CVSWeb URLs:
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/.symlinks?cvsroot=www&r1=1.8&r2=1.9
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/C-library.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/CLib-fund-front.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/CLib-system-front.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/CLib1-draft.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/CLib2-draft.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/ELisp-sales-flyer.pdf?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Elisp-used.pdf?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Intro-2.5ed-frontcover2.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Intro-Elisp-Review1.pdf?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Make-381.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Radius-frontcover.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Stallmanawards.html?cvsroot=www&r1=1.7&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Using-frontcover.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/bison.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/bison1875.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book10.html?cvsroot=www&r1=1.15&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book10.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book11.html?cvsroot=www&r1=1.11&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book12.html?cvsroot=www&r1=1.10&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book13.fr.html?cvsroot=www&r1=1.5&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book13.html?cvsroot=www&r1=1.59&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book14.html?cvsroot=www&r1=1.10&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book15.html?cvsroot=www&r1=1.8&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book16.html?cvsroot=www&r1=1.11&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book17.html?cvsroot=www&r1=1.10&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book2.html?cvsroot=www&r1=1.11&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book2.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book3.html?cvsroot=www&r1=1.13&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book3.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book4.html?cvsroot=www&r1=1.13&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book4.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book5.html?cvsroot=www&r1=1.9&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book5.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book6.html?cvsroot=www&r1=1.11&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book7.html?cvsroot=www&r1=1.10&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book7.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book8.html?cvsroot=www&r1=1.10&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book8.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/book9.html?cvsroot=www&r1=1.10&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/clib-fund.html?cvsroot=www&r1=1.20&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/clib-system.html?cvsroot=www&r1=1.20&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/creditapp.html?cvsroot=www&r1=1.5&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/doc-team.html?cvsroot=www&r1=1.14&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/emacs15.html?cvsroot=www&r1=1.9&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/emacs15.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/emacs16.html?cvsroot=www&r1=1.33&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/emacs16.png?cvsroot=www&r1=1.2&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/flexsm.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/free-software-free-society.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/gdb-manual.html?cvsroot=www&r1=1.4&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/glibc-application.texi?cvsroot=www&r1=1.2&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/glibc-system.texi?cvsroot=www&r1=1.2&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/intro-elisp-2.5.html?cvsroot=www&r1=1.10&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/intro-elisp-2.5.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/isbn.html?cvsroot=www&r1=1.30&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/libc-manual.html?cvsroot=www&r1=1.5&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/make-manual.html?cvsroot=www&r1=1.5&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/mdk-1.5-cover.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/mdk.html?cvsroot=www&r1=1.8&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/mdk.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/onlinedoc.html?cvsroot=www&r1=1.5&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/placeholder.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/radius.html?cvsroot=www&r1=1.11&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/resellers.es.html?cvsroot=www&r1=1.2&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/resellers.html?cvsroot=www&r1=1.27&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/texinfo-manual.html?cvsroot=www&r1=1.4&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/texinfo.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/tmppage.html?cvsroot=www&r1=1.4&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/upcomingtitles.html?cvsroot=www&r1=1.12&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/using.html?cvsroot=www&r1=1.9&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/volunteer-distribution.html?cvsroot=www&r1=1.5&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/windows.html?cvsroot=www&r1=1.17&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/windows.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/20th-mug.png?cvsroot=www&r1=1.3&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/GNU-Press-styleguide.aux?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/GNU-Press-styleguide.cp?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/GNU-Press-styleguide.fn?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/GNU-Press-styleguide.ky?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/GNU-Press-styleguide.log?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/GNU-Press-styleguide.pdf?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/GNU-Press-styleguide.pg?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/GNU-Press-styleguide.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/GNU-Press-styleguide.toc?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/GNU-Press-styleguide.tp?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/GNU-Press-styleguide.vr?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/PengyandGnu-banner.tif?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/PengyandGnu.tif?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/Shirt-1.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/Shirt-3.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/Shirt-6.png?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/form2.pdf?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/form3.pdf?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/tech-doc.html?cvsroot=www&r1=1.6&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/3-image/3-image-master.eps?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/3-image/a-gnu-head.eps?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/3-image/beastie.eps?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/3-image/button-design.ps?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/3-image/penguin.eps?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/Makefile.am?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_ack.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_bugs.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_copying.texi?cvsroot=www&r1=1.2&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_emacs.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_findex.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_gmixvm.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_gstart.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_index.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_install.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_intro.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_mixasm.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_mixguile.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_mixvm.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/Press-use/MDK/mdk_tut.texi?cvsroot=www&r1=1.1&r2=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/cover/make-back-big.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/cover/make-back-small.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/cover/make-front-big.jpg?cvsroot=www&rev=0
http://web.cvs.savannah.gnu.org/viewcvs/www/doc/cover/make-front-small.jpg?cvsroot=www&rev=0

Patches:
Index: .symlinks
===================================================================
RCS file: /web/www/www/doc/.symlinks,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- .symlinks   28 Mar 2008 12:42:29 -0000      1.8
+++ .symlinks   20 Jan 2009 14:16:38 -0000      1.9
@@ -1,5 +1 @@
 doc.html index.html
-book6.html libc-manual.html
-book7.html gdb-manual.html
-book8.html make-manual.html
-book9.html texinfo-manual.html

Index: C-library.jpg
===================================================================
RCS file: C-library.jpg
diff -N C-library.jpg
Binary files /tmp/cvsPULkXa and /dev/null differ

Index: CLib-fund-front.png
===================================================================
RCS file: CLib-fund-front.png
diff -N CLib-fund-front.png
Binary files /tmp/cvsqEkrZd and /dev/null differ

Index: CLib-system-front.png
===================================================================
RCS file: CLib-system-front.png
diff -N CLib-system-front.png
Binary files /tmp/cvsl02Cfe and /dev/null differ

Index: CLib1-draft.png
===================================================================
RCS file: CLib1-draft.png
diff -N CLib1-draft.png
Binary files /tmp/cvsc8YvGc and /dev/null differ

Index: CLib2-draft.png
===================================================================
RCS file: CLib2-draft.png
diff -N CLib2-draft.png
Binary files /tmp/cvsbshAcd and /dev/null differ

Index: ELisp-sales-flyer.pdf
===================================================================
RCS file: ELisp-sales-flyer.pdf
diff -N ELisp-sales-flyer.pdf
Binary files /tmp/cvsQBzspd and /dev/null differ

Index: Elisp-used.pdf
===================================================================
RCS file: Elisp-used.pdf
diff -N Elisp-used.pdf
Binary files /tmp/cvsxtdZhg and /dev/null differ

Index: Intro-2.5ed-frontcover2.png
===================================================================
RCS file: Intro-2.5ed-frontcover2.png
diff -N Intro-2.5ed-frontcover2.png
Binary files /tmp/cvsCCdR5g and /dev/null differ

Index: Intro-Elisp-Review1.pdf
===================================================================
RCS file: Intro-Elisp-Review1.pdf
diff -N Intro-Elisp-Review1.pdf
Binary files /tmp/cvs1aiq7e and /dev/null differ

Index: Make-381.png
===================================================================
RCS file: Make-381.png
diff -N Make-381.png
Binary files /tmp/cvsSWuIDf and /dev/null differ

Index: Radius-frontcover.jpg
===================================================================
RCS file: Radius-frontcover.jpg
diff -N Radius-frontcover.jpg
Binary files /tmp/cvsN9ecTf and /dev/null differ

Index: Stallmanawards.html
===================================================================
RCS file: Stallmanawards.html
diff -N Stallmanawards.html
--- Stallmanawards.html 15 Feb 2008 23:50:23 -0000      1.7
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,42 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Richard M. Stallman - List of Achievements and Awards</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-
-<P>For the list of rms's awards and other biographical information,
-please see the <a href="http://stallman.org/#serious";>biography on his
-personal web site</a>.
-
-<hr>
-
-<p>
-Please send comments on these web pages to <a href="mailto:address@hidden";>
-<em>address@hidden</em></a>, send other questions to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 
2006 <BR> 
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/02/15 23:50:23 $ $Author: karl $ 
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: Using-frontcover.png
===================================================================
RCS file: Using-frontcover.png
diff -N Using-frontcover.png
Binary files /tmp/cvsJT2q5i and /dev/null differ

Index: bison.png
===================================================================
RCS file: bison.png
diff -N bison.png
Binary files /tmp/cvsOF4Tjh and /dev/null differ

Index: bison1875.png
===================================================================
RCS file: bison1875.png
diff -N bison1875.png
Binary files /tmp/cvshSaYJh and /dev/null differ

Index: book10.html
===================================================================
RCS file: book10.html
diff -N book10.html
--- book10.html 14 May 2008 15:05:15 -0000      1.15
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,169 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book10.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>Bison Manual: Using the YACC-compatible Parser Generator</h3>
-
-by Charles Donnelly &amp; Richard M. Stallman
-
-<p>
-
-<table border="0" cellpadding="0" cellspacing="2" width="600">
-
-<tr>
-
-<td width="170">
-<img src="bison1875.png" width="170" height="225" border="1" alt="Bison Manual 
book cover image">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-
-</td>
-
-<td width="410">
-136 Pages.<br>
-Cover Price: $25.00<br>
-September 2003, for Bison Version 1.875<br>
-ISBN 1-882114-23-X<br>
-Trade Paper, Perfect Binding<br>
-<a href="/software/bison/manual/">On-line version</a><br>
-<a href="http://order.fsf.org/";><i>Order Now!</i></a><br>
-
-</td>
-</tr>
-</table>
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-<table cellspace="5"><tr><td>
-
-<p>
-This updated edition for Bison version 1.875 has an expanded
-'Concepts' and 'Grammar Files' sections, and a greatly expanded
-'Debugging Your Parser' section. There is also a new FAQ section added
-to the appendix.  Some obsolete material was removed as well.
-<p>
-
-Bison is a general-purpose parser generator that can help the C
-programmer develop a wide range of language parsers, from those used
-in simple desktop calculators to complex programming languages. The
-Bison manual provides a quick overview of the theory behind
-context-free grammars and semantic values. It has both an introductory
-tutorial section with examples and a reference section which explores
-parts of Bison in detail.
-
-<p>
-
-This book teaches you:
-<ul>
-<li>Basic concepts of context-free grammars
-<li>Basic concepts of semantic values and actions
-<li>Bison grammar rules and syntax
-<li>Stages in writing and running Bison grammars
-<li>C-Language interface to the parser function yyparse() 
-<li>How to parse more than one language in the same program
-<li>How to detect when an operation for a new node type was not implemented
-<li>How to ensure that a new operation covers all existing node types
-adequately
-<li>The Lexical Analyzer Function yylex()
-<li>Writing rules for error recovery and yyerror()
-<li>And how to apply the GNU General Public License to your new program.
-</ul>
-This book assumes the reader already knows the C Programming Language.
-<p>
-
-<p>
-
-This manual provides a quick overview of parser generator theory,
-context-free grammars and semantic values.  The introductory tutorial
-section explains the basic concepts of using Bison and shows three
-examples, each building on the last.  If you don't know Bison or Yacc,
-start by reading these chapters.  The following reference sections
-explain in greater detail and also cover other supporting programs
-such as yyparse(), yylex(), and yyerror().  A glossary and symbol
-table are also included.
-
-</tr></td>
-</table>
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 
2006 <BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: <!-- timestamp start -->$Date: 2008/05/14 15:05:15 $<!-- timestamp 
end -->
-<hr>
-</body>
-</html>
-

Index: book10.jpg
===================================================================
RCS file: book10.jpg
diff -N book10.jpg
Binary files /tmp/cvsFoemSk and /dev/null differ

Index: book11.html
===================================================================
RCS file: book11.html
diff -N book11.html
--- book11.html 29 May 2008 22:35:58 -0000      1.11
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,159 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book11.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>Flex: The Lexical Scanner Generator</h3>
-
-by G. T. Nicol
-
-<p>
-
-<table border="0" cellpadding="0" cellspacing="2" width="445">
-
-<tr>
-
-<td width="200">
-<img src="flexsm.jpg" width="200" height="216" border="1" alt="drawing of GNU 
flexing">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-
-</td>
-
-<td width="225">
-128 Pages, plus detachable Quick Reference Card.<br>
-Cover Price: $20.00<br>
-February 1993, for Flex Version 2.3.7<br>
-ISBN 1-882114-21-3<br>
-Plastic spine<br>
-<a href="http://order.fsf.org/#manuals";>Order Now!</a>
-</td>
-</tr>
-</table>
-
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-
-<p>
-This manual is primarily designed as a reference but can also be used
-as an introduction to Flex.  The manual has many examples, ranging
-from a simple scanner that replaces one work with another, to more
-complex examples such as a jargon converter.  The manual contains a
-chapter providing useful snippets that you can include in your own
-scanners to handle comments, dates, numbers, and the like. There is a
-short chapter with a quick overview of Lex, comparing and contrasting
-it to Flex. There is also a long chapter on how Flex interfaces with
-Bison and C.
-
-<p>
-Flex is a lexical scanner generator.  It converts a high-level
-description into a C program that can perform multiple tasks.  It can
-read a file; group the characters within it into units such as
-numbers, keywords or strings; return tokens that match the types of
-unit and more.
-
-<p>
-One example of Flex's usefulness is as a translator.  In a compiler,
-the syntax checker must receive a stream of tokens that represent
-parts of its grammar, not plain characters. A lexical scanner like
-Flex sits between the file and the syntax checker.  It reads the file,
-groups the characters, and passes tokens to the syntax checker in a
-vocabulary it can understand.
-
-<p>
-The languages used by a programmer to create a description for the
-scanner is a high-level language that is much more suitable for
-describing scanners than the C language is.  Although you can write
-scanners in C or similar languages, Flex is quicker and much more
-convenient. Flex produces fast scanners and is largely POSIX
-compatible.
-
-
-<BR><BR><BR><BR><BR>
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to <a
-href="mailto:address@hidden";><em>address@hidden</em></a>,
-send other questions to <a
-href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, 
Inc., 51
-Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/05/29 22:35:58 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: book12.html
===================================================================
RCS file: book12.html
diff -N book12.html
--- book12.html 30 May 2008 13:16:21 -0000      1.10
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,99 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book12.html">English</a>
-]
-
-<p>
-  [
-    <a href="gnupresspub.html">GNU Press</a> | 
-    <a href="doc.html">Documentation of the GNU project</a> | 
-    <a href="/search.html">Search gnu.org</a>
-  ]
-
-<p>
-<hr>
-
-<p>
-<h3>The Termcap Manual: The Termcap Library and Data Base</h3>
-
-by Richard M. Stallman
-
-<p>
-<table border="0" cellpadding="0" cellspacing="2" width="445">
-
-<tr>
-<td width="200">
-<img src="small-gnupress.png" width="130" height="222" border="1" alt="Termcap 
Manual book cover image">
-</td>
-
-<td width="20">
-<br>
-</td>
-
-<td width="225">
-68 Pages<br>
-Cover Price: $15.00<br>
-Third Edition, August 1997<br>
-ISBN 1-882114-87-6<br>
-Plastic spine<br>
-</td>
-
-</tr>
-</table>
-
-<p>
-This manual has been offically taken out of print due to its extreme
-age and lack of user interest.
-</p>
-Lisa M. Goldstein<br>
-Managing Editor, GNU Press<br>
-16 September 2003<br>
-
-<!--
-This manual is for programmers who want to do terminal-independent
-character-based display output. It is primarily a reference guide with
-a few examples.-->
-
-<P>
-<hr>
-
-<P>
-Return to <a href="/home.html">GNU's home page</a>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006 
<BR> 
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/05/30 13:16:21 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: book13.fr.html
===================================================================
RCS file: book13.fr.html
diff -N book13.fr.html
--- book13.fr.html      24 Jun 2008 18:38:54 -0000      1.5
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,343 +0,0 @@
-<!--#include virtual="/server/header.fr.html" -->
-
-<title>Documentation du projet GNU&nbsp;: Livre imprim&eacute;</title>
-
-<!--#include virtual="/server/banner.fr.html" -->
-
-<h2>Logiciel libre, soci&eacute;t&eacute; libre&nbsp;: s&eacute;lection 
d'essais de Richard M. Stallman</h2>
-
-
-<!-- This document uses XHTML 1.0 Strict, but may be served as -->
-<!-- text/html.  Please ensure that markup style considers -->
-<!-- appendex C of the XHTML 1.0 standard. See validator.w3.org. -->
-
-<!-- Please ensure links are consistent with Apache's MultiView. -->
-<!-- Change include statements to be consistent with the relevant -->
-<!-- language, where necessary. -->
-
-
-<h3>S&eacute;rie philosophie de la libert&eacute; logicielle</h3>
-<p>Titre original&nbsp;: Free Software, Free Society: Selected Essays of 
Richard M.
-  Stallman</p>
-
-<table border="0" cellpadding="0" cellspacing="2" width="445">
-    <tr>
-      <td width="200"><img src="free-software-free-society.png"
-      width="148" height="202" border="1" alt=
-      "image de couverture du livre&nbsp;: Logiciel libre, 
soci&eacute;t&eacute; libre" /></td>
-
-      <td width="20"><br /></td>
-
-      <td width="225">Auteur&nbsp;: Richard M. Stallman<br />
-
-      Introduction&nbsp;: Lawrence Lessig<br />
-      &Eacute;diteur&nbsp;: Joshua Gay<br />
-      ISBN 1-882114-98-1<br />
-      Hard Cover Edition with dust jacket<br />
-      $25.00<br />
-      224 Pages<br />
-
-      Date de publication&nbsp;: Octobre 2002<br />
-      Cat&eacute;gorie&nbsp;: &Eacute;thique, droit, logiciel informatique<br 
/>
-      <br />
-      <a href="http://order.fsf.org/#fsfs";><i>Commandez 
maintenant&nbsp;!</i></a><br />
-      <a href="http://order.fsf.org/#signed";><i>Recevez un exemplaire 
sign&eacute; par Richard Stallman !</i></a><br /></td>
-    </tr>
-  </table><br />
-
-  <hr>
-  <br />
-
-  <table style="margin-right: 10px; float: left" frame="box"
-  bgcolor="#F2F2F9" cellspacing="5">
-    <tr>
-      <td><a href="http://www.gnupress.org";>Page d'accueil de GNU 
Press</a></td>
-    </tr>
-    <tr>
-      <td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Livres 
imprim&eacute;s</a></td>
-    </tr>
-    <tr>
-      <td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Logiciels sur 
CD</a></td>
-    </tr>
-    <tr>
-      <td><a href="http://www.gnupress.org/isbn.html";>Liste ISBN</a></td>
-    </tr>
-    <tr>
-      <td><a href="http://www.gnu.org/gear/gear.html";>Page des accessoires 
GNU</a></td>
-    </tr>
-    <tr>
-      <td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>V&ecirc;tements</a></td>
-    </tr>
-    <tr>
-      <td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Posters</a></td>
-    </tr>
-    <tr>
-      <td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Autres 
accessoires</a></td>
-    </tr>
-    <tr>
-      <td><a href="http://order.fsf.org/";>Formulaire de commande</a></td>
-    </tr>
-    <tr>
-      <td><a href="http://www.gnupress.org/potentialauthors.html";>Pour les 
auteurs</a></td>
-    </tr>
-    <tr>
-      <td><a href="http://www.gnupress.org/resellers.html";>Pour les 
revendeurs</a></td>
-    </tr>
-    <tr>
-      <td><a href="http://www.gnupress.org/teachingprofessionals.html";>Pour 
les enseignants</a></td>
-    </tr>
-    <tr>
-      <td><a href="http://www.gnupress.org/doc/contact.html";>Nous 
contacter</a></td>
-    </tr>
-    <tr>
-      <td><a href="http://www.fsf.org";>Page d'accueil de la FSF</a></td>
-    </tr>
-    <tr>
-      <td><a href="http://www.gnu.org/home.fr.shtml";>Page d'accueil du projet 
GNU</a></td>
-    </tr>
-  </table>
-
-
-<h3>Contenu du livre</h3>
-<p>L'intersection de l'&eacute;thique, du droit, du business et du logiciel 
informatique
-est le sujet de ces essais et discours du gagnant de la MacArthur Foundation
-Grant (bourse de la fondation MacArthur)&nbsp;: Richard M. Stallman. Ce recueil
-inclut des &eacute;crits historiques, tels que &laquo;&nbsp;The GNU 
Manifesto&nbsp;&raquo; (le manifeste GNU)
-qui a d&eacute;fini et lanc&eacute; l'activiste Mouvement pour le logiciel 
libre, ainsi que
-de nouveaux &eacute;crits sur des sujets sensibles dans les domaines du 
copyright, des
-lois sur les brevets, et le probl&egrave;me controvers&eacute; de
-l'informatique de &laquo;&nbsp;confiance&nbsp;&raquo;
-(qu'il est plus correct d'appeler<a 
href="/philosophy/words-to-avoid.fr.html#TrustedComputing">
-informatique &laquo;&nbsp;d&eacute;loyale&nbsp;&raquo;</a>).
-Stallman pose un regard critique sur les abus
-courants des lois sur les copyrights et les brevets appliqu&eacute;s &agrave; 
des programmes
-de logiciels informatiques, et comment ces abus mettent en danger notre 
soci&eacute;t&eacute;
-enti&egrave;re et nous privent de nos libert&eacute;s. Il discute 
&eacute;galement des aspects sociaux
-du logiciel et de la fa&ccdil;on dont le logiciel libre peut cr&eacute;er une 
communaut&eacute; et une
-justice sociale.</p>
-
-<p>&Eacute;tant donn&eacute; l'&eacute;bullition actuelle dans les lois sur 
les copyrights et les
-brevets, incluant le <acronym title="Digital Millenium Copyright 
Act">DMCA</acronym> et le projet
-<acronym title="Consumer Broadband and Digital Television Promotion 
Act">CBDTPA</acronym>, ces essais sont plus pertinents
-que jamais. Stallman s'attaque de front aux probl&egrave;mes essentiels 
menants aux
-changements actuels dans la l&eacute;gislation des copyrights. Il 
d&eacute;clare que pour que
-la cr&eacute;ativit&eacute; s'&eacute;panouisse, le logiciel doit &ecirc;tre 
libre de contraintes l&eacute;gales
-inappropri&eacute;es et inutilement larges. Ses arguments et ses actions ont 
chang&eacute; le
-cours de l'histoire du logiciel au cours des vingt derni&egrave;res 
ann&eacute;es&nbsp;: ce livre est
-certain d'avoir un impact sur le futur du logiciel et les politiques 
l&eacute;gislatives
-dans les ann&eacute;es &agrave; venir. </p>
-
-<p>Lawrence Lessig, l'auteur de deux livres bien connus sur des th&ecirc;mes 
similaires,
-a r&eacute;dig&eacute; l'introduction. Il est &eacute;galement un expert 
l&eacute;gal reconnu sur les lois
-sur les copyrights et un professeur &agrave; la Stanford Law School 
(&Eacute;cole de droit de
-Stanford).</p>
-
-<p><em>La reproduction exacte et la distribution int&eacute;grale de ce livre 
est
-permise, pourvu que cette notice de permission et la notice de copyright soient
-pr&eacute;serv&eacute;es sur toutes les copies.</em></p>
-<p>
-
-<ul>
-    <li><a href="TOC-FSFS.html">Voir la table des mati&egrave;res</a></li>
-
-    <li><a href="rms-flyer.pdf">Voir la version PDF du flyer</a></li>
-
-    <li><a href="Stallmanawards.html">Voir la liste des travaux et des 
r&eacute;compenses
-de Stallman</a></li>
-
-    <li><a href="/philosophy/fsfs/rms-essays.pdf">T&eacute;l&eacute;charger le 
livre en PDF</a></li>
-
-    <li><a 
href="/philosophy/fsfs/free_software.es.pdf">T&eacute;l&eacute;charger une 
traduction
-espagnole du livre en PDF</a>
-    (<a 
href="http://biblioweb.sindominio.net/pensamiento/softlibre/src/";>Source
-TeX</a>)</li>
-    <li><a href="/philosophy/fsfs/fsfs-catalan.pdf">T&eacute;l&eacute;charger 
une traduction
-catalane du livre en PDF</a>(source
-disponible <a 
href="http://www.culturalliure.cat/llibre/programari-lliure-societat-lliure/";>ici</a>)</li>
-
-<li>T&eacute;l&eacute;charger une traduction italienne du livre en PDF&nbsp;:
-<a href="/philosophy/fsfs/fsfs-italian1.pdf">Vol.1</a>,
-<a href="/philosophy/fsfs/fsfs-italian2.pdf">Vol.2</a>&nbsp;;
-(<a href="http://svn.savannah.gnu.org/viewvc/?root=www-it";>source 
HTML</a>))</li>
-</ul>
-
-<p>La source textinfo du livre est disponible par CVS sur Savannah dans le 
projet
-rms-essays. La commande pour t&eacute;l&eacute;charger tous les fichiers et 
les enregistrer dans
-un sous-r&eacute;pertoire <code>rms-essays</code> de votre r&eacute;pertoire 
de travail actuel
-est&nbsp;:<br />
-<code>cvs -z3 -d:pserver:address@hidden:/sources/rms-essays co
-    rms-essays</code></p>
-<hr>
-
-<h3>Citations</h3>
-
-<p>Richard Stallman est le proph&egrave;te du mouvement pour le logiciel 
libre. Il a
-compris les dangers des brevets logiciels il y a des ann&eacute;es. Maintenant 
que
-c'est devenu une pr&eacute;occupation cruciale dans le monde, achetez ce livre 
et
-lisez ce qu'il dit.</p>
-
-<p>- <strong>Tim Berners-Lee</strong>, inventeur du World Wide Web</p>
-
-<p>Pour la premi&egrave;re fois ce livre rassemble les &eacute;crits et cours 
de Richard Stallman
-d'une mani&egrave;re qui rend leur subtilit&eacute; et puissance claire. Ces 
essais couvrent de
-larges sujets, depuis le copyright jusqu'&agrave; l'histoire du mouvement du 
logiciel libre.
-Ils comportent beaucoup d'arguments m&eacute;connus, et&hellip; seront une 
ressource pour ceux
-qui cherchent &agrave; comprendre les pens&eacute;es de cet homme sortant de 
l'ordinaire&hellip;</p>
-
-<p>- <strong>Lawrence Lessig</strong>, professeur &agrave; la Stanford 
University Law
-  School et expert sur la Cyberlaw (les lois informatiques).</p>
-
-<p>Tout responsable de politique informatique et responsable de passation de 
march&eacute;s informatiques
-devraient lire ce livre. Cependant, ce livre aborde des sujets affectant
-un public beaucoup plus large et tous ceux qui ont d&eacute;j&agrave; 
pens&eacute; &agrave; l'architecture
-qui r&eacute;gule Internet et nos ordinateurs auront de nombreux moments forts 
avec &laquo;&nbsp;Logiciel
-libre, soci&eacute;t&eacute; libre&nbsp;&raquo;. Vous courrez cependant le 
risque de devenir religieux.</p>
-
-<p>- <strong>Mikael Pawlo</strong>, avocat en Su&egrave;de et contributeur 
r&eacute;dacteur des
-publications sur les probl&egrave;mes de droit de l'Internet du Harvard 
Berkman Center,
-Greplaw.org.</p>
-
-<p>Richard Stallman est le roi de la philosophie du logiciel. Il a 
initi&eacute; seul ce qui
-est devenu un mouvement mondial de cr&eacute;ation de Logiciel libre, avec un 
L majuscule.
-Il a trim&eacute; des ann&eacute;es pour un projet que beaucoup 
consid&eacute;raient une lubie, et qui est
-maintenant reconnu comme incontournable. Nous ne sommes pas aujourd'hui 
&agrave; l'aube
-de la r&eacute;volution du logiciel libre, mais en son beau milieu. De la 
perspective actuelle
-il est difficile de se rappeler une &eacute;poque pendant laquelle le logiciel 
libre n'&eacute;tait
-pas largement disponible et le concept de logiciel libre n'&eacute;tait pas 
largement compris.
-Mais ce ne fut pas toujours le cas. Il y a quinze ans, Stallman &eacute;tait 
largement per&ccedil;u
-comme se battant contre des moulins &agrave; vent&nbsp;; les gens se sont 
moqu&eacute; de lui et lui ont dit
-d'&laquo;&nbsp;aller en Russie&nbsp;&raquo;. Aujourd'hui, les vues de Stallman 
sur l'utilit&eacute; et le r&ocirc;le du
-logiciel libre sont comprises et, en grande partie, accept&eacute;es. D'un 
autre c&ocirc;t&eacute;, les
-vues de Stallman sur le Copyright (et le Copyleft), les <acronym 
title="Digital Restriction Management">DRM</acronym>
-(gestion des restrictions num&eacute;riques), et le r&ocirc;le 
empoisonn&eacute; des brevets commencent &agrave;
-peine &agrave; &ecirc;tre accept&eacute;es.</p>
-<p>- <strong>Simson L. Garfinkel</strong>, auteur et chroniqueur de Computer 
Science</p>
-
-<p>Par ses efforts couronn&eacute;s de succ&egrave;s &agrave; &eacute;tablir 
l'id&eacute;e de &laquo;&nbsp;logiciel libre&nbsp;&raquo;, Stallman
-a fait une contribution massive &agrave; la condition humaine. Sa contribution 
combine des
-&eacute;l&eacute;ments ayant des cons&eacute;quences techniques, sociales, 
politiques, et &eacute;conomiques.</p>
-
-<p>- <strong>Gerald Jay Sussman</strong>, professeur Matsushita de 
G&eacute;nie &Eacute;lectrique,
-Massachusetts Institute of Technology (Institut technologique du 
Massachusetts)</p>
-
-<p>RMS est la figure de proue de la philosophie du logiciel. Vous pouvez 
d&eacute;sapprouver
-certaines de ses attitudes, mais vous ne pouvez &eacute;viter ses 
id&eacute;es. Ce maigre volume
-rendra ces id&eacute;es accessibles &agrave; tout ceux confus par la 
rh&eacute;torique du commercialisme
-rampant. Ce livre doit largement circuler et &ecirc;tre lu.</p>
-
-<p>- <strong>Peter H. Salus</strong>, auteur de Computer Science, 
r&eacute;viseur d'ouvrages
-et historien sur Unix</p>
-
-<p>Ce n'est pas que RMS soit un id&eacute;aliste, nous en avons plein 
d'autres. Et ce n'est
-pas qu'il est un programmeur brillant, nous avons ceux-l&agrave; aussi. C'est 
plut&ocirc;t qu'il
-rassemble ces deux aspects sur une base philosophique bien 
r&eacute;fl&eacute;chie et une
-compr&eacute;hension pragmatique du monde et des personnes. Il prend les 
id&eacute;es de libert&eacute; et
-de coop&eacute;ration que beaucoup d'entre nous partagent et montre comment 
elles peuvent
-former une vision du monde consistante qui m&eacute;nage de la place pour les 
r&eacute;alit&eacute;s de
-l'argent et du business.</p>
-
-<p>Il parle de la perversion des intentions originelles des lois sur les 
brevets et
-les copyrights. Pour ceux d'entre nous se trouvant aux &Eacute;tats-Unis, 
notre Constitution
-d&eacute;clare clairement que celles-ci sont d&eacute;finies au profit de la 
soci&eacute;t&eacute;. La plupart des
-autres pays disent quelque chose de similaire. Mais il y a de gros profits 
&agrave; faire
-(g&eacute;n&eacute;ralement par de grandes entreprises) en 
red&eacute;finissant ces lois pour profiter
-aux propri&eacute;taires (de brevets ou copyrights). Nous ne crions pas 
&laquo;&nbsp;&agrave; bas le syst&egrave;me&nbsp;!&nbsp;&raquo;,
-nous crions &laquo;&nbsp;restaurez le syst&egrave;me en ce pour quoi il 
&eacute;tait pr&eacute;vu&nbsp;!&nbsp;&raquo;.</p>
-
-<p>Richard a le sentiment que le logiciel devrait &ecirc;tre libre, mais il ne 
propose pas
-d'enfermer ceux qui ne sont pas d'accord. Il ne propose pas de forcer les 
autres &agrave;
-lib&eacute;rer leur travail. Il propose de les rendre obsol&egrave;tes en 
travaillant ensemble et en
-r&eacute;alisant un meilleur travail que ce qui est largement disponible. Et 
il ne propose pas
-que nous devrions travailler pour rien. Il montre que nous pouvons 
&eacute;crire du logiciel
-libre et faire &eacute;galement du profit. Effectivement, il le fait.</p>
-
-<p>Je devine que le compl&eacute;ment final &agrave; sa qu&ecirc;te est 
l'opposition farouche qu'elle re&ccedil;oit
-de la part de la personne la plus riche du pays. L'entreprise de logiciel la 
plus
-puissante du monde est plus prolifique dans son opposition au mouvement du 
logiciel libre
-qu'elle ne l'est envers ses concurrents directs&nbsp;!</p>
-
-<p>L'histoire enti&egrave;re de l'esp&egrave;ce humaine a &eacute;t&eacute; un 
combat opposant les quelques
-puissants qui b&acirc;tissent leur succ&egrave;s sur le monopole et la 
coercition, et les foules qui
-gagnent plus en utilisant la libert&eacute; et la libre concurrence. 
Aujourd'hui le logiciel
-est en premi&egrave;re ligne de cette bataille, et ceux d'entre nous qui 
programment en sont ses
-guerriers. C'est notre responsabilit&eacute; de porter en avant la 
banni&egrave;re de la libert&eacute; et de
-rendre le monde meilleur pour nos descendants.</p>
-
-<p>- <strong>Bil Lewis</strong>, scientifique informatique, expert en 
programmation de
-multithread (programme en chapelet)</p>
-
-</div>
-
-<!-- If needed, change the copyright block at the bottom. In general, -->
-<!-- all pages on the GNU web server should have the section about    -->
-<!-- verbatim copying.  Please do NOT remove this without talking     -->
-<!-- with the webmasters first. --> 
-<!-- Please make sure the copyright date is consistent with the document -->
-<!-- and that it is like this "2001, 2002" not this "2001-2002." -->
-<!-- for id="content", starts in the include above -->
-
-<!--#include virtual="/server/footer.fr.html" -->
-
-<div id="footer">
-
-<p>Pour les questions et requ&ecirc;tes relatives &agrave; la FSF &amp;
-GNU&nbsp;: <a href="mailto:gnu&#64;gnu.org";><em>gnu&#64;gnu.org</em></a>.
-Autres <a href="/home.fr.html#ContactInfo">moyens pour contacter</a> la FSF.
-
-Merci d'envoyer des commentaires sur cette page web &agrave; <a 
href="mailto:webmasters&#64;gnu.org";><em>webmasters&#64;gnu.org</em></a>,
-envoyer une autre question &agrave; <a 
href="mailto:gnu&#64;gnu.org";><em>gnu&#64;gnu.org</em></a>.
-</p>
-
-<p>Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 
2005, 2006,
-2007, 2008 Free Software Foundation, Inc.,</p>
-<address>51 Franklin St - Fifth Floor, Boston, MA 02110, USA</address>
-
-<p>Verbatim copying and distribution of this entire article is
-permitted in any medium, provided this notice is preserved.
-</p>
-
-<p>La reproduction exacte et la distribution int&eacute;grale de cet
-article est permise sur n'importe quel support d'archivage, pourvu que
-cette notice soit pr&eacute;serv&eacute;e.</p>
-
-<p>
-Derni&egrave;re mise-&agrave;-jour&nbsp;:
-<!-- timestamp start -->
-$Date: 2008/06/24 18:38:54 $
-<!-- timestamp end -->
-</p>
-
-<p>
-Traduction&nbsp;: Marc de Maillard<br />
-R&eacute;vision&nbsp;: <a 
href="trad-gnu&#64;april.org">trad-gnu&#64;april.org</a>
-</p>
-</div>
-
-<div id="translations">
-<h3>Traductions de cette page</h3>
-
-<!-- Please keep this list alphabetical, and in the original            -->
-<!-- language if possible, otherwise default to English                 -->
-<!-- If you do not have it English, please comment what the             -->
-<!-- English is.  If you add a new language here, please                -->
-<!-- advise web-translators&#64;gnu.org and add it to                   -->
-<!--    - in /home/www/bin/nightly-vars either TAGSLANG or WEBLANG      -->
-<!--    - in /home/www/html/server/standards/README.translations.html   -->
-<!--      one of the lists under the section "Translations Underway"    -->
-<!--    - if there is a translation team, you also have to add an alias -->
-<!--      to mail.gnu.org:/com/mailer/aliases                           -->
-
-<!-- Please also check you have the 2 letter language code right, cf.   -->
-<!-- <http://www.loc.gov/standards/iso639-2/php/code_list.php>          -->
-<!-- If ISO 639-1 code is not available, use the 3 letter ISO 639-2.    -->
-<!-- Please use W3C normative character entities.                       -->
-
-<ul>
-<li><a href="/doc/book13.html" title="English">English</a>&nbsp;[en]</li>
-<li><a href="/doc/book13.fr.html" 
title="French">Fran&#x00e7;ais</a>&nbsp;[fr]</li>
-</ul>
-</div>
-
-</div>
-</body>
-</html>

Index: book13.html
===================================================================
RCS file: book13.html
diff -N book13.html
--- book13.html 23 Jun 2008 16:23:23 -0000      1.59
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,338 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
-<html>
-<head>
-  <meta http-equiv="Content-Type" content=
-  "text/html; charset=utf-8">
-
-  <title>Documentation of the GNU project -- Books in Print</title>
-  <link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink=
-"#FF0000" vlink="#9900DD">
-  <h3>Books in Print</h3>
-
-  <p><a href="/graphics/agnuhead.html"><img src=
-  "/graphics/gnu-head-sm.jpg" alt=" [image of the Head of a GNU] "
-  width="129" height="122"></a>
-  <!-- Please keep this list alphabetical -->
-  [
-  <a href="/doc/book13.html">English</a>
-| <a href="/doc/book13.fr.html">Fran&#x00e7;ais</a> <!-- French -->
-  ]</p>
-  <hr>
-
-  <h4>Philosophy of Software Freedom Series</h4>
-
-  <h3>Free Software, Free Society: Selected Essays of Richard M.
-  Stallman</h3>
-
-  <table border="0" cellpadding="0" cellspacing="2" width="445">
-    <tr>
-      <td width="200"><img src="free-software-free-society.png"
-      width="148" height="202" border="1" alt=
-      "Free Software, Free Society book cover image"></td>
-
-      <td width="20"><br></td>
-
-      <td width="225">Author: Richard M. Stallman<br>
-      Introduction: Lawrence Lessig<br>
-      Editor: Joshua Gay<br>
-      ISBN 1-882114-98-1<br>
-      Hard Cover Edition with dust jacket<br>
-      $25.00<br>
-      224 Pages<br>
-      Publication Date: October 2002<br>
-      Category: Ethics, Law, Computer Software<br>
-      <br>
-      <a href="http://order.fsf.org/#fsfs";><i>Order
-      Now!</i></a><br>
-      <a href="http://order.fsf.org/#signed";><i>Get a copy signed
-      by Richard Stallman!</i></a><br></td>
-    </tr>
-  </table><br>
-  <hr>
-  <br>
-
-  <table style="margin-right: 10px; float: left" frame="box"
-  bgcolor="#F2F2F9" cellspacing="5">
-    <tr>
-      <td><a href="http://www.gnupress.org";>GNU Press Home
-      Page</a></td>
-    </tr>
-
-    <tr>
-      <td><a href=
-      "http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books
-      In Print</a></td>
-    </tr>
-
-    <tr>
-      <td><a href=
-      "http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software
-      on CD</a></td>
-    </tr>
-
-    <tr>
-      <td><a href="http://www.gnupress.org/isbn.html";>ISBN
-      List</a></td>
-    </tr>
-
-    <tr>
-      <td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear
-      Page</a></td>
-    </tr>
-
-    <tr>
-      <td><a href=
-      "http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td>
-    </tr>
-
-    <tr>
-      <td><a href=
-      "http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall
-      Art</a></td>
-    </tr>
-
-    <tr>
-      <td><a href=
-      "http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other
-      Fan Gear</a></td>
-    </tr>
-
-    <tr>
-      <td><a href="http://order.fsf.org/";>Order Form</a></td>
-    </tr>
-
-    <tr>
-      <td><a href=
-      "http://www.gnupress.org/potentialauthors.html";>For
-      Authors</a></td>
-    </tr>
-
-    <tr>
-      <td><a href="http://www.gnupress.org/resellers.html";>For
-      Resellers</a></td>
-    </tr>
-
-    <tr>
-      <td><a href=
-      "http://www.gnupress.org/teachingprofessionals.html";>For
-      Teachers</a></td>
-    </tr>
-
-    <tr>
-      <td><a href=
-      "http://www.gnupress.org/doc/contact.html";>Contact
-      Us</a></td>
-    </tr>
-
-    <tr>
-      <td><a href="http://www.fsf.org";>FSF Home Page</a></td>
-    </tr>
-
-    <tr>
-      <td><a href="http://www.gnu.org";>GNU Project Home</a></td>
-    </tr>
-  </table>
-
-  <h3>Book Contents</h3>The intersection of ethics, law, business
-  and computer software is the subject of these essays and speeches
-  by MacArthur Foundation Grant winner, Richard M. Stallman. This
-  collection includes historical writings such as The GNU
-  Manifesto, which defined and launched the activist Free Software
-  Movement, along with new writings on hot topics in copyright,
-  patent law, and the controversial issue of &ldquo;trusted&rdquo;
-  (<a href="/philosophy/words-to-avoid.html#TrustedComputing">more
-  properly called &ldquo;treacherous&rdquo;</a>) computing.
-  Stallman takes a critical look at common abuses of copyright law
-  and patents when applied to computer software programs, and how
-  these abuses damage our entire society and remove our existing
-  freedoms. He also discusses the social aspects of software and
-  how free software can create community and social justice.
-
-  <p>Given the current turmoil in copyright and patent laws,
-  including the DMCA and proposed CBDTPA, these essays are more
-  relevant than ever. Stallman tackles head-on the essential issues
-  driving the current changes in copyright law. He argues that for
-  creativity to flourish, software must be free of inappropriate
-  and overly-broad legal constraints. Over the past twenty years
-  his arguments and actions have changed the course of software
-  history; this new book is sure to impact the future of software
-  and legal policies in the years to come.</p>
-
-  <p>Lawrence Lessig, the author of two well-known books on similar
-  topics, writes the introduction. He is a noted legal expert on
-  copyright law and a Stanford Law School professor.</p>
-
-  <p><em>Permission is granted to make and distribute verbatim
-  copies of this book provided the copyright notice and this
-  permission notice are preserved on all copies.</em></p>
-
-  <ul>
-    <li><a href="TOC-FSFS.html">View Table of Contents</a></li>
-
-    <li><a href="rms-flyer.pdf">View PDF version of flyer</a></li>
-
-    <li><a href="Stallmanawards.html">View List of Stallman's
-    Achievements and Awards</a></li>
-
-    <li><a href="/philosophy/fsfs/rms-essays.pdf">Download the book
-    as PDF</a></li>
-
-    <li><a href="/philosophy/fsfs/free_software.es.pdf">Download a
-    Spanish translation of the book as PDF</a>
-    (<a href="http://biblioweb.sindominio.net/pensamiento/softlibre/src/";>TeX
-    source</a>)</li>
-
-    <li><a href="/philosophy/fsfs/fsfs-catalan.pdf">Download a Catalan
-    translation of the book as PDF</a> (source
-    available <a 
href="http://www.culturalliure.cat/llibre/programari-lliure-societat-lliure/";>here</a>)</li>
-
-    <li>Download an Italian translation of the book as
-    PDF: <a href="/philosophy/fsfs/fsfs-italian1.pdf">Vol.1</a>,
-     <a href="/philosophy/fsfs/fsfs-italian2.pdf">Vol.2</a>
-     (<a href="http://svn.savannah.gnu.org/viewvc/?root=www-it";>HTML
-     source</a>)</li>
-  </ul>
-
-  <p>The texinfo source for the book is available at Savannah in
-  the rms-essays project through CVS. The command to check out all
-  of the files and put them in an <code>rms-essays</code>
-  subdirectory in your current working directory is:<br>
-  <code>cvs -z3 -d:pserver:address@hidden:/sources/rms-essays co
-    rms-essays</code></p>
-  <hr>
-
-  <h3>Quotes</h3>
-
-  <p>Richard Stallman is the prophet of the free software movement.
-  He understood the dangers of software patents years ago. Now that
-  this has become a crucial issue in the world, buy this book and
-  read what he said.</p>
-
-  <p>- <strong>Tim Berners-Lee</strong>, inventor of the World-Wide
-  Web.</p>
-
-  <p>For the first time this book collects the writing and lectures
-  of Richard Stallman in a manner that will make their subtlety and
-  power clear. The essays span a wide range, from copyright to the
-  history of the free software movement. They include many
-  arguments not well known, and...will serve as a resource for
-  those who seek to understand the thought of this most powerful
-  man. . .</p>
-
-  <p>- <strong>Lawrence Lessig</strong>, Stanford University Law
-  School professor and expert on Cyberlaw.</p>
-
-  <p>Every IT-policy maker and IT-procurement officer should read
-  this book. However, the book touches on subjects affecting a much
-  larger audience and everyone who ever thought of the architecture
-  that regulates the Internet and our computers will have plenty of
-  defining moments with Free Software, Free Society. You will,
-  however, run the risk of becoming religious.</p>
-
-  <p>- <strong>Mikael Pawlo</strong>, lawyer in Sweden and
-  contributing editor to the Harvard Berkman Center publication on
-  Internet law issues, Greplaw.org.</p>
-
-  <p>Richard Stallman is the philosopher king of software. He
-  single-handedly ignited what has become world-wide movement to
-  create software that is Free, with a capital F. He has toiled for
-  years at a project that many once considered a fool's errand, and
-  now that is widely seen as "inevitable." We stand today not at
-  the brink of the Free Software revolution, but in the middle.
-  From today's perspective it is hard to remember a time when free
-  software was not widely available and the concept of Free
-  Software was not widely understood. Yet this was not always the
-  case. Fifteen years ago, Stallman was widely seen as a person
-  tilting at windmills; people jeered at him and told him to "move
-  to Russia." Today Stallman's views on the usefulness and role of
-  Free Software are understood and, to a great extent, accepted. On
-  the other hand, Stallman's views on Copyright (and Copyleft),
-  Digital Restrictions Management, and the poisonous role of
-  patents are only beginning to meet with acceptance.</p>
-
-  <p>- <strong>Simson L. Garfinkel</strong>, computer science
-  author and columnist</p>
-
-  <p>By his hugely successful efforts to establish the idea of
-  ``free software'' Stallman has made a massive contribution to the
-  human condition. His contribution combines elements that have
-  technical, social, political, and economic consequences.</p>
-
-  <p>- <strong>Gerald Jay Sussman</strong>, Matsushita Professor of
-  Electrical Engineering, Massachusetts Institute of Technology</p>
-
-  <p>RMS is the leading philosopher of software. You may dislike
-  some of his attitudes, but you cannot avoid his ideas. This slim
-  volume will make those ideas readily accessible to those who are
-  confused by the buzzwords of rampant commercialism. This book
-  needs to be widely circulated and widely read.</p>
-
-  <p>- <strong>Peter H. Salus</strong>, computer science writer,
-  book reviewer, and Unix historian</p>
-
-  <p>It isn't that RMS is an idealist, we've plenty of those. And
-  it isn't that he's a brilliant programmer, we have those too.
-  It's rather that he mixes those two with a well thought-out
-  philosophical basis and a pragmatic understanding of the world
-  and people. He takes ideas about freedom and cooperation that
-  many of us share and shows how they can form a consistent world
-  view that has room for the realities of money and business.</p>
-
-  <p>He talks about the perversion of the original intent of patent
-  and copyright law. For those of us in the US, our constitution
-  states clearly that these are granted for the benefit of society.
-  Most other countries say something similar. But for there is big
-  money to be made (generally by big companies) by redefining these
-  laws to benefit the holders. We're not the ones saying "Down with
-  the system!". We're the ones crying "Restore it to what it was
-  intended for!"</p>
-
-  <p>Richard feels that software should be free, but he doesn't
-  propose jailing those who disagree. He doesn't propose forcing
-  others to free their work. He proposes making them obsolescent by
-  working together and doing better work that is more widely
-  available. And he doesn't propose that we should work for
-  nothing. He shows how we can write free software and make a
-  profit too. Indeed, he does it.</p>
-
-  <p>I guess the ultimate complement to his quest is the staunch
-  opposition it has from the richest person in the country. The
-  most powerful software company in the world is more vocal in its
-  opposition to the free software movement than it is to its direct
-  competitors!</p>
-
-  <p>The entire history of the human race has been a struggle
-  between the powerful few who thrive on monopoly and coercion, and
-  the many who gain most from freedom and free competition. Today
-  software lies at the forefront of this battle, and those of us
-  who program are the warriors. It is our responsibility to carry
-  forward the banner of freedom and make a better world for our
-  progeny.</p>
-
-  <p>- <strong>Bil Lewis</strong>, computer scientist,
-  multithreaded programming expert.</p>
-  <hr>
-
-  <p>Please send comments on these web pages to <a href=
-  "mailto:address@hidden";><em>address@hidden</em></a>,
-  send other questions to <a href=
-  "mailto:address@hidden";><em>address@hidden</em></a>.</p>
-
-  <p>Copyright © 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
-  2004, 2005, 2006, 2007<br>
-  Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
-  Boston, MA 02110-1301, USA</p>
-
-  <p>Verbatim copying and distribution of this entire article is
-  permitted in any medium, provided this notice is preserved.</p>
-
-  <p>Updated: <!-- timestamp start -->
-  $Date: 2008/06/23 16:23:23 $
-  <!-- timestamp end --></p>
-  <hr>
-</body>
-</html>

Index: book14.html
===================================================================
RCS file: book14.html
diff -N book14.html
--- book14.html 1 Jun 2008 16:33:56 -0000       1.10
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,93 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book14.html">English</a>
-]
-
-<P>
-  [
-    <a href="gnupresspub.html">GNU Press</a> | 
-    <a href="doc.html">Documentation of the GNU project</a> | 
-    <a href="/search.html">Search gnu.org</a>
-  ]
-
-<p>
-<hr>
-
-<p>
-<h4>Philosophy of Software Freedom Series</h4>
-
- <h3>Software Freedom: An Introduction</h3>
-
-<p>
-<table border="0" cellpadding="0" cellspacing="2" width="445">
-<tr>
-<td width="200">
-<img src="small-gnupress.png" width="130" height="222" border="1" 
alt="Software Freedom: An Introduction book cover image">
-</td>
-
-<td width="20">
-<br>
-</td>
-
-<td width="225">
-Author: Robert J. Chassell<br>
-ISBN 1-882114-95-7<br>
-Hard Cover Edition with dust jacket<br>
-$22.95 (Estimate)<br>
-175 Pages (Estimate)<br>
-Publication Date: Estimated Spring 2003<br>
-Category: Business, Law, Computer Software<br>
-
-</td>
-</tr>
-</table>
-
-<p>
-This book is designed to explain the free software philosophy to business 
people 
-and other interested non-technical persons. The author has a Master's Degree 
in 
-Economics from Cambridge University and will focus on the economic and 
business 
-conundrums of how an organization can make money from software that is 
-freely distributable.
-
-<p>
-<hr>
-
-<P>
-Return to <a href="/home.html">GNU's home page</a>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2005, 2006 <BR> 
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: <!-- timestamp start -->
-$Date: 2008/06/01 16:33:56 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: book15.html
===================================================================
RCS file: book15.html
diff -N book15.html
--- book15.html 2 Jun 2008 16:26:21 -0000       1.8
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book15.html">English</a>
-]
-
-<P>
-  [
-    <a href="gnupresspub.html">GNU Press</a> | 
-    <a href="doc.html">Documentation of the GNU project</a> | 
-    <a href="/search.html">Search gnu.org</a>
-  ]
-
-<p>
-<hr>
-
-<p>
-<h4>General Computer Science Series</h4>
-
- <h3>The LaTeX Reference Manual</h3>
-
-<p>
-<table border="0" cellpadding="0" cellspacing="2" width="445">
-<tr>
-<td width="200">
-<img src="small-gnupress.png" width="130" height="222" border="1" alt="LaTeX
-reference manual book cover image">
-</td>
-
-<td width="20">
-<br>
-</td>
-
-<td width="225">
-Author: The Indian TeX Users Group<br>
-ISBN: 1-882114-70-1<br>
-Perfect bound, trade paper<br>
-$40.00 (Estimate)<br>
-250 pages (Estimate)<br>
-Publication Date: Estimated Winter 2003<br>
-Category: Computer Science<br>
-</td>
-</tr>
-</table>
-
-<p>
-This book is an introductory tutorial for new users of LaTeX. It is designed 
to 
-be a comprehensive introduction to the basic concepts of mark-up languages, 
-what LaTeX is (and is not), and how to apply it. It covers a wide range of 
-usages including typesetting mathematical formulas and non-English languages 
-and creating cross-references, indexes, tables, and bibliographic databases.
-
-<p>
-<hr>
-
-<P>
-Return to <a href="/home.html">GNU's home page</a>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2005, 2006 <BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/06/02 16:26:21 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: book16.html
===================================================================
RCS file: book16.html
diff -N book16.html
--- book16.html 3 Jun 2008 12:15:12 -0000       1.11
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book16.html">English</a>
-]
-
-<P>
-  [
-    <a href="gnupresspub.html">GNU Press</a> | 
-    <a href="doc.html">Documentation of the GNU project</a> | 
-    <a href="/search.html">Search gnu.org</a>
-  ]
-
-<p>
-<hr>
-
-<p>
-<h4>GNU Software Manuals Series</h4>
-
- <h3>GNU MDK: GNU MIX Development Kit</h3>
-
-<p>
-<table border="0" cellpadding="0" cellspacing="2" width="445">
-<tr>
-<td width="200">
-<img src="mdk.png" width="170" height="222" border="1" alt="GNU MDK book cover 
image">
-</td>
-
-<td width="20">
-<br>
-</td>
-
-<td width="250">
-Author: Jos&eacute; Antonio Ortega Ruiz<br>
-ISBN: 1-882114-62-0<br>
-Perfect bound, trade paper<br>
-$16.95<br>
-110 Pages<br>
-Publication Date: September 2002<br>
-Category: Computer Science<br>
-<a href="http://order.fsf.org/";><i>Order Now!</i></a><br>
-</td>
-</tr>
-</table>
-
-<P>
-<HR>
-
-<p>
-The MIX is a mythical computer designed by Donald Knuth in his
-monumental work &quot;The Art Of Computer Programming&quot;. MIXAL
-(the Mix Assembly Language) is its assembler.  You can learn about MIX
-and MIXAL as an introduction to computer architecture or assembly
-programming, as a companion to Knuth's book, or just for fun!
-
-<p>
-The MIX's architecture is a simplified version of real CISC CPUs. It
-features registers, memory cells, an overflow toggle, comparison
-flags, input-output devices, and a set of binary instructions
-executable by its virtual CPU.  It is powerful and complete enough to
-provide a virtual development platform for writing quite complex
-programs, and useful for learning new programming techniques.
-
-<p>
-The following tools come with MDK:<br>
-<ul>
-<li> mixasm A MIXAL assembler to run and debug MIXAL source code<br>
-<li> mixvm A MIX virtual machine emulation using a command line
-interface<br>
-<li> gmixvm A GTK+ GUI graphical interface for the MIX<br>
-<li> mixguile A Guile shell with an embedded assembler and built-in 
-Scheme commands<br>
-<li> mixvm.el A Lisp program to run mixvm inside of an Emacs GUD buffer,
-allowing concurrent editing and debugging of MIXAL programs<br>
-</ul>
-<br>
-These tools allow you to:<br>
-<ul>
-<li> set breakpoints, run programs step by step, trace executed
-instructions (great for debugging and learning)<br>
-<li> set conditional breakpoints (register change, memory change, and more)<br>
-<li> collect execution timing statistics<br>
-<li> inspect and modify the MIX registers, flags and memory contents
-       at any step<br> 
-</ul>
-<p>
-This tutorial provides a thorough description of the MDK utilities.
-The latest version of the GNU MDK is easily downloadable from the Internet
-free of charge [instructions inside]. Executables exist for a wide
-range of free software platforms, as well as MS Windows and Macintosh.
-<p>
-
-<h4>About the Author:</h4>
-<p>
-Jose' Antonio Ortega Ruiz received his PhD from the University of
-Barcelona in Theoretical Physics in 1997. His interest is programming
-languages and methodologies, both at a practical and theoretical
-level. He is a fan of Donald Knuth and brought the MIX system to life
-following Knuth's original design.
-
-<P>
-<hr>
-
-<P>
-Return to <a href="/home.html">GNU's home page</a>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006 
<BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/06/03 12:15:12 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: book17.html
===================================================================
RCS file: book17.html
diff -N book17.html
--- book17.html 3 Jun 2008 12:19:08 -0000       1.10
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,98 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book17.html">English</a>
-]
-
-<P>
-  [
-    <a href="gnupresspub.html">GNU Press</a> | 
-    <a href="doc.html">Documentation of the GNU project</a> | 
-    <a href="/search.html">Search gnu.org</a>
-  ]
-
-<p>
-<hr>
-
-<p>
- <h3>The GNU C Programming Tutorial</h3>
-
-
-
-<table border="0" cellpadding="0" cellspacing="2" width="445">
-<tr>
-<td width="200">
-<img src="small-gnupress.png" width="130" height="222" border="1" alt="GNU C 
Programming Tutorial book cover image">
-</td>
-<td width="20">
-<br>
-</td>
-
-<td width="250">
-Authors: Mark Burgess &amp; Ron Hale-Evans<br>
-ISBN: 1-882114-61-2 CANCELED<br>
-Lay flat, trade paper<br>
-$39.00 (Estimate)<br>
-350 Pages (Estimate)<br>
-Publication Date: Estimated Summer 2003<br>
-Category: Computer Science<br>
-</td>
-</tr>
-</table>
-
-<h2>Due to production problems, this title has been canceled.</h2>
-<p>
-We are sorry to announce that we will not be publishing this title.
-      There were just too many problems and and we decided to set this
-      manuscript aside and start fresh on a new C tutorial book.  If anyone
-      would like to contribute to the new C book, please send email to
-      address@hidden  Tell us what you would like to help with, such
-      as editing or writing sample programs.
-<p>
-Best Regards, <br>
-Lisa M Goldstein<br>
-Managing Editor<br>
-<br>
-
-<P>
-<hr>
-
-<P>
-Return to <a href="/home.html">GNU's home page</a>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006 
<BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/06/03 12:19:08 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: book2.html
===================================================================
RCS file: book2.html
diff -N book2.html
--- book2.html  22 May 2008 11:46:23 -0000      1.11
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,148 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book2.html">English</a>
-]
-
-<P>
-<HR>
-
-<p>
-
-<h3>GNU Emacs Manual</h3>
-
-by Richard M. Stallman
-
-<p>
-
-<table border="0" cellpadding="0" cellspacing="2" width="415">
-
-<tr>
-
-<td width="170">
-<img src="book2.jpg" width="170" height="224" border="1" alt="GNU Emacs Manual 
book cover image">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-
-<td width="225">
-564 pages, plus detachable<br>
-Quick Reference Card.<br>
-Cover Price: $30.00<br>
-Fourteenth Edition, April 2000<br>
-ISBN 1-882114-07-8<br>
-Trade Paper,<br>
-Lay Flat Binding<br>
-<a href="/manual/emacs-20.7/html_chapter/emacs_toc.html">On-line 
version</a><br>
-<a href="http://order.fsf.org/";><i>Order Now!</i></a><br>
-
-</td>
-
-</tr>
-</table>
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-<p>
-Emacs is the premier text editor and programming environment for
-      workstations and high-end PCs.  This manual tells you how to get
-      started with Emacs, how to write simple messages as well as
-      complex documents, and how to use special modes for editing,
-      compiling, and debugging programs.  It also explains how to
-      handle multiple files, directories and windows, and how to
-      customize your environment. 
-<p>
-This book picks up where the introductory on-line tutorial included
-with Emacs ends. It explains the full range of Emacs' power and
-contains reference material useful to expert users. Appendixes with
-specific material for Microsoft OS users is included.  This book
-covers many features included in Version 21 Emacs.
-
-<h4>About the Author:</h4> 
-Richard M. Stallman is the original author of GNU
-Emacs and is still its maintainer. He was recently awarded the 2001
-Takeda Award for Techno-Entrepreneurial Achievements in
-Social/Economic Well-Being. He is the founder of Project GNU and the
-Free Software Foundation.
-
-<BR><BR><BR><BR><BR><BR><BR>
-
-<p>
-<hr>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 
2006 <BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/05/22 11:46:23 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: book2.jpg
===================================================================
RCS file: book2.jpg
diff -N book2.jpg
Binary files /tmp/cvsfXNHbn and /dev/null differ

Index: book3.html
===================================================================
RCS file: book3.html
diff -N book3.html
--- book3.html  28 May 2008 12:53:05 -0000      1.13
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,144 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book3.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>GNU Emacs Lisp Reference Manual</h3>
-
-by Bil Lewis, Dan LaLiberte, Richard Stallman, and the GNU Manual Group
-
-<p>
-
-<table border="0" cellpadding="0" cellspacing="2" width="405">
-
-<tr>
-
-<td width="160">
-<img src="book3.jpg" width="160" height="211" border="1" alt="Emacs Lisp 
Reference Manual book cover image">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-
-<td width="225">
-974 Pages in Two Volumes<br>
-Cover Price: $60.00 per 2-vol. set<br>
-May 2000; For Emacs Version 21 and below.<br>
-ISBN 1-882114-73-6<br>
-Trade Paper, Lay Flat Binding<br>
-<a href="/software/emacs/elisp-manual/">On-line version</a><br>
-</td>
-</tr>
-</table>
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-<p>
-
-Emacs Lisp is much more than an "extension language" for the GNU Emacs
-      program.  It is a full programming language in its own
-      right. Because Emacs Lisp was designed to be used by an editor,
-      it has developed unique features for scanning and parsing text,
-      as well as for handling files, buffers, displays, subprocesses
-      and more. Emacs Lisp is also closely integrated with the Emacs
-      editing facilities.  As a result, editing commands are functions
-      that can be conveniently be called from Lisp programs, and act
-      as parameters for customization of regular Lisp variables. 
-<p>
-
-This reference manual is the only manual that specifically covers
-      Emacs Lisp.  The earlier chapters describe the features similar
-      to those in many programming languages.  The later chapters
-      describe features specific to Emacs Lisp or that are
-      specifically related to editing. It also includes an
-      introductory section for programmers who are new to Lisp.
-
-<p>
-This edition is completely revised to cover Emacs Version 21, with an
-appendix noting differences for Emacs Version 20. 
-
-<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
-
-<p>
-<hr>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-<br>
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 
2006 <BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/05/28 12:53:05 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: book3.jpg
===================================================================
RCS file: book3.jpg
diff -N book3.jpg
Binary files /tmp/cvsJOcSpq and /dev/null differ

Index: book4.html
===================================================================
RCS file: book4.html
diff -N book4.html
--- book4.html  26 May 2008 22:08:09 -0000      1.13
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,168 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book4.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>An Introduction to Programming in Emacs Lisp</h3>
-
-by Robert J. Chassell
-
-<p>
-
-<table border="0" cellpadding="0" cellspacing="2" width="415">
-
-<tr>
-
-<td width="170">
-<img src="book4.jpg" width="170" height="220" border="1" alt="Emacs Lisp book 
cover image">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-
-<td width="225">
-320 Pages<br>
-Cover Price: $30.00<br>
-December 2001<br>
-ISBN 1-882114-43-4<br>
-Trade Paper Lay Flat Binding<br>
-<a href="/software/emacs/emacs-lisp-intro/">On-line version</a><br>
-<a href="http://order.fsf.org/";><i>Order Now!</i></a><br>
-<a href="Intro-Elisp-Review1.pdf"><i>Free Software Magazine's Book
-Review</i></a> (PDF Format)<br>
-</td>
-
-</tr>
-</table>
-
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-<table cellspacing="5"><tr><td>
-
-<p>
-Emacs Lisp is a simple, complete, and powerful programming
-language. It is the building block of GNU Emacs, which is an
-integrated development environment with special features for scanning
-and parsing text as well as for handling multiple files, buffers,
-displays, windows, and sub-processors.
-
-<p>
-
-This book will show you:<br>
-<ul>
-
-<li>how to set variables and write function definitions
-<li>How to use &quot;if&quot; and &quot;let&quot;
-<li>How to write &quot;while&quot; loops and recursive loops
-<li>how to search for a word or expression
-<li>how to customize GNU Emacs for yourself, even when it is shared on a 
network.
-<li>how to debug programs
-<li>and much more.
-
-</ul>
-This tutorial an elementary introduction to teach non-programmers how
-to customize their work environment; it can also be used as an
-introduction to programming basics. It includes numerous exercises and
-sample programs; the author also walks you through the actual source
-code of several GNU Emacs commands. A handy reference appendix is
-    included. 
-
-<p>
-
-This second edition covers new features included in GNU Emacs version 21, 
while remaining compatible with earlier versions.
-
-<p>
-
-About the author:<br> 
-
-Robert J. Chassell has worked with GNU Emacs since 1985. He writes and
-edits, teaches GNU Emacs and Emacs Lisp, and speaks throughout the
-world on software freedom. He has an abiding interest in social and
-economic history and flies his own airplane.
-
-</tr></td>
-</table>
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006 
<BR> 
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/05/26 22:08:09 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: book4.jpg
===================================================================
RCS file: book4.jpg
diff -N book4.jpg
Binary files /tmp/cvs18s12o and /dev/null differ

Index: book5.html
===================================================================
RCS file: book5.html
diff -N book5.html
--- book5.html  26 May 2008 00:12:59 -0000      1.9
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,140 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book5.html">English</a>
-]
-
-<P>
-<HR>
-
-<p>
-
-<h3>Using and Porting GNU CC</h3>
-
-by Richard M. Stallman
-
-<p>
-
-<table border="0" cellpadding="0" cellspacing="2" width="425">
-
-<tr>
-
-<td width="175">
-<img src="book5.jpg" width="150" height="199" border="1" alt="Using and 
Porting book cover image">
-</td>
-
-<td width="15">
-<br>
-
-</td>
-
-<td width="235">
-588 Pages<br>
-Cover Price: $35.00<br>
-July 1999; For GNU CC Version 2.95.<br>
-ISBN 1-882114-38-8<br>
-Trade Paper, Lay Flat Binding<br>
-<a 
href="http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_toc.html#SEC_Contents";>On-line
 version</a><br>
-<a href="http://order.fsf.org/";><i>Order Scuffed Copy</i></a><br>
-
-</td>
-
-</tr>
-</table>
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-This title is now officially out of print. It has been replaced by:<br>
-<p>
-<a href="http://www.gnupress.org/using.html";>Using GCC: The GNU
-Compiler Collection Reference Manual</a>.  Please note that this title
-does <b>not</b> include the <i><b>Porting</b></i> section of
-<i>Using and Porting GNU CC</i>.
-</p>
-
-<p>
-<i>Using and Porting GNU CC</i> is a thorough reference guide, showing
-how to install, run, debug, configure and port the GNU Compiler
-Collection.  It covers using the C, C++, Objective C, and Fortran
-front-ends for the Compiler Collection.
-</p>
-
-
-<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 
2006 <BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/05/26 00:12:59 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: book5.jpg
===================================================================
RCS file: book5.jpg
diff -N book5.jpg
Binary files /tmp/cvsj6Pfcs and /dev/null differ

Index: book6.html
===================================================================
RCS file: book6.html
diff -N book6.html
--- book6.html  25 May 2008 12:00:48 -0000      1.11
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,94 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book6.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>GNU C Library Reference Manual (2 volume set)</h3>
-
-by Sandra Loosemore with Richard M. Stallman, et al
-
-<br><br>
-
-<table border="0" cellpadding="0" cellspacing="2" width="425">
-
-<tr>
-
-<td width="175">
-<img src="C-library.jpg" width="173" height="207" border="1" alt="C-Library 
drawing image">
-</td>
-
-<td width="15">
-<br>
-
-</td>
-
-<td width="235">
-1275 Pages in Two Volumes<br>
-Cover Price: $60.00 per 2-vol. set<br>
-July 2001; For glibc version 2.2.x<br>
-ISBN 1-882114-55-8<br>
-Trade Paper, Lay Flat Binding<br>
-<a href="/software/libc/manual/">On-line version</a><br>
-</td>
-</tr>
-</table>
-
-<p>
-This title is now officially out of print. It has been split into
-the two separate stand-alone books, listed below.
-</p>
-
-<UL>
-  <LI>
-    <a href="http://www.gnupress.org/clib-fund.html";>
-      GNU C Library: Application Fundamentals</a>
-  </LI>
-  <LI>
-    <a href="http://www.gnupress.org/clib-system.html";>
-      GNU C Library: System & Network Applications</a>
-  </LI>
-</UL>
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 
2006 <BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/05/25 12:00:48 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: book7.html
===================================================================
RCS file: book7.html
diff -N book7.html
--- book7.html  16 Apr 2008 14:44:47 -0000      1.10
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,163 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book7.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>Debugging with GDB:The GNU Source-Level Debugger</h3>
-
-by Richard M. Stallman, Roland Pesch, Stan Shebs, et al.
-
-<p>
-
-<table border="0" cellpadding="0" cellspacing="2" width="425">
-
-<tr>
-
-<td width="170">
-<img src="book7.jpg" width="170" height="219" border="1" alt="GNU Debugger 
book cover image">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-
-<td width="235">
-346 Pages<br>
-Cover Price: $30.00<br>
-January 2002<br>
-ISBN 1-882114-88-4<br>
-Trade Paper, Lay Flat Binding<br>
-<a href="/software/gdb/documentation/">On-line version</a><br>
-<a href="http://order.fsf.org/";><i>Order Now!</i></a><br>
-
-</td>
-</tr>
-</table>
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-<table cellspacing="5"><tr><td>
-
-<p>
-The GNU Debugger allows you to see what is going on &quot;inside&quot; a 
-program while it executes - or what a program was doing at the moment 
-it crashed.
-
-<p>
-GDB supports C, C++, Java, Fortran and Assembly among other languages; 
-it is also designed to work closely with the GNU Compiler Collection (GCC).
-
-<p>
-The GNU Debugger Program has four special features that helps you catch bugs 
in the act:
-<ul>
-<li>It starts your program for you, specifying anything that might affect it's 
behavior.
-<li>Makes your program stop under specified conditions.
-<li>Examines what happened when the program stopped.
-<li>Allows you to experiment with changes to see what effect they have on the 
program.
-</ul>
-This book will show you:<br>
-<ul>
-<li>setting and clearing breakpoints
-<li>examining the stack, source files and data
-<li>examining the symbol table
-<li>altering program execution
-<li>specifying a target for debugging
-<li>how to control the debugger
-<li>how to use canned command sequences
-<li>how to install GDB
-<li>and much more!
-</ul>
-This manual is written for programmers. It is designed so someone can begin 
-utilizing GDB after just reading the first chapter, or read the whole manual 
-and master the program. Synopsis of ideas and extensive examples are given.
-
-<p>
-About the authors:<br>
-Richard M. Stallman, founder of the Free Software movement, is the
-original author of GDB. Roland Pesch is a professional technical
-writer. Stan Shebs was a primary maintainer of GDB during the 1990's.
-</p>
-</tr></td>
-</table>
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 
2006 <BR> 
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/04/16 14:44:47 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: book7.jpg
===================================================================
RCS file: book7.jpg
diff -N book7.jpg
Binary files /tmp/cvssAcIdr and /dev/null differ

Index: book8.html
===================================================================
RCS file: book8.html
diff -N book8.html
--- book8.html  13 Apr 2008 11:36:57 -0000      1.10
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,165 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book8.html">English</a>
-]
-
-<P>
-<HR>
-
-
-<h3>GNU Make: A Program for Directing Recompilation</h3>
-
-by Richard M. Stallman,  Roland McGrath and Paul D. Smith
-
-<p>
-
-<table border="0" cellpadding="0" cellspacing="2" width="425">
-
-<tr>
-
-<td width="170">
-<img src="Make-381.png" width="170" height="223" border="1" alt="GNU Make book 
cover image">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-
-<td width="235">
-196 Pages<br>
-Cover Price: $25.00<br>
-June 2004<br>
-ISBN 1-882114-83-3<br>
-Trade Paper, Lay Flat Binding<br>
-<a href="/software/make/manual/">On-line version</a><br>
-<a href="http://order.fsf.org/";><i>Order Now!</i></a><br>
-
-</td>
-</tr>
-</table>
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-<table cellspacing="5"><tr><td>
-
-<p>
-
-This best-selling manual is indispensable to free software system
-maintainers. The GNU Make manual, written by the program's original
-authors and current maintainer, is the definitive tutorial.  It is
-carefully designed to be useful to all levels of users, and includes
-an introductory chapter for novices.
-
-The Make utility automates the process of compilation; it is
-especially useful when the source files of large programs change. GNU
-Make is becoming increasingly popular as it is able to meet the needs
-of free software system hackers in system management. It is a small
-program with a lot of power.
-
-<p>
-
-This book will show you:
-<ul>
-<li>How to write your own makefiles
-<li>Make's rule syntax and how to write your own rules
-<li>How the Make utility can be configured to automatically put binary and 
source files in the right places.
-<li>How to use make to create archive files automatically
-<li>Define, set and use Make's variables
-<li>How Make uses targets so that you can broaden or narrow Make's 
recompilation efforts on demand.
-<li>And much more!
-</ul>
-
-<p>
-
-This manual provides a complete explanation of Make, both the basics
-and extended features. There is also a convenient Quick Reference
-appendix for experts.
-
-<p>
-
-About the Authors:<br> Richard M. Stallman is the founder of the Free
-Software movement. He has also written the &quot;Emacs Reference
-Manual&quot; and Using and Porting GNU CC. Roland McGrath is the
-original author of the GNU Make Program.  Paul D. Smith has been the
-maintainer for many years.
-</tr></td>
-</table>
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 
2006 <BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/04/13 11:36:57 $ 
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: book8.jpg
===================================================================
RCS file: book8.jpg
diff -N book8.jpg
Binary files /tmp/cvswvHN2r and /dev/null differ

Index: book9.html
===================================================================
RCS file: book9.html
diff -N book9.html
--- book9.html  21 May 2008 11:48:19 -0000      1.10
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,128 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book9.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>Texinfo: The GNU Documentation Format, for Version 4</h3>
-
-by Robert J. Chassell &amp; Richard M. Stallman
-
-<p>
-
-<table border="0" cellpadding="0" cellspacing="2" width="380">
-
-<tr>
-
-<td width="170">
-<img src="texinfo.jpg" width="170" height="216" border="1" alt="Texinfo book 
cover image">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-</td>
-
-<td width="190">
-260 Pages<br>
-Cover Price: $25.00<br>
-<b>Web price sales special $10.00!</b><br>
-September 1999, for Texinfo Version 4<br>
-ISBN 1-882114-67-1<br>
-Trade Paper, Lay Flat Binding<br>
-<a href="/software/texinfo/manual/texinfo/">On-line version</a><br>
-<a href="http://order.fsf.org/";><i>Order Now!</i></a><br>
-
-</td>
-</tr>
-</table>
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-<p>
-This tutorial is the authoritative text for the official documentation
-formatting language used for all GNU Project manuals. It assumes no
-previous Texinfo knowledge and includes many examples and exercises.
-
-<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>
-
-<p>
-<hr>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 
2006 <BR> 
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/05/21 11:48:19 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: clib-fund.html
===================================================================
RCS file: clib-fund.html
diff -N clib-fund.html
--- clib-fund.html      7 Feb 2007 02:34:56 -0000       1.20
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,215 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>GNU C Library: Fundamental Applications</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/clib-fund.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>GNU C Library: Application Fundamentals </h3>
-By Sandra Loosemore, et al <br>
-<br>
-<table border="0" cellpadding="0" cellspacing="2" width="600">
-
-<tr>
-
-<td width="170">
-<img src="CLib-fund-front.png" width="170" height="225" border="1"
-alt="GNU C Library Manual cover image">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-</td>
-
-<td width="410">
-673 Pages.<br> Cover Price: $60.00<br> March 2004, for glibc 2.2.x
-<br> ISBN 1-882114-22-1<br> Hardcover, printed covers, sewn
-binding<br> <a
-href="glibc-application.texi">Download Texinfo Source</a> (Formatted for 
hardcopy only)<br> 
-<br>
-<a href="http://order.fsf.org/#manuals";><i>Order Now!</i></a><br>
-
-<!-- <a href="http://order.fsf.org/#manuals";><i>Order Now!</i></a><br> -->
-
-</td>
-
-</tr>
-</table>
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-<table cellspace="5"><tr><td>
-
-<p>
-The GNU C Library Reference Manual is the definitive reference work
-for the GNU Project version of all the ISO C standard library and
-other standard functions.  For printing purposes, it has been split
-into two stand-alone volumes.
- </p>
-
-See also: <a href="clib-system.html">GNU C Library: System & Network
-Applications</a><br>
-
-<p> A comprehensive guide to implementing the standard C libraries
-which are both POSIX & OPEN/X compliant, <b>Fundamental
-Applications</b> contains the most commonly used functions, such as:
-opening, reading, and closing files; screen I/O; performing math;
-character and string manipulation; and memory allocation. Contains
-code examples and usage recommendations. Every programmer, from first
-year students to experienced programmers, will find this book useful.
- </p>
-
-
-This volume covers:<br>
-
-<ul> 
-<li>Error reporting
-<li>Virtual memory allocation and paging
-<li>Character handling
-<li>String and array utilities
-<li>Character set handling
-<li>Locales and internationalization
-<li>Mathematics and arithmetic functions
-<li>Date and time
-<li>Message translation
-<li>Searching and sorting
-<li>Pattern matching
-<li>Basic program/system interface
-<li>Overview of input/output
-<li>Debugging support
-<li>Streams and input/output
-<li>Summary of library facilities
- </ul>
-
-<p>
-The GNU C Library supports the features of popular Unix variants
-(including BSD and System V) when no conflict occurs with ISO C and
-POSIX standards. Different compatibility modes (selectable when you
-compile an application) allow peaceful coexistence of the different
-varieties of Unix. Highly portable, you can build libraries for any
-supported system with just <tt>configure</tt> & <tt>make</tt>.
-</p>
-
-<p>
-The GNU C Library is fully internationalized.  The messages have been
-translated from American English into Brazilian Portuguese, British
-English, Chinese, Czech, Danish, Dutch, French, Galician, German,
-Greek, Italian, Japanese, Korean, Norwegian, Polish, Slovak, Spanish,
-Swedish, and Turkish.
-<p>
-
-
-This reference manual:<br>
- 
-<ul>
-<li>Gives advice on how to write programs to work under multiple C
-dialects.
- 
-<li>Contains an alphabetical listing of functions and other library
-symbols, and which standards each belongs to.
- 
-<li>Identifies which features belong to which standards, enabling
-identification of possible nonportability problems in advance.
- 
-<li>Includes overviews of the ISO C and POSIX standards, including the
-System V and Berkeley Unix implementations.
-</ul>
-
-
-Standards covered include:<br>
-<ul>
-<li>ISO C 99
-<li>ISO C Standard
-<li>POSIX.1c 1d 1j
-<li>POSIX.2
-<li>GNU extensions
-<li>4.2, 4.3, 4.4 BSD
-<li>Unix98
-<li>SVID
-<li>SunOS
-<li>System V Unix
-<li>XSI (X/Open System Interface)
-</ul>
-
-</table>
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to <a href="mailto:address@hidden";>
-<em>address@hidden</em></a>, send other questions to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 2003, 2004, 2005, 2006 Free Software Foundation, Inc., 51 
Franklin St -
-Fifth Floor, Boston, MA 02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2007/02/07 02:34:56 $ $Author: mattl $ 
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: clib-system.html
===================================================================
RCS file: clib-system.html
diff -N clib-system.html
--- clib-system.html    2 May 2008 10:29:51 -0000       1.20
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,218 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>GNU C Library: System & Network Applications</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/clib-system.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>GNU C Library: System & Network Applications</h3>
-By Sandra Loosemore, et al <br>
-<br>
-<table border="0" cellpadding="0" cellspacing="2" width="600">
-
-<tr>
-
-<td width="170">
-<img src="CLib-system-front.png" width="170" height="225" border="1"
-alt="GNU C Library Manual cover image">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-
-</td>
-
-<td width="410">
-675 Pages.<br> Cover Price: $60.00<br> March 2004, for glibc 2.2.x
-<br> ISBN 1-882114-24-8<br> Hardcover, printed covers, sewn
-binding<br> <a
-href="glibc-system.texi">Download Texinfo Source</a> (Formatted for hardcopy 
only)<br> 
-<br>
-<a href="http://order.fsf.org/#manuals";><i>Order Now!</i></a><br>
-
-<!-- <a href="http://order.fsf.org/#manuals";><i>Order Now!</i></a><br> -->
-
-</td>
-
-</tr>
-</table>
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-
-<table cellspace="5"><tr><td>
-
-
-<p>
-The GNU C Library Reference Manual is the definitive reference work
-for the GNU Project version of all the ISO C standard library and
-other standard functions.  For printing purposes, it has been split
-into two stand-alone volumes.
-</p>
-
-
-<p>
-<b>System & Network Applications</b> is the second part of the series
-and contains advanced functions generally used by people writing
-larger applications, such as networking or configuring your system.
-Topics covered include threads, processes,network communications,
-signal handling, logging and system management.  Contains code
-examples and usage recommendations. Useful for both sys admins and
-programmers.
-
-</p>
-
-See also: <a href="clib-fund.html">GNU C Library: Application
-Fundamentals </a><br>
-<br>
-
-This volume covers:<br>
-
-<ul> 
-<li>DES Encryption and Password Handling
-<li>Processes & Job Control
-<li>Users, Groups, and System Management
-<li>File System Interface
-<li>Pipes, FIFOs and Sockets
-<li>Low-level Terminal Interfaces
-<li>Low-level Input/Output
-<li>System Databases
-<li>System Configuration Parameters
-<li>Syslog
-<li>Non-local Exits
-<li>Resource Usage and Limitation
-<li>Signal Handling
-<li>POSIX Threads
-</ul>
-
-
-<p>
-The GNU C Library supports the features of popular Unix variants
-(including BSD and System V) when no conflict occurs with ISO C and
-POSIX standards. Different compatibility modes (selectable when you
-compile an application) allow peaceful coexistence of the different
-varieties of Unix. Highly portable, you can build libraries for any
-supported system with just <tt>configure</tt> & <tt>make</tt>.
-</p>
-
-
-<p>
-The GNU C Library is fully internationalized.  The messages have been
-translated from American English into Brazilian Portuguese, British
-English, Chinese, Czech, Danish, Dutch, French, Galician, German,
-Greek, Italian, Japanese, Korean, Norwegian, Polish, Slovak, Spanish,
-Swedish, and Turkish.
-</p>
-
-
-This reference manual:<br>
- 
-<ul>
-<li>Gives advice on how to write programs to work under multiple C
-dialects.
- 
-<li>Contains an alphabetical listing of functions and other library
-symbols, and which standards each belongs to.
- 
-<li>Identifies which features belong to which standards, enabling
-identification of possible nonportability problems in advance.
-</ul>
-
-
-Standards covered include:<br>
-<ul>
-<li>ISO C 99
-<li>ISO C Standard
-<li>POSIX.1c 1d 1j
-<li>POSIX.2
-<li>GNU extensions
-<li>4.2, 4.3, 4.4 BSD
-<li>Unix98
-<li>SVID
-<li>SunOS
-<li>System V Unix
-<li>XSI (X/Open System Interface)
-</ul>
-
-</table>
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to <a href="mailto:address@hidden";>
-<em>address@hidden</em></a>, send other questions to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 2003, 2004, 2005, 2006 Free Software Foundation, Inc., 51 
Franklin St -
-Fifth Floor, Boston, MA 02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/05/02 10:29:51 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: creditapp.html
===================================================================
RCS file: creditapp.html
diff -N creditapp.html
--- creditapp.html      1 May 2006 10:04:13 -0000       1.5
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,154 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Credit Application for 
Resellers</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Credit Application</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/creditapp.html">English</a>
-]
-
-<p>
-  [
-    <a href="gnupresspub.html">GNU Press</a> |
-    <a href="doc.html">Documentation of the GNU project</a> |
-    <a href="/search.html">Search gnu.org</a>
-  ]
-
-<p>
-<hr>
-
-<p>
-<h3>Application for Credit</h3>
-
-(Please print out and fax to 617-542-2652.)
-
-<h4>Name (Exact legal name for billing purposes)</h4>
-
-_____________________________________________
-
-<h4>Shipping Address</h4>
-
-_____________________________________________<br>
-_____________________________________________<br>
-_____________________________________________
-
-<h4>Phone Number</h4>
-
-_____________________________________________
-
-<h4>Fax Number</h4>
-
-_____________________________________________
-
-<h4>Email and Web Site address</h4>
-
-_____________________________________________
-
-<h4>Billing Address (if different)</h4>
-
-_____________________________________________<br>
-_____________________________________________<br>
-_____________________________________________
-
-<h4>Nature of Business</h4>
-
-_____________________________________________
-
-<h4>Date Business Started</h4>
-
-_____________________________________________
-
-<h4>State of Incorporation</h4>
-
-_____________________________________________
-
-<h4>Sales Tax Exemption Number</h4>
-
-_____________________________________________
-
-<h4>Estimated Annual Value of orders from GNU Press</h4>
-
-_____________________________________________
-
-<h4>Contact for Invoice Inquiries</h4>
-
-_____________________________________________<br>
-_____________________________________________
-
-<h4>TWO SUPPLIER REFERENCES ARE REQUIRED: (U.S. References Preferred)</h4>
-
-Name _____________________________________________<br>
-Address _____________________________________________<br>
-Telephone _____________________________________________<br>
-Fax _____________________________________________<br>
-
-<p>
-
-Name _____________________________________________<br>
-Address _____________________________________________<br>
-Telephone _____________________________________________<br>
-Fax _____________________________________________<br>
-
-
-<p>
-
-NOTE: In addition to the above, please enclose a copy of your most recent 
financial statements.
-
-<p>
-
-Name &amp; Address of Bank<br>
-_____________________________________________<br>
-_____________________________________________<br>
-Account Number _____________________________________________<br>
-Contact _____________________________________________<br>
-Phone Number _____________________________________________
-
-<p>
-
-If credit is granted, I/we understand the terms of sales are net 30. I/we do 
hereby jointly, and individually agree to pay for all goods and merchandise 
supplied to me; or to any of us, to the above business. In the event that an 
account is placed with a third party for collection, I/we agree to pay all 
costs; including reasonable attorney fees, court costs, and finance charges. 
I/we authorize GNU PRESS to investigate our credit history, bank references, 
and other information deemed necessary to extend credit.
-
-<p>
-Authorized Signature:_____________________________________________
-
-<p>
-Title and Date: _____________________________________________
-
-<P>
-<HR>
-
-<P>
-Return to <a href="/home.html">GNU's home page</a>
-
-<p>
-Please send comments on these web pages to <a href="mailto:address@hidden";>
-<em>address@hidden</em></a>, send other questions to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2005, 2006 <BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2006/05/01 10:04:13 $ $Author: ramprasadb $ 
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: doc-team.html
===================================================================
RCS file: doc-team.html
diff -N doc-team.html
--- doc-team.html       1 May 2006 10:08:22 -0000       1.14
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,181 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Information for
-      Documentation Volunteers</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Information for Proofreading and Other Documentation Volunteers</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-<p>
-  [
-    <a href="gnupresspub.html">GNU Press</a> |
-    <a href="doc.html">Documentation of the GNU project</a>
-  ]
-<p>
-<hr>
-
-<p>
-This page is a roughly designed working page for people actively
-      involved in proofreading <b><it>Using GCC</b></it>.  For a more
-      complete introduction to GNU Press, please see our regular <a
-      href="http://www.gnupress.org";>home page</a>.
-<p>
-<h3>Instructions on How to Join the Project</h3>
-
-<h4>Mailing List</h4>
-<p>
-Go to http://mail.gnu.org/mailman/listinfo/bug-gnupress to sign up for 
-the discussion mailing list.
-
-<p>
-<h4>Getting a Savannah Account</h4>
-
-<p>
-Our project is based in a CVS system hosted on Savannah. Project name is 
-<b>gnupress</b>. The home page is 
-<a href="https://savannah.gnu.org/projects/gnupress/";> 
-https://savannah.gnu.org/projects/gnupress/</a>.
-
-<p>
-To join the project, you should register for a Savannah account by <a
-href="https://savannah.gnu.org/account/register.php";> filling in the
-form</a>. If your computer does not have the SSL security software
-standard installed, you will have some problems using the system. <a
-href="https://savannah.gnu.org/faq/?group_id=11&question=How_do_I_configure_my_SSH_access.txt";>Check
-here</a> for advice on how to fix this.  There is also a <a
-href="https://savannah.gnu.org/faq/?group=savannah";>General FAQs</a>
-page with more user info.
-<p>
-
-
-<h3>Current Project Status - Tasks Needing Work</h3>
-<p>
-Currently we are in the process of proofreading <it><b>Using
-         GCC</it></b>.  James Morrisson has split the manuscript up
-         into 20 sections and posted them to his web site. They are
-available for downloading at: 
-http://www.csclub.uwaterloo.ca/~sfllaw/using-gcc/
-<p>
-A complete tarball of the Texinfo sources is available as the file
-gcc.tar.bz2 in the directory
-http://www.csclub.uwaterloo.ca/~sfllaw/using-gcc/
-
-<p>
-Please randomly select two of the 20 sections and proofread them.  If
-         you have time to do more, that's fantastic!
- <p>
-Once you are finished editing a portion, please send patches to the
-      mailing list (bug-gnupress at gnu dot org), citing the section you
-      edited and any corrections that need to be made.  If you know
-      Texinfo, please send patches in Texinfo format.  If you don't
-      know Texinfo, you can use standard errata notation such as:
-<p>
-    p. 15, line 10: "...something up with which we will not put."<br>
-    should read: "...something we will not put up with."<br>
-
-
-<h4>If you know how to use Texinfo:</h4>
-<p>
-Please make changes directly in Texinfo code and mail it to the
-      discussion list (bug-gnupress at gnu dot org).
-<p>
-Simon Law wrote: A tarball of the sources I used to generate the PDFs
-is available  at http://www.csclub.uwaterloo.ca/~sfllaw/using-gcc/gcc.tar.bz2
-<p>
-    You will need to have checked out the GNU Press CVS repository.
-    I have checked mine into the ~/gnupress directory.  In order to
-    build a DVI of the manual:
-    bash-2.05b$ texi2dvi -I ~/gnupress/texpress -I . -I include gcc.texi
-<p>
-    To view the DVI:
-    bash-2.05b$ xdvi -paper 7x9.25in gcc.dvi
-<p>
-    To build the PDF from that, use:
-    bash-2.05b$ dvipdf gcc.dvi
-<p>
-
-<h4>Vertical and Horizontal Space</h4>
-<p>
-Check for "overfull H Boxes" which are marked by a black solid
-      rectangle at the end of a line.
-<p>
-Check for "underfull H Boxes" which are marked by strange sentence
-      breaks before the end of the line has been reached.
-<p>
-For those who know Texinfo, please submit ways to shrink the vertical
-      length of space that text uses when laid out. This has mostly
-      been finished for this manual already, but any additional
-      suggestions are welcome.
-<p>
-
-<h4>On-line resources for Documentation Standards</h4>
-
-A draft version of a Style Guide for GNU Documentation 
-[
- <a href="Press-use/GNU-Press-styleguide.pdf">PDF format</a> | 
- <a href="Press-use/GNU-Press-styleguide.texi">Texinfo format</a>
-]
-
-<p>
-The program GCC has it's own <a
-       href="http://gcc.gnu.org/codingconventions.html";>protocol
-       manual</a>. Please check for technical terminology standards
-       specific to this manual.
-<p>
-
-<a href="/prep/standards.html#SEC31">Click Here</a> for the section of
-      the Free Software Foundation's general coding standards relating
-      specifically to documentation.
-<p>
-Our preferred standard for documentation formatting is the simple but
-powerful language Texinfo. It is a front-end for Donald Knuth's TeX,
-like it's younger and more famous sibling, LaTeX. <a
-href="/manual/texinfo-4.0/texinfo.html">Click Here</a> to see the
-on-line manual for Texinfo. 
-<p>
-Richard M. Stallman&#146;s <a href="/prep/maintain.html">Information
-for Maintainers</a> Manual is not completely germane to this level of
-development, but technical editors might like to take a look at it.
-<p>
-
-General background: A copy of <a
-href="/licenses/licenses.html#FDL">The Free Documentation License</a>,
-which covers this manual.
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to <a
-href="mailto:address@hidden";><em>address@hidden</em></a>,
-send other questions to <a
-href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2005, 2006 <BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-
-Verbatim copying and distribution of this entire article is permitted
-in any medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2006/05/01 10:08:22 $ $Author: ramprasadb $ 
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: emacs15.html
===================================================================
RCS file: emacs15.html
diff -N emacs15.html
--- emacs15.html        19 Apr 2008 15:53:33 -0000      1.9
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,160 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book2.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>GNU Emacs Manual</h3>
-
-by Richard M. Stallman
-
-<p>
-<table border="0" cellpadding="0" cellspacing="2" width="415">
-
-<tr>
-
-<td width="170">
-<img src="emacs15.png" width="170" height="222" border="1" alt="GNU Emacs 
Manual book cover image">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-
-<td width="225">
-644 pages, plus detachable<br>
-Quick Reference Card.<br>
-Cover Price: $45.00<br>
-Fifteenth Edition, 2002<br>
-ISBN 1-882114-85-X<br>
-Trade Paper<br>
-Lay Flat Binding<br>
-<a href="/software/emacs/manual/">On-line version</a><br>
-<a href="http://order.fsf.org/";><i>Order Now!</i></a><br>
-
-</td>
-</tr>
-</table>
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-
-
-<table cellspace="5"><tr><td>
-<p>
-GNU Emacs is much more than a simple word processor. Over the years it
-has expanded into an entire work flow environment. Programmers will be
-impressed by its integrated debugging and project management
-features. Emacs is also a multi-lingual word processor, can handle all
-your email and Usenet news needs, display web pages, and even has a
-diary and a calendar for your appointments! And when you tire of all
-the work you can accomplish with it, there are games to play.
-
-<p>
-
-Features include:
-<ul>
-<li>Special editing modes for 25 programming languages including Java, Perl, 
C, C++, Objective C, Fortran, Lisp, Scheme, and Pascal.
-<li>Special scripting language modes for Bash, other common shells, and 
creating Makefiles for GNU/Linux, Unix, Windows/DOS and VMS systems.
-<li>Support for typing and displaying in 21 non-English languages, including 
Chinese, Czech, Hindi, Hebrew, Russian, Vietnamese and all Western European 
languages.
-<li>Creates Postscript output from plain text files and has special editing 
modes for LaTeX and TeX
-<li>Compile and debug from inside Emacs
-<li>Maintain program ChangeLogs
-<li>Extensive file merge and diff functions
-<li>Directory navigation: flag, move and delete files and sub-directories 
recursively.
-<li>Run shell commands from inside Emacs, or even use Emacs as a shell itself 
(Eshell)
-<li>Set up tag tables
-<li>Version control management for release and beta versions, with CVS and RCS 
integration and much more!
-</ul>
-This book picks up where the introductory on-line tutorial included with Emacs 
ends. It explains the full range of Emacs' power and contains reference 
material useful to expert users. Appendixes with specific material for 
MacIntosh and Microsoft OS users are included.
-
-<p>
-
-About the Author: Richard M. Stallman is the original author of GNU
-Emacs and is still its maintainer. He was recently awarded the 2001
-Takeda Award for Techno-Entrepreneurial Achievements in
-Social/Economic Well-Being. He is the founder of Project GNU and the
-Free Software Foundation.
-</p>
-</table></tr></td>
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 
2006 <BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/04/19 15:53:33 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: emacs15.png
===================================================================
RCS file: emacs15.png
diff -N emacs15.png
Binary files /tmp/cvs1sxoEx and /dev/null differ

Index: emacs16.html
===================================================================
RCS file: emacs16.html
diff -N emacs16.html
--- emacs16.html        24 Oct 2007 17:47:49 -0000      1.33
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,212 +0,0 @@
-<!--#include virtual="/server/header.html" -->
-<title>Books in Print - Emacs Manual Edition 16</title>
-<!--#include virtual="/server/banner.html" -->
-
-<!-- This document uses XHTML 1.0 Strict, but is served as -->
-<!-- text/html.  Please ensure that markup style considers -->
-<!-- Appendix C of the XHTML 1.0 standard. See validator.w3.org. -->
-
-<h2 style="align: left;">
-  GNU Emacs Manual, Edition 16<br />
-  by Richard M Stallman
-</h2>
-
-<div style="float: left; padding: 10px;">
-  <img src="/doc/emacs16.png" 
-       alt="GNU Emacs Manual 16 cover image: rms riding a GNU" />
-</div>
-
-<div style="clear: right;">
-  589 Pages<br />
-  Quick Reference Card<br />
-  Cover Price: $45.00<br />
-  Sixteenth Edition (for version 22), September 2007<br />
-  ISBN 1-882114-86-8<br />
-  Trade Paper<br />
-  Lay Flat Binding<br />
-  <a href="/software/emacs/manual/">On-line version</a><br />
-  <a href="http://order.fsf.org";><em>Order Now!</em></a><br />
-</div>
-
-<p style="clear: both;">
-GNU Emacs is much more than a word processor; over the
-years it has expanded into and entire workflow environment.
-Programmers are impressed by its integrated debugging and
-project management features.  Emacs is also a multi-lingual
-word processor, can handle all your email and Usenet news
-needs, display web pages, and even has a diary and a calendar
-for your appointments.  When you tire of all the work you can
-accomplish with it, Emacs contains games to play.
-</p>
-
-<p>Features include:</p>
-
-<ul>
-  <li>
-    Special editing modes for 25 programming languages including
-    Java, Perl, C, C++, Objective C, Fortran, Lisp, Scheme,
-    and Pascal.
-  </li>
-  <li>
-    Special scripting language modes for Bash, other common
-    shells, and creating Makefiles for GNU/Linux, Unix,
-    Windows/DOS and VMS systems
-  </li>
-  <li>
-    Support for typing and displaying in 21 non-English languages,
-    including Chinese, Czech, Hindi, Hebrew, Russian, Vietnamese,
-    and all Western European languages
-  </li>
-  <li>
-    Creates Postscript output from plain text files and has
-    special editing modes for LaTeX and TeX
-  </li>
-  <li>Compile and debug from inside Emacs</li>
-  <li>Maintain extensive ChangeLogs</li>
-  <li>Extensive file merge and diff functions</li>
-  <li>
-    Directory navigation: flag, move, and delete files and
-    sub-directories recursively
-  </li>
-  <li>
-    Run shell commands from inside Emacs, or even use Emacs as
-    a shell itself (Eshell)
-  </li>
-  <li>
-    Version control management for release and beta versions,
-    with CVS and RCS integration.
-  </li>
-  <li>And much more!</li> 
-</ul>
-        
-<p>
-This book picks up where the introductory on-line tutorial,
-available in several languages, included with Emacs, ends.  It
-explains the full range of Emacs' power and contains reference
-material useful to expert users.  Appendices with specific
-material for Macintosh and Microsoft OS users are included.
-</p>
-
-<p class="bold">
-About the Author:
-</p>
-
-<p class="italics">
-Richard M Stallman developed the first Emacs in 1975 and wrote
-GNU Emacs in 1984-5.  He has received the ACM Grace Hopper
-Award, a MacArthur Foundation fellowship, the Electronic
-Frontier Foundation's Pioneer award, and the Takeda Award
-for Social/Economic Betterment, as well as several honorary
-doctorates.
-</p>
-
-<p>For other items from GNU Press:</p>
-
-<ul style="list-style-type: none; clear: both;">
-<li><a href="http://www.gnupress.org";>GNU Press Home Page</a></li>
-<li>
-<a href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books
-   In Print</a>
-</li>
-<li>
-<a href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software
-   on CD</a>
-</li>
-<li><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></li>
-<li><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></li>
-<li>
-<a href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a>
-</li>
-<li>
-<a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall Art</a>
-</li>
-<li>
-<a href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other
-   Fan Gear</a>
-</li>
-<li>
-<a href="http://www.gnupress.org/potentialauthors.html";>For Authors</a>
-</li>
-<li>
-<a href="http://www.gnupress.org/resellers.html";>For Resellers</a>
-</li>
-<li>
-<a href="http://www.gnupress.org/teachingprofessionals.html";>For
-   Teachers</a>
-</li>
-</ul>
-
-<!-- If needed, change the copyright block at the bottom. In general, -->
-<!-- all pages on the GNU web server should have the section about    -->
-<!-- verbatim copying.  Please do NOT remove this without talking     -->
-<!-- with the webmasters first. --> 
-
-<!-- Please make sure the copyright date is consistent with the document -->
-<!-- and that it is like this "2001, 2002" not this "2001-2002." -->
-</div><!-- for id="content", starts in the include above -->
-<!--#include virtual="/server/footer-short.html" -->
-<div id="footer">
-
-<p>
-Please send FSF &amp; GNU inquiries to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>.
-There are also <a href="/contact/">other ways to contact</a> 
-the FSF.
-<br />
-Please send broken links and other corrections or suggestions to
-<a href="mailto:address@hidden";><em>address@hidden</em></a>.
-</p>
-
-<p>
-Please see the 
-<a href="/server/standards/README.translations.html">Translations
-README</a> for information on coordinating and submitting
-translations of this article.
-</p>
-
-<p>
-Copyright &#169; 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.,
-<address>51 Franklin St, Fifth Floor, Boston, MA 02110, USA</address>
-</p>
-
-<p>
-Verbatim copying and distribution of this entire article is
-permitted worldwide, without royalty, in any medium, provided
-this notice, and the copyright notice, are preserved.
-</p>
-
-<p>
-Updated:
-<!-- timestamp start -->
-$Date: 2007/10/24 17:47:49 $
-<!-- timestamp end -->
-</p>
-</div>
-
-<div id="translations">
-<h4>Translations of this page</h4>
-
-<!-- Please keep this list alphabetical. -->
-<!-- Comment what the language is for each type, i.e. de is German. -->
-<!-- Write the language name in its own language (Deutsch) in the text. -->
-<!-- If you add a new language here, please -->
-<!-- advise address@hidden and add it to -->
-<!--  - /home/www/bin/nightly-vars either TAGSLANG or WEBLANG -->
-<!--  - /home/www/html/server/standards/README.translations.html -->
-<!--  - one of the lists under the section "Translations Underway" -->
-<!--  - if there is a translation team, you also have to add an alias -->
-<!--  to mail.gnu.org:/com/mailer/aliases -->
-<!-- Please also check you have the 2 letter language code right, cf. -->
-<!-- <URL:http://www.w3.org/WAI/ER/IG/ert/iso639.htm> -->
-<!-- Please use W3C normative character entities. -->
-
-<ul class="translations-list">
-<!-- English -->
-<li><a href="/doc/emacs16.html">English</a> [en]</li>
-</ul>
-</div>
-
-</div>
-</body>
-</html>

Index: emacs16.png
===================================================================
RCS file: emacs16.png
diff -N emacs16.png
Binary files /tmp/cvsrl73dw and /dev/null differ

Index: flexsm.jpg
===================================================================
RCS file: flexsm.jpg
diff -N flexsm.jpg
Binary files /tmp/cvsU9wcmw and /dev/null differ

Index: free-software-free-society.png
===================================================================
RCS file: free-software-free-society.png
diff -N free-software-free-society.png
Binary files /tmp/cvsTp9E3w and /dev/null differ

Index: gdb-manual.html
===================================================================
RCS file: gdb-manual.html
diff -N gdb-manual.html
--- gdb-manual.html     5 May 2005 19:37:08 -0000       1.4
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,88 +0,0 @@
-<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<HTML>
-<HEAD>
-<TITLE>Debugging with GDB - GNU Project - Free Software Foundation 
(FSF)</TITLE>
-<LINK REV="made" HREF="mailto:address@hidden";>
-</HEAD>
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#1F00FF" ALINK="#FF0000" 
VLINK="#9900DD">
-<a href="gdb.html name="top"></a>
-<H3>Debugging with GDB</H3>
-
-<p><h4>The GNU Source-Level Debugger</h4>
-
-<p>
-
-<b>Richard M. Stallman, Roland Pesch, Stan Shebs, et al.</b>.  For GDB
-Version 5, May 2000.  ISBN: 1-882114-77-9.
-
-<p>
-
-This manual tells how to run your program under GNU Debugger control,
-examine and alter data, modify a program's flow of control, and use
-GDB through GNU Emacs.
-
-<P>
-
-<cite>Debugging with GDB</cite> has 22 chapters, 2 appendices, 
-and 314 pages.
-You can start with a GDB session in chapter 1, move through
-the commands in chapter 2 and then skip around the other chapters.
-
-<p>
-
-Successive chapters describe setting and clearing breakpoints,
-examining the stack, source files and data, and using GDB with the
-supported languages - C, C++, Chill, Fortran, Modula 2, and Pascal.
-Later chapters cover examining the symbol table, altering program
-execution, GDB files, specifying a target for debugging, controlling
-the debugger, using canned command sequences, and using GDB under
-Emacs.  The manual also explains why bug-reporting is important and
-how to do it.
-
-<p>
-The appendices explain how to format and print the documentation, and
-how to install the program.
-
-<h4>Why order the book?</h4>
-
-For several reasons:
-
-<ul>
-<li>Reading a book is easier than reading text online.  
-<li>You can take it with you without a computer.  
-<li>It's almost pocket size, easily fitting into a briefcase or pack.
-<li>The book has a lay-flat binding that's made to stay open on your desk. 
-<li>To help support the work of the Free Software Foundation.
-</ul>
-<p>
-
-To order,see the <a href="http://order.fsf.org/"; name="ordform"> Free Software 
Foundation Order Form</a>
-
-<P>
-
-We thank Les Kopari for writing this page.
-It was revised 2000-06-20 by GNU staff.
-<HR>
-
-Return to <A HREF="http://www.gnu.org/home.html";>GNU's home page</A>.
-
-<P>
-
-Please send comments on these web pages to
-
-<A HREF="mailto:address@hidden";><EM>address@hidden</EM></A>,
-send other questions to
-<A HREF="mailto:address@hidden";><EM>address@hidden</EM></A>.
-<P>
-Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.,
-51 Franklin St, Fifth Floor, Boston, MA  02110,  USA
-<P>
-Verbatim copying and distribution of this entire article is
-permitted in any medium, provided this notice is preserved.<P>
-Updated:
-<!-- hhmts start -->
-20 May 2000 3diff
-<!-- hhmts end -->
-<HR>
-</BODY>
-</HTML>

Index: glibc-application.texi
===================================================================
RCS file: glibc-application.texi
diff -N glibc-application.texi
--- glibc-application.texi      5 May 2005 19:37:08 -0000       1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,41561 +0,0 @@
-\input texinfo_times.tex
address@hidden above calls Josh Gay's texinfo file in Times New Roman font.
address@hidden Use below to call default texinfo file
address@hidden texinfo @c -*-texinfo-*-
-
address@hidden \input texinfo          @c -*- Texinfo -*-
address@hidden %**start of header (This is for running Texinfo on a region.)
address@hidden libc.info
address@hidden The GNU C Library: Application Fundamentals
address@hidden odd
address@hidden 1
-
address@hidden TO PRODUCE PRINTOUTS APPROPRIATE FOR PUBLISHING
address@hidden The text on right hand pages is pushed toward the right hand
address@hidden margin and the text on left hand pages is pushed toward the left
address@hidden hand margin.
address@hidden (To provide the reverse effect, set bindingoffset to -0.75in.)
address@hidden
-\global\bindingoffset=0.75in
-\global\normaloffset =0.75in
address@hidden tex
-
address@hidden Tell install-info what to do.
address@hidden GNU libraries
address@hidden
-* Libc: (libc).                 C library.
address@hidden direntry
-
address@hidden This tells texinfo.tex to use the real section titles in xrefs in
address@hidden place of the node name, when no section title is explicitly 
given.
address@hidden xref-automatic-section-title
address@hidden
address@hidden %**end of header (This is for running Texinfo on a region.)
-
address@hidden EDITION 1.0
address@hidden VERSION 2.3.x
address@hidden UPDATED 2004-02-01
address@hidden ISBN 1-882114-22-1
-
address@hidden
address@hidden 6
address@hidden GNU C Library:}
address@hidden 
address@hidden Application Fundamentals
address@hidden For GNU C Libraries version @value{VERSION}
address@hidden 4
address@hidden by Sandra Loosemore
address@hidden with Richard M. Stallman, Roland McGrath, 
address@hidden Andrew Oram, and Ulrich Drepper
-
-
address@hidden
address@hidden 0pt plus 1filll
-
-This manual documents the GNU C Libraries version @value{VERSION}.
address@hidden
address@hidden 1-882114-22-1, First Printing, March 2004.
-
-
address@hidden
address@hidden @columnfractions .50 .50
address@hidden Published by:              @tab
address@hidden @tab
address@hidden GNU Press                  @tab Website: www.gnupress.org
address@hidden a division of the          @tab General: press@@gnu.org
address@hidden Free Software Foundation   @tab Orders: sales@@gnu.org
address@hidden 51 Franklin St, Fifth Floor @tab Tel: 617-542-5942
address@hidden Boston, MA 02110-1301 USA  @tab Fax: 617-542-2652
address@hidden multitable
address@hidden 2
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004 Free Software
-Foundation
address@hidden 1
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the @acronym{GNU} Free Documentation License,
-Version 1.2, or any later version published by the Free Software
-Foundation; with the Invariant Sections being ``Free Software and Free
-Manuals'', the address@hidden Free Documentation License''," and the
address@hidden Lesser General Public License'', with the Front Cover Texts
-being ``A @acronym{GNU} Manual'', and with the Back Cover Texts as in
-(a) below.  A copy of the license is included in the section entitled
address@hidden Free Documentation License''.
-                                                                               
-(a) The Back Cover Text is: You are free to copy and modify this
address@hidden Manual.  Buying copies from @acronym{GNU} Press supports
-the @acronym{FSF} in developing @acronym{GNU} and promoting software
-freedom.
-
address@hidden
-Cover art by Etienne Suvasa.  Cover design by Jonathan Richard.
-Printed in USA.
-
-
address@hidden titlepage
address@hidden
-
address@hidden
address@hidden
-
address@hidden Turn the page numbers off, insert the half title page, and turn
address@hidden them on again. 
address@hidden off
address@hidden
address@hidden The GNU C Library: Application Fundamentals
address@hidden iftex
address@hidden on
-
address@hidden Introduction
address@hidden Introduction
address@hidden %MENU% Purpose of the GNU C Library
-
-The C language provides no built-in facilities for performing such
-common operations as input/output, memory management, string
-manipulation and the like.  Instead, these facilities are defined in a
-standard @dfn{library}, which you compile and link with your programs.
address@hidden library
-
-The @sc{gnu} C Library, described in this document, defines all of the
-library functions that are specified by the @address@hidden C} standard, as
-well as additional features specific to @sc{posix} and other derivatives
-of the Unix operating system, and extensions specific to the @sc{gnu}
-system.
-
-The purpose of this manual is to tell you how to use the facilities of
-the @sc{gnu} library.  We have mentioned which features belong to which
-standards to help you identify things that are potentially
-nonportable. But the emphasis in this manual is not on strict
-portability.
-
address@hidden Getting Started, Standards and Portability,  , Introduction
address@hidden Getting Started
-
-This manual is written with the assumption that you are at least
-somewhat familiar with the C programming language and basic
-programming concepts.  Specifically, familiarity with @sc{iso}
-standard C (@pxref{ISO C}), rather than ``traditional'' address@hidden C
-dialects, is assumed.
-
-The @sc{gnu} C Library includes several @dfn{header files}, each of which
-provides definitions and declarations for a group of related facilities;
-this information is used by the C compiler when processing your program.
-For example, the header file @file{stdio.h} declares facilities for
-performing input and output, and the header file @file{string.h}
-declares string-processing utilities.  The organization of this manual
-generally follows the same division as the header files.
-
-If you are reading this manual for the first time, you should read all
-of the introductory material and skim the remaining chapters.  There are
-a @emph{lot} of functions in the @sc{gnu} C Library and it is not
-realistic to expect that you will be able to remember exactly @emph{how}
-to use each and every one of them.  It is more important to become
-generally familiar with the kinds of facilities that the library
-provides, so that when you are writing your programs you can recognize
address@hidden to make use of library functions, and @emph{where} in this
-manual you can find more specific information about them.
-
-
address@hidden Standards and Portability, Using the Library, Getting Started, 
Introduction
address@hidden Standards and Portability
address@hidden standards
-
-This section discusses the various standards and other sources that the
address@hidden C Library is based upon.  These sources include the 
@address@hidden C} and
address@hidden standards, and the System V and Berkeley Unix implementations.
-
-The primary focus of this manual is to tell you how to make effective
-use of the @sc{gnu} library facilities.  But if you are concerned about
-making your programs compatible with these standards, or portable to
-operating systems other than @sc{gnu}, this can affect how you use the
-library.  This section gives you an overview of these standards, so that
-you will know what they are when they are mentioned in other parts of
-the manual.
-
address@hidden Summary}, for an alphabetical list of the functions and
-other symbols provided by the library.  This list also states which
-standards each function or symbol comes from.
-
address@hidden ISO C
address@hidden @sc{iso} C
address@hidden @sc{iso} C
-
-The @sc{gnu} C Library is compatible with the C standard adopted by the
-American National Standards Institute (@sc{ansi})as @cite{American
-National Standard X3.159-1989---"@sc{ansi} C"} and later by the
-International Standardization Organization (@sc{iso}) as
address@hidden@sc{iso}/@sc{iec} 9899:1990, "Programming languages---C"}.  In
-this manual, we refer to the standard as @address@hidden C} since this is
-the more general standard with respect to ratification.  The header files
-and library facilities that make up the @sc{gnu} library are a superset
-of those specified by the @address@hidden C} address@hidden
-
address@hidden gcc
-If you are concerned about strict adherence to the @address@hidden C}
-standard, you should use the @samp{-ansi} option when you compile your
-programs with the @sc{gnu} C Compiler.  This tells the compiler to
-define @emph{only} @sc{iso} standard features from the library header
-files, unless you explicitly ask for additional features.
address@hidden Macros}, for information on how to do this.
-
-Being able to restrict the library to include only @address@hidden C} features 
is
-important because @address@hidden C} puts limitations on what names can be 
defined
-by the library implementation, and the @sc{gnu} extensions don't fit these
-limitations.  @xref{Reserved Names}, for more information about these
-restrictions.
-
-This manual does not attempt to give you complete details on the
-differences between @address@hidden C} and older dialects.  It gives
-advice on how to write programs to work portably under multiple C
-dialects, but does not aim for completeness.
-
-
address@hidden POSIX, Berkeley Unix, ISO C, Standards and Portability
address@hidden @sc{posix} (The Portable Operating System Interface)
address@hidden @sc{posix}
address@hidden @sc{posix}.1
address@hidden @sc{ieee} Std 1003.1
address@hidden @sc{iso}/@sc{iec} 9945-1
address@hidden @sc{posix}.2
address@hidden @sc{ieee} Std 1003.2
address@hidden @sc{iso}/@sc{iec} 9945-2
-
-The @sc{gnu} library is also compatible with the @sc{iso} @sc{posix}
-family of standards, known more formally as the @dfn{Portable
-Operating System Interface for Computer Environments}
-(@sc{iso}/@sc{iec} 9945).  They were also published as
address@hidden/@sc{ieee} Std 1003.  @sc{posix} is derived mostly from
-various versions of the Unix operating system.
-
-The library facilities specified by the @sc{posix} standards are a
-superset of those required by @address@hidden C}; @sc{posix} specifies
-additional features for @address@hidden C} functions, as well as
-specifying new additional functions.  In general, the additional
-requirements and functionality defined by the @sc{posix} standards are
-aimed at providing lower-level support for a particular kind of
-operating system environment, rather than general programming language
-support that can run in many diverse operating system
address@hidden
-
-The @sc{gnu} C Library implements all of the functions specified in
address@hidden@sc{iso}/@sc{iec} 9945-1:1996, the @sc{posix} System Application
-Program Interface}, commonly referred to as @sc{posix}.1.  The primary
-extensions to the @address@hidden C} facilities specified by this standard
-include file-system interface address@hidden Sandra Loosemore
-et al., ``File-System Interface'', @emph{GNU C Library: Systems &
-Network Applications} (Boston: GNU Press, 2004), available online at
address@hidden:// www.gnu.org/ manual/ manual.html}.}, device-specific
-terminal control address@hidden, ``Low-Level Terminal
-Interface''.} and process control address@hidden,
-``Processes''.}
-
-Some facilities from @address@hidden/@sc{iec} 9945-2:1993, the
address@hidden Shell and Utilities standard} (@sc{posix}.2) are also
-implemented in the @sc{gnu} library.  These include utilities for
-dealing with regular expressions and other pattern-matching facilities
-(@pxref{Pattern Matching}).
-
address@hidden Roland sez:
address@hidden The GNU C Library as it stands conforms to 1003.2 draft 11, which
address@hidden specifies:
address@hidden
address@hidden Several new macros in <limits.h>.
address@hidden popen, pclose
address@hidden <regex.h> (which is not yet fully implemented--wait on this)
address@hidden fnmatch
address@hidden getopt
address@hidden <glob.h>
address@hidden <wordexp.h> (not yet implemented)
address@hidden confstr
-
-
address@hidden Berkeley Unix, SVID, POSIX, Standards and Portability
address@hidden Berkeley Unix
address@hidden @sc{bsd} Unix
address@hidden address@hidden @sc{bsd} Unix
address@hidden Berkeley Unix
address@hidden address@hidden
address@hidden Unix, Berkeley
-
-The @sc{gnu} C Library defines facilities from some versions of Unix
-that are not formally standardized, specifically from the 4.2 @sc{bsd},
-4.3 @sc{bsd} and 4.4 @sc{bsd} Unix systems (also known as @dfn{Berkeley
-Unix}) and from address@hidden (a popular 4.2 @sc{bsd} derivative that
-includes some Unix System V functionality).  These systems support most
-of the @address@hidden C} and @sc{posix} facilities, and 4.4 @sc{bsd} and
-newer releases of address@hidden in fact support them all.
-
-The @sc{bsd} facilities include symbolic address@hidden, ``Symbolic Links''.}, 
the @code{select} address@hidden, ``Waiting for Input or Output''.}, the
address@hidden signal address@hidden, address@hidden Signal Handling''.} and 
address@hidden, ``Sockets''.}
-
address@hidden SVID, XPG, Berkeley Unix, Standards and Portability
address@hidden @sc{svid} (The System V Interface Description)
address@hidden @sc{svid}
address@hidden System V Unix
address@hidden Unix, System V
-
-The @dfn{System V Interface Description} (@sc{svid}) is a document
-describing the AT&T Unix System V operating system.  It is to some
-extent a superset of the @sc{posix} standard.
-
-The @sc{gnu} C Library defines most of the facilities required by the
address@hidden that are not also required by the @address@hidden C} or 
@sc{posix}
-standards, for compatibility with System V Unix and other Unix systems
-(such as address@hidden) that include these facilities.  However, many of
-the more obscure and less generally useful facilities required by the
address@hidden are not included.  (In fact, Unix System V itself does not
-provide them all.)
-
-The supported facilities from System V include the methods for
-inter-process communication and shared memory, the @code{hsearch} and
address@hidden families of functions, @code{fmtmsg} and several of the
-mathematical functions.
-
address@hidden XPG, , SVID, Standards and Portability
address@hidden @sc{xpg} (The X/Open Portability Guide)
-
-The @emph{X/Open Portability address@hidden/Open Company,
address@hidden/Open Portability Guide,} Issue 4 (Reading, UK: X/Open Company,
-Ltd., 1992).} is a more general standard than @sc{posix}.  X/Open owns
-the Unix copyright and the @sc{xpg} specifies the requirements for
-systems that are intended to be Unix systems.
-
-The @sc{gnu} C Library complies with the @emph{X/Open Portability
-Guide}, Issue 4.2, with all extensions common to @sc{xsi} (X/Open
-System Interface) compliant systems and also all X/Open Unix
-extensions.
-
-The additions on top of @sc{posix} are mainly derived from functionality
-available in @w{System V} and @sc{bsd} systems, though some of the
-really bad mistakes in @w{System V} systems were corrected.  Since
-fulfilling the @sc{xpg} standard with the Unix extensions is a
-precondition for getting the Unix brand, chances are good that the
-functionality is available on commercial systems.
-
-
address@hidden Using the Library, Road Map to the Manual, Standards and 
Portability, Introduction
address@hidden Using the Library
-
-This section describes some of the practical issues involved in using
-the @sc{gnu} C Library.
-
address@hidden Header Files, Macro Definitions,  , Using the Library
address@hidden Header Files
address@hidden header files
-
-Libraries for use by C programs really consist of two parts: @dfn{header
-files} that define types and macros and declare variables and
-functions, and the actual library or @dfn{archive} that contains the
-definitions of the variables and functions.
-
-(Recall that in C, a @dfn{declaration} merely provides information that
-a function or variable exists and gives its type.  For a function
-declaration, information about the types of its arguments might be
-provided as well.  The purpose of declarations is to allow the compiler
-to correctly process references to the declared variables and functions.
-A @dfn{definition}, on the other hand, actually allocates storage for a
-variable or says what a function does.)
address@hidden definition (compared to declaration)
address@hidden declaration (compared to definition)
-
-In order to use the facilities in the @sc{gnu} C Library, you should be sure
-that your program source files include the appropriate header files.
-This is so that the compiler has declarations of these facilities
-available and can correctly process references to them.  Once your
-program has been compiled, the linker resolves these references to
-the actual definitions provided in the archive file.
-
-Header files are included into a program source file by the
address@hidden preprocessor directive.  The C language supports two
-forms of this directive; the first,
-
address@hidden
-#include "@var{header}"
address@hidden smallexample
-
address@hidden
-is typically used to include a header file @var{header} that you write
-yourself; this would contain definitions and declarations describing the
-interfaces between the different parts of your particular application.
-By contrast,
-
address@hidden
-#include <file.h>
address@hidden smallexample
-
address@hidden
-is typically used to include a header file @file{file.h} that contains
-definitions and declarations for a standard library.  This file would
-normally be installed in a standard place by your system administrator.
-You should use this second form for the C library header files.
-
-Typically, @samp{#include} directives are placed at the top of the C
-source file, before any other address@hidden more information
-about the use of header files and @samp{#include} directives, see
-Richard M. Stallman and the GCC Developer Community, ``Header Files''
-in @emph{The GNU C Preprocessor Manual} (2003),
address@hidden:// gcc.gnu.org/ onlinedocs/ gcc-3.3.2/ cpp/}.}  If you begin
-your source files with some comments explaining what the code in the
-file does (a good idea), put the @samp{#include} directives
-immediately afterward, following the feature-test macro definition
-(@pxref{Feature-Test Macros}).
-
-The @sc{gnu} C Library provides several header files, each of which contains
-the type and macro definitions and variable and function declarations
-for a group of related facilities.  This means that your programs may
-need to include several header files, depending on exactly which
-facilities you are using.
-
-Some library header files include other library header files
-automatically.  However, as a matter of programming style, you should
-not rely on this; it is better to explicitly include all the header
-files required for the library facilities you are using.  The @sc{gnu} C
-Library header files have been written in such a way that it doesn't
-matter if a header file is accidentally included more than once;
-including a header file a second time has no effect.  Likewise, if your
-program needs to include multiple header files, the order in which they
-are included doesn't matter.
-
address@hidden Note:} Inclusion of standard header files in any
-order and any number of times works in any @address@hidden C} implementation.
-However, this has traditionally not been the case in many older C
-implementations.
-
-Strictly speaking, you don't @emph{have to} include a header file to use
-a function it declares; you could declare the function explicitly
-yourself, according to the specifications in this manual.  But it is
-usually better to include the header file because it may define types
-and macros that are not otherwise available and because it may define
-more efficient macro replacements for some functions.  It is also a sure
-way to have the correct declaration.
-
address@hidden Macro Definitions, Reserved Names, Header Files, Using the 
Library
address@hidden Macro Definitions of Functions
address@hidden shadowing functions with macros
address@hidden removing macros that shadow functions
address@hidden undefining macros that shadow functions
-
-If we describe something as a function in this manual, it may have a
-macro definition as well.  This normally has no effect on how your
-program runs---the macro definition does the same thing as the function
-would.  In particular, macro equivalents for library functions evaluate
-arguments exactly once, in the same way that a function call would.  The
-main reason for these macro definitions is that sometimes they can
-produce an in-line expansion that is considerably faster than an actual
-function call.
-
-Taking the address of a library function works even if it is also
-defined as a macro.  This is because, in this context, the name of the
-function isn't followed by the left parenthesis that is syntactically
-necessary to recognize a macro call.
-
-You might occasionally want to avoid using the macro definition of a
-function---perhaps to make your program easier to debug.  There are two
-ways you can do this:
-
address@hidden
address@hidden
-You can avoid a macro definition in a specific use by enclosing the name
-of the function in parentheses.  This works because the name of the
-function does not appear in a syntactic context where it is recognizable
-as a macro call.
-
address@hidden
-You can suppress any macro definition for a whole source file by using
-the @samp{#undef} preprocessor directive, unless otherwise stated
-explicitly in the description of that facility.
address@hidden enumerate
-
-For example, suppose the header file @file{stdlib.h} declares a function
-named @code{abs} with:
-
address@hidden
-extern int abs (int);
address@hidden smallexample
-
address@hidden
-and also provides a macro definition for @code{abs}.  Then, in:
-
address@hidden
-#include <stdlib.h>
-int f (int *i) @{ return abs (++*i); @}
address@hidden smallexample
-
address@hidden
-the reference to @code{abs} might refer to either a macro or a function.
-On the other hand, in each of the following examples, the reference is
-to a function and not a macro:
-
address@hidden
-#include <stdlib.h>
-int g (int *i) @{ return (abs) (++*i); @}
-
-#undef abs
-int h (int *i) @{ return abs (++*i); @}
address@hidden smallexample
-
-Since macro definitions that double for a function behave in
-exactly the same way as the actual function version, there is usually no
-need for any of these methods.  In fact, removing macro definitions usually
-just makes your program slower.
-
-
address@hidden Reserved Names, Feature-Test Macros, Macro Definitions, Using 
the Library
address@hidden Reserved Names
address@hidden reserved names
address@hidden name space
-
-The names of all library types, macros, variables and functions that
-come from the @address@hidden C} standard are reserved unconditionally; your
-program @emph{may not} redefine these names.  All other library names
-are reserved if your program explicitly includes the header file that
-defines or declares them.  There are several reasons for these
-restrictions:
-
address@hidden @bullet
address@hidden
-Other people reading your code could get very confused if, for
-example, you were using a function named @code{exit} to do something
-completely different from what the standard @code{exit} function does.
-Preventing this situation helps to make your programs easier to
-understand and contributes to modularity and maintainability.
-
address@hidden
-It avoids the possibility of a user accidentally redefining a library
-function that is called by other library functions.  If redefinition
-were allowed, those other functions would not work properly.
-
address@hidden
-It allows the compiler to do whatever special optimizations it pleases
-on calls to these functions, without the possibility that they may
-have been redefined by the user.  Some library facilities, such as
-those for dealing with variadic address@hidden Loosemore et
-al., ``Variadic Functions''.} and nonlocal address@hidden,
-``Nonlocal Exits''.}, actually require a considerable amount of
-cooperation on the part of the C compiler, and with respect to the
-implementation, it might be easier for the compiler to treat these as
-built-in parts of the language.
address@hidden itemize
-
-In addition to the names documented in this manual, reserved names
-include all external identifiers (global functions and variables) that
-begin with an underscore (@samp{_}) and all identifiers regardless of
-use that begin with either two underscores or an underscore followed by
-a capital letter.  This is so that the library and header files can
-define functions, variables, and macros for internal purposes without
-risk of conflict with names in user programs.
-
-Some additional classes of identifier names are reserved for future
-extensions to the C language or the @sc{posix}.1 environment.  While
-using these names for your own purposes right now might not cause a
-problem, there is the possibility of conflict with future versions
-of the C or @sc{posix} standards, so you should avoid using them:
-
address@hidden @bullet
address@hidden
-Names beginning with a capital @samp{E} followed by a digit or uppercase
-letter may be used for additional error-code names (@pxref{Error
-Reporting}).
-
address@hidden
-Names that begin with either @samp{is} or @samp{to} followed by a
-lowercase letter may be used for additional character testing and
-conversion functions (@pxref{Character Handling}).
-
address@hidden
-Names that begin with @samp{LC_} followed by an uppercase letter may be
-used for additional macros specifying locale attributes
-(@pxref{Locales}).
-
address@hidden
-Names of all existing mathematics functions (@pxref{Mathematics})
-suffixed with @samp{f} or @samp{l} are reserved for corresponding
-functions that operate on @code{float} and @code{long double} arguments,
-respectively.
-
address@hidden
-Names that begin with @samp{SIG} followed by an uppercase letter are
-reserved for additional signal address@hidden, ``Standard Signals''.}
-
address@hidden
-Names that begin with @samp{SIG_} followed by an uppercase letter are
-reserved for additional signal address@hidden, ``Basic Signal
-Handling''.}
-
address@hidden
-Names beginning with @samp{str}, @samp{mem}, or @samp{wcs} followed by a
-lowercase letter are reserved for additional string and array functions
-(@pxref{String and Array Utilities}).
-
address@hidden
-Names that end with @samp{_t} are reserved for additional type names.
address@hidden itemize
-
-In addition, some individual header files reserve names beyond
-those that they actually define.  You only need to worry about these
-restrictions if your program includes that particular header file.
-
address@hidden @bullet
address@hidden
-The header file @file{dirent.h} reserves names prefixed with
address@hidden
address@hidden dirent.h
-
address@hidden
-The header file @file{fcntl.h} reserves names prefixed with
address@hidden, @samp{F_}, @samp{O_}, and @samp{S_}.
address@hidden fcntl.h
-
address@hidden
-The header file @file{grp.h} reserves names prefixed with @samp{gr_}.
address@hidden grp.h
-
address@hidden
-The header file @file{limits.h} reserves names suffixed with @samp{_MAX}.
address@hidden limits.h
-
address@hidden
-The header file @file{pwd.h} reserves names prefixed with @samp{pw_}.
address@hidden pwd.h
-
address@hidden
-The header file @file{signal.h} reserves names prefixed with @samp{sa_}
-and @samp{SA_}.
address@hidden signal.h
-
address@hidden
-The header file @file{sys/stat.h} reserves names prefixed with @samp{st_}
-and @samp{S_}.
address@hidden sys/stat.h
-
address@hidden
-The header file @file{sys/times.h} reserves names prefixed with @samp{tms_}.
address@hidden sys/times.h
-
address@hidden
-The header file @file{termios.h} reserves names prefixed with @samp{c_},
address@hidden, @samp{I}, @samp{O}, and @samp{TC}; and names prefixed with
address@hidden followed by a digit.
address@hidden termios.h
address@hidden itemize
-
address@hidden Include the section on Creature Nest Macros.
address@hidden It is in a separate file so it can be formatted into ../NOTES.
address@hidden Feature-Test Macros
address@hidden Feature-Test Macros
-
address@hidden feature-test macros
-The exact set of features available when you compile a source file
-is controlled by which @dfn{feature-test macros} you define.
-
-If you compile your programs using @samp{gcc -ansi}, you get only the
address@hidden@sc{iso} C} library features, unless you explicitly request
-additional features by defining one or more of the feature
address@hidden Richard M. Stallman and the GCC Developer
-Community, ``Invoking GCC'' in @emph{Using GCC: The GNU Compiler
-Collection Reference Manual} (Boston, MA: GNU Press, October 2003),
address@hidden:// gcc.gnu.org/ onlinedocs/ gcc-3.3.2/ gcc/}, for more
-information about @sc{gcc} options.}
-
-You should define these macros by using @samp{#define} preprocessor
-directives at the top of your source code files.  These directives
address@hidden come before any @code{#include} of a system header file.  It
-is best to make them the very first thing in the file, preceded only by
-comments.  You could also use the @samp{-D} option to @sc{gcc}, but it
-is better if you make the source files indicate their own meaning in a
-self-contained way.
-
-This system exists to allow the library to conform to multiple standards.
-Although the different standards are often described as supersets of each
-other, they are usually incompatible because larger standards require
-functions with names that smaller ones reserve to the user program.  This
-is not mere pedantry---it has been a problem in practice.  For instance,
-some address@hidden programs define functions named @code{getline} that have
-nothing to do with this library's @code{getline}.  They would not be
-compilable if all features were enabled indiscriminately.
-
-This should not be used to verify that a program conforms to a limited
-standard.  It is insufficient for this purpose, as it will not protect you
-from including header files outside the standard, or relying on semantics
-undefined within the standard.
-
address@hidden (none)
address@hidden POSIX.1
address@hidden Macro _POSIX_SOURCE
-If you define this macro, then the functionality from the @sc{posix}.1
-standard (@sc{ieee} Standard 1003.1) is available, as well as all of the
address@hidden@sc{iso} C} facilities.
-
-The state of @code{_POSIX_SOURCE} is irrelevant if you define the
-macro @code{_POSIX_C_SOURCE} to a positive integer.
address@hidden defvr
-
address@hidden (none)
address@hidden POSIX.2
address@hidden Macro _POSIX_C_SOURCE
-Define this macro to a positive integer to control which @sc{posix}
-functionality is made available.  The greater the value of this macro,
-the more functionality is made available.
-
-If you define this macro to a value greater than or equal to @code{1},
-then the functionality from the 1990 edition of the @sc{posix}.1 standard
-(@sc{ieee} Standard 1003.1-1990) is made available.
-
-If you define this macro to a value greater than or equal to @code{2},
-then the functionality from the 1992 edition of the @sc{posix}.2 standard
-(@sc{ieee} Standard 1003.2-1992) is made available.
-
-If you define this macro to a value greater than or equal to @code{199309L},
-then the functionality from the 1993 edition of the @sc{posix}.1b standard
-(@sc{ieee} Standard 1003.1b-1993) is made available.
-
-Greater values for @code{_POSIX_C_SOURCE} will enable future extensions.
-The @sc{posix} standards process will define these values as necessary, and
-the @sc{gnu} C Library should support them some time after they become 
standardized.
-The 1996 edition of @sc{posix}.1 (@sc{iso}/@sc{iec} 9945-1: 1996) states that
-if you define @code{_POSIX_C_SOURCE} to a value greater than
-or equal to @code{199506L}, then the functionality from the 1996
-edition is made available.
address@hidden defvr
-
address@hidden (none)
address@hidden GNU
address@hidden Macro _BSD_SOURCE
-If you define this macro, functionality derived from 4.3 @sc{bsd} Unix is
-included as well as the @address@hidden C}, @sc{posix}.1, and @sc{posix}.2 
material.
-
-Some of the features derived from 4.3 @sc{bsd} Unix conflict with the
-corresponding features specified by the @sc{posix}.1 standard.  If this
-macro is defined, the 4.3 @sc{bsd} definitions take precedence over the
address@hidden definitions.
-
-Due to the nature of some of the conflicts between 4.3 @sc{bsd} and 
@sc{posix}.1,
-you need to use a special @sc{bsd} @dfn{compatibility library} when linking
-programs compiled for @sc{bsd} compatibility.  This is because some functions
-must be defined in two different ways, one in the normal C
-library, and one in the compatibility library.  If your program
-defines @code{_BSD_SOURCE}, you must give the option @samp{-lbsd-compat}
-to the compiler or linker when linking the program, to tell it to find
-functions in this special compatibility library before looking for them in
-the normal C library.
address@hidden -lbsd-compat
address@hidden bsd-compat
address@hidden @sc{bsd} compatibility library.
address@hidden defvr
-
address@hidden (none)
address@hidden GNU
address@hidden Macro _SVID_SOURCE
-If you define this macro, functionality derived from @sc{svid} is
-included as well as the @address@hidden C}, @sc{posix}.1, @sc{posix}.2 and
-X/Open material.
address@hidden defvr
-
address@hidden (none)
address@hidden X/Open
address@hidden Macro _XOPEN_SOURCE
address@hidden (none)
address@hidden X/Open
address@hidden Macro _XOPEN_SOURCE_EXTENDED
-If you define this macro, functionality described in the @emph{X/Open
-Portability address@hidden/Open Company, @emph{X/Open Portability Guide,} Issue
-4, Version 2 (Reading, UK: X/Open Company, Ltd., 1994).} is
-included.  This is a superset of the @sc{posix}.1 and @sc{posix}.2
-functionality and in fact @code{_POSIX_SOURCE} and
address@hidden are automatically defined.
-
-As the unification of all Unices, functionality only available in
address@hidden and @sc{svid} is also included.
-
-If the macro @code{_XOPEN_SOURCE_EXTENDED} is also defined, even more
-functionality is available.  The extra functions will make all functions
-available that are necessary for the X/Open Unix brand.
-
-If the macro @code{_XOPEN_SOURCE} has the value @math{500}, this includes
-all functionality described so far plus some new definitions from the
-Single Unix Specification, @w{version 2}.
address@hidden defvr
-
address@hidden (NONE)
address@hidden X/Open
address@hidden Macro _LARGEFILE_SOURCE
-If this macro is defined, some extra functions are available that
-rectify a few shortcomings in all previous standards.  Specifically,
-the functions @code{fseeko} and @code{ftello} are available.  Without
-these functions, the difference between the @address@hidden C} interface
-(@code{fseek}, @code{ftell}) and the low-level @sc{posix} interface
-(@code{lseek}) would lead to problems.
-
-This macro was introduced as part of the Large File Support extension 
(@sc{lfs}).
address@hidden defvr
-
address@hidden (NONE)
address@hidden X/Open
address@hidden Macro _LARGEFILE64_SOURCE
-If you define this macro, an additional set of functions is made available
-that enables @w{32-bit} systems to use files of sizes beyond
-the usual limit of 2GB.  This interface is not available if the system
-does not support files that large.  On systems where the natural file
-size limit is greater than 2GB (i.e., on @w{64-bit} systems), the new
-functions are identical to the replaced functions.
-
-The new functionality is made available by a new set of types and
-functions that replace the existing ones.  The names of these new objects
-contain @code{64} to indicate the intention, e.g., @code{off_t}
-vs. @code{off64_t} and @code{fseeko} vs. @code{fseeko64}.
-
-This macro was introduced as part of the Large File Support extension
-(@sc{lfs}).  It is a transition interface for the period when @w{64-bit}
-offsets are not generally used (see @code{_FILE_OFFSET_BITS}).
address@hidden defvr
-
address@hidden (NONE)
address@hidden X/Open
address@hidden Macro _FILE_OFFSET_BITS
-This macro determines which file-system interface will be used, one
-replacing the other.  Whereas @code{_LARGEFILE64_SOURCE} makes the
address@hidden interface available as an additional interface,
address@hidden allows the @w{64-bit} interface to replace the
-old interface.
-
-If @code{_FILE_OFFSET_BITS} is undefined, or if it is defined to the
-value @code{32}, nothing changes.  The @w{32-bit} interface is used and
-types like @code{off_t} have a size of @w{32 bits} on @w{32-bit}
-systems.
-
-If the macro is defined to the value @code{64}, the large file interface
-replaces the old interface.  The functions are not made available
-under different names (as they are with @code{_LARGEFILE64_SOURCE});
-instead, the old function names now reference the new functions, e.g., a
-call to @code{fseeko} now indeed calls @code{fseeko64}.
-
-This macro should only be selected if the system provides mechanisms for
-handling large files.  On @w{64-bit} systems this macro has no effect
-since the @code{*64} functions are identical to the normal functions.
-
-This macro was introduced as part of the Large File Support extension
-(@sc{lfs}).
address@hidden defvr
-
address@hidden (none)
address@hidden GNU
address@hidden Macro _ISOC99_SOURCE
-Until the revised @address@hidden C} standard is widely adopted the new
-features are not automatically enabled.  The @sc{gnu} libc nevertheless
-has a complete implementation of the new standard.  To enable the new
-features the macro @code{_ISOC99_SOURCE} should be defined.
address@hidden defvr
-
address@hidden (none)
address@hidden GNU
address@hidden Macro _GNU_SOURCE
-If you define this macro, everything is included: @address@hidden C89},
address@hidden@sc{iso} C99}, @sc{posix}.1, @sc{posix}.2, @sc{bsd}, @sc{svid},
-X/Open, @sc{lfs}, and @sc{gnu} extensions.  In the cases where
address@hidden conflicts with @sc{bsd}, the @sc{posix} definitions take
-precedence.
-
-If you want to get the full effect of @code{_GNU_SOURCE} but make the
address@hidden definitions take precedence over the @sc{posix} definitions, use 
this
-sequence of definitions:
-
address@hidden
-#define _GNU_SOURCE
-#define _BSD_SOURCE
-#define _SVID_SOURCE
address@hidden smallexample
-
-If you do this, you must link your program with the @sc{bsd}
-compatibility library by passing the @samp{-lbsd-compat} option to the
-compiler or linker.  If you forget, you may get very strange errors at
-run time.
address@hidden defvr
-
address@hidden (none)
address@hidden GNU
address@hidden Macro _REENTRANT
address@hidden Macro _THREAD_SAFE
-If you define one of these macros, reentrant versions of several functions get
-declared.  Some of the functions are specified in @sc{posix}.1c, but many 
others
-are only available on a few other systems or are unique to @sc{gnu} libc.
-The problem is the delay in the standardization of the thread safe C library
-interface.
-
-Unlike on some other systems, no special version of the C library must
-be used for linking.  There is only one version---but while compiling
-this, it must have been specified to compile as thread safe.
address@hidden defvr
-
-We recommend you use @code{_GNU_SOURCE} in new programs.  If you don't
-specify the @samp{-ansi} option to @sc{gcc} and do not define any of
-these macros explicitly, the effect is the same as defining
address@hidden to 2 and @code{_POSIX_SOURCE},
address@hidden and @code{_BSD_SOURCE} to 1.
-
-When you define a feature-test macro to request a larger class of
-features, it is harmless to define, in addition, a feature-test macro
-for a subset of those features.  For example, if you define
address@hidden, then defining @code{_POSIX_SOURCE} as well has
-no effect.  Likewise, if you define @code{_GNU_SOURCE}, defining either
address@hidden, @code{_POSIX_C_SOURCE}, or @code{_SVID_SOURCE} as
-well has no effect.
-
-Note, however, that the features of @code{_BSD_SOURCE} are not a subset
-of any of the other feature-test macros supported.  This is because it
-defines @sc{bsd} features that take precedence over the @sc{posix}
-features that are requested by the other macros.  For this reason,
-defining @code{_BSD_SOURCE} in addition to the other feature-test macros
-does have an effect---it causes the @sc{bsd} features to take priority
-over the conflicting @sc{posix} features.
-
-
address@hidden Road Map to the Manual,  , Using the Library, Introduction
address@hidden Road Map to the Manual
-
-Here is an overview of the contents of the remaining chapters of
-this manual.
-
-The following chapters are found in the first volume, Sandra Loosemore
-et al., @emph{GNU C Library: Application Fundamentals} (Boston: GNU
-Press, 2004), available online at
address@hidden:// www.gnu.org/ manual/ manual.html}.
-
address@hidden @bullet
address@hidden
-``Error Reporting'' describes how errors detected by the library are
-reported.
-
address@hidden
-``Virtual Memory Allocation and Paging'' describes the @sc{gnu}
-library's facilities for managing and using virtual and real memory,
-including dynamic allocation of virtual memory.  If you do not know in
-advance how much memory your program needs, you can allocate it
-dynamically instead, and manipulate it via pointers.
-
address@hidden
-``Character Handling'' contains information about
-character-classification functions (such as @code{isspace}) and
-functions for performing case conversion.
-
address@hidden
-``String and Array Utilities'' has descriptions of functions for
-manipulating strings (null-terminated character arrays) and general
-byte arrays, including operations such as copying and comparison.
-
address@hidden
-``Character-Set Handling'' contains information about manipulating
-characters and strings using character sets larger than will fit in
-the usual @code{char} data type.
-
address@hidden
-``Locales and Internationalization'' describes how selecting a
-particular country or language affects the behavior of the library.
-For example, the locale affects collation sequences for strings and
-how monetary values are formatted.
-
address@hidden
-``Mathematics'' contains information about the math library functions.
-These include things like random-number generators and remainder
-functions on integers as well as the usual trigonometric and
-exponential functions on floating-point numbers.
-
address@hidden
-``Arithmetic Functions'' describes functions for simple arithmetic,
-analysis of floating-point values, and reading numbers from strings.
-
address@hidden
-``Date and Time'' describes functions for measuring both calendar time
-and @sc{cpu} time, as well as functions for setting alarms and timers.
-
address@hidden
-``Message Translation'' describes how to write programs that are
-capable of delivering messages in whatever language the user selects
-without filling the source code with sets of translations.
-
address@hidden
-``Searching and Sorting'' contains information about functions for
-searching and sorting arrays.  You can use these functions on any kind
-of array by providing an appropriate comparison function.
-
address@hidden
-``Pattern Matching'' presents functions for matching regular
-expressions and shell file-name patterns, and for expanding words as
-the shell does.
-
address@hidden
-``The Basic Program/System Interface'' tells how your programs can
-access their command-line arguments and environment variables.
-
address@hidden
-``Input/Output Overview'' gives an overall look at the input and
-output facilities in the library, and contains information about basic
-concepts such as file names.
-
address@hidden
-``Debugging Support'' describes functions provided by the library to
-make the debugging process easier, whether or not a dedicated debugger
-program is being used.
-
address@hidden
-``Input/Output on Streams'' describes I/O operations involving streams
-(or @address@hidden *}} objects). These are the normal C library
-functions from @file{stdio.h}.
-
address@hidden
-``Summary of Library Facilities'' gives a summary of all the
-functions, variables, and macros in the library, with complete data
-types and function prototypes, and says what standard or system each
-is derived from. This section is also found in the second volume, for
-convenient reference. 
-
address@hidden itemize
-
-The following chapters are found in the second volume, Sandra
-Loosemore et al., @emph{GNU C Library: System & Network Applications}
-(Boston: GNU Press, 2004), available online at @url{http://
-www.gnu.org/ manual/ manual.html}.
-
address@hidden @bullet
-
address@hidden
-``Low-Level Input/Output'' contains information about I/O operations
-on file descriptors.  File descriptors are a lower-level mechanism
-specific to the Unix family of operating systems.
-
address@hidden
-``File-System Interface'' has descriptions of operations on entire
-files, such as functions for deleting and renaming them and for
-creating new directories.  This chapter also contains information
-about how you can access the attributes of a file, such as its owner
-and file-protection modes.
-
address@hidden
-``Pipes and @acronym{FIFO}s'' contains information about simple
-interprocess-communication mechanisms.  Pipes allow communication
-between two related processes (such as between a parent and child),
-while @acronym{FIFO}s allow communication between processes sharing a
-common file-system on the same machine.
-
address@hidden
-``Sockets'' describes a more complicated interprocess-communication
-mechanism that allows processes running on different machines to
-communicate over a network.  This chapter also contains information about
-Internet host-addressing and how to use the system network databases.
-
address@hidden
-``Low-Level Terminal Interface'' describes how you can change the
-attributes of a terminal device.  If you want to disable echo of
-characters typed by the user, for example, read this chapter.
-
address@hidden
-``Processes'' contains information about how to start new processes
-and run programs.
-
address@hidden
-``Job Control'' describes functions for manipulating process groups
-and the controlling terminal.  This material is probably only of
-interest if you are writing a shell or other program that handles job
-control specially.
-
address@hidden
-``System Databases and Name-Service Switch'' describes the services
-that are available for looking up names in the system databases, how
-to determine which service is used for which database, and how these
-services are implemented so that contributors can design their own
-services.
-
address@hidden
-``Users and Groups'' tells you how to access the system user- and
-group-databases.
-
address@hidden
-``System Management'' describes functions for controlling and getting
-information about the hardware and software configuration your program
-is executing under.
-
address@hidden
-``System Configuration Parameters'' tells you how you can get
-information about various operating system limits.  Most of these
-parameters are provided for compatibility with @sc{posix}.
-
address@hidden
address@hidden Encryption and Password Handling'' discusses the legal
-and technical issues related to password encryption and security, as
-well as the functions necessary to implement effective encryption.
-
address@hidden
-``Resource Usage and Limitation'' tells you how to monitor the memory
-and other resource usage totals of processes, and how to regulate this
-usage. It also covers prioritization and scheduling. 
-
address@hidden
-``Syslog'' describes facilities for issuing and logging messages of
-system administration interest.
-
address@hidden
-``Nonlocal Exits'' contains descriptions of the @code{setjmp} and
address@hidden functions.  These functions provide a facility for
address@hidden jumps that can jump from one function to another.
-
address@hidden
-``Signal Handling'' tells you all about signals---what they are, how
-to establish a handler that is called when a particular kind of signal
-is delivered, and how to prevent signals from arriving during critical
-sections of your program.
-
address@hidden
address@hidden Threads'' describes the pthreads (@acronym{POSIX}
-threads) library.  This library provides support functions for
-multithreaded programs: thread primitives, synchronization objects,
-etc.  It also implements @acronym{POSIX} 1003.1b semaphores.
-
address@hidden
-``C Language Facilities in the Library'' contains information about
-library support for standard parts of the C language, including things
-like the @code{sizeof} operator and the symbolic constant @code{NULL},
-how to write functions accepting variable numbers of arguments, and
-constants describing the ranges and other properties of the numerical
-types.  There is also a simple debugging mechanism that allows you to
-put assertions in your code and have diagnostic messages printed if
-the tests fail.
-
address@hidden
-``Installing the @acronym{GNU} C Library'' provides a detailed
-reference for installing, compiling and configuring the @acronym{GNU}
-C Library. Configuration and optimization command-line options are
-covered here. 
-
address@hidden
-``Library Maintenance'' explains how to port and enhance the @sc{gnu}
-C Library and how to report any bugs you might find.
-
address@hidden itemize
-
-If you already know the name of the facility you are interested in, you
-can look it up in @ref{Library Summary}.  This gives you a summary of
-its syntax and a pointer to where you can find a more detailed
-description.  This appendix is particularly useful if you just want to
-verify the order and type of arguments to a function, for example.  It
-also tells you what standard or system each function, variable, or macro
-is derived from.
-
address@hidden Error Reporting, Memory, Introduction, Top
address@hidden Error Reporting
address@hidden %MENU% How library functions report errors
address@hidden error reporting
address@hidden reporting errors
address@hidden error codes
address@hidden status codes
-
-Many functions in the @sc{gnu} C Library detect and report error conditions,
-and sometimes your programs need to check for these error conditions.
-For example, when you open an input file, you should verify that the
-file was actually opened correctly, and print an error message or take
-other appropriate action if the call to the library function failed.
-
-This chapter describes how the error-reporting facility works.  Your
-program should include the header file @file{errno.h} to use this
-facility.
address@hidden errno.h
-
address@hidden Checking for Errors, Error Codes,  , Error Reporting
address@hidden Checking for Errors
-
-Most library functions return a special value to indicate that they have
-failed.  The special value is typically @code{-1}, a null pointer, or a
-constant such as @code{EOF} that is defined for that purpose.  But this
-return value tells you only that an error has occurred.  To find out
-what kind of error it was, you need to look at the error code stored in the
-variable @code{errno}.  This variable is declared in the header file
address@hidden
address@hidden errno.h
-
address@hidden errno.h
address@hidden ISO
address@hidden {Variable} {volatile int} errno
-The variable @code{errno} contains the system error number.  You can
-change the value of @code{errno}.
-
-Since @code{errno} is declared @code{volatile}, it might be changed
-asynchronously by a signal address@hidden Loosemore et al., ``Defining
-Handlers'' (see chap. 1, n. 1).}  However, a properly written signal
-handler saves and restores the value of @code{errno}, so you generally
-do not need to worry about this possibility except when writing signal
-handlers.
-
-The initial value of @code{errno} at program start-up is zero.  Many
-library functions are guaranteed to set it to certain nonzero values
-when they encounter certain kinds of errors.  These error conditions are
-listed for each function.  These functions do not change @code{errno}
-when they succeed; thus, the value of @code{errno} after a successful
-call is not necessarily zero, and you should not use @code{errno} to
-determine @emph{whether} a call failed.  The proper way to do that is
-documented for each function.  @emph{If} the call failed, you can
-examine @code{errno}.
-
-Many library functions can set @code{errno} to a nonzero value as a
-result of calling other library functions that might fail.  You should
-assume that any library function might alter @code{errno} when the
-function returns an error.
-
address@hidden Note:} @address@hidden C} specifies @code{errno} as a
-"modifiable lvalue" rather than as a variable, permitting it to be
-implemented as a macro.  For example, its expansion might involve a
-function call, like @address@hidden ()}}.  In fact, that is what it is
-on the @sc{gnu} system itself.  The @sc{gnu} library, on address@hidden 
systems, does
-whatever is right for the particular system.
-
-There are a few library functions, like @code{sqrt} and @code{atan},
-that return a perfectly legitimate value in case of an error, but also
-set @code{errno}.  For these functions, if you want to check to see
-whether an error occurred, the recommended method is to set @code{errno}
-to zero before calling the function, and then check its value afterward.
address@hidden deftypevr
-
address@hidden errno.h
-All the error codes have symbolic names; they are macros defined in
address@hidden  The names start with @samp{E} and an uppercase
-letter or digit; you should consider names of this form to be
-reserved names (@pxref{Reserved Names}).
-
-The error code values are all positive integers and are all distinct,
-with one exception: @code{EWOULDBLOCK} and @code{EAGAIN} are the same.
-Since the values are distinct, you can use them as labels in a
address@hidden statement; just do not use both @code{EWOULDBLOCK} and
address@hidden  Your program should not make any other assumptions about
-the specific values of these symbolic constants.
-
-The value of @code{errno} doesn't necessarily have to correspond to any
-of these macros, since some library functions might return other error
-codes of their own for other situations.  The only values that are
-guaranteed to be meaningful for a particular library function are the
-ones that this manual lists for that function.
-
-On address@hidden systems, almost any system call can return @code{EFAULT} if
-it is given an invalid pointer as an argument.  Since this could only
-happen as a result of a bug in your program, and since it will not
-happen on the @sc{gnu} system, we have saved space by not mentioning
address@hidden in the descriptions of individual functions.
-
-In some Unix systems, many system calls can also return @code{EFAULT} if
-given as an argument a pointer into the stack, and the kernel for some
-obscure reason fails in its attempt to extend the stack.  If this ever
-happens, you should probably try using statically or dynamically
-allocated memory instead of stack memory on that system.
-
address@hidden Error Codes, Error Messages, Checking for Errors, Error Reporting
address@hidden Error Codes
-
address@hidden errno.h
-The error code macros are defined in the header file @file{errno.h}.
-All of them expand into integer constant values.  Some of these error
-codes cannot occur on the @sc{gnu} system, but they can occur using the
address@hidden library on other systems.
-
address@hidden errno.h
address@hidden POSIX.1: Operation not permitted
address@hidden Macro int EPERM
address@hidden errno 1 @c DO NOT REMOVE
-This means the operation is not permitted; only the owner of the file (or
-other resource) or processes with special privileges can perform the
-operation.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: No such file or directory
address@hidden Macro int ENOENT
address@hidden errno 2 @c DO NOT REMOVE
-This means there is no such file or directory.  This is a @dfn{file does
-not exist} error for ordinary files that are referenced in contexts
-where they are expected to already exist.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: No such process
address@hidden Macro int ESRCH
address@hidden errno 3 @c DO NOT REMOVE
-This means no process matches the specified process @sc{id}.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Interrupted system call
address@hidden Macro int EINTR
address@hidden errno 4 @c DO NOT REMOVE
-This indicates an interrupted function call; an asynchronous signal
-occurred and prevented completion of the call.  When this happens, you
-should try the call again.
-
-You can choose to have functions resume after a signal that is handled,
-rather than failing with @address@hidden, ``Primitives Interrupted
-by Signals''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Input/output error
address@hidden Macro int EIO
address@hidden errno 5 @c DO NOT REMOVE
-This indicates an input/output error; usually used for physical read or
-write errors.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: No such device or address
address@hidden Macro int ENXIO
address@hidden errno 6 @c DO NOT REMOVE
-This means there is no such device or address.  The system tried to use
-the device represented by a file you specified, and it could not find
-the device.  This can mean that the device file was installed
-incorrectly, or that the physical device is missing or not correctly
-attached to the computer.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Argument list too long
address@hidden Macro int E2BIG
address@hidden errno 7 @c DO NOT REMOVE
-This means that the argument list is too long; it is used when the
-arguments passed to a new program being executed with one of the
address@hidden address@hidden, ``Executing a File''.} occupy too
-much memory space.  This condition never arises in the @sc{gnu} system.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Exec format error
address@hidden Macro int ENOEXEC
address@hidden errno 8 @c DO NOT REMOVE
-This indicates an invalid executable file format.  This condition is
-detected by the @code{exec} address@hidden
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Bad file descriptor
address@hidden Macro int EBADF
address@hidden errno 9 @c DO NOT REMOVE
-This indicates a bad file descriptor; for example, I/O on a descriptor
-that has been closed or reading from a descriptor open only for writing
-(or vice versa).
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: No child processes
address@hidden Macro int ECHILD
address@hidden errno 10 @c DO NOT REMOVE
-There are no child processes.  This error happens on operations that are
-supposed to manipulate child processes when there are not any processes
-to manipulate.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Resource deadlock avoided
address@hidden Macro int EDEADLK
address@hidden errno 11 @c DO NOT REMOVE
-This means a deadlock was avoided; allocating a system resource would
-have resulted in a deadlock situation.  The system does not guarantee
-that it will notice all such situations.  This error means you got lucky
-and the system noticed; it might just address@hidden an example, see
-Loosemore et al., ``File Locks''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Cannot allocate memory
address@hidden Macro int ENOMEM
address@hidden errno 12 @c DO NOT REMOVE
-This means no memory is available.  The system cannot allocate more
-virtual memory because its capacity is full.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Permission denied
address@hidden Macro int EACCES
address@hidden errno 13 @c DO NOT REMOVE
-This means that permission is denied; the file permissions do not allow
-the attempted operation.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Bad address
address@hidden Macro int EFAULT
address@hidden errno 14 @c DO NOT REMOVE
-This indicates a bad address; an invalid pointer was detected.
-In the @sc{gnu} system, this error never happens; you get a signal instead.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Block device required
address@hidden Macro int ENOTBLK
address@hidden errno 15 @c DO NOT REMOVE
-A file that is not a block special file was given in a situation that
-requires one.  For example, trying to mount an ordinary file as a file
-system in Unix gives this error.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Device or resource busy
address@hidden Macro int EBUSY
address@hidden errno 16 @c DO NOT REMOVE
-This means that a resource is busy; a system resource that cannot be
-shared is already in use.  For example, if you try to delete a file that
-is the root of a currently mounted file system, you get this error.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: File exists
address@hidden Macro int EEXIST
address@hidden errno 17 @c DO NOT REMOVE
-This means a file exists; an existing file was specified in a context
-where it only makes sense to specify a new file.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Invalid cross-device link
address@hidden Macro int EXDEV
address@hidden errno 18 @c DO NOT REMOVE
-An attempt to make an improper link across file systems was detected.
-This happens not only when you use @code{link},@footnote{Ibid., ``Hard
-Links''.} but also when you rename a file with
address@hidden@footnote{Ibid., ``Renaming Files''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: No such device
address@hidden Macro int ENODEV
address@hidden errno 19 @c DO NOT REMOVE
-The wrong type of device was given to a function that expects a
-particular sort of device.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Not a directory
address@hidden Macro int ENOTDIR
address@hidden errno 20 @c DO NOT REMOVE
-A file that is not a directory was specified when a directory is required.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Is a directory
address@hidden Macro int EISDIR
address@hidden errno 21 @c DO NOT REMOVE
-A file is a directory; you cannot open a directory for writing,
-or create or remove hard links to it.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Invalid argument
address@hidden Macro int EINVAL
address@hidden errno 22 @c DO NOT REMOVE
-This indicates an invalid argument.  This is used to indicate various
-kinds of problems with passing the wrong argument to a library function.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Too many open files
address@hidden Macro int EMFILE
address@hidden errno 24 @c DO NOT REMOVE
-The current process has too many files open and cannot open any more.
-Duplicate descriptors do count toward this limit.
-
-In @sc{bsd} and @sc{gnu}, the number of open files is controlled by a
-resource limit that can usually be increased.  If you get this error,
-you might want to increase the @code{RLIMIT_NOFILE} limit or make it
address@hidden, ``Limiting Resource Usage''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Too many open files in system
address@hidden Macro int ENFILE
address@hidden errno 23 @c DO NOT REMOVE
-There are too many distinct file openings in the entire system.  Note
-that any number of linked channels count as just one file
address@hidden, ``Linked Channels''.}  This error never occurs in
-the @sc{gnu} system.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Inappropriate ioctl for device
address@hidden Macro int ENOTTY
address@hidden errno 25 @c DO NOT REMOVE
-This indicates an inappropriate I/O control operation, such as trying to
-set terminal modes on an ordinary file.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Text file busy
address@hidden Macro int ETXTBSY
address@hidden errno 26 @c DO NOT REMOVE
-This indicates an attempt to execute a file that is currently open for
-writing, or write to a file that is currently being executed.  Often
-using a debugger to run a program is considered having it open for
-writing and will cause this error.  (The name stands for @dfn{text file
-busy}.)  This is not an error in the @sc{gnu} system; the text is copied
-as necessary.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: File too large
address@hidden Macro int EFBIG
address@hidden errno 27 @c DO NOT REMOVE
-A file is too big; the size of a file would be larger than allowed by
-the system.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: No space left on device
address@hidden Macro int ENOSPC
address@hidden errno 28 @c DO NOT REMOVE
-No space is left on device; a write operation on a file failed because
-the disk is full.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Illegal seek
address@hidden Macro int ESPIPE
address@hidden errno 29 @c DO NOT REMOVE
-This indicates an invalid seek operation (such as on a pipe).
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Read-only file system
address@hidden Macro int EROFS
address@hidden errno 30 @c DO NOT REMOVE
-An attempt was made to modify something on a read-only file system.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Too many links
address@hidden Macro int EMLINK
address@hidden errno 31 @c DO NOT REMOVE
-There are too many links; the link count of a single file would become
-too large.  @code{rename} can cause this error if the file being renamed
-already has as many links as it can address@hidden, ``Renaming
-Files''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Broken pipe
address@hidden Macro int EPIPE
address@hidden errno 32 @c DO NOT REMOVE
-This indicates a broken pipe; there is no process reading from the other
-end of a pipe.  Every library function that returns this error code also
-generates a @code{SIGPIPE} signal; this signal terminates the program if
-not handled or blocked.  Thus, your program will never actually see
address@hidden unless it has handled or blocked @code{SIGPIPE}.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden ISO: Numerical argument out of domain
address@hidden Macro int EDOM
address@hidden errno 33 @c DO NOT REMOVE
-This indicates a domain error; used by mathematical functions when an
-argument value does not fall into the domain over which the function is
-defined.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden ISO: Numerical result out of range
address@hidden Macro int ERANGE
address@hidden errno 34 @c DO NOT REMOVE
-This indicates a range error; used by mathematical functions when the
-result value is not representable because of overflow or underflow.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Resource temporarily unavailable
address@hidden Macro int EAGAIN
address@hidden errno 35 @c DO NOT REMOVE
-Resource temporarily unavailable; the call might work if you try again
-later.  The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN};
-they are always the same in the @sc{gnu} C Library.
-
-This error can happen in a few different situations:
-
address@hidden @bullet
address@hidden
-An operation that would block was attempted on an object that has
-nonblocking mode selected.  Trying the same operation again will block
-until some external condition makes it possible to read, write, or
-connect (whatever the operation).  You can use @code{select} to find out
-when the operation will be address@hidden, ``Waiting for Input or Output''.}
-
address@hidden Note:} In many older Unix systems, this condition
-was indicated by @code{EWOULDBLOCK}, which was a distinct error code
-different from @code{EAGAIN}.  To make your program portable, you should
-check for both codes and treat them the same.
-
address@hidden
-A temporary resource shortage made an operation impossible.  @code{fork}
-can return this error.  It indicates that the shortage is expected to
-pass, so your program can try the call again later and it may succeed.
-It is probably a good idea to delay for a few seconds before trying it
-again, to allow time for other processes to release scarce resources.
-Such shortages are usually fairly serious and affect the whole system,
-so usually an interactive program should report the error to the user
-and return to its command loop.
address@hidden itemize
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Operation would block
address@hidden Macro int EWOULDBLOCK
address@hidden errno EAGAIN @c DO NOT REMOVE
-In the @sc{gnu} C Library, this is another name for @code{EAGAIN}.  The
-values are always the same, on every operating system.
-
-C libraries in many older Unix systems have @code{EWOULDBLOCK} as a
-separate error code.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Operation now in progress
address@hidden Macro int EINPROGRESS
address@hidden errno 36 @c DO NOT REMOVE
-An operation that cannot complete immediately was initiated on an object
-that has nonblocking mode selected.  Some functions that must always
-block (such as @address@hidden, ``Connecting''.}) never
-return @code{EAGAIN}.  Instead, they return @code{EINPROGRESS} to
-indicate that the operation has begun and will take some time.  Attempts
-to manipulate the object before the call completes return
address@hidden  You can use the @code{select} function to find out
-when the pending operation has address@hidden, ``Waiting for Input or 
Output''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Operation already in progress
address@hidden Macro int EALREADY
address@hidden errno 37 @c DO NOT REMOVE
-An operation is already in progress on an object that has nonblocking
-mode selected.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Socket operation on nonsocket
address@hidden Macro int ENOTSOCK
address@hidden errno 38 @c DO NOT REMOVE
-A file that isn't a socket was specified when a socket is required.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Message too long
address@hidden Macro int EMSGSIZE
address@hidden errno 40 @c DO NOT REMOVE
-The size of a message sent on a socket was larger than the supported
-maximum size.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Protocol wrong type for socket
address@hidden Macro int EPROTOTYPE
address@hidden errno 41 @c DO NOT REMOVE
-The socket type does not support the requested communications protocol.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Protocol not available
address@hidden Macro int ENOPROTOOPT
address@hidden errno 42 @c DO NOT REMOVE
-You specified a socket option that doesn't make sense for the
-particular protocol being used by the address@hidden, ``Socket Options''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Protocol not supported
address@hidden Macro int EPROTONOSUPPORT
address@hidden errno 43 @c DO NOT REMOVE
-The socket domain does not support the requested communications protocol
-(perhaps because the requested protocol is completely
-invalid)address@hidden, ``Creating a Socket''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Socket type not supported
address@hidden Macro int ESOCKTNOSUPPORT
address@hidden errno 44 @c DO NOT REMOVE
-The socket type is not supported.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Operation not supported
address@hidden Macro int EOPNOTSUPP
address@hidden errno 45 @c DO NOT REMOVE
-The operation you requested is not supported.  Some socket functions
-don't make sense for all types of sockets, and others may not be
-implemented for all communications protocols.  In the @sc{gnu} system, this
-error can happen for many calls when the object does not support the
-particular operation; it is a generic indication that the server knows
-nothing to do for that call.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Protocol family not supported
address@hidden Macro int EPFNOSUPPORT
address@hidden errno 46 @c DO NOT REMOVE
-The socket communications protocol family you requested is not supported.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Address family not supported by protocol
address@hidden Macro int EAFNOSUPPORT
address@hidden errno 47 @c DO NOT REMOVE
-The address family specified for a socket is not supported; it is
-inconsistent with the protocol being used on the address@hidden,
-``Sockets''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Address already in use
address@hidden Macro int EADDRINUSE
address@hidden errno 48 @c DO NOT REMOVE
-The requested socket address is already in address@hidden, ``Socket
-Addresses''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Cannot assign requested address
address@hidden Macro int EADDRNOTAVAIL
address@hidden errno 49 @c DO NOT REMOVE
-The requested socket address is not available; for example, you tried to
-give a socket a name that doesn't match the local host
address@hidden
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Network is down
address@hidden Macro int ENETDOWN
address@hidden errno 50 @c DO NOT REMOVE
-A socket operation failed because the network was down.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Network is unreachable
address@hidden Macro int ENETUNREACH
address@hidden errno 51 @c DO NOT REMOVE
-A socket operation failed because the subnet containing the remote host
-was unreachable.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Network dropped connection on reset
address@hidden Macro int ENETRESET
address@hidden errno 52 @c DO NOT REMOVE
-A network connection was reset because the remote host crashed.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Software caused connection abort
address@hidden Macro int ECONNABORTED
address@hidden errno 53 @c DO NOT REMOVE
-A network connection was aborted locally.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Connection reset by peer
address@hidden Macro int ECONNRESET
address@hidden errno 54 @c DO NOT REMOVE
-A network connection was closed for reasons outside the control of the
-local host, such as by the remote machine rebooting or an unrecoverable
-protocol violation.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: No buffer space available
address@hidden Macro int ENOBUFS
address@hidden errno 55 @c DO NOT REMOVE
-The kernel's buffers for I/O operations are all in use.  In @sc{gnu}, this
-error is always synonymous with @code{ENOMEM}; you may get one or the
-other from network operations.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Transport endpoint is already connected
address@hidden Macro int EISCONN
address@hidden errno 56 @c DO NOT REMOVE
-You tried to connect a socket that is already address@hidden,
-``Making a Connection''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Transport endpoint is not connected
address@hidden Macro int ENOTCONN
address@hidden errno 57 @c DO NOT REMOVE
-The socket is not connected to anything.  You get this error when you
-try to transmit data over a socket, without first specifying a
-destination for the data.  For a connectionless socket (for datagram
-protocols, such as UDP), you get @code{EDESTADDRREQ} instead.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Destination address required
address@hidden Macro int EDESTADDRREQ
address@hidden errno 39 @c DO NOT REMOVE
-No default destination address was set for the socket.  You get this
-error when you try to transmit data over a connectionless socket,
-without first specifying a destination for the data with @code{connect}.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Cannot send after transport endpoint shutdown
address@hidden Macro int ESHUTDOWN
address@hidden errno 58 @c DO NOT REMOVE
-The socket has already been shut down.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Too many references: cannot splice
address@hidden Macro int ETOOMANYREFS
address@hidden errno 59 @c DO NOT REMOVE
-There are too many references; cannot splice. 
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Connection timed out
address@hidden Macro int ETIMEDOUT
address@hidden errno 60 @c DO NOT REMOVE
-A socket operation with a specified time-out received no response during
-the time-out period.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Connection refused
address@hidden Macro int ECONNREFUSED
address@hidden errno 61 @c DO NOT REMOVE
-A remote host refused to allow the network connection (typically because
-it is not running the requested service).
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Too many levels of symbolic links
address@hidden Macro int ELOOP
address@hidden errno 62 @c DO NOT REMOVE
-Too many levels of symbolic links were encountered in looking up a file name.
-This often indicates a cycle of symbolic links.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: File name too long
address@hidden Macro int ENAMETOOLONG
address@hidden errno 63 @c DO NOT REMOVE
-The file name is too long (longer than @address@hidden,
-``Limits on File-System Capacity''.}) or the host name is too long (in 
@code{gethostname} or
address@hidden@footnote{Ibid., ``Host Identification''.}).
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Host is down
address@hidden Macro int EHOSTDOWN
address@hidden errno 64 @c DO NOT REMOVE
-The remote host for a requested network connection is down.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: No route to host
address@hidden Macro int EHOSTUNREACH
address@hidden errno 65 @c DO NOT REMOVE
-The remote host for a requested network connection is not reachable.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Directory not empty
address@hidden Macro int ENOTEMPTY
address@hidden errno 66 @c DO NOT REMOVE
-A directory was not empty, where an empty directory was expected.
-Typically, this error occurs when you are trying to delete a directory.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Too many processes
address@hidden Macro int EPROCLIM
address@hidden errno 67 @c DO NOT REMOVE
-This means that the per-user limit on new processes would be exceeded by
-an attempted @address@hidden details on the
address@hidden limit, see Loosemore et al., ``Limiting Resource Usage''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Too many users
address@hidden Macro int EUSERS
address@hidden errno 68 @c DO NOT REMOVE
-The file quota system is confused because there are too many users.
address@hidden This can probably happen in a GNU system when using NFS.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Disk quota exceeded
address@hidden Macro int EDQUOT
address@hidden errno 69 @c DO NOT REMOVE
-The user's disk quota was exceeded.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Stale NFS file handle
address@hidden Macro int ESTALE
address@hidden errno 70 @c DO NOT REMOVE
-There is a stale NFS file handle.  This indicates an internal confusion
-in the NFS system which is due to file system rearrangements on the
-server host.  Repairing this condition usually requires unmounting and
-remounting the NFS file system on the local host.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Object is remote
address@hidden Macro int EREMOTE
address@hidden errno 71 @c DO NOT REMOVE
-An attempt was made to NFS-mount a remote file system with a file name that
-already specifies an NFS-mounted file.
-(This is an error on some operating systems, but we expect it to work
-properly on the @sc{gnu} system, making this error code impossible.)
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: RPC struct is bad
address@hidden Macro int EBADRPC
address@hidden errno 72 @c DO NOT REMOVE
-RPC struct is bad. 
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: RPC version wrong
address@hidden Macro int ERPCMISMATCH
address@hidden errno 73 @c DO NOT REMOVE
-RPC version is wrong.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: RPC program not available
address@hidden Macro int EPROGUNAVAIL
address@hidden errno 74 @c DO NOT REMOVE
-RPC program is not available. 
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: RPC program version wrong
address@hidden Macro int EPROGMISMATCH
address@hidden errno 75 @c DO NOT REMOVE
-RPC program version is wrong. 
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: RPC bad procedure for program
address@hidden Macro int EPROCUNAVAIL
address@hidden errno 76 @c DO NOT REMOVE
-RPC procedure for program is bad. 
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: No locks available
address@hidden Macro int ENOLCK
address@hidden errno 77 @c DO NOT REMOVE
-No locks are available.  This is used by the file-locking
address@hidden, ``File Locks''.}  This error is never
-generated by the @sc{gnu} system, but it can result from an operation to
-an NFS server running another operating system.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Inappropriate file type or format
address@hidden Macro int EFTYPE
address@hidden errno 79 @c DO NOT REMOVE
-This indicates an inappropriate file type or format.  The file was the
-wrong type for the operation, or a data file had the wrong format.
-
-On some systems @code{chmod} returns this error if you try to set the
-sticky bit on a nondirectory address@hidden, ``Assigning File Permissions''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Authentication error
address@hidden Macro int EAUTH
address@hidden errno 80 @c DO NOT REMOVE
-There was an authentication error.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden BSD: Need authenticator
address@hidden Macro int ENEEDAUTH
address@hidden errno 81 @c DO NOT REMOVE
-An authenticator is needed.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Function not implemented
address@hidden Macro int ENOSYS
address@hidden errno 78 @c DO NOT REMOVE
-Function not implemented.  This indicates that the function called is
-not implemented at all, either in the C library itself or in the
-operating system.  When you get this error, you can be sure that this
-particular function will always fail with @code{ENOSYS} unless you
-install a new version of the C library or the operating system.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Not supported
address@hidden Macro int ENOTSUP
address@hidden errno 118 @c DO NOT REMOVE
-Not supported.  A function returns this error when certain parameter
-values are valid, but the functionality they request is not available.
-This can mean that the function does not implement a particular command
-or option value or flag bit at all.  For functions that operate on some
-object given in a parameter, such as a file descriptor or a port, it
-might instead mean that only @emph{that specific object} (file
-descriptor, port, etc.) is unable to support the other parameters given;
-different file descriptors might support different ranges of parameter
-values.
-
-If the entire function is not available at all in the implementation,
-it returns @code{ENOSYS} instead.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden ISO: Invalid or incomplete multibyte or wide character
address@hidden Macro int EILSEQ
address@hidden errno 106 @c DO NOT REMOVE
-While decoding a multibyte character, the function came to an invalid
-or incomplete sequence of bytes, or the given wide character is invalid.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden GNU: Inappropriate operation for background process
address@hidden Macro int EBACKGROUND
address@hidden errno 100 @c DO NOT REMOVE
-In the @sc{gnu} system, servers supporting the @code{term} protocol
-return this error for certain operations when the caller is not in the
-foreground process group of the terminal.  Users do not usually see this
-error because functions such as @code{read} and @code{write} translate
-it into a @code{SIGTTIN} or @code{SIGTTOU} address@hidden
-information on process groups and these signals, see Loosemore et al., ``Job
-Control''.}
address@hidden deftypevr
-
address@hidden errno.h
address@hidden GNU: Translator died
address@hidden Macro int EDIED
address@hidden errno 101 @c DO NOT REMOVE
-In the @sc{gnu} system, opening a file returns this error when the file is
-translated by a program and the translator program dies while starting
-up, before it has connected to the file.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden GNU: ?
address@hidden Macro int ED
address@hidden errno 102 @c DO NOT REMOVE
-The experienced user will know what is wrong.
address@hidden This error code is a joke.  Its perror text is part of the joke.
address@hidden Don't change it.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden GNU: You really blew it this time
address@hidden Macro int EGREGIOUS
address@hidden errno 103 @c DO NOT REMOVE
-You did @strong{what}?
address@hidden deftypevr
-
address@hidden errno.h
address@hidden GNU: Computer bought the farm
address@hidden Macro int EIEIO
address@hidden errno 104 @c DO NOT REMOVE
-Go home and have a glass of warm, dairy-fresh milk.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden GNU: Gratuitous error
address@hidden Macro int EGRATUITOUS
address@hidden errno 105 @c DO NOT REMOVE
-This error code has no purpose.
address@hidden deftypevr
-
address@hidden errno.h
address@hidden XOPEN: Bad message
address@hidden Macro int EBADMSG
-Message was bad.
address@hidden errno 107
address@hidden deftypevr
-
address@hidden errno.h
address@hidden XOPEN: Identifier removed
address@hidden Macro int EIDRM
-An identifier was removed.
address@hidden errno 108
address@hidden deftypevr
-
address@hidden errno.h
address@hidden XOPEN: Multihop attempted
address@hidden Macro int EMULTIHOP
-A multihop was attempted.
address@hidden errno 109
address@hidden deftypevr
-
address@hidden errno.h
address@hidden XOPEN: No data available
address@hidden Macro int ENODATA
-No data was available.
address@hidden errno 110
address@hidden deftypevr
-
address@hidden errno.h
address@hidden XOPEN: Link has been severed
address@hidden Macro int ENOLINK
-A link has been severed.
address@hidden errno 111
address@hidden deftypevr
-
address@hidden errno.h
address@hidden XOPEN: No message of desired type
address@hidden Macro int ENOMSG
-There is no message of the desired type.
address@hidden errno 112
address@hidden deftypevr
-
address@hidden errno.h
address@hidden XOPEN: Out of streams resources
address@hidden Macro int ENOSR
-There are no more streams resources.
address@hidden errno 113
address@hidden deftypevr
-
address@hidden errno.h
address@hidden XOPEN: Device not a stream
address@hidden Macro int ENOSTR
-The device is not a stream.
address@hidden errno 114
address@hidden deftypevr
-
address@hidden errno.h
address@hidden XOPEN: Value too large for defined data type
address@hidden Macro int EOVERFLOW
-The value is too large for the defined data type.
address@hidden errno 115
address@hidden deftypevr
-
address@hidden errno.h
address@hidden XOPEN: Protocol error
address@hidden Macro int EPROTO
-There was a protocol error.
address@hidden errno 116
address@hidden deftypevr
-
address@hidden errno.h
address@hidden XOPEN: Timer expired
address@hidden Macro int ETIME
-The timer expired.
address@hidden errno 117
address@hidden deftypevr
-
address@hidden errno.h
address@hidden POSIX.1: Operation canceled
address@hidden Macro int ECANCELED
address@hidden errno 118
-Operation canceled; an asynchronous operation was canceled before it
address@hidden, ``Perform I/O Operations in Parallel''.}  When you call
address@hidden, the normal result is for the operations affected to
-complete with this address@hidden, ``Cancellation of @acronym{AIO} 
Operations''.}
address@hidden deftypevr
-
-The following error codes are defined by the Linux/i386 kernel. They are
-not yet documented.
-
address@hidden errno.h
address@hidden Linux???: Interrupted system call should be restarted
address@hidden Macro int ERESTART
address@hidden
address@hidden errno ???/85
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Channel number out of range
address@hidden Macro int ECHRNG
address@hidden
address@hidden errno ???/44
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Obsolete: Level 2 not synchronized
address@hidden Macro int EL2NSYNC
address@hidden
address@hidden errno ???/45
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Obsolete: Level 3 halted
address@hidden Macro int EL3HLT
address@hidden
address@hidden errno ???/46
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Obsolete: Level 3 reset
address@hidden Macro int EL3RST
address@hidden
address@hidden errno ???/47
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Link number out of range
address@hidden Macro int ELNRNG
address@hidden
address@hidden errno ???/48
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Protocol driver not attached
address@hidden Macro int EUNATCH
address@hidden
address@hidden errno ???/49
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: No CSI structure available
address@hidden Macro int ENOCSI
address@hidden
address@hidden errno ???/50
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Obsolete: Level 2 halted
address@hidden Macro int EL2HLT
address@hidden
address@hidden errno ???/51
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Invalid exchange
address@hidden Macro int EBADE
address@hidden
address@hidden errno ???/52
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Invalid request descriptor
address@hidden Macro int EBADR
address@hidden
address@hidden errno ???/53
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Exchange full
address@hidden Macro int EXFULL
address@hidden
address@hidden errno ???/54
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: No anode
address@hidden Macro int ENOANO
address@hidden
address@hidden errno ???/55
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Invalid request code
address@hidden Macro int EBADRQC
address@hidden
address@hidden errno ???/56
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Invalid slot
address@hidden Macro int EBADSLT
address@hidden
address@hidden errno ???/57
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: File locking deadlock error
address@hidden Macro int EDEADLOCK
address@hidden
address@hidden errno ???/58
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Bad font file format
address@hidden Macro int EBFONT
address@hidden
address@hidden errno ???/59
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Machine is not on the network
address@hidden Macro int ENONET
address@hidden
address@hidden errno ???/64
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Package not installed
address@hidden Macro int ENOPKG
address@hidden
address@hidden errno ???/65
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Advertise error
address@hidden Macro int EADV
address@hidden
address@hidden errno ???/68
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Srmount error
address@hidden Macro int ESRMNT
address@hidden
address@hidden errno ???/69
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Communication error on send
address@hidden Macro int ECOMM
address@hidden
address@hidden errno ???/70
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: RFS specific error
address@hidden Macro int EDOTDOT
address@hidden
address@hidden errno ???/73
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Name not unique on network
address@hidden Macro int ENOTUNIQ
address@hidden
address@hidden errno ???/76
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: File descriptor in bad state
address@hidden Macro int EBADFD
address@hidden
address@hidden errno ???/77
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Remote address changed
address@hidden Macro int EREMCHG
address@hidden
address@hidden errno ???/78
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Can not access a needed shared library
address@hidden Macro int ELIBACC
address@hidden
address@hidden errno ???/79
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Accessing a corrupted shared library
address@hidden Macro int ELIBBAD
address@hidden
address@hidden errno ???/80
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: .lib section in a.out corrupted
address@hidden Macro int ELIBSCN
address@hidden
address@hidden errno ???/81
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Attempting to link in too many shared libraries
address@hidden Macro int ELIBMAX
address@hidden
address@hidden errno ???/82
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Cannot exec a shared library directly
address@hidden Macro int ELIBEXEC
address@hidden
address@hidden errno ???/83
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Streams pipe error
address@hidden Macro int ESTRPIPE
address@hidden
address@hidden errno ???/86
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Structure needs cleaning
address@hidden Macro int EUCLEAN
address@hidden
address@hidden errno ???/117
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Not a XENIX named type file
address@hidden Macro int ENOTNAM
address@hidden
address@hidden errno ???/118
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: No XENIX semaphores available
address@hidden Macro int ENAVAIL
address@hidden
address@hidden errno ???/119
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Is a named type file
address@hidden Macro int EISNAM
address@hidden
address@hidden errno ???/120
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Remote I/O error
address@hidden Macro int EREMOTEIO
address@hidden
address@hidden errno ???/121
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: No medium found
address@hidden Macro int ENOMEDIUM
address@hidden
address@hidden errno ???/???
address@hidden deftypevr
-
address@hidden errno.h
address@hidden Linux???: Wrong medium type
address@hidden Macro int EMEDIUMTYPE
address@hidden
address@hidden errno ???/???
address@hidden deftypevr
-
address@hidden Error Messages,  , Error Codes, Error Reporting
address@hidden Error Messages
-
-The library has functions and variables designed to make it easy for
-your program to report informative error messages in the customary
-format about the failure of a library call.  The functions
address@hidden and @code{perror} give you the standard error message
-for a given error code; the variable
address@hidden@code{program_invocation_short_name}} gives you convenient access 
to the
-name of the program that encountered the error.
-
address@hidden string.h
address@hidden ISO
address@hidden {char *} strerror (int @var{errnum})
-The @code{strerror} function maps the error code (@pxref{Checking for
-Errors}) specified by the @var{errnum} argument to a descriptive error
-message string.  The return value is a pointer to this string.
-
-The value @var{errnum} normally comes from the variable @code{errno}.
-
-You should not modify the string returned by @code{strerror}.  Also, if
-you make subsequent calls to @code{strerror}, the string might be
-overwritten.  (But it's guaranteed that no library function ever calls
address@hidden behind your back.)
-
-The function @code{strerror} is declared in @file{string.h}.
address@hidden deftypefun
-
address@hidden string.h
address@hidden GNU
address@hidden {char *} strerror_r (int @var{errnum}, char address@hidden, 
size_t @var{n})
-The @code{strerror_r} function works like @code{strerror} but instead of
-returning the error message in a statically allocated buffer shared by
-all threads in the process, it returns a private copy for the
-thread. This might be either some permanent global data or a message
-string in the user-supplied buffer starting at @var{buf} with the
-length of @var{n} bytes.
-
-At most @var{n} characters are written (including the NUL byte), so it is
-up to the user to select the buffer large enough.
-
-This function should always be used in multithreaded programs since
-there is no way to guarantee that the string returned by @code{strerror}
-really belongs to the last call of the current thread.
-
-This function @code{strerror_r} is a @sc{gnu} extension and it is declared in
address@hidden
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden void perror (const char address@hidden)
-This function prints an error message to the stream @code{stderr}
-(@pxref{Standard Streams}).  The orientation of @code{stderr} is not
-changed.
-
-If you call @code{perror} with a @var{message} that is either a null
-pointer or an empty string, @code{perror} just prints the error message
-corresponding to @code{errno}, adding a trailing newline.
-
-If you supply a nonnull @var{message} argument, then @code{perror}
-prefixes its output with this string.  It adds a colon and a space
-character to separate the @var{message} from the error string corresponding
-to @code{errno}.
-
-The function @code{perror} is declared in @file{stdio.h}.
address@hidden deftypefun
-
address@hidden and @code{perror} produce the exact same message for any
-given error code; the precise text varies from system to system.  On the
address@hidden system, the messages are fairly short; there are no multiline
-messages or embedded newlines.  Each error message begins with a capital
-letter and does not include any terminating punctuation.
-
address@hidden Note:} The @code{strerror} function was introduced
-in @address@hidden C89}.  Many older C systems do not support this function 
yet.
-
address@hidden program name
address@hidden name of running program
-Many programs that don't read input from the terminal are designed to
-exit if any system call fails.  By convention, the error message from
-such a program should start with the program's name, sans directories.
-You can find that name in the variable
address@hidden; the full file name is stored the
-variable @code{program_invocation_name}.
-
address@hidden errno.h
address@hidden GNU
address@hidden {char *} program_invocation_name
-This variable's value is the name that was used to invoke the program
-running in the current process.  It is the same as @code{argv[0]}.  This
-is not necessarily a useful file name; often it contains no directory
-names (@pxref{Program Arguments}).
address@hidden deftypevar
-
address@hidden errno.h
address@hidden GNU
address@hidden {char *} program_invocation_short_name
-This variable's value is the name that was used to invoke the program
-running in the current process, with directory names removed---it is the
-same as @code{program_invocation_name} minus everything up to the last
-slash, if any.
address@hidden deftypevar
-
-The library initialization code sets up both of these variables before
-calling @code{main}.
-
address@hidden Note:} These two variables are @sc{gnu} extensions.  If
-you want your program to work with address@hidden libraries, you must save the
-value of @code{argv[0]} in @code{main}, and then strip off the directory
-names yourself.  We added these extensions to make it possible to write
-self-contained error-reporting subroutines that require no explicit
-cooperation from @code{main}.
-
-Here is an example showing how to handle a failure to open a file
-correctly.  The function @code{open_sesame} tries to open the named file
-for reading and returns a stream if successful.  The @code{fopen}
-library function returns a null pointer if it couldn't open the file for
-some reason.  In that situation, @code{open_sesame} constructs an
-appropriate error message using the @code{strerror} function, and
-terminates the program.  If we were going to make some other library
-calls before passing the error code to @code{strerror}, we would have to
-save it in a local variable instead, because those other library
-functions might overwrite @code{errno} in the meantime.
-
address@hidden
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-FILE *
-open_sesame (char *name)
address@hidden
-  FILE *stream;
-
-  errno = 0;
-  stream = fopen (name, "r");
-  if (stream == NULL)
-    @{
-      fprintf (stderr, "%s: Couldn't open file %s; %s\n",
-               program_invocation_short_name, name, strerror (errno));
-      exit (EXIT_FAILURE);
-    @}
-  else
-    return stream;
address@hidden
address@hidden smallexample
-
-Using @code{perror} has the advantage that the function is portable and
-available on all systems implementing @address@hidden C}.  But often the
-text @code{perror} generates is not what is wanted, and there is no way
-to extend or change what @code{perror} does.  The @sc{gnu} coding
-standard, for instance, requires error messages to be preceded by the
-program name, and programs that read some input files should provide
-information about the input file name and the line number in case an
-error is encountered while reading the file.  For these occasions there
-are two functions available which are widely used throughout the
address@hidden project.  These functions are declared in @file{error.h}.
-
address@hidden error.h
address@hidden GNU
address@hidden void error (int @var{status}, int @var{errnum}, const char 
address@hidden, @dots{})
-The @code{error} function can be used to report general problems during
-program execution.  The @var{format} argument is a format string just
-like those given to the @code{printf} family of functions.  The
-arguments required for the format can follow the @var{format} parameter.
-Just like @code{perror}, @code{error} also can report an error code in
-textual form.  But unlike @code{perror} the error value is explicitly
-passed to the function in the @var{errnum} parameter.  This eliminates
-the problem mentioned above that the error-reporting function must be
-called immediately after the function causing the error, since otherwise
address@hidden might have a different value.
-
-The @code{error} prints first the program name.  If the application
-defined a global variable @code{error_print_progname} and points it to a
-function, this function will be called to print the program name.
-Otherwise, the string from the global variable @code{program_name} is
-used.  The program name is followed by a colon and a space, which in turn
-is followed by the output produced by the format string.  If the
address@hidden parameter is nonzero, the format string output is followed
-by a colon and a space, followed by the error message for the error code
address@hidden  In any case, the output is terminated with a newline.
-
-The output is directed to the @code{stderr} stream.  If the
address@hidden wasn't oriented before the call, it will be narrow-oriented
-afterward.
-
-The function will return unless the @var{status} parameter has a
-nonzero value.  In this case, the function will call @code{exit} with
-the @var{status} value for its parameter and therefore never return.  If
address@hidden returns, the global variable @code{error_message_count} is
-incremented by one to keep track of the number of errors reported.
address@hidden deftypefun
-
address@hidden error.h
address@hidden GNU
address@hidden void error_at_line (int @var{status}, int @var{errnum}, const 
char address@hidden, unsigned int @var{lineno}, const char address@hidden, 
@dots{})
-
-The @code{error_at_line} function is very similar to the @code{error}
-function.  The only difference are the additional parameters @var{fname}
-and @var{lineno}.  The handling of the other parameters is identical to
-that of @code{error} except that between the program name and the string
-generated by the format string additional text is inserted.
-
-Directly following the program name, a colon followed by the file name
-pointed to by @var{fname}, another colon, and a value of @var{lineno}
-are printed.
-
-This additional output of course is meant to be used to locate an error
-in an input file (like a programming language source code file, for
-example).
-
-If the global variable @code{error_one_per_line} is set to a nonzero
-value @code{error_at_line} will avoid printing consecutive messages for
-the same file anem line.  Repetitions that are not directly following
-each other are not caught.
-
-Just like @code{error}, this function only returns if @var{status} is
-zero.  Otherwise, @code{exit} is called with the nonzero value.  If
address@hidden returns, the global variable @code{error_message_count} is
-incremented by one to keep track of the number of errors reported.
address@hidden deftypefun
-
-As mentioned above the @code{error} and @code{error_at_line} functions
-can be customized by defining a variable named
address@hidden
-
address@hidden error.h
address@hidden GNU
address@hidden {void (*} error_print_progname ) (void)
-If the @code{error_print_progname} variable is defined to a nonzero
-value, the function pointed to is called by @code{error} or
address@hidden  It is expected to print the program name or do
-something similarly useful.
-
-The function is expected to be printed to the @code{stderr} stream, and
-must be able to handle whatever orientation the stream has.
-
-The variable is global and shared by all threads.
address@hidden deftypevar
-
address@hidden error.h
address@hidden GNU
address@hidden {unsigned int} error_message_count
-The @code{error_message_count} variable is incremented whenever one of
-the functions @code{error} or @code{error_at_line} returns.  The
-variable is global and shared by all threads.
address@hidden deftypevar
-
address@hidden error.h
address@hidden GNU
address@hidden int error_one_per_line
-The @code{error_one_per_line} variable influences only
address@hidden  Normally the @code{error_at_line} function
-creates output for every invocation.  If @code{error_one_per_line} is
-set to a nonzero value, @code{error_at_line} keeps track of the last
-file name and line number for which an error was reported and avoids
-directly following messages for the same file and line.  This variable
-is global and shared by all threads.
address@hidden deftypevar
-
address@hidden
-A program that read an input file and reports errors in it could look
-like this:
-
address@hidden
address@hidden
-  char *line = NULL;
-  size_t len = 0;
-  unsigned int lineno = 0;
-
-  error_message_count = 0;
-  while (! feof_unlocked (fp))
-    @{
-      ssize_t n = getline (&line, &len, fp);
-      if (n <= 0)
-        /* @r{End of file or error.}  */
-        break;
-      ++lineno;
-
-      /* @r{Process the line.}  */
-      @dots{}
-
-      if (@r{Detect error in line})
-        error_at_line (0, errval, filename, lineno,
-                       "some error text %s", some_variable);
-    @}
-
-  if (error_message_count != 0)
-    error (EXIT_FAILURE, 0, "%u errors found", error_message_count);
address@hidden
address@hidden smallexample
-
address@hidden and @code{error_at_line} are clearly the functions of
-choice and enable the programmer to write applications that follow the
address@hidden coding standard.  The @sc{gnu} libc also contains functions
-that are used in @sc{bsd} for the same purpose.  These functions are
-declared in @file{err.h}.  It is generally advised to not use these
-functions.  They are included only for compatibility.
-
address@hidden err.h
address@hidden BSD
address@hidden void warn (const char address@hidden, @dots{})
-The @code{warn} function is roughly equivalent to a call like:
address@hidden
-  error (0, errno, format, @r{the parameters})
address@hidden smallexample
address@hidden
-except the global variables that @code{error} respects and modifies
-are not used.
address@hidden deftypefun
-
address@hidden err.h
address@hidden BSD
address@hidden void vwarn (const char address@hidden, va_list)
-The @code{vwarn} function is just like @code{warn} except that the
-parameters for the handling of the format string @var{format} are passed
-in as a value of type @code{va_list}.
address@hidden deftypefun
-
address@hidden err.h
address@hidden BSD
address@hidden void warnx (const char address@hidden, @dots{})
-The @code{warnx} function is roughly equivalent to a call like:
address@hidden
-  error (0, 0, format, @r{the parameters})
address@hidden smallexample
address@hidden
-except the global variables that @code{error} respects and modifies are
-not used.  The difference with @code{warn} is that no error number string
-is printed.
address@hidden deftypefun
-
address@hidden err.h
address@hidden BSD
address@hidden void vwarnx (const char address@hidden, va_list)
-The @code{vwarnx} function is just like @code{warnx} except that the
-parameters for the handling of the format string @var{format} are passed
-in as a value of type @code{va_list}.
address@hidden deftypefun
-
address@hidden err.h
address@hidden BSD
address@hidden void err (int @var{status}, const char address@hidden, @dots{})
-The @code{err} function is roughly equivalent to a call like:
address@hidden
-  error (status, errno, format, @r{the parameters})
address@hidden smallexample
address@hidden
-except that the global variables @code{error} respects and modifies
-are not used and that the program is exited even if @var{status} is zero.
address@hidden deftypefun
-
address@hidden err.h
address@hidden BSD
address@hidden void verr (int @var{status}, const char address@hidden, va_list)
-The @code{verr} function is just like @code{err} except that the
-parameters for the handling of the format string @var{format} are passed
-in as a value of type @code{va_list}.
address@hidden deftypefun
-
address@hidden err.h
address@hidden BSD
address@hidden void errx (int @var{status}, const char address@hidden, @dots{})
-The @code{errx} function is roughly equivalent to a call like:
address@hidden
-  error (status, 0, format, @r{the parameters})
address@hidden smallexample
address@hidden
-except that the global variables @code{error} respects and modifies
-are not used and that the program is exited even if @var{status}
-is zero.  The difference with @code{err} is that no error number
-string is printed.
address@hidden deftypefun
-
address@hidden err.h
address@hidden BSD
address@hidden void verrx (int @var{status}, const char address@hidden, va_list)
-The @code{verrx} function is just like @code{errx} except that the
-parameters for the handling of the format string @var{format} are passed
-in as a value of type @code{va_list}.
address@hidden deftypefun
-
address@hidden Memory, Character Handling, Error Reporting, Top
address@hidden Virtual Memory Allocation and Paging
address@hidden %MENU% Allocating virtual memory and controlling paging
address@hidden memory allocation
address@hidden storage allocation
-
-This chapter describes how processes manage and use memory in a system
-that uses the @sc{gnu} C Library.
-
-The @sc{gnu} C Library has several functions for dynamically allocating
-virtual memory in various ways.  They vary in generality and in
-efficiency.  The library also provides functions for controlling paging
-and allocation of real memory.
-
-Memory-mapped I/O is not discussed in this address@hidden
-Loosemore et al., ``Memory-Mapped I/O'' (see chap. 1, n. 1).}
-
address@hidden Memory Concepts
address@hidden Process Memory Concepts
-
-One of the most basic resources a process has available to it is memory.
-There are many different ways systems organize memory, but in a
-typical one, each process has one linear virtual address space, with
-addresses running from zero to some huge maximum.  It need not be
-contiguous; i.e.  not all of these addresses actually can be used to
-store data.
-
-The virtual memory is divided into pages (4 kilobytes is typical).
-Backing each page of virtual memory is a page of real memory (called a
address@hidden) or some secondary storage, usually disk space.  The disk
-space might be swap space or just some ordinary disk file.  Actually, a
-page of all zeros sometimes has nothing at all backing it---there's
-just a flag saying it is all zeros.
address@hidden page frame
address@hidden frame, real memory
address@hidden swap space
address@hidden page, virtual memory
-
-The same frame of real memory or backing store can back multiple virtual
-pages belonging to multiple processes.  This is normally the case, for
-example, with virtual memory occupied by @sc{gnu} C Library code.  The same
-real memory frame containing the @code{printf} function backs a virtual
-memory page in each of the existing processes that has a @code{printf}
-call in its program.
-
-In order for a program to access any part of a virtual page, the page
-must at that moment be backed by (@dfn{connected to}) a real frame.  But
-because there is usually a lot more virtual memory than real memory, the
-pages must move back and forth between real memory and backing store
-regularly, coming into real memory when a process needs to access them
-and then retreating to backing store when not needed anymore.  This
-movement is called @dfn{paging}.
-
-When a program attempts to access a page which is not at that moment
-backed by real memory, this is known as a @dfn{page fault}.  When a page
-fault occurs, the kernel suspends the process, places the page into a
-real page frame (this is called "paging in" or "faulting in"), then
-resumes the process so that from the process' point of view, the page
-was in real memory all along.  In fact, to the process, all pages always
-seem to be in real memory.  Except for one thing: the elapsed execution
-time of an instruction that would normally be a few nanoseconds is
-suddenly much, much, longer (because the kernel normally has to do I/O
-to complete the page-in).  For programs sensitive to that, the functions
-described in @ref{Locking Pages} can control it.
address@hidden page fault
address@hidden paging
-
-Within each virtual address space, a process has to keep track of what
-is at which addresses, and that process is called memory allocation.
-Allocation usually brings to mind meting out scarce resources, but in
-the case of virtual memory, that's not a major goal, because there is
-generally much more of it than anyone needs.  Memory allocation within a
-process is mainly just a matter of making sure that the same byte of
-memory isn't used to store two different things.
-
-Processes allocate memory in two major ways: by exec and
-programmatically.  Actually, forking is a third way, but it's not very
address@hidden, ``Creating a Process''.}
-
-Exec is the operation of creating a virtual address space for a process,
-loading its basic program into it, and executing the program.  It is
-done by the @dfn{exec} family of functions (@code{execl}, for example).
-The operation takes a program file (an executable), allocates space
-to load all the data in the executable, loads it, and transfers control
-to it.  The most notable data are the instructions of the program (the
address@hidden), but also literals and constants in the program and even
-some variables---C variables with the static storage class (@pxref{Memory
-Allocation and C}).
address@hidden executable
address@hidden literals
address@hidden constants
-
-Once that program begins to execute, it uses programmatic allocation to
-gain additional memory.  In a C program with the @sc{gnu} C Library,
-there are two kinds of programmatic allocation: automatic and dynamic
-(@pxref{Memory Allocation and C}).
-
-Memory-mapped I/O is another form of dynamic virtual memory allocation.
-Mapping memory to a file means declaring that the contents of certain
-range of a process' addresses shall be identical to the contents of a
-specified regular file.  The system makes the virtual memory initially
-contain the contents of the file, and if you modify the memory, the
-system writes the same modification to the file.  Note that due to the
-magic of virtual memory and page faults, there is no reason for the
-system to do I/O to read the file, or allocate real memory for its
-contents, until the program accesses the virtual address@hidden,
-``Memory-Mapped I/O''.}
address@hidden memory-mapped I/O
address@hidden memory-mapped file
address@hidden files, accessing
-
-Just as it programmatically allocates memory, the program can
-programmatically deallocate (@dfn{free}) it.  You can't free the memory
-that was allocated by exec.  When the program exits or execs, you might
-say that all its memory gets freed, but since in both cases the address
-space ceases to exist, the point is really moot (@pxref{Program
-Termination}).
address@hidden execing a program
address@hidden freeing memory
address@hidden exiting a program
-
-A process' virtual address space is divided into segments.  A segment is
-a contiguous range of virtual addresses.  Three important segments are
-
address@hidden @bullet
address@hidden
-The @dfn{text segment} contains a program's instructions and literals and
-static constants.  It is allocated by exec and stays the same size for
-the life of the virtual address space.
-
address@hidden
-The @dfn{data segment} is working storage for the program.  It can be
-preallocated and preloaded by exec and the process can extend or shrink
-it by calling functions as described in @ref{Resizing the Data
-Segment}.  Its lower end is fixed.
-
address@hidden
-The @dfn{stack segment} contains a program stack.  It grows as the stack
-grows, but doesn't shrink when the stack shrinks.
-
address@hidden itemize
-
-
-
address@hidden Memory Allocation
address@hidden Allocating Storage for Program Data
-
-This section covers how ordinary programs manage storage for their data,
-including the famous @code{malloc} function and some fancier facilities
-that are special to the @sc{gnu} C Library and @sc{gnu} Compiler.
-
address@hidden Memory Allocation and C
address@hidden Memory Allocation in C Programs
-
-The C language supports two kinds of memory allocation through the
-variables in C programs:
-
address@hidden @bullet
address@hidden
address@hidden allocation} is what happens when you declare a static or
-global variable.  Each static or global variable defines one block of
-space, of a fixed size.  The space is allocated once, when your program
-is started (part of the exec operation), and is never freed.
address@hidden static memory allocation
address@hidden static storage class
-
address@hidden
address@hidden allocation} happens when you declare an automatic
-variable, such as a function argument or a local variable.  The space
-for an automatic variable is allocated when the compound statement
-containing the declaration is entered, and is freed when that
-compound statement is exited.
address@hidden automatic memory allocation
address@hidden automatic storage class
-
-In @sc{gnu} C, the size of the automatic storage can be an expression
-that varies.  In other C implementations, it must be a constant.
address@hidden itemize
-
-A third important kind of memory allocation, @dfn{dynamic allocation},
-is not supported by C variables but is available via @sc{gnu} C Library
-functions.
address@hidden dynamic memory allocation
-
address@hidden Dynamic Memory Allocation
address@hidden dynamic memory allocation
-
address@hidden memory allocation} is a technique in which programs
-determine as they are running where to store some information.  You need
-dynamic allocation when the amount of memory you need, or how long you
-continue to need it, depends on factors that are not known before the
-program runs.
-
-For example, you may need a block to store a line read from an input
-file; since there is no limit to how long a line can be, you must
-allocate the memory dynamically and make it dynamically larger as you
-read more of the line.
-
-Or, you may need a block for each record or each definition in the input
-data; since you can't know in advance how many there will be, you must
-allocate a new block for each record or definition as you read it.
-
-When you use dynamic allocation, the allocation of a block of memory is
-an action that the program requests explicitly.  You call a function or
-macro when you want to allocate space, and specify the size with an
-argument.  If you want to free the space, you do so by calling another
-function or macro.  You can do these things whenever you want, as often
-as you want.
-
-Dynamic allocation is not supported by C variables; there is no storage
-class @dfn{dynamic}, and there can never be a C variable whose value is
-stored in dynamically allocated space.  The only way to get
-dynamically allocated memory is via a system call (which is generally
-via a @sc{gnu} C Library function call), and the only way to refer to
-dynamically allocated space is through a pointer.  Because it is less
-convenient, and because the actual process of dynamic allocation
-requires more computation time, programmers generally use dynamic
-allocation only when neither static nor automatic allocation will serve.
-
-For example, if you want to allocate dynamically some space to hold a
address@hidden foobar}, you cannot declare a variable of type @code{struct
-foobar} whose contents are the dynamically allocated space.  But you can
-declare a variable of pointer type @code{struct foobar *} and assign it the
-address of the space.  Then you can use the operators @samp{*} and
address@hidden>} on this pointer variable to refer to the contents of the space:
-
address@hidden
address@hidden
-  struct foobar *ptr
-     = (struct foobar *) malloc (sizeof (struct foobar));
-  ptr->name = x;
-  ptr->next = current_foobar;
-  current_foobar = ptr;
address@hidden
address@hidden smallexample
-
address@hidden Unconstrained Allocation
address@hidden Unconstrained Allocation
address@hidden unconstrained memory allocation
address@hidden @code{malloc} function
address@hidden heap, dynamic allocation from
-
-The most general dynamic allocation facility is @code{malloc}.  It
-allows you to allocate blocks of memory of any size at any time, make
-them bigger or smaller at any time, and free the blocks individually at
-any time (or never).
-
address@hidden Basic Allocation
address@hidden Basic Memory Allocation
address@hidden allocation of memory with @code{malloc}
-
-To allocate a block of memory, call @code{malloc}.  The prototype for
-this function is in @file{stdlib.h}.
address@hidden stdlib.h
-
address@hidden malloc.h stdlib.h
address@hidden ISO
address@hidden {void *} malloc (size_t @var{size})
-This function returns a pointer to a newly allocated block @var{size}
-bytes long, or a null pointer if the block could not be allocated.
address@hidden deftypefun
-
-The contents of the block are undefined; you must initialize it yourself
-(or use @code{calloc} instead; @pxref{Allocating Cleared Space}).
-Normally you would cast the value as a pointer to the kind of object
-that you want to store in the block.  Here we show an example of doing
-so, and of initializing the space with zeros using the library function
address@hidden (@pxref{Copying and Concatenation}):
-
address@hidden
-struct foo *ptr;
address@hidden
-ptr = (struct foo *) malloc (sizeof (struct foo));
-if (ptr == 0) abort ();
-memset (ptr, 0, sizeof (struct foo));
address@hidden smallexample
-
-You can store the result of @code{malloc} into any pointer variable
-without a cast, because @address@hidden C} automatically converts the type
address@hidden *} to another type of pointer when necessary.  But the cast
-is necessary in contexts other than assignment operators or if you might
-want your code to run in traditional C.
-
-Remember that when allocating space for a string, the argument to
address@hidden must be one plus the length of the string.  This is
-because a string is terminated with a null character that doesn't count
-in the "length" of the string but does need space.  For example:
-
address@hidden
-char *ptr;
address@hidden
-ptr = (char *) malloc (length + 1);
address@hidden smallexample
-
address@hidden
address@hidden of Strings}, for more information about this.
-
address@hidden Malloc Examples
address@hidden Examples of @code{malloc}
-
-If no more space is available, @code{malloc} returns a null pointer.
-You should check the value of @emph{every} call to @code{malloc}.  It is
-useful to write a subroutine that calls @code{malloc} and reports an
-error if the value is a null pointer, returning only if the value is
-nonzero.  This function is conventionally called @code{xmalloc}.  Here
-it is:
-
address@hidden
-void *
-xmalloc (size_t size)
address@hidden
-  register void *value = malloc (size);
-  if (value == 0)
-    fatal ("virtual memory exhausted");
-  return value;
address@hidden
address@hidden smallexample
-
-Here is a real example of using @code{malloc} (by way of @code{xmalloc}).
-The function @code{savestring} will copy a sequence of characters into
-a newly allocated null-terminated string:
-
address@hidden
-char *
-savestring (const char *ptr, size_t len)
address@hidden
-  register char *value = (char *) xmalloc (len + 1);
-  value[len] = '\0';
-  return (char *) memcpy (value, ptr, len);
address@hidden
address@hidden smallexample
-
-The block that @code{malloc} gives you is guaranteed to be aligned so
-that it can hold any type of data.  In the @sc{gnu} system, the address
-is always a multiple of eight on most systems, and a multiple of sixteen
-on 64-bit systems.  Only rarely is any higher boundary (such as a page
-boundary) necessary; for those cases, use @code{memalign},
address@hidden or @code{valloc} (@pxref{Aligned Memory Blocks}).
-
-Note that the memory located after the end of the block is likely to be
-in use for something else; perhaps a block already allocated by another
-call to @code{malloc}.  If you attempt to treat the block as longer than
-you asked for it to be, you are liable to destroy the data that
address@hidden uses to keep track of its blocks, or you may destroy the
-contents of another block.  If you have already allocated a block and
-discover you want it to be bigger, use @code{realloc} (@pxref{Changing
-Block Size}).
-
address@hidden Freeing after Malloc
address@hidden Freeing Memory Allocated with @code{malloc}
address@hidden freeing memory allocated with @code{malloc}
address@hidden heap, freeing memory from
-
-When you no longer need a block that you got with @code{malloc}, use the
-function @code{free} to make the block available to be allocated again.
-The prototype for this function is in @file{stdlib.h}.
address@hidden stdlib.h
-
address@hidden malloc.h stdlib.h
address@hidden ISO
address@hidden void free (void address@hidden)
-The @code{free} function deallocates the block of memory pointed at
-by @var{ptr}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden Sun
address@hidden void cfree (void address@hidden)
-This function does the same thing as @code{free}.  It's provided for
-backward compatibility with address@hidden; you should use @code{free} instead.
address@hidden deftypefun
-
-Freeing a block alters the contents of the block.  @strong{Do not expect to
-find any data (such as a pointer to the next block in a chain of blocks) in
-the block after freeing it.}  Copy whatever you need out of the block before
-freeing it!  Here is an example of the proper way to free all the blocks in
-a chain, and the strings that they point to:
-
address@hidden
-struct chain
-  @{
-    struct chain *next;
-    char *name;
-  @}
-
-void
-free_chain (struct chain *chain)
address@hidden
-  while (chain != 0)
-    @{
-      struct chain *next = chain->next;
-      free (chain->name);
-      free (chain);
-      chain = next;
-    @}
address@hidden
address@hidden smallexample
-
-Occasionally, @code{free} can actually return memory to the operating
-system and make the process smaller.  Usually, all it can do is allow a
-later call to @code{malloc} to reuse the space.  In the meantime, the
-space remains in your program as part of a free-list used internally by
address@hidden
-
-There is no point in freeing blocks at the end of a program, because all
-of the program's space is given back to the system when the process
-terminates.
-
address@hidden Changing Block Size
address@hidden Changing the Size of a Block
address@hidden changing the size of a block (@code{malloc})
-
-Often you do not know for certain how big a block you will ultimately need
-at the time you must begin to use the block.  For example, the block might
-be a buffer that you use to hold a line being read from a file; no matter
-how long you make the buffer initially, you may encounter a line that is
-longer.
-
-You can make the block longer by calling @code{realloc}.  This function
-is declared in @file{stdlib.h}.
address@hidden stdlib.h
-
address@hidden malloc.h stdlib.h
address@hidden ISO
address@hidden {void *} realloc (void address@hidden, size_t @var{newsize})
-The @code{realloc} function changes the size of the block whose address is
address@hidden to be @var{newsize}.
-
-Since the space after the end of the block may be in use, @code{realloc}
-may find it necessary to copy the block to a new address where more free
-space is available.  The value of @code{realloc} is the new address of the
-block.  If the block needs to be moved, @code{realloc} copies the old
-contents.
-
-If you pass a null pointer for @var{ptr}, @code{realloc} behaves just
-like @samp{malloc (@var{newsize})}.  This can be convenient, but be
-aware that older implementations (before @address@hidden C}) may not support
-this behavior, and will probably crash when @code{realloc} is passed a
-null pointer.
address@hidden deftypefun
-
-Like @code{malloc}, @code{realloc} may return a null pointer if no
-memory space is available to make the block bigger.  When this happens,
-the original block is untouched; it has not been modified or relocated.
-
-In most cases it makes no difference what happens to the original block
-when @code{realloc} fails, because the application program cannot continue
-when it is out of memory, and the only thing to do is to give a fatal error
-message.  Often it is convenient to write and use a subroutine,
-conventionally called @code{xrealloc}, that takes care of the error message
-as @code{xmalloc} does for @code{malloc}:
-
address@hidden
-void *
-xrealloc (void *ptr, size_t size)
address@hidden
-  register void *value = realloc (ptr, size);
-  if (value == 0)
-    fatal ("Virtual memory exhausted");
-  return value;
address@hidden
address@hidden smallexample
-
-You can also use @code{realloc} to make a block smaller.  The reason you
-would do this is to avoid tying up a lot of memory space when only a little
-is needed.
address@hidden The following is no longer true with the new malloc.
address@hidden But it seems wise to keep the warning for other implementations.
-In several allocation implementations, making a block smaller sometimes
-necessitates copying it, so it can fail if no other space is available.
-
-If the new size you specify is the same as the old size, @code{realloc}
-is guaranteed to change nothing and return the same address that you gave.
-
address@hidden Allocating Cleared Space
address@hidden Allocating Cleared Space
-
-The function @code{calloc} allocates memory and clears it to zero.  It
-is declared in @file{stdlib.h}.
address@hidden stdlib.h
-
address@hidden malloc.h stdlib.h
address@hidden ISO
address@hidden {void *} calloc (size_t @var{count}, size_t @var{eltsize})
-This function allocates a block long enough to contain a vector of
address@hidden elements, each of size @var{eltsize}.  Its contents are
-cleared to zero before @code{calloc} returns.
address@hidden deftypefun
-
-You could define @code{calloc} as follows:
-
address@hidden
-void *
-calloc (size_t count, size_t eltsize)
address@hidden
-  size_t size = count * eltsize;
-  void *value = malloc (size);
-  if (value != 0)
-    memset (value, 0, size);
-  return value;
address@hidden
address@hidden smallexample
-
-But in general, it is not guaranteed that @code{calloc} calls
address@hidden internally.  Therefore, if an application provides its own
address@hidden/@code{realloc}/@code{free} outside the C library, it
-should always define @code{calloc}, too.
-
address@hidden Efficiency and Malloc
address@hidden Efficiency Considerations for @code{malloc}
address@hidden efficiency and @code{malloc}
-
-
-
-
address@hidden
-
address@hidden No longer true, see below instead.
-To make the best use of @code{malloc}, it helps to know that the @sc{gnu}
-version of @code{malloc} always dispenses small amounts of memory in
-blocks whose sizes are powers of two.  It keeps separate pools for each
-power of two.  This holds for sizes up to a page size.  Therefore, if
-you are free to choose the size of a small block in order to make
address@hidden more efficient, make it a power of two.
address@hidden !!! xref getpagesize
-
-Once a page is split up for a particular block size, it can't be reused
-for another size unless all the blocks in it are freed.  In many
-programs, this is unlikely to happen.  Thus, you can sometimes make a
-program use memory more efficiently by using blocks of the same size for
-many different purposes.
-
-When you ask for memory blocks of a page or larger, @code{malloc} uses a
-different strategy; it rounds the size up to a multiple of a page, and
-it can coalesce and split blocks as needed.
-
-The reason for the two strategies is that it is important to allocate
-and free small blocks as fast as possible, but speed is less important
-for a large block since the program normally spends a fair amount of
-time using it.  Also, large blocks are normally fewer in number.
-Therefore, for large blocks, it makes sense to use a method which takes
-more time to minimize the wasted space.
-
address@hidden ignore
-
-As opposed to other versions, the @code{malloc} in the @sc{gnu} C
-Library does not round up block sizes to powers of two, either for large
-or small sizes.  Neighboring chunks can be coalesced on a @code{free} no
-matter what their size is.  This makes the implementation suitable for
-all kinds of allocation patterns, without generally incurring high memory
-waste through fragmentation.
-
-Very large blocks (much larger than a page) are allocated with
address@hidden (anonymous or via @code{/dev/zero}) by this implementation.
-This has the great advantage that these chunks are returned to the
-system immediately when they are freed.  Therefore, it cannot happen
-that a large chunk becomes @dfn{locked} between smaller ones and, even
-after calling @code{free}, wastes memory.  The size threshold for
address@hidden to be used can be adjusted with @code{mallopt}.  The use of
address@hidden can also be disabled completely.
-
address@hidden Aligned Memory Blocks
address@hidden Allocating Aligned Memory Blocks
-
address@hidden page boundary
address@hidden alignment (with @code{malloc})
address@hidden stdlib.h
-The address of a block returned by @code{malloc} or @code{realloc} in
-the @sc{gnu} system is always a multiple of eight (or sixteen on 64-bit
-systems).  If you need a block whose address is a multiple of a higher
-power of two than that, use @code{memalign}, @code{posix_memalign}, or
address@hidden  @code{memalign} is declared in @file{malloc.h} and
address@hidden is declared in @file{stdlib.h}.
-
-With the @sc{gnu} library, you can use @code{free} to free the blocks that
address@hidden, @code{posix_memalign}, and @code{valloc} return.  That
-does not work in @sc{bsd}, address@hidden does not provide any way to free
-such blocks.
-
address@hidden malloc.h
address@hidden BSD
address@hidden {void *} memalign (size_t @var{boundary}, size_t @var{size})
-The @code{memalign} function allocates a block of @var{size} bytes whose
-address is a multiple of @var{boundary}.  The @var{boundary} must be a
-power of two!  The function @code{memalign} works by allocating a
-somewhat larger block, and then returning an address within the block
-that is on the specified boundary.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden POSIX
address@hidden int posix_memalign (void address@hidden, size_t @var{alignment}, 
size_t @var{size})
-The @code{posix_memalign} function is similar to the @code{memalign}
-function in that it returns a buffer of @var{size} bytes aligned to a
-multiple of @var{alignment}.  But it adds one requirement to the
-parameter @var{alignment}: the value must be a power-of-two multiple of
address@hidden (void *)}.
-
-If the function succeeds in allocating memory, a pointer to the allocated
-memory is returned in @address@hidden and the return value is zero.
-Otherwise, the function returns an error value indicating the problem.
-
-This function was introduced in @sc{posix} 1003.1d.
address@hidden deftypefun
-
address@hidden malloc.h stdlib.h
address@hidden BSD
address@hidden {void *} valloc (size_t @var{size})
-Using @code{valloc} is like using @code{memalign} and passing the page
-size as the value of the second argument.  It is implemented like
-this:@footnote{See Loosemore et al., ``Query Memory Parameters'', for more
-information about the memory subsystem.}
-
address@hidden
-void *
-valloc (size_t size)
address@hidden
-  return memalign (getpagesize (), size);
address@hidden
address@hidden smallexample
-
address@hidden deftypefun
-
address@hidden Malloc Tunable Parameters
address@hidden @code{malloc} Tunable Parameters
-
-You can adjust some parameters for dynamic memory allocation with the
address@hidden function.  This function is the general @sc{svid}/@sc{xpg}
-interface, defined in @file{malloc.h}.
address@hidden malloc.h
-
address@hidden int mallopt (int @var{param}, int @var{value})
-When calling @code{mallopt}, the @var{param} argument specifies the
-parameter to be set, and @var{value} the new value to be set.  Possible
-choices for @var{param}, as defined in @file{malloc.h}, are
-
address@hidden @code
address@hidden M_TRIM_THRESHOLD
-This is the minimum size (in bytes) of the topmost, releasable chunk
-that will cause @code{sbrk} to be called with a negative argument in
-order to return memory to the system.
address@hidden M_TOP_PAD
-This parameter determines the amount of extra memory to obtain from the
-system when a call to @code{sbrk} is required.  It also specifies the
-number of bytes to retain when shrinking the heap by calling @code{sbrk}
-with a negative argument.  This provides the necessary hysteresis in
-heap size such that excessive amounts of system calls can be avoided.
address@hidden M_MMAP_THRESHOLD
-All chunks larger than this value are allocated outside the normal
-heap, using the @code{mmap} system call.  This way it is guaranteed
-that the memory for these chunks can be returned to the system on
address@hidden  Requests smaller than this threshold might still
-be allocated via @code{mmap}.
address@hidden M_MMAP_MAX
-The maximum number of chunks to allocate with @code{mmap}.  Setting this
-to zero disables all use of @code{mmap}.
address@hidden table
-
address@hidden deftypefun
-
address@hidden Heap Consistency Checking
address@hidden Heap Consistency Checking
-
address@hidden heap consistency checking
address@hidden consistency checking, of heap
-
-You can ask @code{malloc} to check the consistency of dynamic memory by
-using the @code{mcheck} function.  This function is a @sc{gnu} extension,
-declared in @file{mcheck.h}.
address@hidden mcheck.h
-
address@hidden mcheck.h
address@hidden GNU
address@hidden int mcheck (void (address@hidden) (enum mcheck_status 
@var{status}))
-Calling @code{mcheck} tells @code{malloc} to perform occasional
-consistency checks.  These will catch things such as writing
-past the end of a block that was allocated with @code{malloc}.
-
-The @var{abortfn} argument is the function to call when an inconsistency
-is found.  If you supply a null pointer, then @code{mcheck} uses a
-default function that prints a message and calls @code{abort}
-(@pxref{Aborting a Program}).  The function you supply is called with
-one argument, which says what sort of inconsistency was detected; its
-type is described below.
-
-It is too late to begin allocation checking once you have allocated
-anything with @code{malloc},  so @code{mcheck} does nothing in that
-case.  The function returns @code{-1} if you call it too late, and
address@hidden otherwise (when it is successful).
-
-The easiest way to arrange to call @code{mcheck} early enough is to use
-the option @samp{-lmcheck} when you link your program; then you don't
-need to modify your program source at all.  Alternatively, you might use
-a debugger to insert a call to @code{mcheck} whenever the program is
-started. For example, these gdb commands will automatically call @code{mcheck}
-whenever the program starts:
-
address@hidden
-(gdb) break main
-Breakpoint 1, main (argc=2, argv=0xbffff964) at whatever.c:10
-(gdb) command 1
-Type commands for when breakpoint 1 is hit, one per line.
-End with a line saying just "end".
->call mcheck(0)
->continue
->end
-(gdb) @dots{}
address@hidden smallexample
-
-However, this will only work if no initialization function of any object
-involved calls any of the @code{malloc} functions, since @code{mcheck}
-must be called before the first such function.
-
address@hidden deftypefun
-
address@hidden {enum mcheck_status} mprobe (void address@hidden)
-The @code{mprobe} function lets you explicitly check for inconsistencies
-in a particular allocated block.  You must have already called
address@hidden at the beginning of the program to do its occasional
-checks; calling @code{mprobe} requests an additional consistency check
-to be done at the time of the call.
-
-The argument @var{pointer} must be a pointer returned by @code{malloc}
-or @code{realloc}.  @code{mprobe} returns a value that says what
-inconsistency, if any, was found.  The values are described below.
address@hidden deftypefun
-
address@hidden {Data Type} {enum mcheck_status}
-This enumerated type describes what kind of inconsistency was detected
-in an allocated block, if any.  Here are the possible values:
-
address@hidden @code
address@hidden MCHECK_DISABLED
address@hidden was not called before the first allocation.
-No consistency checking can be done.
address@hidden MCHECK_OK
-No inconsistency was detected.
address@hidden MCHECK_HEAD
-The data immediately before the block were modified.  This commonly
-happens when an array index or pointer is decremented too far.
address@hidden MCHECK_TAIL
-The data immediately after the block were modified.  This commonly
-happens when an array index or pointer is incremented too far.
address@hidden MCHECK_FREE
-The block was already freed.
address@hidden table
address@hidden deftp
-
-Another way to check for and guard against bugs in the use of
address@hidden, @code{realloc} and @code{free} is to set the environment
-variable @code{MALLOC_CHECK_}.  When @code{MALLOC_CHECK_} is set, a
-special (less efficient) implementation is used, which is designed to be
-tolerant against simple errors, such as double calls of @code{free} with
-the same argument, or overruns of a single byte (off-by-one bugs).  Not
-all such errors can be protected against, however, and memory leaks can
-result.  If @code{MALLOC_CHECK_} is set to @code{0}, any detected heap
-corruption is silently ignored; if set to @code{1}, a diagnostic is
-printed on @code{stderr}; if set to @code{2}, @code{abort} is called
-immediately.  This can be useful because otherwise a crash may happen
-much later, and the true cause for the problem is then very hard to
-track down.
-
-There is one problem with @code{MALLOC_CHECK_}; in @sc{suid} or @sc{sgid} 
binaries,
-it could possibly be exploited since, diverging from the normal program
-behavior, it now writes something to the standard error descriptor.
-Therefore, the use of @code{MALLOC_CHECK_} is disabled by default for
address@hidden and @sc{sgid} binaries.  It can be enabled again by the system
-administrator by adding a file @file{/etc/suid-debug} (the content is
-not important---it could be empty).
-
-So, what is the difference between using @code{MALLOC_CHECK_} and linking
-with @samp{-lmcheck}?  @code{MALLOC_CHECK_} is orthogonal with respect to
address@hidden  @samp{-lmcheck} has been added for backward
-compatibility.  Both @code{MALLOC_CHECK_} and @samp{-lmcheck} should
-uncover the same bugs---but using @code{MALLOC_CHECK_}, you don't need to
-recompile your application.
-
address@hidden Hooks for Malloc
address@hidden Memory Allocation Hooks
address@hidden allocation hooks, for @code{malloc}
-
-The @sc{gnu} C Library lets you modify the behavior of @code{malloc},
address@hidden, and @code{free} by specifying appropriate hook
-functions.  You can use these hooks to help you debug programs that use
-dynamic memory allocation, for example.
-
-The hook variables are declared in @file{malloc.h}.
address@hidden malloc.h
-
address@hidden malloc.h
address@hidden GNU
address@hidden __malloc_hook
-The value of this variable is a pointer to the function that
address@hidden uses whenever it is called.  You should define this
-function to look like @code{malloc}:
-
address@hidden
-void address@hidden (size_t @var{size}, const void address@hidden)
address@hidden smallexample
-
-The value of @var{caller} is the return address found on the stack when
-the @code{malloc} function was called.  This value allows you to trace
-the memory consumption of the program.
address@hidden defvar
-
address@hidden malloc.h
address@hidden GNU
address@hidden __realloc_hook
-The value of this variable is a pointer to the function that @code{realloc}
-uses whenever it is called.  You should define this function to look
-like @code{realloc}:
-
address@hidden
-void address@hidden (void address@hidden, size_t @var{size}, const void 
address@hidden)
address@hidden smallexample
-
-The value of @var{caller} is the return address found on the stack when
-the @code{realloc} function was called.  This value allows you to trace the
-memory consumption of the program.
address@hidden defvar
-
address@hidden malloc.h
address@hidden GNU
address@hidden __free_hook
-The value of this variable is a pointer to the function that @code{free}
-uses whenever it is called.  You should define this function to look
-like @code{free}:
-
address@hidden
-void @var{function} (void address@hidden, const void address@hidden)
address@hidden smallexample
-
-The value of @var{caller} is the return address found on the stack when
-the @code{free} function was called.  This value allows you to trace the
-memory consumption of the program.
address@hidden defvar
-
address@hidden malloc.h
address@hidden GNU
address@hidden __memalign_hook
-The value of this variable is a pointer to the function that @code{memalign}
-uses whenever it is called.  You should define this function to look
-like @code{memalign}:
-
address@hidden
-void address@hidden (size_t @var{alignment}, size_t @var{size}, const void 
address@hidden)
address@hidden smallexample
-
-The value of @var{caller} is the return address found on the stack when
-the @code{memalign} function was called.  This value allows you to trace the
-memory consumption of the program.
address@hidden defvar
-
-You must make sure that the function you install as a hook for one of
-these functions does not call that function recursively without
-restoring the old value of the hook first!  Otherwise, your program will
-get stuck in an infinite recursion.  Before calling the function
-recursively, you should make sure to restore all the hooks to their
-previous value.  When coming back from the recursive call, all the hooks
-should be resaved, since a hook might modify itself.
-
address@hidden malloc.h
address@hidden GNU
address@hidden __malloc_initialize_hook
-The value of this variable is a pointer to a function that is called
-once when the @code{malloc} implementation is initialized.  This is a weak
-variable, so it can be overridden in the application with a definition
-like the following:
-
address@hidden
-void (address@hidden) (void) = my_init_hook;
address@hidden smallexample
address@hidden defvar
-
-An issue to look out for is the time at which the @code{malloc} hook functions
-can be safely installed.  If the hook functions call the @code{malloc}-related
-functions recursively, it is necessary that @code{malloc} already have properly
-initialized itself when the function (@code{__malloc_hook}, for example) is
-assigned to.  On the other hand, if the hook functions provide a
-complete @code{malloc} implementation of their own, it is vital that the hooks
-are assigned to @emph{before} the very first @code{malloc} call has
-completed, because otherwise a chunk obtained from the ordinary,
-unhooked @code{malloc} may later be handed to, for example, @code{__free_hook}.
-
-In both cases, the problem can be solved by setting up the hooks from
-within a user-defined function pointed to by
address@hidden the hooks will be set up safely
-at the right time.
-
-Here is an example showing how to use @code{__malloc_hook} and
address@hidden properly.  It installs a function that prints out
-information every time @code{malloc} or @code{free} is called.  We just
-assume here that @code{realloc} and @code{memalign} are not used in our
-program.
-
address@hidden
-/* Prototypes for __malloc_hook, __free_hook */
-#include <malloc.h>
-
-/* Prototypes for our hooks.  */
-static void *my_init_hook (void);
-static void *my_malloc_hook (size_t, const void *);
-static void my_free_hook (void*, const void *);
-
-/* Override initializing hook from the C library. */
-void (*__malloc_initialize_hook) (void) = my_init_hook;
-
-static void
-my_init_hook (void)
address@hidden
-  old_malloc_hook = __malloc_hook;
-  old_free_hook = __free_hook;
-  __malloc_hook = my_malloc_hook;
-  __free_hook = my_free_hook;
address@hidden
-
-static void *
-my_malloc_hook (size_t size, const void *caller)
address@hidden
-  void *result;
-  /* Restore all old hooks */
-  __malloc_hook = old_malloc_hook;
-  __free_hook = old_free_hook;
-  /* Call recursively */
-  result = malloc (size);
-  /* Save underlying hooks */
-  old_malloc_hook = __malloc_hook;
-  old_free_hook = __free_hook;
-  /* @address@hidden might call @code{malloc}, so protect it too.} */
-  printf ("malloc (%u) returns %p\n", (unsigned int) size, result);
-  /* Restore our own hooks */
-  __malloc_hook = my_malloc_hook;
-  __free_hook = my_free_hook;
-  return result;
address@hidden
-
-static void *
-my_free_hook (void *ptr, const void *caller)
address@hidden
-  /* Restore all old hooks */
-  __malloc_hook = old_malloc_hook;
-  __free_hook = old_free_hook;
-  /* Call recursively */
-  free (ptr);
-  /* Save underlying hooks */
-  old_malloc_hook = __malloc_hook;
-  old_free_hook = __free_hook;
-  /* @address@hidden might call @code{free}, so protect it too.} */
-  printf ("freed pointer %p\n", ptr);
-  /* Restore our own hooks */
-  __malloc_hook = my_malloc_hook;
-  __free_hook = my_free_hook;
address@hidden
-
-main ()
address@hidden
-  @dots{}
address@hidden
address@hidden smallexample
-
-The @code{mcheck} function (@pxref{Heap Consistency Checking}) works by
-installing such hooks.
-
address@hidden __morecore, __after_morecore_hook are undocumented
address@hidden It's not clear whether to document them.
-
address@hidden Statistics of Malloc
address@hidden Statistics for Memory Allocation with @code{malloc}
-
address@hidden allocation statistics
-You can get information about dynamic memory allocation by calling the
address@hidden function.  This function and its associated data type
-are declared in @file{malloc.h}; they are an extension of the standard
address@hidden/@sc{xpg} version.
address@hidden malloc.h
-
address@hidden malloc.h
address@hidden GNU
address@hidden {Data Type} {struct mallinfo}
-This structure type is used to return information about the dynamic
-memory allocator.  It contains the following members:
-
address@hidden @code
address@hidden int arena
-This is the total size of memory allocated with @code{sbrk} by
address@hidden, in bytes.
-
address@hidden int ordblks
-This is the number of chunks not in use.  (The memory allocator
-internally gets chunks of memory from the operating system, and then
-carves them up to satisfy individual @code{malloc} requests; see
address@hidden and Malloc}.)
-
address@hidden int smblks
-This field is unused.
-
address@hidden int hblks
-This is the total number of chunks allocated with @code{mmap}.
-
address@hidden int hblkhd
-This is the total size of memory allocated with @code{mmap}, in bytes.
-
address@hidden int usmblks
-This field is unused.
-
address@hidden int fsmblks
-This field is unused.
-
address@hidden int uordblks
-This is the total size of memory occupied by chunks handed out by
address@hidden
-
address@hidden int fordblks
-This is the total size of memory occupied by free (not in use) chunks.
-
address@hidden int keepcost
-This is the size of the topmost releasable chunk that normally
-borders the end of the heap (i.e., the high end of the virtual address
-space's data segment).
-
address@hidden table
address@hidden deftp
-
address@hidden malloc.h
address@hidden SVID
address@hidden {struct mallinfo} mallinfo (void)
-This function returns information about the current dynamic memory usage
-in a structure of type @code{struct mallinfo}.
address@hidden deftypefun
-
address@hidden Summary of Malloc
address@hidden Summary of @code{malloc}-Related Functions
-
-Here is a summary of the functions that work with @code{malloc}:
-
address@hidden @code
address@hidden void *malloc (size_t @var{size})
-Allocate a block of @var{size} bytes (@pxref{Basic Allocation}).
-
address@hidden void free (void address@hidden)
-Free a block previously allocated by @code{malloc} (@pxref{Freeing after
-Malloc}).
-
address@hidden void *realloc (void address@hidden, size_t @var{size})
-Make a block previously allocated by @code{malloc} larger or smaller,
-possibly by copying it to a new location (@pxref{Changing Block Size}).
-
address@hidden void *calloc (size_t @var{count}, size_t @var{eltsize})
-Allocate a block of @var{count} * @var{eltsize} bytes using
address@hidden, and set its contents to zero (@pxref{Allocating Cleared
-Space}).
-
address@hidden void *valloc (size_t @var{size})
-Allocate a block of @var{size} bytes, starting on a page boundary
-(@pxref{Aligned Memory Blocks}).
-
address@hidden void *memalign (size_t @var{size}, size_t @var{boundary})
-Allocate a block of @var{size} bytes, starting on an address that is a
-multiple of @var{boundary} (@pxref{Aligned Memory Blocks}).
-
address@hidden int mallopt (int @var{param}, int @var{value})
-Adjust a tunable parameter (@pxref{Malloc Tunable Parameters}).
-
address@hidden int mcheck (void (address@hidden) (void))
-Tell @code{malloc} to perform occasional consistency checks on
-dynamically allocated memory, and to call @var{abortfn} when an
-inconsistency is found (@pxref{Heap Consistency Checking}).
-
address@hidden void *(*__malloc_hook) (size_t @var{size}, const void 
address@hidden)
-This is a pointer to a function that @code{malloc} uses whenever it is called.
-
address@hidden void *(*__realloc_hook) (void address@hidden, size_t @var{size}, 
const void address@hidden)
-This is a pointer to a function that @code{realloc} uses whenever it is called.
-
address@hidden void (*__free_hook) (void address@hidden, const void 
address@hidden)
-This is a pointer to a function that @code{free} uses whenever it is called.
-
address@hidden void (*__memalign_hook) (size_t @var{size}, size_t 
@var{alignment}, const void address@hidden)
-This is a pointer to a function that @code{memalign} uses whenever it is
-called.
-
address@hidden struct mallinfo mallinfo (void)
-Return information about the current dynamic memory usage
-(@pxref{Statistics of Malloc}).
address@hidden table
-
address@hidden Allocation Debugging
address@hidden Allocation Debugging
address@hidden allocation debugging
address@hidden malloc debugger
-
-A complicated task when programming with languages that do not use
-garbage-collected dynamic memory allocation is to find memory leaks.
-Long running programs must assure that dynamically allocated objects are
-freed at the end of their lifetime.  If this does not happen, the system
-runs out of memory, sooner or later.
-
-The @code{malloc} implementation in the @sc{gnu} C Library provides some
-simple means to detect such leaks and obtain some information on their
-location.  To do this the application must be started in a special mode,
-which is enabled by an environment variable.  There are no speed
-penalties for the program if the debugging mode is not enabled.
-
address@hidden Tracing malloc
address@hidden How to Install the Tracing Functionality
-
address@hidden mcheck.h
address@hidden GNU
address@hidden void mtrace (void)
-When the @code{mtrace} function is called, it looks for an environment
-variable named @code{MALLOC_TRACE}.  This variable is supposed to
-contain a valid file name.  The user must have write access.  If the
-file already exists, it is truncated.  If the environment variable is not
-set or it does not name a valid file that can be opened for writing,
-nothing is done.  The behavior of, for example, @code{malloc}, is not changed.
-For obvious reasons, this also happens if the application is installed
-with the @sc{suid} or @sc{sgid} bit set.
-
-If the named file is successfully opened, @code{mtrace} installs special
-handlers for the functions @code{malloc}, @code{realloc} and @code{free}
-(@pxref{Hooks for Malloc}).  From then on, all uses of these functions
-are traced and protocolled into the file.  There is now of course a
-speed penalty for all calls to the traced functions, so tracing should
-not be enabled during normal use.
-
-This function is a @sc{gnu} extension and generally not available on other
-systems.  The prototype can be found in @file{mcheck.h}.
address@hidden deftypefun
-
address@hidden mcheck.h
address@hidden GNU
address@hidden void muntrace (void)
-The @code{muntrace} function can be called after @code{mtrace} was used
-to enable tracing the @code{malloc} calls.  If no (successful) call of
address@hidden was made, @code{muntrace} does nothing.
-
-Otherwise, it deinstalls the handlers for @code{malloc}, @code{realloc}
-and @code{free}, then closes the protocol file.  No calls are
-protocolled anymore and the program runs again at full speed.
-
-This function is a @sc{gnu} extension and generally not available on other
-systems.  The prototype can be found in @file{mcheck.h}.
address@hidden deftypefun
-
address@hidden Using the Memory Debugger
address@hidden Example Program Excerpts
-
-Even though the tracing functionality does not influence the run-time
-behavior of the program, it is not a good idea to call @code{mtrace} in
-all programs.  Just imagine that you debug a program using @code{mtrace}
-and all other programs used in the debugging session also trace their
address@hidden calls.  The output file would be the same for all programs
-and thus unusable.  Therefore, one should call @code{mtrace} only if
-compiled for debugging.  A program could therefore start like this:
-
address@hidden
-#include <mcheck.h>
-
-int
-main (int argc, char *argv[])
address@hidden
-#ifdef DEBUGGING
-  mtrace ();
-#endif
-  @dots{}
address@hidden
address@hidden smallexample
-
-This is all that is needed if you want to trace the calls during the
-whole run-time of the program.  Alternatively, you can stop the tracing
-at any time with a call to @code{muntrace}.  It is even possible to
-restart the tracing again with a new call to @code{mtrace}.  But this
-can cause unreliable results, since there may be calls of the functions
-that are not called.  Please note that not only the application uses the
-traced functions---libraries (including the C library itself) also use
-these functions.
-
-This last point is also why it is not a good idea to call @code{muntrace}
-before the program terminates.  The libraries are informed about the
-termination of the program only after the program returns from
address@hidden or calls @code{exit} and so cannot free the memory they use
-before this time.
-
-So the best thing you can do is to call @code{mtrace} as the very first
-function in the program and never call @code{muntrace}.  So the program
-traces almost all uses of the @code{malloc} functions (except those
-calls that are executed by constructors of the program or used
-libraries).
-
address@hidden Tips for the Memory Debugger
address@hidden Some More or Less Clever Ideas
-
-You know the situation.  The program is prepared for debugging and in
-all debugging sessions it runs well.  But once it is started without
-debugging the error shows up.  A typical example is a memory leak that
-becomes visible only when we turn off the debugging.  If you foresee
-such situations you can still win.  Simply use something equivalent to
-the following little program:
-
address@hidden
-#include <mcheck.h>
-#include <signal.h>
-
-static void
-enable (int sig)
address@hidden
-  mtrace ();
-  signal (SIGUSR1, enable);
address@hidden
-
-static void
-disable (int sig)
address@hidden
-  muntrace ();
-  signal (SIGUSR2, disable);
address@hidden
-
-int
-main (int argc, char *argv[])
address@hidden
-  @dots{}
-
-  signal (SIGUSR1, enable);
-  signal (SIGUSR2, disable);
-
-  @dots{}
address@hidden
address@hidden smallexample
-
-The user can start the memory debugger any time she wants if the program
-was started with @code{MALLOC_TRACE} set in the environment.  The output
-will of course not show the allocations that happened before the first
-signal, but if there is a memory leak, this will nevertheless show up.
-
address@hidden Interpreting the traces
address@hidden Interpreting the Traces
-
-If you take a look at the output it will look similar to this:
-
address@hidden
-= Start
-@ [0x8048209] - 0x8064cc8
-@ [0x8048209] - 0x8064ce0
-@ [0x8048209] - 0x8064cf8
-@ [0x80481eb] + 0x8064c48 0x14
-@ [0x80481eb] + 0x8064c60 0x14
-@ [0x80481eb] + 0x8064c78 0x14
-@ [0x80481eb] + 0x8064c90 0x14
-= End
address@hidden smallexample
-
-What this all means is not really important since the trace file is not
-meant to be read by a human.  Therefore no attention is given to
-readability.  Instead there is a program that comes with the @sc{gnu} C
-library that interprets the traces and outputs a summary in a
-user-friendly way.  The program is called @code{mtrace} (it is in fact a
-Perl script) and it takes one or two arguments.  In any case, the name
-of the file with the trace output must be specified.  If an optional
-argument precedes the name of the trace file, this must be the name of
-the program that generated the trace.
-
address@hidden
-drepper$ mtrace tst-mtrace log
-No memory leaks.
address@hidden smallexample
-
-In this case, the program @code{tst-mtrace} was run and it produced a
-trace file @file{log}.  The message printed by @code{mtrace} shows there
-are no problems with the code---all allocated memory was freed
-afterwards.
-
-If we call @code{mtrace} on the example trace given above, we would get a
-different output:
-
address@hidden
-drepper$ mtrace errlog
-- 0x08064cc8 Free 2 was never alloc'd 0x8048209
-- 0x08064ce0 Free 3 was never alloc'd 0x8048209
-- 0x08064cf8 Free 4 was never alloc'd 0x8048209
-
-Memory not freed:
------------------
-   Address     Size     Caller
-0x08064c48     0x14  at 0x80481eb
-0x08064c60     0x14  at 0x80481eb
-0x08064c78     0x14  at 0x80481eb
-0x08064c90     0x14  at 0x80481eb
address@hidden smallexample
-
-We have called @code{mtrace} with only one argument, so the script
-has no chance to find out what is meant with the addresses given in the
-trace.  We can do better:
-
address@hidden
-drepper$ mtrace tst errlog
-- 0x08064cc8 Free 2 was never alloc'd /home/drepper/tst.c:39
-- 0x08064ce0 Free 3 was never alloc'd /home/drepper/tst.c:39
-- 0x08064cf8 Free 4 was never alloc'd /home/drepper/tst.c:39
-
-Memory not freed:
------------------
-   Address     Size     Caller
-0x08064c48     0x14  at /home/drepper/tst.c:33
-0x08064c60     0x14  at /home/drepper/tst.c:33
-0x08064c78     0x14  at /home/drepper/tst.c:33
-0x08064c90     0x14  at /home/drepper/tst.c:33
address@hidden smallexample
-
-Suddenly the output makes much more sense and the user can see
-immediately where the function calls causing the trouble can be found.
-
-Interpreting this output is not complicated.  There are at most two
-different situations being detected.  First, @code{free} was called for
-pointers that were never returned by one of the allocation functions.
-This is usually a very bad problem and what this looks like is shown in
-the first three lines of the output.  Situations like this are quite
-rare and if they appear show up drastically---the program normally
-crashes.
-
-The other situation, which is much harder to detect, is memory leaks.  As
-you can see in the output, the @code{mtrace} function collects all this
-information and so can say that the program calls an allocation function
-from line 33 in the source file @file{/home/drepper/tst-mtrace.c} four
-times without freeing this memory before the program terminates.
-Whether this is a real problem remains to be investigated.
-
address@hidden Obstacks
address@hidden Obstacks
address@hidden obstacks
-
-An @dfn{obstack} is a pool of memory containing a stack of objects.  You
-can create any number of separate obstacks, and then allocate objects in
-specified obstacks.  Within each obstack, the last object allocated must
-always be the first one freed, but distinct obstacks are independent of
-each other.
-
-Aside from this one constraint on the order of freeing, obstacks are totally
-general---an obstack can contain any number of objects of any size.  They
-are implemented with macros, so allocation is usually very fast as long as
-the objects are usually small.  And the only space overhead per object is
-the padding needed to start each object on a suitable boundary.
-
address@hidden Creating Obstacks
address@hidden Creating Obstacks
-
-The utilities for manipulating obstacks are declared in the header
-file @file{obstack.h}.
address@hidden obstack.h
-
address@hidden obstack.h
address@hidden GNU
address@hidden {Data Type} {struct obstack}
-An obstack is represented by a data structure of type @code{struct
-obstack}.  This structure has a small fixed size; it records the status
-of the obstack and how to find the space in which objects are allocated.
-It does not contain any of the objects themselves.  You should not try
-to access the contents of the structure directly; use only the functions
-described in this chapter.
address@hidden deftp
-
-You can declare variables of type @code{struct obstack} and use them as
-obstacks, or you can allocate obstacks dynamically like any other kind
-of object.  Dynamic allocation of obstacks allows your program to have a
-variable number of different stacks.  (You can even allocate an
-obstack structure in another obstack, but this is rarely useful.)
-
-All the functions that work with obstacks require you to specify which
-obstack to use.  You do this with a pointer of type @code{struct obstack
-*}.  In the following, we often say "an obstack" when, strictly
-speaking, the object at hand is such a pointer.
-
-The objects in the obstack are packed into large blocks called
address@hidden  The @code{struct obstack} structure points to a chain of
-the chunks currently in use.
-
-The obstack library obtains a new chunk whenever you allocate an object
-that won't fit in the previous chunk.  Since the obstack library manages
-chunks automatically, you don't need to pay much attention to them, but
-you do need to supply a function that the obstack library should use to
-get a chunk.  Usually you supply a function that uses @code{malloc}
-directly or indirectly.  You must also supply a function to free a chunk.
-These matters are described in the following section.
-
address@hidden Preparing for Obstacks
address@hidden Preparing for Using Obstacks
-
-Each source file in which you plan to use the obstack functions
-must include the header file @file{obstack.h}, like this:
-
address@hidden
-#include <obstack.h>
address@hidden smallexample
-
address@hidden obstack_chunk_alloc
address@hidden obstack_chunk_free
-Also, if the source file uses the macro @code{obstack_init}, it must
-declare or define two functions or macros that will be called by the
-obstack library.  One, @code{obstack_chunk_alloc}, is used to allocate
-the chunks of memory into which objects are packed.  The other,
address@hidden, is used to return chunks when the objects in
-them are freed.  These macros should appear before any use of obstacks
-in the source file.
-
-Usually these are defined to use @code{malloc} via the intermediary
address@hidden (@pxref{Unconstrained Allocation}).  This is done with
-the following pair of macro definitions:
-
address@hidden
-#define obstack_chunk_alloc xmalloc
-#define obstack_chunk_free free
address@hidden smallexample
-
address@hidden
-Though the memory you get using obstacks really comes from @code{malloc},
-using obstacks is faster because @code{malloc} is called less often, for
-larger blocks of memory (@pxref{Obstack Chunks}, for full details).
-
-At run time, before the program can use a @code{struct obstack} object
-as an obstack, it must initialize the obstack by calling
address@hidden
-
address@hidden obstack.h
address@hidden GNU
address@hidden int obstack_init (struct obstack address@hidden)
-Initialize obstack @var{obstack-ptr} for allocation of objects.  This
-function calls the obstack's @code{obstack_chunk_alloc} function.  If
-allocation of memory fails, the function pointed to by
address@hidden is called.  The @code{obstack_init}
-function always returns 1. @strong{Compatibility Note:} Former versions of
-obstack returned 0 if allocation failed.)
address@hidden deftypefun
-
-Here are two examples of how to allocate the space for an obstack and
-initialize it; first, an obstack that is a static variable:
-
address@hidden
-static struct obstack myobstack;
address@hidden
-obstack_init (&myobstack);
address@hidden smallexample
-
address@hidden
-second, an obstack that is itself dynamically allocated:
-
address@hidden
-struct obstack *myobstack_ptr
-  = (struct obstack *) xmalloc (sizeof (struct obstack));
-
-obstack_init (myobstack_ptr);
address@hidden smallexample
-
address@hidden obstack.h
address@hidden GNU
address@hidden obstack_alloc_failed_handler
-The value of this variable is a pointer to a function that
address@hidden uses when @code{obstack_chunk_alloc} fails to allocate
-memory.  The default action is to print a message and abort.  You should
-supply a function that either calls @code{exit} (@pxref{Program
-Termination}) or @address@hidden, ``Nonlocal Exits''.} and
-doesn't return.
-
address@hidden
-void my_obstack_alloc_failed (void)
address@hidden
-obstack_alloc_failed_handler = &my_obstack_alloc_failed;
address@hidden smallexample
-
address@hidden defvar
-
address@hidden Allocation in an Obstack
address@hidden Allocation in an Obstack
address@hidden allocation (obstacks)
-
-The most direct way to allocate an object in an obstack is with
address@hidden, which is invoked almost like @code{malloc}.
-
address@hidden obstack.h
address@hidden GNU
address@hidden {void *} obstack_alloc (struct obstack address@hidden, int 
@var{size})
-This allocates an uninitialized block of @var{size} bytes in an obstack
-and returns its address.  Here @var{obstack-ptr} specifies which obstack
-to allocate the block in; it is the address of the @code{struct obstack}
-object that represents the obstack.  Each obstack function or macro
-requires you to specify an @var{obstack-ptr} as the first argument.
-
-This function calls the obstack's @code{obstack_chunk_alloc} function if
-it needs to allocate a new chunk of memory; it calls
address@hidden if allocation of memory by
address@hidden failed.
address@hidden deftypefun
-
-For example, here is a function that allocates a copy of a string @var{str}
-in a specific obstack, which is in the variable @code{string_obstack}:
-
address@hidden
-struct obstack string_obstack;
-
-char *
-copystring (char *string)
address@hidden
-  size_t len = strlen (string) + 1;
-  char *s = (char *) obstack_alloc (&string_obstack, len);
-  memcpy (s, string, len);
-  return s;
address@hidden
address@hidden smallexample
-
-To allocate a block with specified contents, use the function
address@hidden, declared like this:
-
address@hidden obstack.h
address@hidden GNU
address@hidden {void *} obstack_copy (struct obstack address@hidden, void 
address@hidden, int @var{size})
-This allocates a block and initializes it by copying @var{size}
-bytes of data starting at @var{address}.  It calls
address@hidden if allocation of memory by
address@hidden failed.
address@hidden deftypefun
-
address@hidden obstack.h
address@hidden GNU
address@hidden {void *} obstack_copy0 (struct obstack address@hidden, void 
address@hidden, int @var{size})
-Like @code{obstack_copy}, but appends an extra byte containing a null
-character.  This extra byte is not counted in the argument @var{size}.
address@hidden deftypefun
-
-The @code{obstack_copy0} function is convenient for copying a sequence
-of characters into an obstack as a null-terminated string.  Here is an
-example of its use:
-
address@hidden
-char *
-obstack_savestring (char *addr, int size)
address@hidden
-  return obstack_copy0 (&myobstack, addr, size);
address@hidden
address@hidden smallexample
-
address@hidden
-Contrast this with the previous example of @code{savestring} using
address@hidden (@pxref{Basic Allocation}).
-
address@hidden Freeing Obstack Objects
address@hidden Freeing Objects in an Obstack
address@hidden freeing (obstacks)
-
-To free an object allocated in an obstack, use the function
address@hidden  Since the obstack is a stack of objects, freeing
-one object automatically frees all other objects allocated more recently
-in the same obstack.
-
address@hidden obstack.h
address@hidden GNU
address@hidden void obstack_free (struct obstack address@hidden, void 
address@hidden)
-If @var{object} is a null pointer, everything allocated in the obstack
-is freed.  Otherwise, @var{object} must be the address of an object
-allocated in the obstack.  Then @var{object} is freed, along with
-everything allocated in @var{obstack} since @var{object}.
address@hidden deftypefun
-
-Note that if @var{object} is a null pointer, the result is an
-uninitialized obstack.  To free all memory in an obstack but leave it
-valid for further allocation, call @code{obstack_free} with the address
-of the first object allocated on the obstack:
-
address@hidden
-obstack_free (obstack_ptr, first_object_allocated_ptr);
address@hidden smallexample
-
-Recall that the objects in an obstack are grouped into chunks.  When all
-the objects in a chunk become free, the obstack library automatically
-frees the chunk (@pxref{Preparing for Obstacks}).  Then other
-obstacks, or non-obstack allocation, can reuse the space of the chunk.
-
address@hidden Obstack Functions
address@hidden Obstack Functions and Macros
address@hidden macros
-
-The interfaces for using obstacks may be defined either as functions or
-as macros, depending on the compiler.  The obstack facility works with
-all C compilers, including both @address@hidden C} and traditional C, but 
there are
-precautions you must take if you plan to use compilers other than @sc{gnu} C.
-
-If you are using an old-fashioned @address@hidden C} compiler, all the obstack
-"functions" are actually defined only as macros.  You can call these
-macros like functions, but you cannot use them in any other way (for
-example, you cannot take their address).
-
-Calling the macros requires a special precaution---the first
-operand (the obstack pointer) may not contain any side effects, because
-it may be computed more than once.  For example, if you write this:
-
address@hidden
-obstack_alloc (get_obstack (), 4);
address@hidden smallexample
-
address@hidden
-you will find that @code{get_obstack} may be called several times.
-If you use @code{*obstack_list_ptr++} as the obstack pointer argument,
-you will get very strange results, since the incrementation may occur
-several times.
-
-In @address@hidden C}, each function has both a macro definition and a function
-definition.  The function definition is used if you take the address of the
-function without calling it.  An ordinary call uses the macro definition by
-default, but you can request the function definition instead by writing the
-function name in parentheses, as shown here:
-
address@hidden
-char *x;
-void *(*funcp) ();
-/* @r{Use the macro}.  */
-x = (char *) obstack_alloc (obptr, size);
-/* @r{Call the function}.  */
-x = (char *) (obstack_alloc) (obptr, size);
-/* @r{Take the address of the function}.  */
-funcp = obstack_alloc;
address@hidden smallexample
-
address@hidden
-This is the same situation that exists in @address@hidden C} for the standard 
library
-functions (@pxref{Macro Definitions}).
-
address@hidden:} When you do use the macros, you must observe the
-precaution of avoiding side effects in the first operand, even in 
@address@hidden C}.
-
-If you use the @sc{gnu} C Compiler, this precaution is not necessary, because
-various language extensions in @sc{gnu} C permit defining the macros so as to
-compute each argument only once.
-
address@hidden Growing Objects
address@hidden Growing Objects
address@hidden growing objects (in obstacks)
address@hidden changing the size of a block (obstacks)
-
-Because memory in obstack chunks is used sequentially, it is possible to
-build up an object step-by-step, adding one or more bytes at a time to the
-end of the object.  With this technique, you do not need to know how much
-data you will put in the object until you come to the end of it.  We call
-this the technique of @dfn{growing objects}.  The special functions
-for adding data to the growing object are described in this section.
-
-You don't need to do anything special when you start to grow an object.
-Using one of the functions to add data to the object automatically
-starts it.  However, it is necessary to say explicitly when the object is
-finished.  This is done with the function @code{obstack_finish}.
-
-The actual address of the object thus built up is not known until the
-object is finished.  Until then, it always remains possible that you will
-add so much data that the object must be copied into a new chunk.
-
-While the obstack is in use for a growing object, you cannot use it for
-ordinary allocation of another object.  If you try to do so, the space
-already added to the growing object will become part of the other object.
-
address@hidden obstack.h
address@hidden GNU
address@hidden void obstack_blank (struct obstack address@hidden, int 
@var{size})
-The most basic function for adding to a growing object is
address@hidden, which adds space without initializing it.
address@hidden deftypefun
-
address@hidden obstack.h
address@hidden GNU
address@hidden void obstack_grow (struct obstack address@hidden, void 
address@hidden, int @var{size})
-To add a block of initialized space, use @code{obstack_grow}, which is
-the growing-object analogue of @code{obstack_copy}.  It adds @var{size}
-bytes of data to the growing object, copying the contents from
address@hidden
address@hidden deftypefun
-
address@hidden obstack.h
address@hidden GNU
address@hidden void obstack_grow0 (struct obstack address@hidden, void 
address@hidden, int @var{size})
-This is the growing-object analogue of @code{obstack_copy0}.  It adds
address@hidden bytes copied from @var{data}, followed by an additional null
-character.
address@hidden deftypefun
-
address@hidden obstack.h
address@hidden GNU
address@hidden void obstack_1grow (struct obstack address@hidden, char @var{c})
-To add one character at a time, use the function @code{obstack_1grow}.
-It adds a single byte containing @var{c} to the growing object.
address@hidden deftypefun
-
address@hidden obstack.h
address@hidden GNU
address@hidden void obstack_ptr_grow (struct obstack address@hidden, void 
address@hidden)
-Adding the value of a pointer one can use the function
address@hidden  It adds @code{sizeof (void *)} bytes
-containing the value of @var{data}.
address@hidden deftypefun
-
address@hidden obstack.h
address@hidden GNU
address@hidden void obstack_int_grow (struct obstack address@hidden, int 
@var{data})
-A single value of type @code{int} can be added by using the
address@hidden function.  It adds @code{sizeof (int)} bytes to
-the growing object and initializes them with the value of @var{data}.
address@hidden deftypefun
-
address@hidden obstack.h
address@hidden GNU
address@hidden {void *} obstack_finish (struct obstack address@hidden)
-When you are finished growing the object, use the function
address@hidden to close it off and return its final address.
-
-Once you have finished the object, the obstack is available for ordinary
-allocation or for growing another object.
-
-This function can return a null pointer under the same conditions as
address@hidden (@pxref{Allocation in an Obstack}).
address@hidden deftypefun
-
-When you build an object by growing it, you will probably need to know
-afterward how long it became.  You need not keep track of this as you grow
-the object, because you can find out the length from the obstack just
-before finishing the object with the function @code{obstack_object_size},
-declared as follows:
-
address@hidden obstack.h
address@hidden GNU
address@hidden int obstack_object_size (struct obstack address@hidden)
-This function returns the current size of the growing object, in bytes.
-Remember to call this function @emph{before} finishing the object.
-After it is finished, @code{obstack_object_size} will return zero.
address@hidden deftypefun
-
-If you have started growing an object and wish to cancel it, you should
-finish it and then free it, like this:
-
address@hidden
-obstack_free (obstack_ptr, obstack_finish (obstack_ptr));
address@hidden smallexample
-
address@hidden
-This has no effect if no object was growing.
-
address@hidden shrinking objects
-You can use @code{obstack_blank} with a negative size argument to make
-the current object smaller.  Just don't try to shrink it beyond zero
-length---there's no telling what will happen if you do that.
-
address@hidden Extra-Fast Growing
address@hidden Extra-Fast Growing Objects
address@hidden efficiency and obstacks
-
-The usual functions for growing objects incur overhead for checking
-whether there is room for the new growth in the current chunk.  If you
-are frequently constructing objects in small steps of growth, this
-overhead can be significant.
-
-You can reduce the overhead by using special "fast growth"
-functions that grow the object without checking.  In order to have a
-robust program, you must do the checking yourself.  If you do this checking
-in the simplest way each time you are about to add data to the object, you
-have not saved anything, because that is what the ordinary growth
-functions do.  But if you can arrange to check less often, or check
-more efficiently, then you make the program faster.
-
-The function @code{obstack_room} returns the amount of room available
-in the current chunk.  It is declared as follows:
-
address@hidden obstack.h
address@hidden GNU
address@hidden int obstack_room (struct obstack address@hidden)
-This returns the number of bytes that can be added safely to the current
-growing object (or to an object about to be started) in obstack
address@hidden using the fast-growth functions.
address@hidden deftypefun
-
-While you know there is room, you can use these fast-growth functions
-for adding data to a growing object:
-
address@hidden obstack.h
address@hidden GNU
address@hidden void obstack_1grow_fast (struct obstack address@hidden, char 
@var{c})
-The function @code{obstack_1grow_fast} adds one byte containing the
-character @var{c} to the growing object in obstack @var{obstack-ptr}.
address@hidden deftypefun
-
address@hidden obstack.h
address@hidden GNU
address@hidden void obstack_ptr_grow_fast (struct obstack address@hidden, void 
address@hidden)
-The function @code{obstack_ptr_grow_fast} adds @code{sizeof (void *)}
-bytes containing the value of @var{data} to the growing object in
-obstack @var{obstack-ptr}.
address@hidden deftypefun
-
address@hidden obstack.h
address@hidden GNU
address@hidden void obstack_int_grow_fast (struct obstack address@hidden, int 
@var{data})
-The function @code{obstack_int_grow_fast} adds @code{sizeof (int)} bytes
-containing the value of @var{data} to the growing object in obstack
address@hidden
address@hidden deftypefun
-
address@hidden obstack.h
address@hidden GNU
address@hidden void obstack_blank_fast (struct obstack address@hidden, int 
@var{size})
-The function @code{obstack_blank_fast} adds @var{size} bytes to the
-growing object in obstack @var{obstack-ptr} without initializing them.
address@hidden deftypefun
-
-When you check for space using @code{obstack_room} and there is not
-enough room for what you want to add, the fast-growth functions
-are not safe.  In this case, simply use the corresponding ordinary
-growth function instead.  Very soon this will copy the object to a
-new chunk; then there will be lots of room available again.
-
-So, each time you use an ordinary growth function, check afterward for
-sufficient space using @code{obstack_room}.  Once the object is copied
-to a new chunk, there will be plenty of space again, so the program will
-start using the fast-growth functions again.
-
-Here is an example:
-
address@hidden
-void
-add_string (struct obstack *obstack, const char *ptr, int len)
address@hidden
-  while (len > 0)
-    @{
-      int room = obstack_room (obstack);
-      if (room == 0)
-        @{
-          /* @r{Not enough room. Add one character slowly,}
-             @r{which may copy to a new chunk and make room.}  */
-          obstack_1grow (obstack, *ptr++);
-          len--;
-        @}
-      else
-        @{
-          if (room > len)
-            room = len;
-          /* @r{Add fast as much as we have room for.} */
-          len -= room;
-          while (room-- > 0)
-            obstack_1grow_fast (obstack, *ptr++);
-        @}
-    @}
address@hidden
-
address@hidden smallexample
-
address@hidden Status of an Obstack
address@hidden Status of an Obstack
address@hidden obstack status
address@hidden status of obstack
-
-Here are functions that provide information on the current status of
-allocation in an obstack.  You can use them to learn about an object while
-still growing it.
-
address@hidden obstack.h
address@hidden GNU
address@hidden {void *} obstack_base (struct obstack address@hidden)
-This function returns the tentative address of the beginning of the
-currently growing object in @var{obstack-ptr}.  If you finish the object
-immediately, it will have that address.  If you make it larger first, it
-may outgrow the current chunk---then its address will change!
-
-If no object is growing, this value says where the next object you
-allocate will start (once again assuming it fits in the current
-chunk).
address@hidden deftypefun
-
address@hidden obstack.h
address@hidden GNU
address@hidden {void *} obstack_next_free (struct obstack address@hidden)
-This function returns the address of the first free byte in the current
-chunk of obstack @var{obstack-ptr}.  This is the end of the currently
-growing object.  If no object is growing, @code{obstack_next_free}
-returns the same value as @code{obstack_base}.
address@hidden deftypefun
-
address@hidden obstack.h
address@hidden GNU
address@hidden int obstack_object_size (struct obstack address@hidden)
-This function returns the size in bytes of the currently growing object.
-This is equivalent to:
-
address@hidden
-obstack_next_free (@var{obstack-ptr}) - obstack_base (@var{obstack-ptr})
address@hidden smallexample
address@hidden deftypefun
-
address@hidden Obstacks Data Alignment
address@hidden Alignment of Data in Obstacks
address@hidden alignment (in obstacks)
-
-Each obstack has an @dfn{alignment boundary}; each object allocated in
-the obstack automatically starts on an address that is a multiple of the
-specified boundary.  By default, this boundary is 4 bytes.
-
-To access an obstack's alignment boundary, use the macro
address@hidden, whose function prototype looks like
-this:
-
address@hidden obstack.h
address@hidden GNU
address@hidden Macro int obstack_alignment_mask (struct obstack address@hidden)
-The value is a bit mask; a bit that is 1 indicates that the corresponding
-bit in the address of an object should be 0.  The mask value should be one
-less than a power of 2; the effect is that all object addresses are
-multiples of that power of 2.  The default value of the mask is 3, so that
-addresses are multiples of 4.  A mask value of 0 means an object can start
-on any multiple of 1 (that is, no alignment is required).
-
-The expansion of the macro @code{obstack_alignment_mask} is an lvalue,
-so you can alter the mask by assignment.  For example, this statement:
-
address@hidden
-obstack_alignment_mask (obstack_ptr) = 0;
address@hidden smallexample
-
address@hidden
-has the effect of turning off alignment processing in the specified obstack.
address@hidden deftypefn
-
-Note that a change in alignment mask does not take effect until
address@hidden the next time an object is allocated or finished in the
-obstack.  If you are not growing an object, you can make the new
-alignment mask take effect immediately by calling @code{obstack_finish}.
-This will finish a zero-length object and then do proper alignment for
-the next object.
-
address@hidden Obstack Chunks
address@hidden Obstack Chunks
address@hidden efficiency of chunks
address@hidden chunks
-
-Obstacks work by allocating space for themselves in large chunks, and
-then parceling out space in the chunks to satisfy your requests.  Chunks
-are normally 4096 bytes long unless you specify a different chunk size.
-The chunk size includes 8 bytes of overhead that are not actually used
-for storing objects.  Regardless of the specified size, longer chunks
-will be allocated when necessary for long objects.
-
-The obstack library allocates chunks by calling the function
address@hidden, which you must define.  When a chunk is no
-longer needed because you have freed all the objects in it, the obstack
-library frees the chunk by calling @code{obstack_chunk_free}, which you
-must also define.
-
-These two must be defined (as macros) or declared (as functions) in each
-source file that uses @code{obstack_init} (@pxref{Creating Obstacks}).
-Most often they are defined as macros like this:
-
address@hidden
-#define obstack_chunk_alloc malloc
-#define obstack_chunk_free free
address@hidden smallexample
-
-Note that these are simple macros (no arguments).  Macro definitions with
-arguments will not work!  It is necessary that @code{obstack_chunk_alloc}
-or @code{obstack_chunk_free}, alone, expand into a function name if it is
-not itself a function name.
-
-If you allocate chunks with @code{malloc}, the chunk size should be a
-power of 2.  The default chunk size, 4096, was chosen because it is long
-enough to satisfy many typical requests on the obstack yet short enough
-not to waste too much memory in the portion of the last chunk not yet used.
-
address@hidden obstack.h
address@hidden GNU
address@hidden Macro int obstack_chunk_size (struct obstack address@hidden)
-This returns the chunk size of the given obstack.
address@hidden deftypefn
-
-Since this macro expands to an lvalue, you can specify a new chunk size by
-assigning it a new value.  Doing so does not affect the chunks already
-allocated, but will change the size of chunks allocated for that particular
-obstack in the future.  It is unlikely to be useful to make the chunk size
-smaller, but making it larger might improve efficiency if you are
-allocating many objects whose size is comparable to the chunk size.  Here
-is how to do so cleanly:
-
address@hidden
-if (obstack_chunk_size (obstack_ptr) < @var{new-chunk-size})
-  obstack_chunk_size (obstack_ptr) = @var{new-chunk-size};
address@hidden smallexample
-
address@hidden Summary of Obstacks
address@hidden Summary of Obstack Functions
-
-Here is a summary of all the functions associated with obstacks.  Each
-takes the address of an obstack (@code{struct obstack *}) as its first
-argument.
-
address@hidden @code
address@hidden void obstack_init (struct obstack address@hidden)
-Initialize use of an obstack (@pxref{Creating Obstacks}).
-
address@hidden void *obstack_alloc (struct obstack address@hidden, int 
@var{size})
-Allocate an object of @var{size} uninitialized bytes (@pxref{Allocation
-in an Obstack}).
-
address@hidden void *obstack_copy (struct obstack address@hidden, void 
address@hidden, int @var{size})
-Allocate an object of @var{size} bytes, with contents copied from
address@hidden (@pxref{Allocation in an Obstack}).
-
address@hidden void *obstack_copy0 (struct obstack address@hidden, void 
address@hidden, int @var{size})
-Allocate an object of @var{size}+1 bytes, with @var{size} of them copied
-from @var{address}, followed by a null character at the end
-(@pxref{Allocation in an Obstack}).
-
address@hidden void obstack_free (struct obstack address@hidden, void 
address@hidden)
-Free @var{object} and everything allocated in the specified obstack
-more recently than @var{object} (@pxref{Freeing Obstack Objects}).
-
address@hidden void obstack_blank (struct obstack address@hidden, int 
@var{size})
-Add @var{size} uninitialized bytes to a growing object (@pxref{Growing 
Objects}).
-
address@hidden void obstack_grow (struct obstack address@hidden, void 
address@hidden, int @var{size})
-Add @var{size} bytes, copied from @var{address}, to a growing object 
(@pxref{Growing Objects}).
-
address@hidden void obstack_grow0 (struct obstack address@hidden, void 
address@hidden, int @var{size})
-Add @var{size} bytes, copied from @var{address}, to a growing object,
-and then add another byte containing a null character (@pxref{Growing
-Objects}).
-
address@hidden void obstack_1grow (struct obstack address@hidden, char 
@var{data-char})
-Add one byte containing @var{data-char} to a growing object (@pxref{Growing 
Objects}).
-
address@hidden void *obstack_finish (struct obstack address@hidden)
-Finalize the object that is growing and return its permanent address
-(@pxref{Growing Objects}).
-
address@hidden int obstack_object_size (struct obstack address@hidden)
-Get the current size of the currently growing object (@pxref{Growing
-Objects}).
-
address@hidden void obstack_blank_fast (struct obstack address@hidden, int 
@var{size})
-Add @var{size} uninitialized bytes to a growing object without checking
-that there is enough room (@pxref{Extra-Fast Growing}).
-
address@hidden void obstack_1grow_fast (struct obstack address@hidden, char 
@var{data-char})
-Add one byte containing @var{data-char} to a growing object without
-checking that there is enough room (@pxref{Extra-Fast Growing}).
-
address@hidden int obstack_room (struct obstack address@hidden)
-Get the amount of room now available for growing the current object
-(@pxref{Extra-Fast Growing}).
-
address@hidden int obstack_alignment_mask (struct obstack address@hidden)
-The mask used for aligning the beginning of an object.  This is an
-lvalue (@pxref{Obstacks Data Alignment}).
-
address@hidden int obstack_chunk_size (struct obstack address@hidden)
-The size for allocating chunks.  This is an lvalue (@pxref{Obstack
-Chunks}).
-
address@hidden void *obstack_base (struct obstack address@hidden)
-Tentative starting address of the currently growing object (@pxref{Status of 
an Obstack}).
-
address@hidden void *obstack_next_free (struct obstack address@hidden)
-Address just after the end of the currently growing object (@pxref{Status of 
an Obstack}).
address@hidden table
-
address@hidden Variable Size Automatic
address@hidden Automatic Storage with Variable Size
address@hidden automatic freeing
address@hidden @code{alloca} function
address@hidden automatic storage with variable size
-
-The function @code{alloca} supports a kind of half-dynamic allocation in
-which blocks are allocated dynamically but freed automatically.
-
-Allocating a block with @code{alloca} is an explicit action; you can
-allocate as many blocks as you wish, and compute the size at run time.  But
-all the blocks are freed when you exit the function that @code{alloca} was
-called from, just as if they were automatic variables declared in that
-function.  There is no way to free the space explicitly.
-
-The prototype for @code{alloca} is in @file{stdlib.h}.  This function is
-a @sc{bsd} extension.
address@hidden stdlib.h
-
address@hidden stdlib.h
address@hidden GNU, BSD
address@hidden {void *} alloca (size_t @var{size});
-The return value of @code{alloca} is the address of a block of @var{size}
-bytes of memory, allocated in the stack frame of the calling function.
address@hidden deftypefun
-
-Do not use @code{alloca} inside the arguments of a function call---you
-will get unpredictable results, because the stack space for the
address@hidden would appear on the stack in the middle of the space for
-the function arguments.  An example of what to avoid is @code{foo (x,
-alloca (4), y)}.
address@hidden This might get fixed in future versions of GCC, but that won't 
make
address@hidden it safe with compilers generally.
-
address@hidden Alloca Example
address@hidden @code{alloca} Example
-
-As an example of the use of @code{alloca}, here is a function that opens
-a file name made from concatenating two argument strings, and returns a
-file descriptor or minus one, signifying failure:
-
address@hidden
-int
-open2 (char *str1, char *str2, int flags, int mode)
address@hidden
-  char *name = (char *) alloca (strlen (str1) + strlen (str2) + 1);
-  stpcpy (stpcpy (name, str1), str2);
-  return open (name, flags, mode);
address@hidden
address@hidden smallexample
-
address@hidden
-Here is how you would get the same results with @code{malloc} and
address@hidden:
-
address@hidden
-int
-open2 (char *str1, char *str2, int flags, int mode)
address@hidden
-  char *name = (char *) malloc (strlen (str1) + strlen (str2) + 1);
-  int desc;
-  if (name == 0)
-    fatal ("virtual memory exceeded");
-  stpcpy (stpcpy (name, str1), str2);
-  desc = open (name, flags, mode);
-  free (name);
-  return desc;
address@hidden
address@hidden smallexample
-
-As you can see, it is simpler with @code{alloca}.  But @code{alloca} has
-other, more important advantages, and some disadvantages.
-
address@hidden Advantages of Alloca
address@hidden Advantages of @code{alloca}
-
-Here are the reasons why @code{alloca} may be preferable to @code{malloc}:
-
address@hidden @bullet
address@hidden
-Using @code{alloca} wastes very little space and is very fast.  (It is
-open coded by the @sc{gnu} C Compiler.)
-
address@hidden
-Since @code{alloca} does not have separate pools for different sizes of
-block, space used for any size block can be reused for any other size.
address@hidden does not cause memory fragmentation.
-
address@hidden
address@hidden longjmp
-Nonlocal exits done with @address@hidden, ``Nonlocal
-Exits''.} automatically free the space allocated with @code{alloca} when
-they exit through the function that called @code{alloca}.  This is the
-most important reason to use @code{alloca}.
-
-To illustrate this, suppose you have a function
address@hidden that returns a descriptor, like
address@hidden, if it succeeds, but does not return to its caller if it
-fails.  If the file cannot be opened, it prints an error message and
-jumps out to the command level of your program using @code{longjmp}.
-Let's change @code{open2} (@pxref{Alloca Example}) to use this
-subroutine:@refill
-
address@hidden
-int
-open2 (char *str1, char *str2, int flags, int mode)
address@hidden
-  char *name = (char *) alloca (strlen (str1) + strlen (str2) + 1);
-  stpcpy (stpcpy (name, str1), str2);
-  return open_or_report_error (name, flags, mode);
address@hidden
address@hidden smallexample
-
address@hidden
-Because of the way @code{alloca} works, the memory it allocates is
-freed even when an error occurs, with no special effort required.
-
-By contrast, the previous definition of @code{open2} (which uses
address@hidden and @code{free}) would develop a memory leak if it were
-changed in this way.  Even if you are willing to make more changes to
-fix it, there is no easy way to do so.
address@hidden itemize
-
address@hidden Disadvantages of Alloca
address@hidden Disadvantages of @code{alloca}
-
address@hidden @code{alloca} disadvantages
address@hidden disadvantages of @code{alloca}
-These are the disadvantages of @code{alloca} in comparison with
address@hidden:
-
address@hidden @bullet
address@hidden
-If you try to allocate more memory than the machine can provide, you
-don't get a clean error message.  Instead you get a fatal signal like
-the one you would get from an infinite recursion; probably a
-segmentation address@hidden, ``Program-Error Signals''.}
-
address@hidden
-Some address@hidden systems fail to support @code{alloca}, so it is less
-portable.  However, a slower emulation of @code{alloca} written in C
-is available for use on systems with this deficiency.
address@hidden itemize
-
address@hidden GNU C Variable-Size Arrays
address@hidden @sc{gnu} C Variable-Size Arrays
address@hidden variable-sized arrays
-
-In @sc{gnu} C, you can replace most uses of @code{alloca} with an array of
-variable size.  Here is how @code{open2} would look then:
-
address@hidden
-int open2 (char *str1, char *str2, int flags, int mode)
address@hidden
-  char name[strlen (str1) + strlen (str2) + 1];
-  stpcpy (stpcpy (name, str1), str2);
-  return open (name, flags, mode);
address@hidden
address@hidden smallexample
-
-But @code{alloca} is not always equivalent to a variable-size array, for
-several reasons:
-
address@hidden @bullet
address@hidden
-A variable-size array's space is freed at the end of the scope of the
-name of the array.  The space allocated with @code{alloca}
-remains until the end of the function.
-
address@hidden
-It is possible to use @code{alloca} within a loop, allocating an
-additional block on each iteration.  This is impossible with
-variable-size arrays.
address@hidden itemize
-
address@hidden:} If you mix use of @code{alloca} and variable-size arrays
-within one function, exiting a scope in which a variable-size array was
-declared frees all blocks allocated with @code{alloca} during the
-execution of that scope.
-
-
address@hidden Resizing the Data Segment
address@hidden Resizing the Data Segment
-
-The symbols in this section are declared in @file{unistd.h}.
-
-You will not normally use the functions in this section, because the
-functions described in @ref{Memory Allocation} are easier to use.  Those
-are interfaces to a @sc{gnu} C Library memory allocator that uses the
-functions below itself.  The functions below are simple interfaces to
-system calls.
-
address@hidden unistd.h
address@hidden BSD
address@hidden int brk (void address@hidden)
-
address@hidden sets the high end of the calling process' data segment to
address@hidden
-
-The address of the end of a segment is defined to be the address of the
-last byte in the segment plus 1.
-
-The function has no effect if @var{addr} is lower than the low end of
-the data segment.  (This is considered success.)
-
-The function fails if it would cause the data segment to overlap another
-segment or exceed the process' data storage address@hidden,
-``Limiting Resource Usage''.}
-
-The function is named for a common historical case where data storage
-and the stack are in the same segment.  Data storage allocation grows
-upward from the bottom of the segment while the stack grows downward
-toward it from the top of the segment and the curtain between them is
-called the @dfn{break}.
-
-The return value is zero on success.  On failure, the return value is
address@hidden and @code{errno} is set accordingly.  The following @code{errno}
-values are specific to this function:
-
address@hidden @code
address@hidden ENOMEM
-The request would cause the data segment to overlap another segment or
-exceed the process' data storage limit.
address@hidden table
-
address@hidden The Brk system call in Linux (as opposed to the GNU C Library 
function)
address@hidden is considerably different.  It always returns the new end of the 
data
address@hidden segment, whether it succeeds or fails.  The GNU C Library Brk 
determines
address@hidden it's a failure if and only if if the system call returns an 
address less
address@hidden than the address requested.
-
address@hidden deftypefun
-
-
address@hidden unistd.h
address@hidden BSD
address@hidden int sbrk (ptrdiff_t @var{delta})
-This function is the same as @code{brk} except that you specify the new
-end of the data segment as an offset @var{delta} from the current end
-and on success the return value is the address of the resulting end of
-the data segment instead of zero.
-
-This means you can use @samp{sbrk(0)} to find out what the current end
-of the data segment is.
-
address@hidden deftypefun
-
-
-
address@hidden Locking Pages
address@hidden Locking Pages
address@hidden locking pages
address@hidden memory lock
address@hidden paging
-
-You can tell the system to associate a particular virtual memory page
-with a real page frame and keep it that way---i.e., cause the page to
-be paged in if it isn't already and mark it so it will never be paged
-out and consequently will never cause a page fault.  This is called
address@hidden a page.
-
-The functions in this chapter lock and unlock the calling process'
-pages.
-
address@hidden Why Lock Pages
address@hidden Why Lock Pages?
-
-Because page faults cause paged out pages to be paged in transparently,
-a process rarely needs to be concerned about locking pages.  However,
-there are two reasons people sometimes are:
-
address@hidden @bullet
-
address@hidden
-Speed.  A page fault is transparent only insofar as the process is not
-sensitive to how long it takes to do a simple memory access.  Time-critical
-processes, especially real-time processes, may not be able to wait or
-may not be able to tolerate variance in execution speed.
address@hidden realtime processing
address@hidden speed of execution
-
-A process that needs to lock pages for this reason probably also needs
-priority among other processes for use of the @address@hidden, ``Process 
@acronym{CPU} Priority and Scheduling''.}
-
-In some cases, the programmer knows better than the system's demand
-paging allocator which pages should remain in real memory to optimize
-system performance.  In this case, locking pages can help.
-
address@hidden
-Privacy.  If you keep secrets in virtual memory and that virtual memory
-gets paged out, that increases the chance that the secrets will get out.
-If a password gets written out to disk swap space, for example, it might
-still be there long after virtual and real memory have been wiped clean.
-
address@hidden itemize
-
-Be aware that when you lock a page, that is one fewer page frame that can
-be used to back other virtual memory (by the same or other processes),
-which can mean more page faults, which means the system runs more
-slowly.  In fact, if you lock enough memory, some programs may not be
-able to run at all for lack of real memory.
-
address@hidden Locked-Memory Details
address@hidden Locked-Memory Details
-
-A memory lock is associated with a virtual page, not a real frame.  The
-paging rule is: If a frame backs at least one locked page, don't page it
-out.
-
-Memory locks do not stack---you can't lock a particular page twice
-so that it has to be unlocked twice before it is truly unlocked.  It is
-either locked or it isn't.
-
-A memory lock persists until the process that owns the memory explicitly
-unlocks it.  (But process termination and exec cause the virtual memory
-to cease to exist, which you might say means it isn't locked any more.)
-
-Memory locks are not inherited by child processes  (but note that on a
-modern Unix system, immediately after a fork, the parent's and the
-child's virtual address space are backed by the same real page frames,
-so the child enjoys the parent's locks)address@hidden, ``Creating a Process''.}
-
-Because of its ability to impact other processes, only the superuser can
-lock a page.  Any process can unlock its own page.
-
-The system sets limits on the amount of memory a process can have locked
-and the amount of real memory it can have dedicated to
address@hidden, ``Limiting Resource Usage''.}
-
-In Linux, locked pages aren't as locked as you might think.
-Two virtual pages that are not shared memory can nonetheless be backed
-by the same real frame.  The kernel does this in the name of efficiency
-when it knows both virtual pages contain identical data, and does it
-even if one or both of the virtual pages are locked.
-
-But when a process modifies one of those pages, the kernel must get it a
-separate frame and fill it with the page's data.  This is known as a
address@hidden page fault}.  It takes a small amount of time and in
-a pathological case, getting that frame may require I/O.
address@hidden copy-on-write page fault
address@hidden page fault, copy-on-write
-
-To make sure this doesn't happen to your program, don't just lock the
-pages.  Write to them as well, unless you know you won't ever write to
-them ever.  And to make sure you have preallocated frames for your
-stack, enter a scope that declares a C automatic variable larger than
-the maximum stack size you will need, set it to something, then return
-from its scope.
-
address@hidden Page Lock Functions
address@hidden Functions to Lock and Unlock Pages
-
-The symbols in this section are declared in @file{sys/mman.h}.  These
-functions are defined by @sc{posix}.1b, but their availability depends on
-your kernel.  If your kernel doesn't allow these functions, they exist
-but always fail.  They @emph{are} available with a Linux kernel.
-
address@hidden Note:} @sc{posix}.1b requires that when the @code{mlock}
-and @code{munlock} functions are available, the file @file{unistd.h}
-define the macro @code{_POSIX_MEMLOCK_RANGE} and the file
address@hidden define the macro @code{PAGESIZE} to be the size of a
-memory page in bytes.  It requires that when the @code{mlockall} and
address@hidden functions are available, the @file{unistd.h} file
-define the macro @code{_POSIX_MEMLOCK}.  The @sc{gnu} C Library conforms to
-this requirement.
-
address@hidden sys/mman.h
address@hidden POSIX.1b
address@hidden int mlock (const void address@hidden, size_t @var{len})
-
address@hidden locks a range of the calling process' virtual pages.
-
-The range of memory starts at address @var{addr} and is @var{len} bytes
-long.  Actually, since you must lock whole pages, it is the range of
-pages that include any part of the specified range.
-
-When the function returns successfully, each of those pages is backed by
-(connected to) a real frame (is resident) and is marked to stay that
-way.  This means the function may cause page-ins and have to wait for
-them.
-
-When the function fails, it does not affect the lock status of any
-pages.
-
-The return value is zero if the function succeeds.  Otherwise, it is
address@hidden and @code{errno} is set accordingly.  @code{errno} values
-specific to this function are
-
address@hidden @code
address@hidden ENOMEM
address@hidden @bullet
address@hidden
-At least some of the specified address range does not exist in the
-calling process' virtual-address space.
address@hidden
-The locking would cause the process to exceed its locked page limit.
address@hidden itemize
-
address@hidden EPERM
-The calling process is not superuser.
-
address@hidden EINVAL
address@hidden is not positive.
-
address@hidden ENOSYS
-The kernel does not provide @code{mlock} capability.
-
address@hidden table
-
-You can lock @emph{all} a process' memory with @code{mlockall}.  You
-unlock memory with @code{munlock} or @code{munlockall}.
-
-To avoid all page faults in a C program, you have to use
address@hidden, because some of the memory a program uses is hidden
-from the C code, e.g., the stack and automatic variables, and you
-wouldn't know what address to tell @code{mlock}.
-
address@hidden deftypefun
-
address@hidden sys/mman.h
address@hidden POSIX.1b
address@hidden int munlock (const void address@hidden, size_t @var{len})
-
address@hidden unlocks a range of the calling process' virtual pages.
-
address@hidden is the inverse of @code{mlock} and functions completely
-analogously to @code{mlock}, except that there is no @code{EPERM}
-failure.
-
address@hidden deftypefun
-
address@hidden sys/mman.h
address@hidden POSIX.1b
address@hidden int mlockall (int @var{flags})
-
address@hidden locks all the pages in a process' virtual-memory
-address space, and/or any that are added to it in the future.  This
-includes the pages of the code, data and stack segment, as well as
-shared libraries, user-space kernel data, shared memory, and
-memory-mapped files.
-
address@hidden is a string of single-bit flags represented by the following
-macros.  They tell @code{mlockall} which of its functions you want.  All
-other bits must be zero.
-
address@hidden @code
-
address@hidden MCL_CURRENT
-Lock all pages that currently exist in the calling process'
-virtual-address space.
-
address@hidden MCL_FUTURE
-Set a mode such that any pages added to the process' virtual-address
-space in the future will be locked from birth.  This mode does not
-affect future address spaces owned by the same process, so exec, which
-replaces a process' address space, wipes out
address@hidden@footnote{Ibid., ``Executing a File''.}
-
address@hidden table
-
-When the function returns successfully, and you specified
address@hidden, all of the process' pages are backed by (connected
-to) real frames (they are resident) and are marked to stay that way.
-This means the function may cause page-ins and have to wait for them.
-
-When the process is in @code{MCL_FUTURE} mode because it successfully
-executed this function and specified @code{MCL_CURRENT}, any system call
-by the process that requires space be added to its virtual address space
-fails with @code{errno} = @code{ENOMEM} if locking the additional space
-would cause the process to exceed its locked page limit.  In the case
-that the address space addition that can't be accommodated is stack
-expansion, the stack expansion fails and the kernel sends a
address@hidden signal to the process.
-
-When the function fails, it does not affect the lock status of any pages
-or the future locking mode.
-
-The return value is zero if the function succeeds.  Otherwise, it is
address@hidden and @code{errno} is set accordingly.  @code{errno} values
-specific to this function are
-
address@hidden @code
address@hidden ENOMEM
address@hidden @bullet
address@hidden
-At least some of the specified address range does not exist in the
-calling process' virtual-address space.
address@hidden
-The locking would cause the process to exceed its locked page limit.
address@hidden itemize
-
address@hidden EPERM
-The calling process is not superuser.
-
address@hidden EINVAL
-Undefined bits in @var{flags} are not zero.
-
address@hidden ENOSYS
-The kernel does not provide @code{mlockall} capability.
-
address@hidden table
-
-You can lock just specific pages with @code{mlock}.  You unlock pages
-with @code{munlockall} and @code{munlock}.
-
address@hidden deftypefun
-
-
address@hidden sys/mman.h
address@hidden POSIX.1b
address@hidden int munlockall (void)
-
address@hidden unlocks every page in the calling process'
-virtual-address space and turn off @code{MCL_FUTURE} future locking
-mode.
-
-The return value is zero if the function succeeds.  Otherwise, it is
address@hidden and @code{errno} is set accordingly.  The only way this
-function can fail is for generic reasons that all functions and system
-calls can fail, so there are no specific @code{errno} values.
-
address@hidden deftypefun
-
-
-
-
address@hidden
address@hidden This was never actually implemented.  -zw
address@hidden Relocating Allocator
address@hidden Relocating Allocator
-
address@hidden relocating memory allocator
-Any system of dynamic memory allocation has overhead: the amount of
-space it uses is more than the amount the program asks for.  The
address@hidden memory allocator} achieves very low overhead by moving
-blocks in memory as necessary, on its own initiative.
-
address@hidden Relocator Concepts
address@hidden Concepts of Relocating Allocation
-
address@hidden
-The @dfn{relocating memory allocator} achieves very low overhead by
-moving blocks in memory as necessary, on its own initiative.
address@hidden ifinfo
-
-When you allocate a block with @code{malloc}, the address of the block
-never changes unless you use @code{realloc} to change its size.  Thus,
-you can safely store the address in various places, temporarily or
-permanently, as you like.  This is not safe when you use the relocating
-memory allocator, because any and all relocatable blocks can move
-whenever you allocate memory in any fashion.  Even calling @code{malloc}
-or @code{realloc} can move the relocatable blocks.
-
address@hidden handle
-For each relocatable block, you must make a @dfn{handle}---a pointer
-object in memory, designated to store the address of that block.  The
-relocating allocator knows where each block's handle is, and updates the
-address stored there whenever it moves the block, so that the handle
-always points to the block.  Each time you access the contents of the
-block, you should fetch its address anew from the handle.
-
-To call any of the relocating allocator functions from a signal handler
-is almost certainly incorrect, because the signal could happen at any
-time and relocate all the blocks.  The only way to make this safe is to
-block the signal around any access to the contents of any relocatable
-block---not a convenient mode of address@hidden, ``Signal Handling and 
Nonreentrant Functions''.}
-
address@hidden Using Relocator
address@hidden Allocating and Freeing Relocatable Blocks
-
address@hidden malloc.h
-In the descriptions below, @var{handleptr} designates the address of the
-handle.  All the functions are declared in @file{malloc.h}; all are @sc{gnu}
-extensions.
-
address@hidden malloc.h
address@hidden GNU
address@hidden @deftypefun {void *} r_alloc (void address@hidden, size_t 
@var{size})
-This function allocates a relocatable block of size @var{size}.  It
-stores the block's address in @address@hidden and returns
-a nonnull pointer to indicate success.
-
-If @code{r_alloc} can't get the space needed, it stores a null pointer
-in @address@hidden, and returns a null pointer.
address@hidden deftypefun
-
address@hidden malloc.h
address@hidden GNU
address@hidden @deftypefun void r_alloc_free (void address@hidden)
-This function is the way to free a relocatable block.  It frees the
-block that @address@hidden points to, and stores a null pointer
-in @address@hidden to show it doesn't point to an allocated
-block any more.
address@hidden deftypefun
-
address@hidden malloc.h
address@hidden GNU
address@hidden @deftypefun {void *} r_re_alloc (void address@hidden, size_t 
@var{size})
-The function @code{r_re_alloc} adjusts the size of the block that
address@hidden@var{handleptr}} points to, making it @var{size} bytes long.  It
-stores the address of the resized block in @address@hidden and
-returns a nonnull pointer to indicate success.
-
-If enough memory is not available, this function returns a null pointer
-and does not modify @address@hidden
address@hidden deftypefun
address@hidden ignore
-
-
-
-
address@hidden
address@hidden No longer available...
-
address@hidden @node Memory Warnings
address@hidden @section Memory Usage Warnings
address@hidden @cindex memory usage warnings
address@hidden @cindex warnings of memory almost full
-
address@hidden malloc.c
-You can ask for warnings as the program approaches running out of memory
-space, by calling @code{memory_warnings}.  This tells @code{malloc} to
-check memory usage every time it asks for more memory from the operating
-system.  This is a @sc{gnu} extension declared in @file{malloc.h}.
-
address@hidden malloc.h
address@hidden GNU
address@hidden @deftypefun void memory_warnings (void address@hidden, void 
(address@hidden) (const char *))
-Call this function to request warnings for nearing exhaustion of virtual
-memory.
-
-The argument @var{start} says where data space begins, in memory.  The
-allocator compares this against the last address used and against the
-limit of data space, to determine the fraction of available memory in
-use.  If you supply zero for @var{start}, then a default value is used
-which is right in most circumstances.
-
-For @var{warn-func}, supply a function that @code{malloc} can call to
-warn you.  It is called with a string (a warning message) as argument.
-Normally it ought to display the string for the user to read.
address@hidden deftypefun
-
-The warnings come when memory becomes 75% full, when it becomes 85%
-full, and when it becomes 95% full.  Above 95% you get another warning
-each time memory usage increases.
-
address@hidden ignore
-
address@hidden Character Handling, String and Array Utilities, Memory, Top
address@hidden %MENU% Character testing and conversion functions
address@hidden Character Handling
-
-Programs that work with characters and strings often need to classify a
-character as alphabetic, digit, white space, etc., and perform case
-conversion operations on characters.  The functions in the header file
address@hidden are provided for this purpose.
address@hidden ctype.h
-
-Since the choice of locale and character set can alter the
-classifications of particular character codes, all of these functions
-are affected by the current locale.  (More precisely, they are affected
-by the locale currently selected for character classification---the
address@hidden category; see @ref{Locale Categories}.)
-
-The @address@hidden C} standard specifies two different sets of functions.  The
-one set works on @code{char} type characters, the other one on
address@hidden wide characters (@pxref{Extended Char Intro}).
-
address@hidden Classification of Characters, Case Conversion,  , Character 
Handling
address@hidden Classification of Characters
address@hidden character testing
address@hidden classification of characters
address@hidden predicates on characters
address@hidden character predicates
-
-This section explains the library functions for classifying characters.
-For example, @code{isalpha} is the function to test for an alphabetic
-character.  It takes one argument, the character to test, and returns a
-nonzero integer if the character is alphabetic, and zero otherwise.  You
-would use it like this:
-
address@hidden
-if (isalpha (c))
-  printf ("The character `%c' is alphabetic.\n", c);
address@hidden smallexample
-
-Each of the functions in this section tests for membership in a
-particular class of characters; each has a name starting with @samp{is}.
-Each of them takes one argument, which is a character to test, and
-returns an @code{int} which is treated as a Boolean value.  The
-character argument is passed as an @code{int}, and it may be the
-constant value @code{EOF} instead of a real character.
-
-The attributes of any given character can vary between locales.
address@hidden, for more information on address@hidden
-
-These functions are declared in the header file @file{ctype.h}.
address@hidden ctype.h
-
address@hidden lowercase character
address@hidden ctype.h
address@hidden ISO
address@hidden int islower (int @var{c})
-Returns true if @var{c} is a lowercase letter.  The letter need not be
-from the Latin alphabet---any representable alphabet is valid.
address@hidden deftypefun
-
address@hidden uppercase character
address@hidden ctype.h
address@hidden ISO
address@hidden int isupper (int @var{c})
-Returns true if @var{c} is an uppercase letter.  The letter need not be
-from the Latin alphabet---any representable alphabet is valid.
address@hidden deftypefun
-
address@hidden alphabetic character
address@hidden ctype.h
address@hidden ISO
address@hidden int isalpha (int @var{c})
-Returns true if @var{c} is an alphabetic character (a letter).  If
address@hidden or @code{isupper} is true of a character, then
address@hidden is also true.
-
-In some locales, there may be additional characters for which
address@hidden is true---letters that are neither uppercase nor
-lowercase.  But in the standard @code{"C"} locale, there are no such
-additional characters.
address@hidden deftypefun
-
address@hidden digit character
address@hidden decimal digit character
address@hidden ctype.h
address@hidden ISO
address@hidden int isdigit (int @var{c})
-Returns true if @var{c} is a decimal digit (@samp{0} through @samp{9}).
address@hidden deftypefun
-
address@hidden alphanumeric character
address@hidden ctype.h
address@hidden ISO
address@hidden int isalnum (int @var{c})
-Returns true if @var{c} is an alphanumeric character (a letter or
-number); in other words, if either @code{isalpha} or @code{isdigit} is
-true of a character, then @code{isalnum} is also true.
address@hidden deftypefun
-
address@hidden hexadecimal digit character
address@hidden ctype.h
address@hidden ISO
address@hidden int isxdigit (int @var{c})
-Returns true if @var{c} is a hexadecimal digit.
-Hexadecimal digits include the normal decimal digits @samp{0} through
address@hidden and the letters @samp{A} through @samp{F} and
address@hidden through @samp{f}.
address@hidden deftypefun
-
address@hidden punctuation character
address@hidden ctype.h
address@hidden ISO
address@hidden int ispunct (int @var{c})
-Returns true if @var{c} is a punctuation character.
-This means any printing character that is not alphanumeric or a space
-character.
address@hidden deftypefun
-
address@hidden white-space character
address@hidden ctype.h
address@hidden ISO
address@hidden int isspace (int @var{c})
-Returns true if @var{c} is a @dfn{white-space} character.  In the standard
address@hidden"C"} locale, @code{isspace} returns true for only the standard
-white-space characters:
-
address@hidden @code
address@hidden ' '
-space
-
address@hidden '\f'
-formfeed
-
address@hidden '\n'
-newline
-
address@hidden '\r'
-carriage return
-
address@hidden '\t'
-horizontal tab
-
address@hidden '\v'
-vertical tab
address@hidden table
address@hidden deftypefun
-
address@hidden blank character
address@hidden ctype.h
address@hidden GNU
address@hidden int isblank (int @var{c})
-Returns true if @var{c} is a blank character; that is, a space or a tab.
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden graphic character
address@hidden ctype.h
address@hidden ISO
address@hidden int isgraph (int @var{c})
-Returns true if @var{c} is a graphic character; that is, a character
-that has a glyph associated with it.  The white-space characters are not
-considered graphic.
address@hidden deftypefun
-
address@hidden printing character
address@hidden ctype.h
address@hidden ISO
address@hidden int isprint (int @var{c})
-Returns true if @var{c} is a printing character.  Printing characters
-include all the graphic characters, plus the space (@samp{ }) character.
address@hidden deftypefun
-
address@hidden control character
address@hidden ctype.h
address@hidden ISO
address@hidden int iscntrl (int @var{c})
-Returns true if @var{c} is a control character; that is, a character that
-is not a printing character.
address@hidden deftypefun
-
address@hidden @sc{ascii} character
address@hidden ctype.h
address@hidden SVID, BSD
address@hidden int isascii (int @var{c})
-Returns true if @var{c} is a 7-bit @code{unsigned char} value that fits
-into the US/UK @sc{ascii} character set.  This function is a @sc{bsd} extension
-and is also an @sc{svid} extension.
address@hidden deftypefun
-
address@hidden Case Conversion, Classification of Wide Characters, 
Classification of Characters, Character Handling
address@hidden Case Conversion
address@hidden character case conversion
address@hidden case conversion of characters
address@hidden converting case of characters
-
-This section explains the library functions for performing conversions
-such as case mappings on characters.  For example, @code{toupper}
-converts any character to upper case if possible.  If the character
-can't be converted, @code{toupper} returns it unchanged.
-
-These functions take one argument of type @code{int}, which is the
-character to convert, and return the converted character as an
address@hidden  If the conversion is not applicable to the argument given,
-the argument is returned unchanged.
-
address@hidden Note:} In address@hidden@sc{iso} C} dialects, instead of
-returning the argument unchanged, these functions may fail when the
-argument is not suitable for the conversion.  Thus for portability, you
-may need to write @code{islower(c) ? toupper(c) : c} rather than just
address@hidden(c)}.
-
-These functions are declared in the header file @file{ctype.h}.
address@hidden ctype.h
-
address@hidden ctype.h
address@hidden @sc{iso}
address@hidden int tolower (int @var{c})
-If @var{c} is an uppercase letter, @code{tolower} returns the corresponding
-lowercase letter.  If @var{c} is not an uppercase letter,
address@hidden is returned unchanged.
address@hidden deftypefun
-
address@hidden ctype.h
address@hidden ISO
address@hidden int toupper (int @var{c})
-If @var{c} is a lowercase letter, @code{toupper} returns the corresponding
-uppercase letter.  Otherwise @var{c} is returned unchanged.
address@hidden deftypefun
-
address@hidden ctype.h
address@hidden SVID, BSD
address@hidden int toascii (int @var{c})
-This function converts @var{c} to a 7-bit @code{unsigned char} value
-that fits into the US/UK @sc{ascii} character set, by clearing the
-high-order bits.  This function is a @sc{bsd} extension and is also an
address@hidden extension.
address@hidden deftypefun
-
address@hidden ctype.h
address@hidden SVID
address@hidden int _tolower (int @var{c})
-This is identical to @code{tolower}, and is provided for compatibility
-with the @sc{svid} (@pxref{SVID}).
address@hidden deftypefun
-
address@hidden ctype.h
address@hidden SVID
address@hidden int _toupper (int @var{c})
-This is identical to @code{toupper}, and is provided for compatibility
-with the @sc{svid}.
address@hidden deftypefun
-
-
address@hidden Classification of Wide Characters, Using Wide Char Classes, Case 
Conversion, Character Handling
address@hidden Character Class Determination for Wide Characters
-
address@hidden 1} to @address@hidden C90} defines functions to classify wide
-characters.  Although the original @address@hidden C90} standard already 
defined
-the type @code{wchar_t}, no functions operating on them were defined.
-
-The general design of the classification functions for wide characters
-is more general.  It allows extensions to the set of available
-classifications, beyond those that are always available.  The @sc{posix}
-standard specifies how extensions can be made, and this is already
-implemented in the @sc{gnu} C Library implementation of the @code{localedef}
-program.
-
-The character class functions are normally implemented with bitsets,
-with a bitset per character.  For a given character, the appropriate
-bitset is read from a table and a test is performed as to whether a
-certain bit is set.  Which bit is tested for is determined by the
-class.
-
-For the wide-character classification functions this is made visible.
-There is a type classification type defined, a function to retrieve this
-value for a given class, and a function to test whether a given
-character is in this class, using the classification value.  On top of
-this the normal character classification functions as used for
address@hidden objects can be defined.
-
address@hidden wctype.h
address@hidden ISO
address@hidden {Data type} wctype_t
-The @code{wctype_t} can hold a value which represents a character class.
-The only defined way to generate such a value is by using the
address@hidden function.
-
address@hidden wctype.h
-This type is defined in @file{wctype.h}.
address@hidden deftp
-
address@hidden wctype.h
address@hidden ISO
address@hidden wctype_t wctype (const char address@hidden)
-The @code{wctype} returns a value representing a class of wide
-characters that is identified by the string @var{property}.  Besides
-some standard properties, each locale can define its own ones.  In case
-no property with the given name is known for the current locale selected
-for the @code{LC_CTYPE} category, the function returns zero.
-
address@hidden
-The properties known in every locale are
-
address@hidden @columnfractions .25 .25 .25 .25
address@hidden
address@hidden"alnum"} @tab @code{"alpha"} @tab @code{"cntrl"} @tab 
@code{"digit"}
address@hidden
address@hidden"graph"} @tab @code{"lower"} @tab @code{"print"} @tab 
@code{"punct"}
address@hidden
address@hidden"space"} @tab @code{"upper"} @tab @code{"xdigit"}
address@hidden multitable
-
address@hidden wctype.h
-This function is declared in @file{wctype.h}.
address@hidden deftypefun
-
-To test the membership of a character to one of the nonstandard classes,
-the @address@hidden C} standard defines a completely new function.
-
address@hidden wctype.h
address@hidden ISO
address@hidden int iswctype (wint_t @var{wc}, wctype_t @var{desc})
-This function returns a nonzero value if @var{wc} is in the character
-class specified by @var{desc}.  @var{desc} must previously be returned
-by a successful call to @code{wctype}.
-
address@hidden wctype.h
-This function is declared in @file{wctype.h}.
address@hidden deftypefun
-
-To make it easier to use the commonly used classification functions,
-they are defined in the C library.  There is no need to use
address@hidden if the property string is one of the known character
-classes.  In some situations it is desirable to construct the property
-strings, and then it is important that @code{wctype} can also handle the
-standard classes.
-
address@hidden alphanumeric character
address@hidden wctype.h
address@hidden ISO
address@hidden int iswalnum (wint_t @var{wc})
-This function returns a nonzero value if @var{wc} is an alphanumeric
-character (a letter or number). In other words, if either @code{iswalpha}
-or @code{iswdigit} is true of a character, then @code{iswalnum} is also
-true.
-
address@hidden
-This function can be implemented using:
-
address@hidden
-iswctype (wc, wctype ("alnum"))
address@hidden smallexample
-
address@hidden wctype.h
-It is declared in @file{wctype.h}.
address@hidden deftypefun
-
address@hidden alphabetic character
address@hidden wctype.h
address@hidden ISO
address@hidden int iswalpha (wint_t @var{wc})
-Returns true if @var{wc} is an alphabetic character (a letter).  If
address@hidden or @code{iswupper} is true of a character, then
address@hidden is also true.
-
-In some locales, there may be additional characters for which
address@hidden is true---letters that are neither uppercase nor
-lowercase.  But in the standard @code{"C"} locale, there are no such
-additional characters.
-
address@hidden
-This function can be implemented using:
-
address@hidden
-iswctype (wc, wctype ("alpha"))
address@hidden smallexample
-
address@hidden wctype.h
-It is declared in @file{wctype.h}.
address@hidden deftypefun
-
address@hidden control character
address@hidden wctype.h
address@hidden ISO
address@hidden int iswcntrl (wint_t @var{wc})
-Returns true if @var{wc} is a control character; that is, a character that
-is not a printing character.
-
address@hidden
-This function can be implemented using:
-
address@hidden
-iswctype (wc, wctype ("cntrl"))
address@hidden smallexample
-
address@hidden wctype.h
-It is declared in @file{wctype.h}.
address@hidden deftypefun
-
address@hidden digit character
address@hidden wctype.h
address@hidden ISO
address@hidden int iswdigit (wint_t @var{wc})
-Returns true if @var{wc} is a digit (e.g., @samp{0} through @samp{9}).
-Please note that this function does not only return a nonzero value for
address@hidden digits, but for all kinds of digits.  A consequence is
-that code like the following will @emph{not} work unconditionally for
-wide characters:
-
address@hidden
-n = 0;
-while (iswdigit (*wc))
-  @{
-    n *= 10;
-    n += *wc++ - L'0';
-  @}
address@hidden smallexample
-
address@hidden
-This function can be implemented using:
-
address@hidden
-iswctype (wc, wctype ("digit"))
address@hidden smallexample
-
address@hidden wctype.h
-It is declared in @file{wctype.h}.
address@hidden deftypefun
-
address@hidden graphic character
address@hidden wctype.h
address@hidden ISO
address@hidden int iswgraph (wint_t @var{wc})
-Returns true if @var{wc} is a graphic character; that is, a character
-that has a glyph associated with it.  The white-space characters are not
-considered graphic.
-
address@hidden
-This function can be implemented using:
-
address@hidden
-iswctype (wc, wctype ("graph"))
address@hidden smallexample
-
address@hidden wctype.h
-It is declared in @file{wctype.h}.
address@hidden deftypefun
-
address@hidden lowercase character
address@hidden ctype.h
address@hidden ISO
address@hidden int iswlower (wint_t @var{wc})
-Returns true if @var{wc} is a lowercase letter.  The letter need not be
-from the Latin alphabet---any representable alphabet is valid.
-
address@hidden
-This function can be implemented using:
-
address@hidden
-iswctype (wc, wctype ("lower"))
address@hidden smallexample
-
address@hidden wctype.h
-It is declared in @file{wctype.h}.
address@hidden deftypefun
-
address@hidden printing character
address@hidden wctype.h
address@hidden ISO
address@hidden int iswprint (wint_t @var{wc})
-Returns true if @var{wc} is a printing character.  Printing characters
-include all the graphic characters, plus the space (@samp{ }) character.
-
address@hidden
-This function can be implemented using:
-
address@hidden
-iswctype (wc, wctype ("print"))
address@hidden smallexample
-
address@hidden wctype.h
-It is declared in @file{wctype.h}.
address@hidden deftypefun
-
address@hidden punctuation character
address@hidden wctype.h
address@hidden ISO
address@hidden int iswpunct (wint_t @var{wc})
-Returns true if @var{wc} is a punctuation character.
-This means any printing character that is not alphanumeric or a space
-character.
-
address@hidden
-This function can be implemented using:
-
address@hidden
-iswctype (wc, wctype ("punct"))
address@hidden smallexample
-
address@hidden wctype.h
-It is declared in @file{wctype.h}.
address@hidden deftypefun
-
address@hidden white-space character
address@hidden wctype.h
address@hidden ISO
address@hidden int iswspace (wint_t @var{wc})
-Returns true if @var{wc} is a @dfn{white-space} character.  In the standard
address@hidden"C"} locale, @code{iswspace} returns true for only the standard
-white-space characters:
-
address@hidden @code
address@hidden L' '
-space
-
address@hidden L'\f'
-formfeed
-
address@hidden L'\n'
-newline
-
address@hidden L'\r'
-carriage return
-
address@hidden L'\t'
-horizontal tab
-
address@hidden L'\v'
-vertical tab
address@hidden table
-
address@hidden
-This function can be implemented using:
-
address@hidden
-iswctype (wc, wctype ("space"))
address@hidden smallexample
-
address@hidden wctype.h
-It is declared in @file{wctype.h}.
address@hidden deftypefun
-
address@hidden uppercase character
address@hidden wctype.h
address@hidden ISO
address@hidden int iswupper (wint_t @var{wc})
-Returns true if @var{wc} is an uppercase letter.  The letter need not be
-from the Latin alphabet---any representable alphabet is valid.
-
address@hidden
-This function can be implemented using:
-
address@hidden
-iswctype (wc, wctype ("upper"))
address@hidden smallexample
-
address@hidden wctype.h
-It is declared in @file{wctype.h}.
address@hidden deftypefun
-
address@hidden hexadecimal digit character
address@hidden wctype.h
address@hidden ISO
address@hidden int iswxdigit (wint_t @var{wc})
-Returns true if @var{wc} is a hexadecimal digit.
-Hexadecimal digits include the normal decimal digits @samp{0} through
address@hidden and the letters @samp{A} through @samp{F} and
address@hidden through @samp{f}.
-
address@hidden
-This function can be implemented using:
-
address@hidden
-iswctype (wc, wctype ("xdigit"))
address@hidden smallexample
-
address@hidden wctype.h
-It is declared in @file{wctype.h}.
address@hidden deftypefun
-
-The @sc{gnu} C Library also provides a function that is not defined in
-the @address@hidden C} standard but that is available as a version for
-single-byte characters as well.
-
address@hidden blank character
address@hidden wctype.h
address@hidden GNU
address@hidden int iswblank (wint_t @var{wc})
-Returns true if @var{wc} is a blank character; that is, a space or a tab.
-This function is a @sc{gnu} extension.  It is declared in @file{wchar.h}.
address@hidden deftypefun
-
address@hidden Using Wide Char Classes, Wide-Character Case Conversion, 
Classification of Wide Characters, Character Handling
address@hidden Notes on Using the Wide-Character Classes
-
-The first note is probably not astonishing but still occasionally a
-cause of problems.  The @address@hidden functions can be implemented
-using macros and in fact, the @sc{gnu} C Library does this.  They are still
-available as real functions, but when the @file{wctype.h} header is
-included the macros will be used.  This is the same as the
address@hidden type versions of these functions.
-
-The second note covers something new.  It can be best illustrated by a
-(real-world) example.  The first piece of code is an excerpt from the
-original code.  It is truncated a bit but the intention should be clear:
-
address@hidden
-int
-is_in_class (int c, const char *class)
address@hidden
-  if (strcmp (class, "alnum") == 0)
-    return isalnum (c);
-  if (strcmp (class, "alpha") == 0)
-    return isalpha (c);
-  if (strcmp (class, "cntrl") == 0)
-    return iscntrl (c);
-  @dots{}
-  return 0;
address@hidden
address@hidden smallexample
-
-Now, with the @code{wctype} and @code{iswctype} you can avoid the
address@hidden cascades, but rewriting the code as follows is wrong:
-
address@hidden
-int
-is_in_class (int c, const char *class)
address@hidden
-  wctype_t desc = wctype (class);
-  return desc ? iswctype ((wint_t) c, desc) : 0;
address@hidden
address@hidden smallexample
-
-The problem is that there is no guarantee that the wide-character
-representation of a single-byte character can be found using casting.
-In fact, usually this fails miserably.  The correct solution to this
-problem is to write the code as follows:
-
address@hidden
-int
-is_in_class (int c, const char *class)
address@hidden
-  wctype_t desc = wctype (class);
-  return desc ? iswctype (btowc (c), desc) : 0;
address@hidden
address@hidden smallexample
-
address@hidden a Character}, for more information on @code{btowc}.
-Note that this change probably does not improve the performance
-of the program a lot since the @code{wctype} function still has to make
-the string comparisons.  It gets really interesting if the
address@hidden function is called more than once for the
-same class name.  In this case, the variable @var{desc} could be computed
-once and reused for all the calls.  Therefore, the above form of the
-function is probably not the final one.
-
-
address@hidden Wide-Character Case Conversion, , Using Wide Char Classes, 
Character Handling
address@hidden Mapping of Wide Characters
-
-The classification functions are also generalized by the @address@hidden C}
-standard.  Instead of just allowing the two standard mappings, a
-locale can contain others.  Again, the @code{localedef} program
-already supports generating such locale data files.
-
address@hidden wctype.h
address@hidden ISO
address@hidden {Data Type} wctrans_t
-This data type is defined as a scalar type that can hold a value
-representing the locale-dependent character mapping.  There is no way to
-construct such a value apart from using the return value of the
address@hidden function.
-
address@hidden wctype.h
address@hidden
-This type is defined in @file{wctype.h}.
address@hidden deftp
-
address@hidden wctype.h
address@hidden ISO
address@hidden wctrans_t wctrans (const char address@hidden)
-The @code{wctrans} function has to be used to find out whether a named
-mapping is defined in the current locale selected for the
address@hidden category.  If the return value is nonzero, you can use
-it afterwards in calls to @code{towctrans}.  If the return value is
-zero, no such mapping is known in the current locale.
-
-Besides locale-specific mappings, there are two mappings that are
-guaranteed to be available in every locale: @code{"tolower"} and
address@hidden"toupper"}.
-
address@hidden wctype.h
address@hidden
-These functions are declared in @file{wctype.h}.
address@hidden deftypefun
-
address@hidden wctype.h
address@hidden ISO
address@hidden wint_t towctrans (wint_t @var{wc}, wctrans_t @var{desc})
address@hidden maps the input character @var{wc}
-according to the rules of the mapping for which @var{desc} is a
-descriptor, and returns the value it finds.  @var{desc} must be
-obtained by a successful call to @code{wctrans}.
-
address@hidden wctype.h
address@hidden
-This function is declared in @file{wctype.h}.
address@hidden deftypefun
-
-For the generally available mappings, the @address@hidden C} standard defines
-convenient shortcuts so that it is not necessary to call @code{wctrans}
-for them.
-
address@hidden wctype.h
address@hidden ISO
address@hidden wint_t towlower (wint_t @var{wc})
-If @var{wc} is an uppercase letter, @code{towlower} returns the corresponding
-lowercase letter.  If @var{wc} is not an uppercase letter,
address@hidden is returned unchanged.
-
address@hidden
address@hidden can be implemented using:
-
address@hidden
-towctrans (wc, wctrans ("tolower"))
address@hidden smallexample
-
address@hidden wctype.h
address@hidden
-This function is declared in @file{wctype.h}.
address@hidden deftypefun
-
address@hidden wctype.h
address@hidden ISO
address@hidden wint_t towupper (wint_t @var{wc})
-If @var{wc} is a lowercase letter, @code{towupper} returns the corresponding
-uppercase letter.  Otherwise @var{wc} is returned unchanged.
-
address@hidden
address@hidden can be implemented using:
-
address@hidden
-towctrans (wc, wctrans ("toupper"))
address@hidden smallexample
-
address@hidden wctype.h
address@hidden
-This function is declared in @file{wctype.h}.
address@hidden deftypefun
-
-The same warnings given in the last section for the use of the
-wide-character classification functions apply here.  It is not possible
-to simply cast a @code{char} type value to a @code{wint_t} and use it as
-an argument to @code{towctrans} calls.
-
address@hidden String and Array Utilities, Character-Set Handling, Character 
Handling, Top
address@hidden %MENU% Utilities for copying and comparing strings and arrays
address@hidden String and Array Utilities
-
-Operations on strings (or arrays of characters) are an important part of
-many programs.  The @sc{gnu} C Library provides an extensive set of string
-utility functions, including functions for copying, concatenating,
-comparing and searching strings.  Many of these functions can also
-operate on arbitrary regions of storage; for example, the @code{memcpy}
-function can be used to copy the contents of any kind of array.
-
-It's fairly common for beginning C programmers to ``reinvent the wheel''
-by duplicating this functionality in their own code, but it pays to
-become familiar with the library functions and to make use of them,
-since this offers benefits in maintenance, efficiency, and portability.
-
-For instance, you could easily compare one string to another in two
-lines of C code, but if you use the built-in @code{strcmp} function,
-you're less likely to make a mistake.  And, since these library
-functions are typically highly optimized, your program may run faster
-too.
-
address@hidden Representation of Strings
address@hidden Representation of Strings
address@hidden string, representation of
-
-This section is a quick summary of string concepts for beginning C
-programmers.  It describes how character strings are represented in C
-and some common pitfalls.  If you are already familiar with this
-material, you can skip this section.
-
address@hidden string
address@hidden multibyte-character string
-A @dfn{string} is an array of @code{char} objects.  But string-valued
-variables are usually declared to be pointers of type @code{char *}.
-Such variables do not include space for the text of a string; that has
-to be stored somewhere else---in an array variable, a string constant,
-or dynamically allocated memory (@pxref{Memory Allocation}).  It's up to
-you to store the address of the chosen memory space into the pointer
-variable.  Alternatively, you can store a @dfn{null pointer} in the
-pointer variable.  The null pointer does not point anywhere, so
-attempting to reference the string it points to gets an error.
-
address@hidden wide-character string
address@hidden normally refers to multibyte-character strings as opposed to
-wide-character strings.  Wide-character strings are arrays of type
address@hidden and, as for multibyte-character strings, usually pointers
-of type @code{wchar_t *} are used.
-
address@hidden null character
address@hidden null wide character
-By convention, a @dfn{null character}, @code{'\0'}, marks the end of a
-multibyte-character string and the @dfn{null wide character},
address@hidden'\0'}, marks the end of a wide-character string.  For example, in
-testing to see whether the @code{char *} variable @var{p} points to a
-null character marking the end of a string, you can write
address@hidden@var{p}} or @address@hidden == '\0'}.
-
-A null character is quite different conceptually from a null pointer,
-although both are represented by the integer @code{0}.
-
address@hidden string literal
address@hidden literals} appear in C program source as strings of
-characters between double-quote characters (@samp{"}) where the initial
-double-quote character is immediately preceded by a capital @samp{L}
-(ell) character (as in @code{L"foo"}).  In @address@hidden C}, string literals
-can also be formed by @dfn{string concatenation}: @code{"a" "b"} is the
-same as @code{"ab"}.  For wide-character strings one can either use
address@hidden"a" L"b"} or @code{L"a" "b"}.  Modification of string literals is
-not allowed by the @sc{gnu} C Compiler, because literals are placed in
-read-only storage.
-
-Character arrays that are declared @code{const} cannot be modified
-either.  It's generally good style to declare nonmodifiable string
-pointers to be of type @code{const char *}, since this often allows the
-C compiler to detect accidental modifications as well as providing some
-amount of documentation about what your program intends to do with the
-string.
-
-The amount of memory allocated for the character array may extend past
-the null character that normally marks the end of the string.  In this
-document, the term @dfn{allocated size} is always used to refer to the
-total amount of memory allocated for the string, while the term
address@hidden refers to the number of characters up to (but not
-including) the terminating null character.
address@hidden length of string
address@hidden allocation size of string
address@hidden size of string
address@hidden string length
address@hidden string allocation
-
-A notorious source of program bugs is trying to put more characters in a
-string than fit in its allocated size.  When writing code that extends
-strings or moves characters into a preallocated array, you should be
-very careful to keep track of the length of the text and make explicit
-checks for overflowing the array.  Many of the library functions
address@hidden not} do this for you!  Remember also that you need to allocate
-an extra byte to hold the null character that marks the end of the
-string.
-
address@hidden single-byte string
address@hidden multibyte string
-Originally strings were sequences of bytes where each byte represents a
-single character.  This is still true today if the strings are encoded
-using a single-byte character encoding.  Things are different if the
-strings are encoded using a multibyte encoding (for more information on
-encodings see @ref{Extended Char Intro}).  There is no difference in
-the programming interface for these two kind of strings; the programmer
-has to be aware of this and interpret the byte sequences accordingly.
-
-But since there is no separate interface taking care of these
-differences the byte-based string functions are sometimes hard to use.
-Since the count parameters of these functions specify bytes, a call to
address@hidden could cut a multibyte character in the middle and put an
-incomplete (and therefore unusable) byte-sequence in the target buffer.
-
address@hidden wide-character string
-To avoid these problems, later versions of the @address@hidden C} standard
-introduce a second set of functions that operate on @dfn{wide
-characters} (@pxref{Extended Char Intro}).  These functions don't have
-the problems the single-byte versions have, since every wide character
-is a legal, interpretable value.  This does not mean that cutting
-wide-character strings at arbitrary points is without problems.  It
-normally is for alphabet-based languages (except for nonnormalized text)
-but languages based on syllables still have the problem that more than
-one wide character is necessary to complete a logical unit.  This is a
-higher-level problem that the @w{C library} functions are not designed
-to solve.  But it is at least good that no invalid byte-sequences can be
-created.  Also, the higher-level functions can also operate more easily
-on wide characters than on multibyte characters, so that in general, it
-is advisable to use wide characters internally whenever text is more
-than simply copied.
-
-The remainder of this chapter will discuss the functions for handling
-wide-character strings in parallel with the discussion of the
-multibyte-character strings, since there is almost always an exact
-equivalent available.
-
address@hidden String/Array Conventions
address@hidden String and Array Conventions
-
-This chapter describes both functions that work on arbitrary arrays or
-blocks of memory, and functions that are specific to null-terminated
-arrays of characters and wide characters.
-
-Functions that operate on arbitrary blocks of memory have names
-beginning with @samp{mem} and @samp{wmem} (such as @code{memcpy} and
address@hidden) and invariably take an argument that specifies the size
-(in bytes and wide characters respectively) of the block of memory to
-operate on.  The array arguments and return values for these functions
-have type @code{void *} or @code{wchar_t}.  As a matter of style, the
-elements of the arrays used with the @samp{mem} functions are referred
-to as @dfn{bytes}.  You can pass any kind of pointer to these functions,
-and the @code{sizeof} operator is useful in computing the value for the
-size argument.  Parameters to the @samp{wmem} functions must be of type
address@hidden *}.  These functions are not really usable with anything
-but arrays of this type.
-
-In contrast, functions that operate specifically on strings and wide
-character strings have names beginning with @samp{str} and @samp{wcs}
-respectively (such as @code{strcpy} and @code{wcscpy}) and look for a
-null character to terminate the string instead of requiring an
-explicit size argument to be passed.  (Some of these functions accept
-a specified maximum length, but they also check for premature
-termination with a null character.)  The array arguments and return
-values for these functions have type @code{char *} and @code{wchar_t
-*} respectively, and the array elements are referred to as
address@hidden and @dfn{wide characters}.
-
-In many cases, there are both @samp{mem} and @samp{str}/@samp{wcs}
-versions of a function.  The one that is more appropriate to use depends
-on the exact situation.  When your program is manipulating arbitrary
-arrays or blocks of storage, then you should always use the @samp{mem}
-functions.  On the other hand, when you are manipulating null-terminated
-strings it is usually more convenient to use the @samp{str}/@samp{wcs}
-functions, unless you already know the length of the string in advance.
-The @samp{wmem} functions should be used for wide-character arrays with
-known size.
-
address@hidden wint_t
address@hidden parameter promotion
-Some of the memory and string functions take single characters as
-arguments.  Since a value of type @code{char} is automatically promoted
-into a value of type @code{int} when used as a parameter, the functions
-are declared with @code{int} as the type of the parameter in question.
-In case of the wide-character function, the situation is similar---the
-parameter type for a single wide character is @code{wint_t} and not
address@hidden  This would, for many implementations, not be necessary
-since the @code{wchar_t} is large enough to not be automatically
-promoted, but since the @address@hidden C} standard does not require such a
-choice of types, the @code{wint_t} type is used.
-
address@hidden String Length
address@hidden String Length
-
-You can get the length of a string using the @code{strlen} function.
-This function is declared in the header file @file{string.h}.
address@hidden string.h
-
address@hidden string.h
address@hidden ISO
address@hidden size_t strlen (const char address@hidden)
-The @code{strlen} function returns the length of the null-terminated
-string @var{s} in bytes.  In other words, it returns the offset of the
-terminating null character within the array.
-
-For example:
address@hidden
-strlen ("hello, world")
-    @result{} 12
address@hidden smallexample
-
-When applied to a character array, the @code{strlen} function returns
-the length of the string stored there, not its allocated size.  You can
-get the allocated size of the character array that holds a string using
-the @code{sizeof} operator:
-
address@hidden
-char string[32] = "hello, world";
-sizeof (string)
-    @result{} 32
-strlen (string)
-    @result{} 12
address@hidden smallexample
-
-But beware, this will not work unless @var{string} is the character
-array itself, not a pointer to it.  For example:
-
address@hidden
-char string[32] = "hello, world";
-char *ptr = string;
-sizeof (string)
-    @result{} 32
-sizeof (ptr)
-    @result{} 4  /* @r{(on a machine with 4 byte pointers)} */
address@hidden smallexample
-
-This is an easy mistake to make when you are working with functions that
-take string arguments; those arguments are always pointers, not arrays.
-
-It must also be noted that for multibyte-encoded strings the return
-value does not have to correspond to the number of characters in the
-string.  To get this value, the string can be converted to wide
-characters and @code{wcslen} can be used, or something like the
-following code can be used:
-
address@hidden
-/* @r{The input is in @code{string}.}
-   @r{The length is expected in @code{n}.}  */
address@hidden
-  mbstate_t t;
-  char *scopy = string;
-  /* In initial state.  */
-  memset (&t, '\0', sizeof (t));
-  /* Determine number of characters.  */
-  n = mbsrtowcs (NULL, &scopy, strlen (scopy), &t);
address@hidden
address@hidden smallexample
-
-This is cumbersome, so if the number of characters (as opposed to
-bytes) is needed, often it is better to work with wide characters.
address@hidden deftypefun
-
-The wide character equivalent is declared in @file{wchar.h}.
-
address@hidden wchar.h
address@hidden ISO
address@hidden size_t wcslen (const wchar_t address@hidden)
-The @code{wcslen} function is the wide character equivalent to
address@hidden  The return value is the number of wide characters in the
-wide-character string pointed to by @var{ws} (this is also the offset of
-the terminating null wide character of @var{ws}).
-
-Since there are no multi-wide-character sequences making up one
-character, the return value is not only the offset in the array, but
-also the number of wide characters.
-
-This function was introduced in @w{Amendment 1} to @address@hidden C90}.
address@hidden deftypefun
-
address@hidden string.h
address@hidden GNU
address@hidden size_t strnlen (const char address@hidden, size_t @var{maxlen})
-The @code{strnlen} function returns the length of the string @var{s} in
-bytes if this length is smaller than @var{maxlen} bytes.  Otherwise it
-returns @var{maxlen}.  Therefore, this function is equivalent to
address@hidden(strlen (@var{s}) < n ? strlen (@var{s}) : @var{maxlen})}, but it
-is more efficient and works even if the string @var{s} is not
-null-terminated.
-
address@hidden
-char string[32] = "hello, world";
-strnlen (string, 32)
-    @result{} 12
-strnlen (string, 5)
-    @result{} 5
address@hidden smallexample
-
-This function is a @sc{gnu} extension and is declared in @file{string.h}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden size_t wcsnlen (const wchar_t address@hidden, size_t 
@var{maxlen})
address@hidden is the wide-character equivalent to @code{strnlen}.  The
address@hidden parameter specifies the maximum number of wide characters.
-
-This function is a @sc{gnu} extension and is declared in @file{wchar.h}.
address@hidden deftypefun
-
address@hidden Copying and Concatenation
address@hidden Copying and Concatenation
-
-You can use the functions described in this section to copy the contents
-of strings and arrays, or to append the contents of one string to
-another.  The @samp{str} and @samp{mem} functions are declared in the
-header file @file{string.h} while the @samp{wstr} and @samp{wmem}
-functions are declared in the file @file{wchar.h}.
address@hidden string.h
address@hidden wchar.h
address@hidden copying strings and arrays
address@hidden string copy functions
address@hidden array copy functions
address@hidden concatenating strings
address@hidden string concatenation functions
-
-A helpful way to remember the ordering of the arguments to the functions
-in this section is that it corresponds to an assignment expression, with
-the destination array specified to the left of the source array.  All
-of these functions return the address of the destination array.
-
-Most of these functions do not work properly if the source and
-destination arrays overlap.  For example, if the beginning of the
-destination array overlaps the end of the source array, the original
-contents of that part of the source array may get overwritten before it
-is copied.  Even worse, in the case of the string functions, the null
-character marking the end of the string may be lost, and the copy
-function might get stuck in a loop, trashing all the memory allocated to
-your program.
-
-All functions that have problems copying between overlapping arrays are
-explicitly identified in this manual.  In addition to functions in this
-section, there are a few others like @code{sprintf} (@pxref{Formatted
-Output Functions}) and @code{scanf} (@pxref{Formatted Input
-Functions}).
-
address@hidden string.h
address@hidden ISO
address@hidden {void *} memcpy (void *restrict @var{to}, const void *restrict 
@var{from}, size_t @var{size})
-The @code{memcpy} function copies @var{size} bytes from the object
-beginning at @var{from} into the object beginning at @var{to}.  The
-behavior of this function is undefined if the two arrays @var{to} and
address@hidden overlap; use @code{memmove} instead if overlapping is possible.
-
-The value returned by @code{memcpy} is the value of @var{to}.
-
-Here is an example of how you might use @code{memcpy} to copy the
-contents of an array:
-
address@hidden
-struct foo *oldarray, *newarray;
-int arraysize;
address@hidden
-memcpy (new, old, arraysize * sizeof (struct foo));
address@hidden smallexample
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} wmemcpy (wchar_t *restrict @var{wto}, const wchar_t 
*restruct @var{wfrom}, size_t @var{size})
-The @code{wmemcpy} function copies @var{size} wide characters from the object
-beginning at @var{wfrom} into the object beginning at @var{wto}.  The
-behavior of this function is undefined if the two arrays @var{wto} and
address@hidden overlap; use @code{wmemmove} instead if overlapping is possible.
-
-The following is one possible implementation of @code{wmemcpy}, but there
-are also other optimizations possible:
-
address@hidden
-wchar_t *
-wmemcpy (wchar_t *restrict wto, const wchar_t *restrict wfrom,
-         size_t size)
address@hidden
-  return (wchar_t *) memcpy (wto, wfrom, size * sizeof (wchar_t));
address@hidden
address@hidden smallexample
-
-The value returned by @code{wmemcpy} is the value of @var{wto}.
-
-This function was introduced in @w{Amendment 1} to @address@hidden C90}.
address@hidden deftypefun
-
address@hidden string.h
address@hidden GNU
address@hidden {void *} mempcpy (void *restrict @var{to}, const void *restrict 
@var{from}, size_t @var{size})
-The @code{mempcpy} function is nearly identical to the @code{memcpy}
-function.  It copies @var{size} bytes from the object beginning at
address@hidden into the object pointed to by @var{to}.  But instead of
-returning the value of @var{to}, it returns a pointer to the byte
-following the last written byte in the object beginning at
address@hidden value is @code{((void *) ((char *) @var{to} +
address@hidden))}.
-
-This function is useful in situations where a number of objects will be
-copied to consecutive memory positions:
-
address@hidden
-void *
-combine (void *o1, size_t s1, void *o2, size_t s2)
address@hidden
-  void *result = malloc (s1 + s2);
-  if (result != NULL)
-    mempcpy (mempcpy (result, o1, s1), o2, s2);
-  return result;
address@hidden
address@hidden smallexample
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden {wchar_t *} wmempcpy (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom}, size_t @var{size})
-The @code{wmempcpy} function is nearly identical to the @code{wmemcpy}
-function.  It copies @var{size} wide characters from the object
-beginning at @code{wfrom} into the object pointed to by @var{wto}.  But
-instead of returning the value of @var{wto}, it returns a pointer to the
-wide character following the last written wide character in the object
-beginning at @var{wto}---the value is @address@hidden + @var{size}}.
-
-This function is useful in situations where a number of objects will be
-copied to consecutive memory positions.
-
-The following is one possible implementation of @code{wmemcpy}, but there
-are also other optimizations possible:
-
address@hidden
-wchar_t *
-wmempcpy (wchar_t *restrict wto, const wchar_t *restrict wfrom,
-          size_t size)
address@hidden
-  return (wchar_t *) mempcpy (wto, wfrom, size * sizeof (wchar_t));
address@hidden
address@hidden smallexample
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden string.h
address@hidden ISO
address@hidden {void *} memmove (void address@hidden, const void 
address@hidden, size_t @var{size})
address@hidden copies the @var{size} bytes at @var{from} into the
address@hidden bytes at @var{to}, even if those two blocks of space
-overlap.  In the case of overlap, @code{memmove} is careful to copy the
-original values of the bytes in the block at @var{from}, including those
-bytes that also belong to the block at @var{to}.
-
-The value returned by @code{memmove} is the value of @var{to}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} wmemmove (wchar address@hidden, const wchar_t 
address@hidden, size_t @var{size})
address@hidden copies the @var{size} wide characters at @var{wfrom}
-into the @var{size} wide characters at @var{wto}, even if those two
-blocks of space overlap.  In the case of overlap, @code{memmove} is
-careful to copy the original values of the wide characters in the block
-at @var{wfrom}, including those wide characters that also belong to the
-block at @var{wto}.
-
-The following is one possible implementation of @code{wmemcpy}, but there
-are also other optimizations possible:
-
address@hidden
-wchar_t *
-wmempcpy (wchar_t *restrict wto, const wchar_t *restrict wfrom,
-          size_t size)
address@hidden
-  return (wchar_t *) mempcpy (wto, wfrom, size * sizeof (wchar_t));
address@hidden
address@hidden smallexample
-
-The value returned by @code{wmemmove} is the value of @var{wto}.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden string.h
address@hidden SVID
address@hidden {void *} memccpy (void *restrict @var{to}, const void *restrict 
@var{from}, int @var{c}, size_t @var{size})
-This function copies no more than @var{size} bytes from @var{from} to
address@hidden, stopping if a byte matching @var{c} is found.  The return
-value is a pointer into @var{to} one byte past where @var{c} was copied,
-or a null pointer if no byte matching @var{c} appeared in the first
address@hidden bytes of @var{from}.
address@hidden deftypefun
-
address@hidden string.h
address@hidden ISO
address@hidden {void *} memset (void address@hidden, int @var{c}, size_t 
@var{size})
-This function copies the value of @var{c} (converted to an
address@hidden char}) into each of the first @var{size} bytes of the
-object beginning at @var{block}.  It returns the value of @var{block}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} wmemset (wchar_t address@hidden, wchar_t @var{wc}, 
size_t @var{size})
-This function copies the value of @var{wc} into each of the first
address@hidden wide characters of the object beginning at @var{block}.  It
-returns the value of @var{block}.
address@hidden deftypefun
-
address@hidden string.h
address@hidden ISO
address@hidden {char *} strcpy (char *restrict @var{to}, const char *restrict 
@var{from})
-This copies characters from the string @var{from} (up to and including
-the terminating null character) into the string @var{to}.  Like
address@hidden, this function has undefined results if the strings
-overlap.  The return value is the value of @var{to}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} wcscpy (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom})
-This copies wide characters from the string @var{wfrom} (up to and
-including the terminating null wide character) into the string
address@hidden  Like @code{wmemcpy}, this function has undefined results if
-the strings overlap.  The return value is the value of @var{wto}.
address@hidden deftypefun
-
address@hidden string.h
address@hidden ISO
address@hidden {char *} strncpy (char *restrict @var{to}, const char *restrict 
@var{from}, size_t @var{size})
-This function is similar to @code{strcpy} but always copies exactly
address@hidden characters into @var{to}.
-
-If the length of @var{from} is more than @var{size}, then @code{strncpy}
-copies just the first @var{size} characters.  Note that in this case
-there is no null terminator written into @var{to}.
-
-If the length of @var{from} is less than @var{size}, then @code{strncpy}
-copies all of @var{from}, followed by enough null characters to add up
-to @var{size} characters in all.  This behavior is rarely useful, but it
-is specified by the @address@hidden C} standard.
-
-The behavior of @code{strncpy} is undefined if the strings overlap.
-
-Using @code{strncpy} as opposed to @code{strcpy} is a way to avoid bugs
-relating to writing past the end of the allocated space for @var{to}.
-However, it can also make your program much slower in one common case:
-copying a string that is probably small into a potentially large buffer.
-In this case, @var{size} may be large, and when it is, @code{strncpy} will
-waste a considerable amount of time copying null characters.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} wcsncpy (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom}, size_t @var{size})
-This function is similar to @code{wcscpy} but always copies exactly
address@hidden wide characters into @var{wto}.
-
-If the length of @var{wfrom} is more than @var{size}, then
address@hidden copies just the first @var{size} wide characters.  Note
-that in this case there is no null terminator written into @var{wto}.
-
-If the length of @var{wfrom} is less than @var{size}, then
address@hidden copies all of @var{wfrom}, followed by enough null wide
-characters to add up to @var{size} wide characters in all.  This
-behavior is rarely useful, but it is specified by the @address@hidden C}
-standard.
-
-The behavior of @code{wcsncpy} is undefined if the strings overlap.
-
-Using @code{wcsncpy} as opposed to @code{wcscpy} is a way to avoid bugs
-relating to writing past the end of the allocated space for @var{wto}.
-However, it can also make your program much slower in one common case:
-copying a string that is probably small into a potentially large buffer.
-In this case, @var{size} may be large, and when it is, @code{wcsncpy} will
-waste a considerable amount of time copying null wide characters.
address@hidden deftypefun
-
address@hidden string.h
address@hidden SVID
address@hidden {char *} strdup (const char address@hidden)
-This function copies the null-terminated string @var{s} into a newly
-allocated string.  The string is allocated using @code{malloc}
-(@pxref{Unconstrained Allocation}).  If @code{malloc} cannot allocate
-space for the new string, @code{strdup} returns a null pointer.
-Otherwise, it returns a pointer to the new string.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden {wchar_t *} wcsdup (const wchar_t address@hidden)
-This function copies the null-terminated wide-character string @var{ws}
-into a newly allocated string.  The string is allocated using
address@hidden (@pxref{Unconstrained Allocation}).  If @code{malloc}
-cannot allocate space for the new string, @code{wcsdup} returns a null
-pointer.  Otherwise, it returns a pointer to the new wide-character
-string.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden string.h
address@hidden GNU
address@hidden {char *} strndup (const char address@hidden, size_t @var{size})
-This function is similar to @code{strdup} but always copies at most
address@hidden characters into the newly allocated string.
-
-If the length of @var{s} is more than @var{size}, then @code{strndup}
-copies just the first @var{size} characters and adds a closing null
-terminator.  Otherwise, all characters are copied and the string is
-terminated.
-
-This function is different to @code{strncpy} in that it always
-terminates the destination string.
-
address@hidden is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden string.h
address@hidden Unknown origin
address@hidden {char *} stpcpy (char *restrict @var{to}, const char *restrict 
@var{from})
-This function is like @code{strcpy}, except that it returns a pointer to
-the end of the string @var{to} (that is, the address of the terminating
-null character @code{to + strlen (from)}) rather than the beginning.
-
-For example, this program uses @code{stpcpy} to concatenate @samp{foo}
-and @samp{bar} to produce @samp{foobar}, which it then prints:
-
address@hidden
-#include <string.h>
-#include <stdio.h>
-
-int
-main (void)
address@hidden
-  char buffer[10];
-  char *to = buffer;
-  to = stpcpy (to, "foo");
-  to = stpcpy (to, "bar");
-  puts (buffer);
-  return 0;
address@hidden
-
address@hidden smallexample
-
-This function is not part of the @sc{iso} or @sc{posix} standards, and
-is not customary on Unix systems, but we did not invent it either.
-Perhaps it comes from @sc{ms-dos}.
-
-Its behavior is undefined if the strings overlap.  The function is
-declared in @file{string.h}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden {wchar_t *} wcpcpy (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom})
-This function is like @code{wcscpy}, except that it returns a pointer to
-the end of the string @var{wto} (that is, the address of the terminating
-null character @code{wto + strlen (wfrom)}) rather than the beginning.
-
-This function is not part of @sc{iso} or @sc{posix} but was found useful while
-developing the @sc{gnu} C Library itself.
-
-The behavior of @code{wcpcpy} is undefined if the strings overlap.
-
address@hidden is a @sc{gnu} extension and is declared in @file{wchar.h}.
address@hidden deftypefun
-
address@hidden string.h
address@hidden GNU
address@hidden {char *} stpncpy (char *restrict @var{to}, const char *restrict 
@var{from}, size_t @var{size})
-This function is similar to @code{stpcpy} but copies always exactly
address@hidden characters into @var{to}.
-
-If the length of @var{from} is more then @var{size}, then @code{stpncpy}
-copies just the first @var{size} characters and returns a pointer to the
-character directly following the one that was copied last.  In this case,
-there is no null terminator written into @var{to}.
-
-If the length of @var{from} is less than @var{size}, then @code{stpncpy}
-copies all of @var{from}, followed by enough null characters to add up
-to @var{size} characters in all.  This behavior is rarely useful, but it
-is implemented to be useful in contexts where this behavior of the
address@hidden is used.  @code{stpncpy} returns a pointer to the
address@hidden written null character.
-
-This function is not part of @sc{iso} or @sc{posix} but was found useful while
-developing the @sc{gnu} C Library itself.
-
-Its behavior is undefined if the strings overlap.  The function is
-declared in @file{string.h}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden {wchar_t *} wcpncpy (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom}, size_t @var{size})
-This function is similar to @code{wcpcpy} but copies always exactly
address@hidden characters into @var{wto}.
-
-If the length of @var{wfrom} is more then @var{size}, then
address@hidden copies just the first @var{size} wide characters and
-returns a pointer to the wide character directly following the last
-nonnull wide character which was copied last.  Note that in this case
-there is no null terminator written into @var{wto}.
-
-If the length of @var{wfrom} is less than @var{size}, then @code{wcpncpy}
-copies all of @var{wfrom}, followed by enough null characters to add up
-to @var{size} characters in all.  This behavior is rarely useful, but it
-is implemented to be useful in contexts where this behavior of the
address@hidden is used.  @code{wcpncpy} returns a pointer to the
address@hidden written null character.
-
-This function is not part of @sc{iso} or @sc{posix} but was found useful while
-developing the @sc{gnu} C Library itself.
-
-Its behavior is undefined if the strings overlap.
-
address@hidden is a @sc{gnu} extension and is declared in @file{wchar.h}.
address@hidden deftypefun
-
address@hidden string.h
address@hidden GNU
address@hidden {Macro} {char *} strdupa (const char address@hidden)
-This macro is similar to @code{strdup} but allocates the new string
-using @code{alloca} instead of @code{malloc} (@pxref{Variable Size
-Automatic}).  This means that the returned string has the same
-limitations as any block of memory allocated using @code{alloca}.
-
-For obvious reasons, @code{strdupa} is implemented only as a macro; you
-cannot get the address of this function.  Despite this limitation, it is
-a useful function.  The following code shows a situation where using
address@hidden would be much more expensive:
-
address@hidden
-#include <paths.h>
-#include <string.h>
-#include <stdio.h>
-
-const char path[] = _PATH_STDPATH;
-
-int
-main (void)
address@hidden
-  char *wr_path = strdupa (path);
-  char *cp = strtok (wr_path, ":");
-
-  while (cp != NULL)
-    @{
-      puts (cp);
-      cp = strtok (NULL, ":");
-    @}
-  return 0;
address@hidden
-
address@hidden smallexample
-
address@hidden must be passed a writeable string.  Passing a const
-string, such as @var{path} in the above example, would be invalid.
-Also, using @code{strdupa} directly would also cause conflict due to
-the use of @code{alloca} in @code{strdupa} (@pxref{Variable Size
-Automatic}).
-
-This function is only available if @sc{gnu} CC is used.
address@hidden deftypefn
-
address@hidden string.h
address@hidden GNU
address@hidden {Macro} {char *} strndupa (const char address@hidden, size_t 
@var{size})
-This function is similar to @code{strndup}, but like @code{strdupa} it
-allocates the new string using @code{alloca} (@pxref{Variable Size
-Automatic}).  The same advantages and limitations of @code{strdupa} are
-valid for @code{strndupa} too.
-
-This function is implemented only as a macro, just like @code{strdupa}.
-Just as @code{strdupa}, this macro also must not be used inside the
-parameter list in a function call.
-
address@hidden is only available if @sc{gnu cc} is used.
address@hidden deftypefn
-
address@hidden string.h
address@hidden ISO
address@hidden {char *} strcat (char *restrict @var{to}, const char *restrict 
@var{from})
-The @code{strcat} function is similar to @code{strcpy}, except that the
-characters from @var{from} are concatenated or appended to the end of
address@hidden, instead of overwriting it.  The first character from
address@hidden overwrites the null character marking the end of @var{to}.
-
-An equivalent definition for @code{strcat} would be
-
address@hidden
-char *
-strcat (char *restrict to, const char *restrict from)
address@hidden
-  strcpy (to + strlen (to), from);
-  return to;
address@hidden
address@hidden smallexample
-
-This function has undefined results if the strings overlap.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} wcscat (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom})
-The @code{wcscat} function is similar to @code{wcscpy}, except that the
-characters from @var{wfrom} are concatenated or appended to the end of
address@hidden, instead of overwriting it.  The first character from
address@hidden overwrites the null character marking the end of @var{wto}.
-
-An equivalent definition for @code{wcscat} would be
-
address@hidden
-wchar_t *
-wcscat (wchar_t *wto, const wchar_t *wfrom)
address@hidden
-  wcscpy (wto + wcslen (wto), wfrom);
-  return wto;
address@hidden
address@hidden smallexample
-
-This function has undefined results if the strings overlap.
address@hidden deftypefun
-
-Programmers using the @code{strcat} or @code{wcscat} function (or the
-following @code{strncat} or @code{wcsncar} functions for that matter)
-can easily be recognized as lazy and reckless.  In almost all
-situations, the lengths of the participating strings are known (since
-otherwise you cannot ensure that the allocated size of the buffer is
-sufficient).  Or at least you could know them if you keep track of the
-results of the various function calls.  But then it is very inefficient
-to use @code{strcat}/@code{wcscat}.  Much time is wasted finding the
-end of the destination string so that the actual copying can start.
-This is a common example:
-
address@hidden __va_copy
address@hidden va_copy
address@hidden
-/* @r{This function concatenates arbitrarily many strings.  The last}
-   @r{parameter must be @code{NULL}.}  */
-char *
-concat (const char *str, @dots{})
address@hidden
-  va_list ap, ap2;
-  size_t total = 1;
-  const char *s;
-  char *result;
-
-  va_start (ap, str);
-  /* @r{Actually @code{va_copy}, but this is the name more gcc versions}
-     @r{understand.}  */
-  __va_copy (ap2, ap);
-
-  /* @r{Determine how much space we need.}  */
-  for (s = str; s != NULL; s = va_arg (ap, const char *))
-    total += strlen (s);
-
-  va_end (ap);
-
-  result = (char *) malloc (total);
-  if (result != NULL)
-    @{
-      result[0] = '\0';
-
-      /* @r{Copy the strings.}  */
-      for (s = str; s != NULL; s = va_arg (ap2, const char *))
-        strcat (result, s);
-    @}
-
-  va_end (ap2);
-
-  return result;
address@hidden
address@hidden smallexample
-
-This looks quite simple, especially the second loop, where the strings
-are actually copied.  But these innocent lines hide a major performance
-penalty.  Just imagine that ten strings of 100 bytes each have to be
-concatenated.  For the second string, we search the already stored 100
-bytes for the end of the string so that we can append the next string.
-For all strings in total, the comparisons necessary to find the end of
-the intermediate results add up to 5500!  If we combine the copying
-with the search for the allocation, we can write this function more
-efficiently:
-
address@hidden
-char *
-concat (const char *str, @dots{})
address@hidden
-  va_list ap;
-  size_t allocated = 100;
-  char *result = (char *) malloc (allocated);
-  char *wp;
-
-  if (allocated != NULL)
-    @{
-      char *newp;
-
-      va_start (ap, atr);
-
-      wp = result;
-      for (s = str; s != NULL; s = va_arg (ap, const char *))
-        @{
-          size_t len = strlen (s);
-
-          /* @r{Resize the allocated memory if necessary.}  */
-          if (wp + len + 1 > result + allocated)
-            @{
-              allocated = (allocated + len) * 2;
-              newp = (char *) realloc (result, allocated);
-              if (newp == NULL)
-                @{
-                  free (result);
-                  return NULL;
-                @}
-              wp = newp + (wp - result);
-              result = newp;
-            @}
-
-          wp = mempcpy (wp, s, len);
-        @}
-
-      /* @r{Terminate the result string.}  */
-      *wp++ = '\0';
-
-      /* @r{Resize memory to the optimal size.}  */
-      newp = realloc (result, wp - result);
-      if (newp != NULL)
-        result = newp;
-
-      va_end (ap);
-    @}
-
-  return result;
address@hidden
address@hidden smallexample
-
-With a bit more knowledge about the input strings, one could fine-tune
-the memory allocation.  The difference we are pointing to here is that
-we don't use @code{strcat} anymore.  We always keep track of the length
-of the current intermediate result so we can save the search for the end
-of the string and use @code{mempcpy}.  We also don't use @code{stpcpy},
-which might seem more natural since we handle strings.  But this is
-not necessary, since we already know the length of the string and
-therefore can use the faster memory copying function.  The example would
-work for wide characters the same way.
-
-Whenever a programmer feels the need to use @code{strcat}, she should
-think twice and look through the program to see whether the code cannot
-be rewritten to take advantage of already calculated results.  It is
-almost always unnecessary to use @code{strcat}.
-
address@hidden string.h
address@hidden ISO
address@hidden {char *} strncat (char *restrict @var{to}, const char *restrict 
@var{from}, size_t @var{size})
-This function is like @code{strcat} except that not more than @var{size}
-characters from @var{from} are appended to the end of @var{to}.  A
-single null character is also always appended to @var{to}, so the total
-allocated size of @var{to} must be at least @address@hidden + 1} bytes
-longer than its initial length.
-
-The @code{strncat} function could be implemented like this:
-
address@hidden
-char *
-strncat (char *to, const char *from, size_t size)
address@hidden
-  to[strlen (to) + size] = '\0';
-  strncpy (to + strlen (to), from, size);
-  return to;
address@hidden
-
address@hidden smallexample
-
-The behavior of @code{strncat} is undefined if the strings overlap.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} wcsncat (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom}, size_t @var{size})
-This function is like @code{wcscat} except that not more than @var{size}
-characters from @var{from} are appended to the end of @var{to}.  A
-single null character is also always appended to @var{to}, so the total
-allocated size of @var{to} must be at least @address@hidden + 1} bytes
-longer than its initial length.
-
-The @code{wcsncat} function could be implemented like this:
-
address@hidden
-
-wchar_t *
-wcsncat (wchar_t *restrict wto, const wchar_t *restrict wfrom,
-         size_t size)
address@hidden
-  wto[wcslen (to) + size] = L'\0';
-  wcsncpy (wto + wcslen (wto), wfrom, size);
-  return wto;
address@hidden
-
address@hidden smallexample
-
-The behavior of @code{wcsncat} is undefined if the strings overlap.
address@hidden deftypefun
-
-Here is an example showing the use of @code{strncpy} and @code{strncat}
-(the wide-character version is equivalent).  Notice how, in the call to
address@hidden, the @var{size} parameter is computed to avoid
-overflowing the character array @code{buffer}.
-
address@hidden
-#include <string.h>
-#include <stdio.h>
-
-#define SIZE 10
-
-static char buffer[SIZE];
-
-main ()
address@hidden
-  strncpy (buffer, "hello", SIZE);
-  puts (buffer);
-  strncat (buffer, ", world", SIZE - strlen (buffer) - 1);
-  puts (buffer);
address@hidden
-
address@hidden smallexample
-
address@hidden
-The output produced by this program looks like:
-
address@hidden
-hello
-hello, wo
address@hidden smallexample
-
address@hidden string.h
address@hidden BSD
address@hidden void bcopy (const void address@hidden, void address@hidden, 
size_t @var{size})
-This is a partially obsolete alternative for @code{memmove}, derived from
address@hidden  It is not quite equivalent to @code{memmove}, because the
-arguments are not in the same order and there is no return value.
address@hidden deftypefun
-
address@hidden string.h
address@hidden BSD
address@hidden void bzero (void address@hidden, size_t @var{size})
-This is a partially obsolete alternative for @code{memset}, derived from
address@hidden  It is not as general as @code{memset}, because the only value
-it can store is zero.
address@hidden deftypefun
-
address@hidden String/Array Comparison
address@hidden String/Array Comparison
address@hidden comparing strings and arrays
address@hidden string comparison functions
address@hidden array comparison functions
address@hidden predicates on strings
address@hidden predicates on arrays
-
-You can use the functions in this section to perform comparisons on the
-contents of strings and arrays.  As well as checking for equality, these
-functions can also be used as the ordering functions for sorting
-operations (@pxref{Searching and Sorting} for an example of this).
-
-Unlike most comparison operations in C, the string comparison functions
-return a nonzero value if the strings are @emph{not} equivalent rather
-than if they are.  The sign of the value indicates the relative ordering
-of the first characters in the strings that are not equivalent:  a
-negative value indicates that the first string is ``less'' than the
-second, while a positive value indicates that the first string is
-``greater''.
-
-The most common use of these functions is to check only for equality.
-This is canonically done with an expression like @address@hidden strcmp (s1, 
s2)}}.
-
-All of these functions are declared in the header file @file{string.h}.
address@hidden string.h
-
address@hidden string.h
address@hidden ISO
address@hidden int memcmp (const void address@hidden, const void 
address@hidden, size_t @var{size})
-The function @code{memcmp} compares the @var{size} bytes of memory
-beginning at @var{a1} against the @var{size} bytes of memory beginning
-at @var{a2}.  The value returned has the same sign as the difference
-between the first differing pair of bytes (interpreted as @code{unsigned
-char} objects, then promoted to @code{int}).
-
-If the contents of the two blocks are equal, @code{memcmp} returns
address@hidden
address@hidden deftypefun
-
address@hidden wcjar.h
address@hidden ISO
address@hidden int wmemcmp (const wchar_t address@hidden, const wchar_t 
address@hidden, size_t @var{size})
-The function @code{wmemcmp} compares the @var{size} wide characters
-beginning at @var{a1} against the @var{size} wide characters beginning
-at @var{a2}.  The value returned is smaller than or larger than zero
-depending on whether the first differing wide character is @var{a1} is
-smaller or larger than the corresponding character in @var{a2}.
-
-If the contents of the two blocks are equal, @code{wmemcmp} returns
address@hidden
address@hidden deftypefun
-
-On arbitrary arrays, the @code{memcmp} function is mostly useful for
-testing equality.  It usually isn't meaningful to do byte-wise ordering
-comparisons on arrays of things other than bytes.  For example, a
-byte-wise comparison on the bytes that make up floating-point numbers
-isn't likely to tell you anything about the relationship between the
-values of the floating-point numbers.
-
address@hidden is really only useful to compare arrays of type
address@hidden, since the function looks at @code{sizeof (wchar_t)} bytes
-at a time, and this number of bytes is system dependent.
-
-You should also be careful about using @code{memcmp} to compare
-objects that can contain ``holes'', such as the padding inserted into
-structure objects to enforce alignment requirements, extra space at
-the end of unions and extra characters at the ends of strings whose
-length is less than their allocated size.  The contents of these
-``holes'' are indeterminate and may cause strange behavior when
-performing byte-wise comparisons.  For more predictable results,
-perform an explicit component-wise comparison.
-
-For example, given a structure-type definition like:
-
address@hidden
-struct foo
-  @{
-    unsigned char tag;
-    union
-      @{
-        double f;
-        long i;
-        char *p;
-      @} value;
-  @};
address@hidden smallexample
-
address@hidden
-you are better off writing a specialized comparison function to compare
address@hidden foo} objects instead of comparing them with @code{memcmp}.
-
address@hidden string.h
address@hidden ISO
address@hidden int strcmp (const char address@hidden, const char address@hidden)
-The @code{strcmp} function compares the string @var{s1} against
address@hidden, returning a value that has the same sign as the difference
-between the first differing pair of characters (interpreted as
address@hidden char} objects, then promoted to @code{int}).
-
-If the two strings are equal, @code{strcmp} returns @code{0}.
-
-A consequence of the ordering used by @code{strcmp} is that if @var{s1}
-is an initial substring of @var{s2}, then @var{s1} is considered to be
-``less than'' @var{s2}.
-
address@hidden does not take sorting conventions of the language the
-strings are written in into account.  To get that one has to use
address@hidden
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int wcscmp (const wchar_t address@hidden, const wchar_t 
address@hidden)
-
-The @code{wcscmp} function compares the wide-character string @var{ws1}
-against @var{ws2}.  The value returned is smaller than or larger than
-zero, depending on whether the first differing wide character @var{ws1}
-is smaller or larger than the corresponding character in @var{ws2}.
-
-If the two strings are equal, @code{wcscmp} returns @code{0}.
-
-A consequence of the ordering used by @code{wcscmp} is that if @var{ws1}
-is an initial substring of @var{ws2}, then @var{ws1} is considered to be
-``less than'' @var{ws2}.
-
address@hidden does not take sorting conventions of the language the
-strings are written in into account.  To get that one has to use
address@hidden
address@hidden deftypefun
-
address@hidden string.h
address@hidden BSD
address@hidden int strcasecmp (const char address@hidden, const char 
address@hidden)
-This function is like @code{strcmp}, except that differences in case are
-ignored.  How uppercase and lowercase characters are related is
-determined by the currently selected locale.  In the standard @code{"C"}
-locale, the characters @"A and @"a do not match, but in a locale that
-regards these characters as parts of the alphabet, they do match.
-
address@hidden
address@hidden is derived from @sc{bsd}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden int wcscasecmp (const wchar_t address@hidden, const wchar_T 
address@hidden)
-This function is like @code{wcscmp}, except that differences in case are
-ignored.  How uppercase and lowercase characters are related is
-determined by the currently selected locale.  In the standard @code{"C"}
-locale, the characters @"A and @"a do not match, but in a locale that
-regards these characters as parts of the alphabet, they do match.
-
address@hidden
address@hidden is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden string.h
address@hidden ISO
address@hidden int strncmp (const char address@hidden, const char 
address@hidden, size_t @var{size})
-This function is the similar to @code{strcmp}, except that no more than
address@hidden wide characters are compared.  In other words, if the two
-strings are the same in their first @var{size} wide characters, the
-return value is zero.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int wcsncmp (const wchar_t address@hidden, const wchar_t 
address@hidden, size_t @var{size})
-This function is the similar to @code{wcscmp}, except that no more than
address@hidden wide characters are compared.  In other words, if the two
-strings are the same in their first @var{size} wide characters, the
-return value is zero.
address@hidden deftypefun
-
address@hidden string.h
address@hidden BSD
address@hidden int strncasecmp (const char address@hidden, const char 
address@hidden, size_t @var{n})
-This function is like @code{strncmp}, except that differences in case
-are ignored.  Like @code{strcasecmp}, how uppercase and lowercase
-characters are related is locale dependent.
-
address@hidden
address@hidden is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden int wcsncasecmp (const wchar_t address@hidden, const wchar_t 
address@hidden, size_t @var{n})
-This function is like @code{wcsncmp}, except that differences in case
-are ignored.  Like @code{wcscasecmp}, how uppercase and lowercase
-characters are related is locale dependent.
-
address@hidden
address@hidden is a @sc{gnu} extension.
address@hidden deftypefun
-
-Here are some examples showing the use of @code{strcmp} and
address@hidden (equivalent examples can be constructed for the wide
-character functions).  These examples assume the use of the @sc{ascii}
-character set.  If some other character set---say, @sc{ebcdic}---is used
-instead, then the glyphs are associated with different numeric codes,
-and the return values and ordering may differ.
-
address@hidden
-strcmp ("hello", "hello")
-    @result{} 0    /* @r{These two strings are the same.} */
-strcmp ("hello", "Hello")
-    @result{} 32   /* @r{Comparisons are case-sensitive.} */
-strcmp ("hello", "world")
-    @result{} -15  /* @r{The character @code{'h'} comes before @code{'w'}.} */
-strcmp ("hello", "hello, world")
-    @result{} -44  /* @r{Comparing a null character against a comma.} */
-strncmp ("hello", "hello, world", 5)
-    @result{} 0    /* @r{The initial 5 characters are the same.} */
-strncmp ("hello, world", "hello, stupid world!!!", 5)
-    @result{} 0    /* @r{The initial 5 characters are the same.} */
address@hidden smallexample
-
address@hidden string.h
address@hidden GNU
address@hidden int strverscmp (const char address@hidden, const char 
address@hidden)
-The @code{strverscmp} function compares the string @var{s1} against
address@hidden, considering them as holding indices/version numbers.  Return
-value follows the same conventions as found in the @code{strverscmp}
-function.  In fact, if @var{s1} and @var{s2} contain no digits,
address@hidden behaves like @code{strcmp}.
-
-Basically, we compare strings normally (character-by-character) until
-we find a digit in each string.  Then we enter a special comparison
-mode, where each sequence of digits is taken as a whole.  If we reach the
-end of these two parts without noticing a difference, we return to the
-standard comparison mode.  There are two types of numeric parts:
address@hidden and @dfn{fractional} (those begin with a '0'). The types
-of the numeric parts affect the way we sort them:
-
address@hidden @bullet
address@hidden
address@hidden/integral}: We compare values as you would expect.
-
address@hidden
address@hidden/integral}: The fractional part is less than the integral one.
-
address@hidden
address@hidden/fractional}: Things become a bit more complex.
-If the common prefix contains only leading zeros, the longest part is less
-than the other one; else the comparison behaves normally.
address@hidden itemize
-
address@hidden
-strverscmp ("no digit", "no digit")
-    @result{} 0    /* @r{same behavior as strcmp.} */
-strverscmp ("item#99", "item#100")
-    @result{} <0   /* @r{same prefix, but 99 < 100.} */
-strverscmp ("alpha1", "alpha001")
-    @result{} >0   /* @r{fractional part inferior to integral one.} */
-strverscmp ("part1_f012", "part1_f01")
-    @result{} >0   /* @r{two fractional parts.} */
-strverscmp ("foo.009", "foo.0")
-    @result{} <0   /* @r{idem, but with leading zeros only.} */
address@hidden smallexample
-
-This function is especially useful when dealing with file-name sorting,
-because file names frequently hold indices and version numbers.
-
address@hidden is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden string.h
address@hidden BSD
address@hidden int bcmp (const void address@hidden, const void address@hidden, 
size_t @var{size})
-This is an obsolete alias for @code{memcmp}, derived from @sc{bsd}.
address@hidden deftypefun
-
address@hidden Collation Functions
address@hidden Collation Functions
-
address@hidden collating strings
address@hidden string collation functions
-
-In some locales, the conventions for lexicographic ordering differ from
-the strict numeric ordering of character codes.  For example, in Spanish
-most glyphs with diacritical marks such as accents are not considered
-distinct letters for the purposes of collation.  On the other hand, the
-two-character sequence @samp{ll} is treated as a single letter that is
-collated immediately after @samp{l}.
-
-You can use the functions @code{strcoll} and @code{strxfrm} (declared in
-the headers file @file{string.h}) and @code{wcscoll} and @code{wcsxfrm}
-(declared in the headers file @file{wchar}) to compare strings using a
-collation ordering appropriate for the current locale.  The locale used
-by these functions in particular can be specified by setting the locale
-for the @code{LC_COLLATE} category (@pxref{Locales}).
address@hidden string.h
address@hidden wchar.h
-
-In the standard C locale, the collation sequence for @code{strcoll} is
-the same as that for @code{strcmp}.  Similarly, @code{wcscoll} and
address@hidden are the same in this situation.
-
-Effectively, the way these functions work is by applying a mapping to
-transform the characters in a string to a byte sequence that represents
-the string's position in the collating sequence of the current locale.
-Comparing two such byte-sequences in a simple fashion is equivalent to
-comparing the strings with the locale's collating sequence.
-
-The functions @code{strcoll} and @code{wcscoll} perform this translation
-implicitly, in order to do one comparison.  By contrast, @code{strxfrm}
-and @code{wcsxfrm} perform the mapping explicitly.  If you are making
-multiple comparisons using the same string or set of strings, it is
-likely to be more efficient to use @code{strxfrm} or @code{wcsxfrm} to
-transform all the strings just once, and subsequently compare the
-transformed strings with @code{strcmp} or @code{wcscmp}.
-
address@hidden string.h
address@hidden ISO
address@hidden int strcoll (const char address@hidden, const char 
address@hidden)
-The @code{strcoll} function is similar to @code{strcmp} but uses the
-collating sequence of the current locale for collation (the
address@hidden locale).
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int wcscoll (const wchar_t address@hidden, const wchar_t 
address@hidden)
-The @code{wcscoll} function is similar to @code{wcscmp} but uses the
-collating sequence of the current locale for collation (the
address@hidden locale).
address@hidden deftypefun
-
-Here is an example of sorting an array of strings, using @code{strcoll}
-to compare them.  The actual sort algorithm is not written here; it
-comes from @code{qsort} (@pxref{Array Sort Function}).  The job of the
-code shown here is to say how to compare the strings while sorting them
-(later on in this section, we will show a way to do this more
-efficiently using @code{strxfrm}).
-
address@hidden
-/* @r{This is the comparison function used with @code{qsort}.} */
-
-int
-compare_elements (char **p1, char **p2)
address@hidden
-  return strcoll (*p1, *p2);
address@hidden
-
-/* @r{This is the entry point---the function to sort}
-   @r{strings using the locale's collating sequence.} */
-
-void
-sort_strings (char **array, int nstrings)
address@hidden
-  /* @r{Sort @code{temp_array} by comparing the strings.} */
-  qsort (array, nstrings,
-         sizeof (char *), compare_elements);
address@hidden
address@hidden smallexample
-
address@hidden converting string to collation order
address@hidden string.h
address@hidden ISO
address@hidden size_t strxfrm (char *restrict @var{to}, const char *restrict 
@var{from}, size_t @var{size})
-The function @code{strxfrm} transforms the string @var{from} using the
-collation transformation determined by the locale currently selected for
-collation, and stores the transformed string in the array @var{to}.  Up
-to @var{size} characters (including a terminating null character) are
-stored.
-
-The behavior is undefined if the strings @var{to} and @var{from}
-overlap (@pxref{Copying and Concatenation}).
-
-The return value is the length of the entire transformed string.  This
-value is not affected by the value of @var{size}, but if it is greater
-than or equal to @var{size}, it means that the transformed string did
-not entirely fit in the array @var{to}.  In this case, only as much of
-the string as actually fits was stored.  To get the whole transformed
-string, call @code{strxfrm} again with a bigger output array.
-
-The transformed string may be longer than the original string, and it
-may also be shorter.
-
-If @var{size} is zero, no characters are stored in @var{to}.  In this
-case, @code{strxfrm} simply returns the number of characters that would
-be the length of the transformed string.  This is useful for determining
-what size the allocated array should be.  It does not matter what
address@hidden is if @var{size} is zero; @var{to} may even be a null pointer.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden size_t wcsxfrm (wchar_t *restrict @var{wto}, const wchar_t 
address@hidden, size_t @var{size})
-The function @code{wcsxfrm} transforms wide-character string @var{wfrom}
-using the collation transformation determined by the locale currently
-selected for collation, and stores the transformed string in the array
address@hidden  Up to @var{size} wide characters (including a terminating null
-character) are stored.
-
-The behavior is undefined if the strings @var{wto} and @var{wfrom}
-overlap (@pxref{Copying and Concatenation}).
-
-The return value is the length of the entire transformed wide-character
-string.  This value is not affected by the value of @var{size}, but if
-it is greater than or equal to @var{size}, it means that the transformed
-wide-character string did not entirely fit in the array @var{wto}.  In
-this case, only as much of the wide-character string as actually fits
-was stored.  To get the whole transformed wide-character string, call
address@hidden again with a bigger output array.
-
-The transformed wide-character string may be longer than the original
-wide-character string, and it may also be shorter.
-
-If @var{size} is zero, no characters are stored in @var{to}.  In this
-case, @code{wcsxfrm} simply returns the number of wide characters that
-would be the length of the transformed wide-character string.  This is
-useful for determining what size the allocated array should be (remember
-to multiply with @code{sizeof (wchar_t)}).  It does not matter what
address@hidden is if @var{size} is zero; @var{wto} may even be a null pointer.
address@hidden deftypefun
-
-Here is an example of how you can use @code{strxfrm} when
-you plan to do many comparisons.  It does the same thing as the previous
-example, but much faster, because it has to transform each string only
-once, no matter how many times it is compared with other strings.  Even
-the time needed to allocate and free storage is much less than the time
-we save, when there are many strings.
-
address@hidden
-struct sorter @{ char *input; char *transformed; @};
-
-/* @r{This is the comparison function used with @code{qsort}}
-   @r{to sort an array of @code{struct sorter}.} */
-
-int
-compare_elements (struct sorter *p1, struct sorter *p2)
address@hidden
-  return strcmp (p1->transformed, p2->transformed);
address@hidden
-
-/* @r{This is the entry point---the function to sort}
-   @r{strings using the locale's collating sequence.} */
-
-void
-sort_strings_fast (char **array, int nstrings)
address@hidden
-  struct sorter temp_array[nstrings];
-  int i;
-
-  /* @r{Set up @code{temp_array}.  Each element contains}
-     @r{one input string and its transformed string.} */
-  for (i = 0; i < nstrings; i++)
-    @{
-      size_t length = strlen (array[i]) * 2;
-      char *transformed;
-      size_t transformed_length;
-
-      temp_array[i].input = array[i];
-
-      /* @r{First make a buffer that you guess is big enough.}  */
-      transformed = (char *) xmalloc (length);
-
-      /* @r{Transform @code{array[i]}.}  */
-      transformed_length = strxfrm (transformed, array[i], length);
-
-      /* @r{If the buffer was not large enough, resize it}
-         @r{and try again.}  */
-      if (transformed_length >= length)
-        @{
-          /* @r{Allocate the needed space. +1 for terminating}
-             @address@hidden character.}  */
-          transformed = (char *) xrealloc (transformed,
-                                           transformed_length + 1);
-
-          /* @r{The return value is not interesting because we know}
-             @r{how long the transformed string is.}  */
-          (void) strxfrm (transformed, array[i],
-                          transformed_length + 1);
-        @}
-
-      temp_array[i].transformed = transformed;
-    @}
-
-  /* @r{Sort @code{temp_array} by comparing transformed strings.} */
-  qsort (temp_array, sizeof (struct sorter),
-         nstrings, compare_elements);
-
-  /* @r{Put the elements back in the permanent array}
-     @r{in their sorted order.} */
-  for (i = 0; i < nstrings; i++)
-    array[i] = temp_array[i].input;
-
-  /* @r{Free the strings we allocated.} */
-  for (i = 0; i < nstrings; i++)
-    free (temp_array[i].transformed);
address@hidden
address@hidden smallexample
-
-The interesting part of this code for the wide-character version would
-look like this:
-
address@hidden
-void
-sort_strings_fast (wchar_t **array, int nstrings)
address@hidden
-  @dots{}
-      /* @r{Transform @code{array[i]}.}  */
-      transformed_length = wcsxfrm (transformed, array[i], length);
-
-      /* @r{If the buffer was not large enough, resize it}
-         @r{and try again.}  */
-      if (transformed_length >= length)
-        @{
-          /* @r{Allocate the needed space. +1 for terminating}
-             @address@hidden character.}  */
-          transformed = (wchar_t *) xrealloc (transformed,
-                                              (transformed_length + 1)
-                                              * sizeof (wchar_t));
-
-          /* @r{The return value is not interesting because we know}
-             @r{how long the transformed string is.}  */
-          (void) wcsxfrm (transformed, array[i],
-                          transformed_length + 1);
-        @}
-  @dots{}
address@hidden smallexample
-
address@hidden
-Note the additional multiplication with @code{sizeof (wchar_t)} in the
address@hidden call.
-
address@hidden Note:} The string collation functions are a new
-feature of @address@hidden C90}.  Older C dialects have no equivalent feature.
-The wide-character versions were introduced in @w{Amendment 1} to
address@hidden@sc{iso} C90}.
-
address@hidden Search Functions
address@hidden Search Functions
-
-This section describes library functions that perform various kinds of
-search operations on strings and arrays.  These functions are declared
-in the header file @file{string.h}.
address@hidden string.h
address@hidden search functions (for strings)
address@hidden string search functions
-
address@hidden string.h
address@hidden ISO
address@hidden {void *} memchr (const void address@hidden, int @var{c}, size_t 
@var{size})
-This function finds the first occurrence of the byte @var{c} (converted
-to an @code{unsigned char}) in the initial @var{size} bytes of the
-object beginning at @var{block}.  The return value is a pointer to the
-located byte, or a null pointer if no match was found.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} wmemchr (const wchar_t address@hidden, wchar_t 
@var{wc}, size_t @var{size})
-This function finds the first occurrence of the wide character @var{wc}
-in the initial @var{size} wide characters of the object beginning at
address@hidden  The return value is a pointer to the located wide
-character, or a null pointer if no match was found.
address@hidden deftypefun
-
address@hidden string.h
address@hidden GNU
address@hidden {void *} rawmemchr (const void address@hidden, int @var{c})
-Often the @code{memchr} function is used with the knowledge that the
-byte @var{c} is available in the memory block specified by the
-parameters.  But this means that the @var{size} parameter is not really
-needed and that the tests performed with it at run time (to check whether
-the end of the block is reached) are not needed.
-
-The @code{rawmemchr} function exists for just this situation, which is
-surprisingly frequent.  The interface is similar to @code{memchr} except
-that the @var{size} parameter is missing.  The function will look beyond
-the end of the block pointed to by @var{block} in case the programmer
-made an error in assuming that the byte @var{c} is present in the block.
-In this case, the result is unspecified.  Otherwise, the return value is a
-pointer to the located byte.
-
-This function is of special interest when looking for the end of a
-string.  Since all strings are terminated by a null byte a call like:
-
address@hidden
-   rawmemchr (str, '\0')
address@hidden smallexample
-
address@hidden
-will never go beyond the end of the string.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden string.h
address@hidden GNU
address@hidden {void *} memrchr (const void address@hidden, int @var{c}, size_t 
@var{size})
-The function @code{memrchr} is like @code{memchr}, except that it searches
-backward from the end of the block defined by @var{block} and @var{size}
-(instead of forward from the front).
address@hidden deftypefun
-
address@hidden string.h
address@hidden ISO
address@hidden {char *} strchr (const char address@hidden, int @var{c})
-The @code{strchr} function finds the first occurrence of the character
address@hidden (converted to a @code{char}) in the null-terminated string
-beginning at @var{string}.  The return value is a pointer to the located
-character, or a null pointer if no match was found.
-
-For example:
address@hidden
-strchr ("hello, world", 'l')
-    @result{} "llo, world"
-strchr ("hello, world", '?')
-    @result{} NULL
address@hidden smallexample
-
-The terminating null character is considered to be part of the string,
-so you can use this function get a pointer to the end of a string by
-specifying a null character as the value of the @var{c} argument.  It
-would be better (but less portable) to use @code{strchrnul} in this
-case, though.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} wcschr (const wchar_t address@hidden, int @var{wc})
-The @code{wcschr} function finds the first occurrence of the wide
-character @var{wc} in the null-terminated wide-character string
-beginning at @var{wstring}.  The return value is a pointer to the
-located wide character, or a null pointer if no match was found.
-
-The terminating null character is considered to be part of the wide
-character string, so you can use this function get a pointer to the end
-of a wide-character string by specifying a null wide character as the
-value of the @var{wc} argument.  It would be better (but less portable)
-to use @code{wcschrnul} in this case, though.
address@hidden deftypefun
-
address@hidden string.h
address@hidden GNU
address@hidden {char *} strchrnul (const char address@hidden, int @var{c})
address@hidden is the same as @code{strchr} except that if it does not
-find the character, it returns a pointer to @var{string}'s
-terminating null character rather than a null pointer.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden {wchar_t *} wcschrnul (const wchar_t address@hidden, wchar_t 
@var{wc})
address@hidden is the same as @code{wcschr} except that if it does not
-find the wide character, it returns a pointer to the wide-character
-string's terminating null wide character rather than a null pointer.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
-One useful but unusual use of the @code{strchr} function is when you
-want to have a pointer pointing to the NUL byte terminating a string.
-This is often written in this way:
-
address@hidden
-  s += strlen (s);
address@hidden smallexample
-
address@hidden
-This is almost optimal, but the addition operation duplicated a bit of
-the work already done in the @code{strlen} function.  A better solution
-is this:
-
address@hidden
-  s = strchr (s, '\0');
address@hidden smallexample
-
-There is no restriction on the second parameter of @code{strchr}, so it
-could very well also be the NUL character.  The @code{strchr} function
-is more expensive than the @code{strlen} function, since we have two
-abort criteria.  But in the @sc{gnu} C Library, the implementation of
address@hidden is optimized in a special way, so that @code{strchr}
-actually is faster.
-
address@hidden string.h
address@hidden ISO
address@hidden {char *} strrchr (const char address@hidden, int @var{c})
-The function @code{strrchr} is like @code{strchr}, except that it searches
-backward from the end of the string @var{string} (instead of forward
-from the front).
-
-For example:
address@hidden
-strrchr ("hello, world", 'l')
-    @result{} "ld"
address@hidden smallexample
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} wcsrchr (const wchar_t address@hidden, wchar_t 
@var{c})
-The function @code{wcsrchr} is like @code{wcschr}, except that it searches
-backwards from the end of the string @var{wstring} (instead of forward
-from the front).
address@hidden deftypefun
-
address@hidden string.h
address@hidden ISO
address@hidden {char *} strstr (const char address@hidden, const char 
address@hidden)
-This is like @code{strchr}, except that it searches @var{haystack} for a
-substring @var{needle} rather than just a single character.  It
-returns a pointer into the string @var{haystack} that is the first
-character of the substring, or a null pointer if no match was found.  If
address@hidden is an empty string, the function returns @var{haystack}.
-
-For example:
address@hidden
-strstr ("hello, world", "l")
-    @result{} "llo, world"
-strstr ("hello, world", "wo")
-    @result{} "world"
address@hidden smallexample
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} wcsstr (const wchar_t address@hidden, const wchar_t 
address@hidden)
-This is like @code{wcschr}, except that it searches @var{haystack} for a
-substring @var{needle} rather than just a single wide character.  It
-returns a pointer into the string @var{haystack} that is the first wide
-character of the substring, or a null pointer if no match was found.  If
address@hidden is an empty string, the function returns @var{haystack}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden XPG
address@hidden {wchar_t *} wcswcs (const wchar_t address@hidden, const wchar_t 
address@hidden)
address@hidden is a deprecated alias for @code{wcsstr}.  This is the
-name originally used in the @emph{X/Open Portability
address@hidden/Open Company, @emph{X/Open Portability Guide,} Issue
-4, Version 2 (Reading, UK: X/Open Company, Ltd., 1994).} before the
address@hidden 1} to @address@hidden C90} was published.
address@hidden deftypefun
-
-
address@hidden string.h
address@hidden GNU
address@hidden {char *} strcasestr (const char address@hidden, const char 
address@hidden)
-This is like @code{strstr}, except that it ignores case in searching for
-the substring.  Like @code{strcasecmp}, how uppercase and lowercase
-characters are related is locale dependent.
-
-
-For example:
address@hidden
-strstr ("hello, world", "L")
-    @result{} "llo, world"
-strstr ("hello, World", "wo")
-    @result{} "World"
address@hidden smallexample
address@hidden deftypefun
-
-
address@hidden string.h
address@hidden GNU
address@hidden {void *} memmem (const void address@hidden, size_t 
@var{haystack-len},@*const void address@hidden, size_t @var{needle-len})
-This is like @code{strstr}, but @var{needle} and @var{haystack} are byte
-arrays rather than null-terminated strings.  @var{needle-len} is the
-length of @var{needle} and @var{haystack-len} is the length of
address@hidden@refill
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden string.h
address@hidden ISO
address@hidden size_t strspn (const char address@hidden, const char 
address@hidden)
-The @code{strspn} (``string span'') function returns the length of the
-initial substring of @var{string} that consists entirely of characters that
-are members of the set specified by the string @var{skipset}.  The order
-of the characters in @var{skipset} is not important.
-
-For example:
address@hidden
-strspn ("hello, world", "abcdefghijklmnopqrstuvwxyz")
-    @result{} 5
address@hidden smallexample
-
address@hidden used here in the sense of byte.  In a string using a
-multibyte-character encoding (abstract), characters consisting of more
-than one byte are not treated as an entity.  Each byte is treated
-separately.  The function is not locale dependent.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden size_t wcsspn (const wchar_t address@hidden, const wchar_t 
address@hidden)
-The @code{wcsspn} (``wide-character string span'') function returns the
-length of the initial substring of @var{wstring} that consists entirely
-of wide characters that are members of the set specified by the string
address@hidden  The order of the wide characters in @var{skipset} is not
-important.
address@hidden deftypefun
-
address@hidden string.h
address@hidden ISO
address@hidden size_t strcspn (const char address@hidden, const char 
address@hidden)
-The @code{strcspn} (``string complement span'') function returns the
-length of the initial substring of @var{string} that consists entirely
-of characters that are @emph{not} members of the set specified by the
-string @var{stopset}.  (In other words, it returns the offset of the
-first character in @var{string} that is a member of the set
address@hidden)
-
-For example:
address@hidden
-strcspn ("hello, world", " \t\n,.;!?")
-    @result{} 5
address@hidden smallexample
-
address@hidden is used here in the sense of byte.  In a string using
-a multibyte-character encoding (abstract), characters consisting of
-more than one byte are not treated as an entity.  Each byte is treated
-separately.  The function is not locale dependent.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden size_t wcscspn (const wchar_t address@hidden, const wchar_t 
address@hidden)
-The @code{wcscspn} (``wide-character string complement span'')
-function returns the length of the initial substring of @var{wstring}
-that consists entirely of wide characters that are @emph{not} members
-of the set specified by the string @var{stopset}.  (In other words, it
-returns the offset of the first character in @var{string} that is a
-member of the set @var{stopset}.)
address@hidden deftypefun
-
address@hidden string.h
address@hidden ISO
address@hidden {char *} strpbrk (const char address@hidden, const char 
address@hidden)
-The @code{strpbrk} (``string pointer break'') function is related to
address@hidden, except that it returns a pointer to the first character
-in @var{string} that is a member of the set @var{stopset} instead of the
-length of the initial substring.  It returns a null pointer if no such
-character from @var{stopset} is found.
-
address@hidden @group  Invalid outside the example.
-For example:
-
address@hidden
-strpbrk ("hello, world", " \t\n,.;!?")
-    @result{} ", world"
address@hidden smallexample
address@hidden @end group
-
address@hidden is used here in the sense of byte.  In a string
-using a multibyte-character encoding (abstract), characters consisting of
-more than one byte are not treated as an entity.  Each byte is treated
-separately.  The function is not locale dependent.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} wcspbrk (const wchar_t address@hidden, const wchar_t 
address@hidden)
-The @code{wcspbrk} (``wide-character string pointer break'') function is
-related to @code{wcscspn}, except that it returns a pointer to the first
-wide character in @var{wstring} that is a member of the set
address@hidden instead of the length of the initial substring.  It
-returns a null pointer if no such character from @var{stopset} is found.
address@hidden deftypefun
-
-
address@hidden Compatibility String Search Functions
-
address@hidden string.h
address@hidden BSD
address@hidden {char *} index (const char address@hidden, int @var{c})
address@hidden is another name for @code{strchr}; they are exactly the
-same.  New code should always use @code{strchr}, since this name is
-defined in @address@hidden C} while @code{index} is a @sc{bsd} invention
-that was never available on @w{System V} derived systems.
address@hidden deftypefun
-
address@hidden string.h
address@hidden BSD
address@hidden {char *} rindex (const char address@hidden, int @var{c})
address@hidden is another name for @code{strrchr}; they are exactly the
-same.  New code should always use @code{strrchr}, since this name is
-defined in @address@hidden C} while @code{rindex} is a @sc{bsd} invention
-that was never available on @w{System V} derived systems.
address@hidden deftypefun
-
address@hidden Finding Tokens in a String
address@hidden Finding Tokens in a String
-
address@hidden tokenizing strings
address@hidden breaking a string into tokens
address@hidden parsing tokens from a string
-It's fairly common for programs to have a need to do some simple kinds
-of lexical analysis and parsing, such as splitting a command string up
-into tokens.  You can do this with the @code{strtok} function, declared
-in the header file @file{string.h}.
address@hidden string.h
-
address@hidden string.h
address@hidden ISO
address@hidden {char *} strtok (char *restrict @var{newstring}, const char 
*restrict @var{delimiters})
-A string can be split into tokens by making a series of calls to the
-function @code{strtok}.
-
-The string to be split up is passed as the @var{newstring} argument on
-the first call only.  The @code{strtok} function uses this to set up
-some internal state information.  Subsequent calls to get additional
-tokens from the same string are indicated by passing a null pointer as
-the @var{newstring} argument.  Calling @code{strtok} with another
-nonnull @var{newstring} argument reinitializes the state information.
-It is guaranteed that no other library function ever calls @code{strtok}
-behind your back (which would mess up this internal state information).
-
-The @var{delimiters} argument is a string that specifies a set of delimiters
-that may surround the token being extracted.  All the initial characters
-that are members of this set are discarded.  The first character that is
address@hidden a member of this set of delimiters marks the beginning of the
-next token.  The end of the token is found by looking for the next
-character that is a member of the delimiter set.  This character in the
-original string @var{newstring} is overwritten by a null character, and the
-pointer to the beginning of the token in @var{newstring} is returned.
-
-On the next call to @code{strtok}, the searching begins at the next
-character beyond the one that marked the end of the previous token.
-Note that the set of delimiters @var{delimiters} do not have to be the
-same on every call in a series of calls to @code{strtok}.
-
-If the end of the string @var{newstring} is reached, or if the remainder
-of the string consists only of delimiter characters, @code{strtok}
-returns a null pointer.
-
address@hidden is used here in the sense of byte.  In a string using
-a multibyte-character encoding (abstract), characters consisting of
-more than 1 byte are not treated as an entity.  Each byte is treated
-separately.  The function is not locale dependent.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} wcstok (wchar_t address@hidden, const char 
address@hidden)
-A string can be split into tokens by making a series of calls to the
-function @code{wcstok}.
-
-The string to be split up is passed as the @var{newstring} argument on
-the first call only.  The @code{wcstok} function uses this to set up
-some internal state information.  Subsequent calls to get additional
-tokens from the same wide-character string are indicated by passing a
-null pointer as the @var{newstring} argument.  Calling @code{wcstok}
-with another nonnull @var{newstring} argument reinitializes the state
-information.  It is guaranteed that no other library function ever calls
address@hidden behind your back (which would mess up this internal state
-information).
-
-The @var{delimiters} argument is a wide-character string that specifies
-a set of delimiters that may surround the token being extracted.  All
-the initial wide characters that are members of this set are discarded.
-The first wide character that is @emph{not} a member of this set of
-delimiters marks the beginning of the next token.  The end of the token
-is found by looking for the next wide character that is a member of the
-delimiter set.  This wide character in the original wide-character
-string @var{newstring} is overwritten by a null wide character, and the
-pointer to the beginning of the token in @var{newstring} is returned.
-
-On the next call to @code{wcstok}, the searching begins at the next wide
-character beyond the one that marked the end of the previous token.  The
-set of delimiters @var{delimiters} do not have to be the same on every
-call in a series of calls to @code{wcstok}.
-
-If the end of the wide-character string @var{newstring} is reached, or
-if the remainder of the string consists only of delimiter wide
-characters, @code{wcstok} returns a null pointer.
-
address@hidden is used here in the sense of byte.  In a string using
-a multibyte-character encoding (abstract), characters consisting of
-more than one byte are not treated as an entity.  Each byte is treated
-separately.  The function is not locale dependent.
address@hidden deftypefun
-
address@hidden:} Since @code{strtok} and @code{wcstok} alter the string
-they are parsing, you should always copy the string to a temporary
-buffer before parsing it with @code{strtok}/@code{wcstok}
-(@pxref{Copying and Concatenation}).  If you allow @code{strtok} or
address@hidden to modify a string that came from another part of your
-program, you are asking for trouble; that string might be used for other
-purposes after @code{strtok} or @code{wcstok} has modified it, and it
-would not have the expected value.
-
-The string that you are operating on might even be a constant.  Then
-when @code{strtok} or @code{wcstok} tries to modify it, your program
-will get a fatal signal for writing in read-only address@hidden
-Loosemore et al., ``Program-Error Signals'' (see chap. 1, n. 1).}  Even if the
-operation of @code{strtok} or @code{wcstok} would not require a
-modification of the string (e.g., if there is exactly one token), the
-string can (and in the @sc{gnu} libc case will) be modified.
-
-This is a special case of a general principle: if a part of a program
-does not have as its purpose the modification of a certain data
-structure, then to modify the data structure temporarily is to risk
-errors.
-
-The functions @code{strtok} and @code{wcstok} are not
address@hidden Loosemore et al., ``Signal Handling and Nonreentrant 
Functions'', for a discussion of
-where and why reentrancy is important.}
-
-Here is a simple example showing the use of @code{strtok}:
-
address@hidden Yes, this example has been tested.
address@hidden
-#include <string.h>
-#include <stddef.h>
-
address@hidden
-
-const char string[] = "words separated by spaces -- and, punctuation!";
-const char delimiters[] = " .,;:!-";
-char *token, *cp;
-
address@hidden
-
-cp = strdupa (string);                /* Make writable copy.  */
-token = strtok (cp, delimiters);      /* token => "words" */
-token = strtok (NULL, delimiters);    /* token => "separated" */
-token = strtok (NULL, delimiters);    /* token => "by" */
-token = strtok (NULL, delimiters);    /* token => "spaces" */
-token = strtok (NULL, delimiters);    /* token => "and" */
-token = strtok (NULL, delimiters);    /* token => "punctuation" */
-token = strtok (NULL, delimiters);    /* token => NULL */
address@hidden smallexample
-
-The @sc{gnu} C Library contains two more functions for tokenizing a string
-which overcome the limitation of nonreentrancy.  They are only
-available for multibyte-character strings.
-
address@hidden string.h
address@hidden POSIX
address@hidden {char *} strtok_r (char address@hidden, const char 
address@hidden, char address@hidden)
-Just like @code{strtok}, this function splits the string into several
-tokens that can be accessed by successive calls to @code{strtok_r}.  The
-difference is that the information about the next token is stored in the
-space pointed to by the third argument, @var{save_ptr}, which is a
-pointer to a string pointer.  Calling @code{strtok_r} with a null
-pointer for @var{newstring} and leaving @var{save_ptr} between the calls
-unchanged does the job without hindering reentrancy.
-
-This function is defined in @sc{posix}.1 and can be found on many systems
-which support multithreading.
address@hidden deftypefun
-
address@hidden string.h
address@hidden BSD
address@hidden {char *} strsep (char address@hidden, const char address@hidden)
-This function has a similar functionality to @code{strtok_r}, with the
address@hidden argument replaced by the @var{save_ptr} argument.  The
-initialization of the moving pointer has to be done by the user.
-Successive calls to @code{strsep} move the pointer along the tokens
-separated by @var{delimiter}, returning the address of the next token
-and updating @var{string_ptr} to point to the beginning of the next
-token.
-
-One difference between @code{strsep} and @code{strtok_r} is that if the
-input string contains more than one character from @var{delimiter} in a
-row, @code{strsep} returns an empty string for each pair of characters
-from @var{delimiter}.  This means that a program normally should test
-for @code{strsep} returning an empty string before processing it.
-
-This function was introduced in address@hidden and therefore is widely 
available.
address@hidden deftypefun
-
-Here is how the above example looks like when @code{strsep} is used:
-
address@hidden Yes, this example has been tested.
address@hidden
-#include <string.h>
-#include <stddef.h>
-
address@hidden
-
-const char string[] = "words separated by spaces -- and, punctuation!";
-const char delimiters[] = " .,;:!-";
-char *running;
-char *token;
-
address@hidden
-
-running = strdupa (string);
-token = strsep (&running, delimiters);    /* token => "words" */
-token = strsep (&running, delimiters);    /* token => "separated" */
-token = strsep (&running, delimiters);    /* token => "by" */
-token = strsep (&running, delimiters);    /* token => "spaces" */
-token = strsep (&running, delimiters);    /* token => "" */
-token = strsep (&running, delimiters);    /* token => "" */
-token = strsep (&running, delimiters);    /* token => "" */
-token = strsep (&running, delimiters);    /* token => "and" */
-token = strsep (&running, delimiters);    /* token => "" */
-token = strsep (&running, delimiters);    /* token => "punctuation" */
-token = strsep (&running, delimiters);    /* token => "" */
-token = strsep (&running, delimiters);    /* token => NULL */
address@hidden smallexample
-
address@hidden string.h
address@hidden GNU
address@hidden {char *} basename (const char address@hidden)
-The @sc{gnu} version of the @code{basename} function returns the last
-component of the path in @var{filename}.  This function is the preferred
-usage, since it does not modify the argument, @var{filename}, and
-respects trailing slashes.  The prototype for @code{basename} can be
-found in @file{string.h}.  This function is overriden by the @sc{xpg}
-version, if @file{libgen.h} is included.
-
-Here is an example using @sc{gnu} @code{basename}:
-
address@hidden
-#include <string.h>
-
-int
-main (int argc, char *argv[])
address@hidden
-  char *prog = basename (argv[0]);
-
-  if (argc < 2)
-    @{
-      fprintf (stderr, "Usage %s <arg>\n", prog);
-      exit (1);
-    @}
-
-  @dots{}
address@hidden
address@hidden smallexample
-
address@hidden Note:} This function may produce different results
-on different systems.
-
address@hidden deftypefun
-
address@hidden libgen.h
address@hidden XPG
address@hidden {char *} basename (char address@hidden)
-This is the standard @sc{xpg}-defined @code{basename}. It is similar
-in spirit to the @sc{gnu} version, but may modify the @var{path} by
-removing trailing @samp{/} characters.  If the @var{path} is made up
-entirely of @samp{/} characters, then ``/'' will be returned.  Also,
-if @var{path} is @code{NULL} or an empty string, then ``.'' is
-returned.  The prototype for the @sc{xpg} version can be found in
address@hidden
-
-Here is an example using @sc{xpg} @code{basename}:
-
address@hidden
-#include <libgen.h>
-
-int
-main (int argc, char *argv[])
address@hidden
-  char *prog;
-  char *path = strdupa (argv[0]);
-
-  prog = basename (path);
-
-  if (argc < 2)
-    @{
-      fprintf (stderr, "Usage %s <arg>\n", prog);
-      exit (1);
-    @}
-
-  @dots{}
-
address@hidden
address@hidden smallexample
address@hidden deftypefun
-
address@hidden libgen.h
address@hidden XPG
address@hidden {char *} dirname (char address@hidden)
-The @code{dirname} function is the compliment to the @sc{xpg} version
-of @code{basename}.  It returns the parent directory of the file
-specified by @var{path}.  If @var{path} is @code{NULL}, an empty
-string, or contains no @samp{/} characters, then ``.'' is returned.
-The prototype for this function can be found in @file{libgen.h}.
address@hidden deftypefun
-
address@hidden strfry
address@hidden @code{strfry}
-
-The function below addresses the perennial programming quandary, ``How
-do I take good data in string form and painlessly turn it into
-garbage?''  This is actually a fairly simple task for C programmers
-who do not use the @sc{gnu} C Library string functions, but for
-programs based on the @sc{gnu} C Library, the @code{strfry} function
-is the preferred method for destroying string data.
-
-The prototype for this function is in @file{string.h}.
-
address@hidden string.h
address@hidden GNU
address@hidden {char *} strfry (char address@hidden)
-
address@hidden creates a pseudorandom anagram of a string, replacing the
-input with the anagram.  For each position in the string, @code{strfry}
-swaps it with a position in the string selected at random (from a
-uniform distribution).  The two positions may be the same.
-
-The return value of @code{strfry} is always @var{string}.
-
address@hidden Note:}  This function is unique to the @sc{gnu} C Library.
-
address@hidden deftypefun
-
-
address@hidden Trivial Encryption
address@hidden Trivial Encryption
address@hidden encryption
-
-
-The @code{memfrob} function converts an array of data to something
-unrecognizable and back again.  It is not encryption in its usual sense
-since it is easy for someone to convert the encrypted data back to clear
-text.  The transformation is analogous to Usenet's ``Rot13'' encryption
-method for obscuring offensive jokes from sensitive eyes and such.
-Unlike Rot13, @code{memfrob} works on arbitrary binary data, not just
address@hidden Loosemore et al., address@hidden Encryption and Password 
Handling'', for a
-discussion of true encryption.}
address@hidden Rot13
-
-This function is declared in @file{string.h}.
address@hidden string.h
-
address@hidden string.h
address@hidden GNU
address@hidden {void *} memfrob (void address@hidden, size_t @var{length})
-
address@hidden transforms (frobnicates) each byte of the data structure
-at @var{mem}, which is @var{length} bytes long, by bit-wise
-exclusive-oring it with binary 00101010.  It does the transformation in
-place and its return value is always @var{mem}.
-
address@hidden a second time on the same data structure returns it to
-its original state.
-
-This is a good function for hiding information from someone who
-doesn't want to see it.  To really prevent people from retrieving the
-information, use stronger address@hidden, address@hidden and Password 
Handling''.}
-
address@hidden Note:} This function is unique to the @sc{gnu} C
-Library.
-
address@hidden deftypefun
-
address@hidden Encode Binary Data
address@hidden Encode Binary Data
-
-To store or transfer binary data in environments that only support text,
-you have to encode the binary data by mapping the input bytes to
-characters in the range allowed for storing or transferring.  @sc{svid}
-systems (and nowadays @sc{xpg}-compliant systems) provide minimal support for
-this task.
-
address@hidden stdlib.h
address@hidden XPG
address@hidden {char *} l64a (long int @var{n})
-This function encodes a 32-bit input value using characters from the
-basic character set.  It returns a pointer to a 6-character buffer that
-contains an encoded version of @var{n}.  To encode a series of bytes,
-the user must copy the returned string to a destination buffer.  It
-returns the empty string if @var{n} is zero, which is somewhat bizarre
-but mandated by the address@hidden @strong{Warning:} Since a static buffer
-is used, this function should not be used in multithreaded programs.
-There is no thread-safe alternative to this function in the C address@hidden
address@hidden Note:} The @sc{xpg} standard states that the
-return value of @code{l64a} is undefined if @var{n} is negative.  In the
address@hidden implementation, @code{l64a} treats its argument as unsigned, so
-it will return a sensible encoding for any nonzero @var{n}; however,
-portable programs should not rely on this.
-
-To encode a large buffer @code{l64a} must be called in a loop, once for
-each 32-bit word of the buffer.  For example, one could do something
-like this:
-
address@hidden
-char *
-encode (const void *buf, size_t len)
address@hidden
-  /* @r{We know in advance how long the buffer has to be.} */
-  unsigned char *in = (unsigned char *) buf;
-  char *out = malloc (6 + ((len + 3) / 4) * 6 + 1);
-  char *cp = out;
-
-  /* @r{Encode the length.} */
-  /* @r{Using `htonl' is necessary so that the data can be}
-     @r{decoded even on machines with different byte order.} */
-
-  cp = mempcpy (cp, l64a (htonl (len)), 6);
-
-  while (len > 3)
-    @{
-      unsigned long int n = *in++;
-      n = (n << 8) | *in++;
-      n = (n << 8) | *in++;
-      n = (n << 8) | *in++;
-      len -= 4;
-      if (n)
-        cp = mempcpy (cp, l64a (htonl (n)), 6);
-      else
-            /* @r{`l64a' returns the empty string for n==0, so we }
-               @r{must generate its encoding (}"......"@r{) by hand.} */
-        cp = stpcpy (cp, "......");
-    @}
-  if (len > 0)
-    @{
-      unsigned long int n = *in++;
-      if (--len > 0)
-        @{
-          n = (n << 8) | *in++;
-          if (--len > 0)
-            n = (n << 8) | *in;
-        @}
-      memcpy (cp, l64a (htonl (n)), 6);
-      cp += 6;
-    @}
-  *cp = '\0';
-  return out;
address@hidden
address@hidden smallexample
address@hidden deftypefun
-
-To decode data produced with @code{l64a}, the following function should be
-used.
-
address@hidden stdlib.h
address@hidden XPG
address@hidden {long int} a64l (const char address@hidden)
-The parameter @var{string} should contain a string that was produced by
-a call to @code{l64a}.  The function processes at least 6 characters of
-this string, and decodes the characters it finds according to the table
-below.  It stops decoding when it finds a character not in the table,
-rather like @code{atoi}; if you have a buffer that has been broken into
-lines, you must be careful to skip over the end-of-line characters.
-
-The decoded number is returned as a @code{long int} value.
address@hidden deftypefun
-
-The @code{l64a} and @code{a64l} functions use a base-64 encoding, in
-which each character of an encoded string represents 6 bits of an
-input word.  These symbols are used for the base-64 digits:
-
address@hidden {xxxxx} {xxx} {xxx} {xxx} {xxx} {xxx} {xxx} {xxx} {xxx}
address@hidden              @tab 0 @tab 1 @tab 2 @tab 3 @tab 4 @tab 5 @tab 6 
@tab 7
address@hidden       0      @tab @code{.} @tab @code{/} @tab @code{0} @tab 
@code{1}
-                   @tab @code{2} @tab @code{3} @tab @code{4} @tab @code{5}
address@hidden       8      @tab @code{6} @tab @code{7} @tab @code{8} @tab 
@code{9}
-                   @tab @code{A} @tab @code{B} @tab @code{C} @tab @code{D}
address@hidden       16     @tab @code{E} @tab @code{F} @tab @code{G} @tab 
@code{H}
-                   @tab @code{I} @tab @code{J} @tab @code{K} @tab @code{L}
address@hidden       24     @tab @code{M} @tab @code{N} @tab @code{O} @tab 
@code{P}
-                   @tab @code{Q} @tab @code{R} @tab @code{S} @tab @code{T}
address@hidden       32     @tab @code{U} @tab @code{V} @tab @code{W} @tab 
@code{X}
-                   @tab @code{Y} @tab @code{Z} @tab @code{a} @tab @code{b}
address@hidden       40     @tab @code{c} @tab @code{d} @tab @code{e} @tab 
@code{f}
-                   @tab @code{g} @tab @code{h} @tab @code{i} @tab @code{j}
address@hidden       48     @tab @code{k} @tab @code{l} @tab @code{m} @tab 
@code{n}
-                   @tab @code{o} @tab @code{p} @tab @code{q} @tab @code{r}
address@hidden       56     @tab @code{s} @tab @code{t} @tab @code{u} @tab 
@code{v}
-                   @tab @code{w} @tab @code{x} @tab @code{y} @tab @code{z}
address@hidden multitable
-
-This encoding scheme is not standard.  There are some other encoding
-methods that are much more widely used (@sc{uu} encoding, @sc{mime} encoding).
-Generally, it is better to use one of these encodings.
-
address@hidden Argz and Envz Vectors
address@hidden Argz and Envz Vectors
-
address@hidden argz vectors (string vectors)
address@hidden string vectors, null-character separated
address@hidden argument vectors, null-character separated
address@hidden vectors} are vectors of strings in a contiguous block of
-memory, each element separated from its neighbors by null-characters
-(@code{'\0'}).
-
address@hidden envz vectors (environment vectors)
address@hidden environment vectors, null-character separated
address@hidden vectors} are an extension of argz vectors where each element is a
-name-value pair, separated by a @code{'='} character (as in a Unix
-environment).
-
address@hidden Argz Functions, Envz Functions, , Argz and Envz Vectors
address@hidden Argz Functions
-
-Each argz vector is represented by a pointer to the first element, of
-type @code{char *}, and a size, of type @code{size_t}, both of which can
-be initialized to @code{0} to represent an empty argz vector.  All argz
-functions accept either a pointer and a size argument, or pointers to
-them, if they will be modified.
-
-The argz functions use @code{malloc}/@code{realloc} to allocate and grow
-argz vectors, so any argz vector created using these functions may be
-freed by using @code{free}; conversely, any argz function that may grow
-a string expects that string to have been allocated using @code{malloc}
-(those argz functions that only examine their arguments or modify them
-in place will work on any sort of memory).  @xref{Unconstrained
-Allocation}, for more information.
-
-All argz functions that do memory allocation have a return type of
address@hidden, and return @code{0} for success or @code{ENOMEM} if an
-allocation error occurs.
-
address@hidden argz.h
-These functions are declared in the standard include file @file{argz.h}.
-
address@hidden argz.h
address@hidden GNU
address@hidden {error_t} argz_create (char *const @var{argv}[], char 
address@hidden, size_t address@hidden)
-The @code{argz_create} function converts the Unix-style argument vector
address@hidden (a vector of pointers to normal C strings, terminated by
address@hidden(char *)0}; @pxref{Program Arguments}) into an argz vector with
-the same elements, which is returned in @var{argz} and @var{argz_len}.
address@hidden deftypefun
-
address@hidden argz.h
address@hidden GNU
address@hidden {error_t} argz_create_sep (const char address@hidden, int 
@var{sep}, char address@hidden, size_t address@hidden)
-The @code{argz_create_sep} function converts the null-terminated string
address@hidden into an argz vector (returned in @var{argz} and
address@hidden) by splitting it into elements at every occurrence of the
-character @var{sep}.
address@hidden deftypefun
-
address@hidden argz.h
address@hidden GNU
address@hidden {size_t} argz_count (const char address@hidden, size_t 
@var{arg_len})
-Returns the number of elements in the argz vector @var{argz} and
address@hidden
address@hidden deftypefun
-
address@hidden argz.h
address@hidden GNU
address@hidden {void} argz_extract (char address@hidden, size_t @var{argz_len}, 
char address@hidden)
-The @code{argz_extract} function converts the argz vector @var{argz} and
address@hidden into a Unix-style argument vector stored in @var{argv},
-by putting pointers to every element in @var{argz} into successive
-positions in @var{argv}, followed by a terminator of @code{0}.
address@hidden must be preallocated with enough space to hold all the
-elements in @var{argz} plus the terminating @code{(char *)0}
-(@code{(argz_count (@var{argz}, @var{argz_len}) + 1) * sizeof (char *)}
-bytes should be enough).  The string pointers stored into @var{argv}
-point into @var{argz}---they are not copies---and so @var{argz} must be
-copied if it will be changed while @var{argv} is still active.  This
-function is useful for passing the elements in @var{argz} to an exec
address@hidden, ``Executing a File''.}
address@hidden deftypefun
-
address@hidden argz.h
address@hidden GNU
address@hidden {void} argz_stringify (char address@hidden, size_t @var{len}, 
int @var{sep})
-The @code{argz_stringify} converts @var{argz} into a normal string with
-the elements separated by the character @var{sep}, by replacing each
address@hidden'\0'} inside @var{argz} (except the last one, which terminates the
-string) with @var{sep}.  This is handy for printing @var{argz} in a
-readable manner.
address@hidden deftypefun
-
address@hidden argz.h
address@hidden GNU
address@hidden {error_t} argz_add (char address@hidden, size_t address@hidden, 
const char address@hidden)
-The @code{argz_add} function adds the string @var{str} to the end of the
-argz vector @address@hidden, and updates @address@hidden and
address@hidden@var{argz_len}} accordingly.
address@hidden deftypefun
-
address@hidden argz.h
address@hidden GNU
address@hidden {error_t} argz_add_sep (char address@hidden, size_t 
address@hidden, const char address@hidden, int @var{delim})
-The @code{argz_add_sep} function is similar to @code{argz_add}, but
address@hidden is split into separate elements in the result at occurrences of
-the character @var{delim}.  This is useful, for instance, for
-adding the components of a Unix search path to an argz vector, by using
-a value of @code{':'} for @var{delim}.
address@hidden deftypefun
-
address@hidden argz.h
address@hidden GNU
address@hidden {error_t} argz_append (char address@hidden, size_t 
address@hidden, const char address@hidden, size_t @var{buf_len})
-The @code{argz_append} function appends @var{buf_len} bytes starting at
address@hidden to the argz vector @address@hidden, reallocating
address@hidden@var{argz}} to accommodate it, and adding @var{buf_len} to
address@hidden@var{argz_len}}.
address@hidden deftypefun
-
address@hidden argz.h
address@hidden GNU
address@hidden {error_t} argz_delete (char address@hidden, size_t 
address@hidden, char address@hidden)
-If @var{entry} points to the beginning of one of the elements in the
-argz vector @address@hidden, the @code{argz_delete} function will
-remove this entry and reallocate @address@hidden, modifying
address@hidden@var{argz}} and @address@hidden accordingly.  As
-destructive argz functions usually reallocate their argz argument,
-pointers into argz vectors such as @var{entry} will then become invalid.
address@hidden deftypefun
-
address@hidden argz.h
address@hidden GNU
address@hidden {error_t} argz_insert (char address@hidden, size_t 
address@hidden, char address@hidden, const char address@hidden)
-The @code{argz_insert} function inserts the string @var{entry} into the
-argz vector @address@hidden at a point just before the existing
-element pointed to by @var{before}, reallocating @address@hidden and
-updating @address@hidden and @address@hidden  If @var{before}
-is @code{0}, @var{entry} is added to the end instead (as if by
address@hidden).  Since the first element is in fact the same as
address@hidden@var{argz}}, passing in @address@hidden as the value of
address@hidden will result in @var{entry} being inserted at the beginning.
address@hidden deftypefun
-
address@hidden argz.h
address@hidden GNU
address@hidden {char *} argz_next (char address@hidden, size_t @var{argz_len}, 
const char address@hidden)
-The @code{argz_next} function provides a convenient way of iterating
-over the elements in the argz vector @var{argz}.  It returns a pointer
-to the next element in @var{argz} after the element @var{entry}, or
address@hidden if there are no elements following @var{entry}.  If @var{entry}
-is @code{0}, the first element of @var{argz} is returned.
-
-This behavior suggests two styles of iteration:
-
address@hidden
-    char *entry = 0;
-    while ((entry = argz_next (@var{argz}, @var{argz_len}, entry)))
-      @var{action};
address@hidden smallexample
-
-(the double parentheses are necessary to make some C compilers shut up
-about what they consider a questionable @code{while}-test) and:
-
address@hidden
-    char *entry;
-    for (entry = @var{argz};
-         entry;
-         entry = argz_next (@var{argz}, @var{argz_len}, entry))
-      @var{action};
address@hidden smallexample
-
-The latter depends on @var{argz} having a value of @code{0} if it is
-empty (rather than a pointer to an empty block of memory); this
-invariant is maintained for argz vectors created by the functions here.
address@hidden deftypefun
-
address@hidden argz.h
address@hidden GNU
address@hidden error_t argz_replace (@w{char address@hidden, size_t 
address@hidden, @w{const char address@hidden, const char address@hidden, 
@w{unsigned address@hidden)
-Replace any occurrences of the string @var{str} in @var{argz} with
address@hidden, reallocating @var{argz} as necessary.  If
address@hidden is nonzero, @address@hidden will be
-incremented by the number of replacements performed.
address@hidden deftypefun
-
address@hidden Envz Functions, , Argz Functions, Argz and Envz Vectors
address@hidden Envz Functions
-
-Envz vectors are just argz vectors with additional constraints on the form
-of each element; as such, argz functions can also be used on them, where it
-makes sense.
-
-Each element in an envz vector is a name-value pair, separated by a @code{'='}
-character; if multiple @code{'='} characters are present in an element, those
-after the first are considered part of the value, and treated like all other
address@hidden'\0'} characters.
-
-If @emph{no} @code{'='} characters are present in an element, that element is
-considered the name of a ``null'' entry, as distinct from an entry with an
-empty value: @code{envz_get} will return @code{0} if given the name of null
-entry, whereas an entry with an empty value would result in a value of
address@hidden""}; @code{envz_entry} will still find such entries, however.  
Null
-entries can be removed with @code{envz_strip} function.
-
-As with argz functions, envz functions that may allocate memory (and thus
-fail) have a return type of @code{error_t}, and return either @code{0} or
address@hidden
-
address@hidden envz.h
-These functions are declared in the standard include file @file{envz.h}.
-
address@hidden envz.h
address@hidden GNU
address@hidden {char *} envz_entry (const char address@hidden, size_t 
@var{envz_len}, const char address@hidden)
-The @code{envz_entry} function finds the entry in @var{envz} with the
-name @var{name}, and returns a pointer to the whole entry---the argz
-element that begins with @var{name} followed by an @code{'='} character.
-If there is no entry with that name, @code{0} is returned.
address@hidden deftypefun
-
address@hidden envz.h
address@hidden GNU
address@hidden {char *} envz_get (const char address@hidden, size_t 
@var{envz_len}, const char address@hidden)
-The @code{envz_get} function finds the entry in @var{envz} with the name
address@hidden (like @code{envz_entry}) and returns a pointer to the value
-portion of that entry (following the @code{'='}).  If there is no entry
-with that name (or only a null entry), @code{0} is returned.
address@hidden deftypefun
-
address@hidden envz.h
address@hidden GNU
address@hidden {error_t} envz_add (char address@hidden, size_t address@hidden, 
const char address@hidden, const char address@hidden)
-The @code{envz_add} function adds an entry to @address@hidden
-(updating @address@hidden and @address@hidden) with the name
address@hidden, and value @var{value}.  If an entry with the same name
-already exists in @var{envz}, it is removed first.  If @var{value} is
address@hidden, then the new entry will be the special null type of entry
-mentioned above.
address@hidden deftypefun
-
address@hidden envz.h
address@hidden GNU
address@hidden {error_t} envz_merge (char address@hidden, size_t 
address@hidden, const char address@hidden, size_t @var{envz2_len}, int 
@var{override})
-The @code{envz_merge} function adds each entry in @var{envz2} to @var{envz},
-as if with @code{envz_add}, updating @address@hidden and
address@hidden@var{envz_len}}.  If @var{override} is true, then values in 
@var{envz2}
-will supersede those with the same name in @var{envz}, otherwise they
-will not.
-
-Null entries are treated just like other entries in this respect, so a null
-entry in @var{envz} can prevent an entry of the same name in @var{envz2} from
-being added to @var{envz}, if @var{override} is false.
address@hidden deftypefun
-
address@hidden envz.h
address@hidden GNU
address@hidden {void} envz_strip (char address@hidden, size_t address@hidden)
-The @code{envz_strip} function removes any null entries from @var{envz},
-updating @address@hidden and @address@hidden
address@hidden deftypefun
-
address@hidden Character-Set Handling, Locales, String and Array Utilities, Top
address@hidden %MENU% Support for extended character sets
address@hidden Character-Set Handling
-
address@hidden
address@hidden cal{text}
-\text\
address@hidden macro
address@hidden ifnottex
-
-Character sets used in the early days of computing had only 6, 7, or
-8 bits for each character---there was never a case where more than
-8 bits (1 byte) were used to represent a single character.  The
-limitations of this approach became more apparent as more people
-grappled with non-Roman character sets, where all the characters that
-make up a language's character set cannot be represented by @math{2^8}
-choices.  This chapter shows the functionality that was added to the C
-library to support multiple character sets.
-
address@hidden Extended Char Intro
address@hidden Introduction to Extended Characters
-
-A variety of solutions is available to overcome the differences between
-character sets with a 1:1 relation between bytes and characters and
-character sets with ratios of 2:1 or 4:1.  The remainder of this section
-gives a few examples to help you understand the design decisions made
-while developing the functionality of the @w{C library}.
-
address@hidden internal representation
-A distinction we have to make right away is between internal and
-external representation.  @dfn{Internal representation} means the
-representation used by a program while keeping the text in memory.
-External representations are used when text is stored or transmitted
-through some communication channel.  Examples of external
-representations include files waiting in a directory to be
-read and parsed.
-
-Traditionally, there has been no difference between the two representations.
-It was equally comfortable and useful to use the same single-byte
-representation internally and externally.  This comfort level decreases
-with more and larger character sets.
-
-One of the problems to overcome with the internal representation is
-handling text that is externally encoded using different character
-sets.  Assume a program that reads two texts and compares them using
-some metric.  The comparison can be usefully done only if the texts are
-internally kept in a common format.
-
address@hidden wide character
-For such a common format (character set), 8 bits are certainly no
-longer enough.  So the smallest entity will have to address@hidden
-characters} will now be used.  Instead of 1 byte per character, 2
-or 4 will be used instead (three are not good to address in memory
-and using more than 4 bytes seems to be unnecessary).
-
address@hidden Unicode
address@hidden @sc{iso} 10646
-As shown in @ref{String and Array Utilities},
address@hidden !!! Ahem, wide char string functions are not yet covered -- 
drepper
-a completely new family has been created of functions that can handle
-wide-character texts in memory.  The most commonly used character sets
-for such internal wide-character representations are Unicode and
address@hidden@sc{iso} 10646} (also known as @sc{ucs} for Universal Character 
Set).
-Unicode was originally planned as a 16-bit character set, whereas
address@hidden@sc{iso} 10646} was designed to be a 31-bit large code space.  The
-two standards are practically identical.  They have the same character
-repertoire and code table, but Unicode specifies added semantics.  At
-the moment, only characters in the first @code{0x10000} code positions
-(the so-called Basic Multilingual Plane or @sc{bmp}) have been assigned,
-but the assignment of more specialized characters outside this 16-bit
-space is already in progress.  A number of encodings have been defined
-for Unicode and @address@hidden 10646} characters:
address@hidden @sc{ucs}-2
address@hidden @sc{ucs}-4
address@hidden @sc{utf}-8
address@hidden @sc{utf}-16
address@hidden is a 16-bit word that can only represent characters from the
address@hidden, @sc{ucs}-4 is a 32-bit word than can represent any Unicode and
address@hidden@sc{iso} 10646} character, @sc{utf}-8 is an @sc{ascii}-compatible
-encoding where @sc{ascii} characters are represented by @sc{ascii} bytes
-and address@hidden characters by sequences of 2-6 address@hidden bytes,
-and @sc{utf}-16 is an extension of @sc{ucs}-2 in which pairs of certain
address@hidden words can be used to encode address@hidden characters up to
address@hidden
-
-To represent wide characters, the @code{char} type is not suitable.  For
-this reason, the @address@hidden C} standard introduces a new type that is
-designed to keep one character of a wide-character string.  To maintain
-the similarity, there is also a type corresponding to @code{int} for
-those functions that take a single wide character.
-
address@hidden stddef.h
address@hidden ISO
address@hidden {Data type} wchar_t
-This data type is used as the base type for wide-character strings.
-In other words, arrays of objects of this type are the equivalent of
address@hidden for multibyte-character strings.  The type is defined in
address@hidden
-
-The @address@hidden C90} standard, where @code{wchar_t} was introduced, does
-not say anything specific about the representation.  It only requires
-that this type be capable of storing all elements of the basic character
-set.  Therefore, it would be legitimate to define @code{wchar_t} as
address@hidden, which might make sense for embedded systems.
-
-But for @sc{gnu} systems, @code{wchar_t} is always 32 bits wide and
-therefore capable of representing all @sc{ucs}-4 values, which means it
-is capable of covering all of @address@hidden 10646}.  Some Unix systems
-define @code{wchar_t} as a 16-bit type and thereby follow Unicode very
-strictly.  This definition is perfectly fine with the standard, but it
-also means that to represent all characters from Unicode and @address@hidden
-10646}, you have to use @sc{utf}-16 surrogate characters, which is in fact
-a multi-wide-character encoding.  But resorting to multi-wide-character
-encoding contradicts the purpose of the @code{wchar_t} type.
address@hidden deftp
-
address@hidden wchar.h
address@hidden ISO
address@hidden {Data type} wint_t
address@hidden is a data type used for parameters and variables that
-contain a single wide character.  As the name suggests, this type is the
-equivalent of @code{int} when using the normal @code{char} strings.  The
-types @code{wchar_t} and @code{wint_t} often have the same
-representation if their size is 32 bits wide, but if @code{wchar_t} is
-defined as @code{char}, the type @code{wint_t} must be defined as
address@hidden due to the parameter promotion.
-
address@hidden wchar.h
-This type is defined in @file{wchar.h} and was introduced in
address@hidden 1} to @address@hidden C90}.
address@hidden deftp
-
-As there are for the @code{char} data type, macros are available for
-specifying the minimum and maximum value representable in an object of
-type @code{wchar_t}.
-
address@hidden wchar.h
address@hidden ISO
address@hidden Macro wint_t WCHAR_MIN
-The macro @code{WCHAR_MIN} evaluates to the minimum value representable
-by an object of type @code{wint_t}.
-
-This macro was introduced in @w{Amendment 1} to @address@hidden C90}.
address@hidden deftypevr
-
address@hidden wchar.h
address@hidden ISO
address@hidden Macro wint_t WCHAR_MAX
-The macro @code{WCHAR_MAX} evaluates to the maximum value representable
-by an object of type @code{wint_t}.
-
-This macro was introduced in @w{Amendment 1} to @address@hidden C90}.
address@hidden deftypevr
-
-Another special wide-character value is the equivalent to @code{EOF}.
-
address@hidden wchar.h
address@hidden ISO
address@hidden Macro wint_t WEOF
-The macro @code{WEOF} evaluates to a constant expression of type
address@hidden, whose value is different from any member of the extended
-character set.
-
address@hidden need not be the same value as @code{EOF}, and unlike
address@hidden, it also need @emph{not} be negative.  In other words, sloppy
-code like:
-
address@hidden
address@hidden
-  int c;
-  @dots{}
-  while ((c = getc (fp)) < 0)
-    @dots{}
address@hidden
address@hidden smallexample
-
address@hidden
-has to be rewritten to use @code{WEOF} explicitly when wide characters
-are used:
-
address@hidden
address@hidden
-  wint_t c;
-  @dots{}
-  while ((c = wgetc (fp)) != WEOF)
-    @dots{}
address@hidden
address@hidden smallexample
-
address@hidden wchar.h
-This macro was introduced in @w{Amendment 1} to @address@hidden C90} and is
-defined in @file{wchar.h}.
address@hidden deftypevr
-
-
-These internal representations present problems when it comes to storing
-and transmittal.  Because each single wide character consists of more
-than 1 byte, they are effected by byte-ordering.  Thus, machines with
-different endianesses would see different values when accessing the same
-data.  This byte-ordering concern also applies for communication
-protocols that are all byte-based and therefore require the sender to
-decide about splitting the wide character in bytes.  A last point is
-that wide characters often require more storage space than a customized
-byte-oriented character set.
-
address@hidden multibyte character
address@hidden @sc{ebcdic}
-For all the above reasons, an external encoding that is different from
-the internal encoding is often used if the latter is @sc{ucs}-2 or @sc{ucs}-4.
-The external encoding is byte-based and can be chosen appropriately for
-the environment and for the texts to be handled.  A variety of different
-character sets can be used for this external encoding (information that
-will not be exhaustively presented here---instead, a description of the
-major groups will suffice).  All of the @sc{ascii}-based character sets
-fulfill one requirement: they are file-system safe.  This means that
-the character @code{'/'} is used in the encoding @emph{only} to
-represent itself.  Things are a bit different for character sets like
address@hidden (Extended Binary Coded Decimal Interchange Code, a character-set
-family used by @sc{ibm}), but if the operation system does not understand
address@hidden directly, the parameters-to-system calls have to be converted
-first anyhow.
-
address@hidden @bullet
address@hidden
-The simplest character sets are single-byte character sets.  There can
-only be up to 256 characters (for @w{8-bit} character sets), which is
-not sufficient to cover all languages but might be sufficient to handle
-a specific text.  Handling of an @w{8-bit} character set is simple.
-This is not true for other kinds presented later, and therefore, the
-application you use might require @w{8-bit} character sets.
-
address@hidden @sc{iso} 2022
address@hidden
-The @address@hidden 2022} standard defines a mechanism for extended character
-sets where one character @emph{can} be represented by more than one
-byte.  This is achieved by associating a state with the text.
-Characters that can be used to change the state can be embedded in the
-text.  Each byte in the text might have a different interpretation in each
-state.  The state might even influence whether a given byte stands for a
-character on its own or whether it has to be combined with some more
-bytes.
-
address@hidden EUC
address@hidden Shift_JIS
address@hidden SJIS
-In most uses of @address@hidden 2022}, the defined character sets do not
-allow state changes that cover more than the next character.  This has
-the big advantage that whenever you can identify the beginning of the
-byte sequence of a character, you can interpret a text correctly.
-Examples of character sets using this policy are the various @sc{euc}
-character sets (used by Sun's operations systems, EUC-JP, EUC-KR,
-EUC-TW, and EUC-CN) or Shift_JIS (SJIS, a Japanese encoding).
-
-But there are also character sets using a state that is valid for more
-than one character and has to be changed by another byte sequence.
-Examples for this are @sc{iso}-2022-JP, @sc{iso}-2022-KR and
address@hidden
-
address@hidden
address@hidden @sc{iso} 6937
-Early attempts to fix 8-bit character sets for other languages using the
-Roman alphabet lead to character sets like @address@hidden 6937}.  Here,
-bytes representing characters like the acute accent do not produce
-output themselves---you have to combine them with other characters to
-get the desired result.  For example, the byte sequence @code{0xc2 0x61}
-(nonspacing acute accent, followed by lowercase `a') to get the ``small a
-with acute'' character.  To get the acute accent character on its own,
-you have to write @code{0xc2 0x20} (the nonspacing acute followed by a
-space).
-
-Character sets like @address@hidden 6937} are used in some embedded systems,
-such as teletex.
-
address@hidden
address@hidden @sc{utf}-8
-Instead of converting the Unicode or @address@hidden 10646} text used
-internally, it is often sufficient to simply use an encoding different
-than @sc{ucs}-2/@sc{ucs}-4.  The Unicode and @address@hidden 10646}
-standards even specify such an encoding: @sc{utf}-8.  This encoding is
-able to represent all of @address@hidden 10646} 31 bits in a byte string of
-length 1 to 6.
-
address@hidden @sc{utf}-7
-There were a few other attempts to encode @address@hidden 10646}, such as
address@hidden, but @sc{utf}-8 is today the only encoding that should be
-used.  In fact, with any luck, @sc{utf}-8 will soon be the only external
-encoding that has to be supported.  It proves to be universally usable
-and its only disadvantage is that it favors Roman languages by making
-the byte string representation of other scripts (Cyrillic, Greek, Asian
-scripts) longer than necessary if using a specific character set for
-these scripts.  Methods like the Unicode compression scheme can
-alleviate these problems.
address@hidden itemize
-
-The question remaining is how to select the character set or encoding to
-use.  You cannot decide yourself---it is decided by the developers of
-the system or the majority of the users.  Since the goal is
-interoperability, you have to use whatever the other people you work
-with use.  If there are no constraints, the selection is based on the
-requirements the expected circle of users will have.  In other words, if
-a project is expected to be used in only Russia, it is fine to use
-KOI8-R or a similar character set.  But if at the same time people from
-Greece are participating, you should use a character set that allows all
-people to collaborate.
-
-The most widely useful solution seems to be to go with the most general
-character set, @address@hidden 10646}.  Use @sc{utf}-8 as the external
-encoding and problems with users not being able to use their own
-language adequately are a thing of the past.
-
-One final comment about the choice of the wide-character representation
-is necessary at this point.  We have said above that the natural choice
-is using Unicode or @address@hidden 10646}.  This is not required but is
-encouraged by the @address@hidden C} standard.  The standard defines at
-least a macro @code{__STDC_ISO_10646__} that is only defined on systems
-where the @code{wchar_t} type encodes @address@hidden 10646} characters.  If
-this symbol is not defined, you should avoid making assumptions about
-the wide-character representation.  If the programmer uses only the
-functions provided by the C library to handle wide-character strings,
-there should be no compatibility problems with other systems.
-
address@hidden Charset Function Overview
address@hidden Overview About Character-Handling Functions
-
-A Unix @w{C library} contains three different sets of functions in two
-families to handle character-set conversion.  One of the function
-families (the most commonly used) is specified in the @address@hidden C90}
-standard and, therefore, is portable even beyond the Unix world.
-Unfortunately, this family is the least useful one.  These functions
-should be avoided whenever possible, especially when developing
-libraries (as opposed to applications).
-
-The second family of functions was introduced in the early Unix
-standards (@sc{xpg}2) and is still part of the latest and greatest Unix
-standard, @w{Unix 98}.  It is also the most powerful and useful set of
-functions.  But we will start with the functions defined in @w{Amendment
-1} to @address@hidden C90}.
-
address@hidden Restartable multibyte conversion
address@hidden Restartable Multibyte Conversion Functions
-
-The @address@hidden C} standard defines functions to convert strings from a
-multibyte representation to wide-character strings.  There are a number
-of peculiarities:
-
address@hidden @bullet
address@hidden
-The character set assumed for the multibyte encoding is not specified as
-an argument to the functions.  Instead, the character set specified by
-the @code{LC_CTYPE} category of the current locale is used
-(@pxref{Locale Categories}).
-
address@hidden
-The functions handling more than one character at a time require NUL
-terminated strings as the argument (i.e., converting blocks of text
-does not work unless one can add a NUL byte at an appropriate place).
-The @sc{gnu} C Library contains some extensions to the standard that allow
-specifying a size, but basically they also expect terminated strings.
address@hidden itemize
-
-Despite these limitations, the @address@hidden C} functions can be used in
-many contexts.  In graphical user interfaces, for instance, it is not
-uncommon to have functions that require text to be displayed in a
-wide-character string if the text is not simple @sc{ascii}.  The text
-itself might come from a file with translations, and the user should
-decide about the current locale, which determines the translation and
-therefore also the external encoding used.  In such a situation (and
-many others), the functions described here are perfect.  If more freedom
-while performing the conversion is necessary, take a look at the
address@hidden functions (@pxref{Generic Charset Conversion}).
-
address@hidden Selecting the Conversion
address@hidden Selecting the Conversion and Its Properties
-
-We already said above that the currently selected locale for the
address@hidden category decides about the conversion that is performed
-by the functions we are about to describe.  Each locale uses its own
-character set (given as an argument to @code{localedef}) and this is the
-one assumed as the external multibyte encoding.  The wide-character
-character set always is @sc{ucs}-4, at least on @sc{gnu} systems.
-
-A characteristic of each multibyte-character set is the maximum number
-of bytes that can be necessary to represent one character.  This
-information is quite important when writing code that uses the
-conversion functions (as shown in the examples below).  The @address@hidden
-C} standard defines two macros that provide this information.
-
-
address@hidden limits.h
address@hidden ISO
address@hidden Macro int MB_LEN_MAX
address@hidden specifies the maximum number of bytes in the multibyte
-sequence for a single character in any of the supported locales.  It is
-a compile-time constant and is defined in @file{limits.h}.
address@hidden limits.h
address@hidden deftypevr
-
address@hidden stdlib.h
address@hidden ISO
address@hidden Macro int MB_CUR_MAX
address@hidden expands into a positive integer expression that is the
-maximum number of bytes in a multibyte character in the current locale.
-The value is never greater than @code{MB_LEN_MAX}.  Unlike
address@hidden, this macro need not be a compile-time constant, and in
-the @sc{gnu} C Library it is not.
-
address@hidden stdlib.h
address@hidden is defined in @file{stdlib.h}.
address@hidden deftypevr
-
-Two different macros are necessary, since strictly @address@hidden C90} 
compilers
-do not allow variable-length array definitions, but still it is desirable
-to avoid dynamic allocation.  This incomplete piece of code shows the
-problem:
-
address@hidden
address@hidden
-  char buf[MB_LEN_MAX];
-  ssize_t len = 0;
-
-  while (! feof (fp))
-    @{
-      fread (&buf[len], 1, MB_CUR_MAX - len, fp);
-      /* @address@hidden process} buf */
-      len -= used;
-    @}
address@hidden
address@hidden smallexample
-
-The code in the inner loop is expected to always have enough bytes in
-the array @var{buf} to convert one multibyte character.  The array
address@hidden has to be sized statically since many compilers do not allow a
-variable size.  The @code{fread} call makes sure that @code{MB_CUR_MAX}
-bytes are always available in @var{buf}.  It isn't a problem if
address@hidden is not a compile-time constant.
-
-
address@hidden Keeping the state
address@hidden Representing the State of the Conversion
-
address@hidden stateful
-In the introduction of this chapter, it was said that certain character
-sets use a @dfn{stateful} encoding.  That is, the encoded values depend
-in some way on the previous bytes in the text.
-
-Since the conversion functions allow converting a text in more than one
-step, we must have a way to pass this information from one call of the
-functions to another.
-
address@hidden wchar.h
address@hidden ISO
address@hidden {Data type} mbstate_t
address@hidden shift state
-A variable of type @code{mbstate_t} can contain all the information
-about the @dfn{shift state} needed from one call to a conversion
-function to another.
-
address@hidden wchar.h
address@hidden is defined in @file{wchar.h}.  It was introduced in
address@hidden 1} to @address@hidden C90}.
address@hidden deftp
-
-To use objects of type @code{mbstate_t}, the programmer has to define such
-objects (normally as local variables on the stack) and pass a pointer to
-the object to the conversion functions.  This way, the conversion function
-can update the object if the current multibyte-character set is stateful.
-
-There is no specific function or initializer to put the state object in
-any specific state.  The rules are that the object should always
-represent the initial state before the first use, and this is achieved
-by clearing the whole variable with code such as:
-
address@hidden
address@hidden
-  mbstate_t state;
-  memset (&state, '\0', sizeof (state));
-  /* @r{from now on @var{state} can be used.}  */
-  @dots{}
address@hidden
address@hidden smallexample
-
-When using the conversion functions to generate output, it is often
-necessary to test whether the current state corresponds to the initial
-state.  This is necessary, for example, to decide whether to emit
-escape sequences to set the state to the initial state at certain
-sequence points.  Communication protocols often require this.
-
address@hidden wchar.h
address@hidden ISO
address@hidden int mbsinit (const mbstate_t address@hidden)
-The @code{mbsinit} function determines whether the state object pointed
-to by @var{ps} is in the initial state.  If @var{ps} is a null pointer or
-the object is in the initial state, the return value is nonzero.  Otherwise
-it is zero.
-
address@hidden wchar.h
address@hidden was introduced in @w{Amendment 1} to @address@hidden C90} and is
-declared in @file{wchar.h}.
address@hidden deftypefun
-
-Code using @code{mbsinit} often looks similar to this:
-
address@hidden Fix the example to explicitly say how to generate the escape 
sequence
address@hidden to restore the initial state.
address@hidden
address@hidden
-  mbstate_t state;
-  memset (&state, '\0', sizeof (state));
-  /* @r{Use @var{state}.}  */
-  @dots{}
-  if (! mbsinit (&state))
-    @{
-      /* @r{Emit code to return to initial state.}  */
-      const wchar_t empty[] = L"";
-      const wchar_t *srcp = empty;
-      wcsrtombs (outbuf, &srcp, outbuflen, &state);
-    @}
-  @dots{}
address@hidden
address@hidden smallexample
-
-The code to emit the escape sequence to get back to the initial state is
-interesting.  The @code{wcsrtombs} function can be used to determine the
-necessary output code (@pxref{Converting Strings}).  On @sc{gnu} systems
-it is not necessary to perform this extra action for the conversion from
-multibyte text to wide-character text since the wide-character encoding
-is not stateful.  But there is nothing mentioned in any standard that
-prohibits making @code{wchar_t} using a stateful encoding.
-
address@hidden Converting a Character
address@hidden Converting Single Characters
-
-The most fundamental of the conversion functions are those dealing with
-single characters.  This does not always mean single bytes.  But since
-there is very often a subset of the multibyte-character set that
-consists of single-byte sequences, there are functions to help with
-converting bytes.  Frequently, @sc{ascii} is a subpart of the
-multibyte-character set.  In such a scenario, each @sc{ascii} character
-stands for itself, and all other characters have at least a first byte
-that is beyond the range @math{0} to @math{127}.
-
address@hidden wchar.h
address@hidden ISO
address@hidden wint_t btowc (int @var{c})
-The @code{btowc} function (``byte to wide character'') converts a valid
-single-byte character @var{c} in the initial shift state into the
-wide-character equivalent using the conversion rules from the currently
-selected locale of the @code{LC_CTYPE} category.
-
-If @code{(unsigned char) @var{c}} is not a valid single-byte multibyte
-character or if @var{c} is @code{EOF}, the function returns
address@hidden
-
-Please note the restriction of @var{c} being tested for validity only in
-the initial shift state.  No @code{mbstate_t} object is used from
-which the state information is taken, and the function also does not use
-any static state.
-
address@hidden wchar.h
-The @code{btowc} function was introduced in @w{Amendment 1} to @address@hidden 
C90}
-and is declared in @file{wchar.h}.
address@hidden deftypefun
-
-Despite the limitation that the single-byte value is always interpreted
-in the initial state, this function is actually useful most of the time.
-Most characters are either entirely single-byte character sets or
-extensions to @sc{ascii}.  But then, it is possible to write code like
-this (not that this specific example is very useful):
-
address@hidden
-wchar_t *
-itow (unsigned long int val)
address@hidden
-  static wchar_t buf[30];
-  wchar_t *wcp = &buf[29];
-  *wcp = L'\0';
-  while (val != 0)
-    @{
-      *--wcp = btowc ('0' + val % 10);
-      val /= 10;
-    @}
-  if (wcp == &buf[29])
-    *--wcp = L'0';
-  return wcp;
address@hidden
address@hidden smallexample
-
-Why is it necessary to use such a complicated implementation and not
-simply cast @code{'0' + val % 10} to a wide character?  The answer is
-that there is no guarantee that one can perform this kind of
-arithmetic on the character of the character set used for
address@hidden representation.  In other situations, the bytes are not
-constant at compile time and so the compiler cannot do the work.  In
-situations like this, it is necessary to use @code{btowc}.
-
address@hidden
-There also is a function for the conversion in the other direction.
-
address@hidden wchar.h
address@hidden ISO
address@hidden int wctob (wint_t @var{c})
-The @code{wctob} function (``wide character to byte'') takes as the
-parameter a valid wide character.  If the multibyte representation for
-this character in the initial state is exactly 1 byte long, the return
-value of this function is this character.  Otherwise, the return value
-is @code{EOF}.
-
address@hidden wchar.h
address@hidden was introduced in @w{Amendment 1} to @address@hidden C90} and
-is declared in @file{wchar.h}.
address@hidden deftypefun
-
-There are more general functions to convert single characters from
-multibyte representations to wide characters and vice versa.  These
-functions pose no limit on the length of the multibyte representation,
-and they also do not require it to be in the initial state.
-
address@hidden wchar.h
address@hidden ISO
address@hidden size_t mbrtowc (wchar_t *restrict @var{pwc}, const char 
*restrict @var{s}, size_t @var{n}, mbstate_t *restrict @var{ps})
address@hidden stateful
-The @code{mbrtowc} function (``multibyte restartable to wide
-character'') converts the next multibyte character in the string pointed
-to by @var{s} into a wide character and stores it in the wide-character
-string pointed to by @var{pwc}.  The conversion is performed according
-to the locale currently selected for the @code{LC_CTYPE} category.  If
-the conversion for the character set used in the locale requires a state,
-the multibyte string is interpreted in the state represented by the
-object pointed to by @var{ps}.  If @var{ps} is a null pointer, a static,
-internal state variable used only by the @code{mbrtowc} function is
-used.
-
-If the next multibyte character corresponds to the NUL wide character,
-the return value of the function is @math{0} and the state object is
-afterwards in the initial state.  If the next @var{n} or fewer bytes
-form a correct multibyte character, the return value is the number of
-bytes starting from @var{s} that form the multibyte character.  The
-conversion state is updated according to the bytes consumed in the
-conversion.  In both cases the wide character (either the @code{L'\0'}
-or the one found in the conversion) is stored in the string pointed to
-by @var{pwc} if @var{pwc} is not null.
-
-If the first @var{n} bytes of the multibyte string possibly form a valid
-multibyte character but there are more than @var{n} bytes needed to
-complete it, the return value of the function is @code{(size_t) -2} and
-no value is stored.  This can happen even if @var{n} has a value greater
-than or equal to @code{MB_CUR_MAX} since the input might contain
-redundant shift sequences.
-
-If the first @code{n} bytes of the multibyte string cannot possibly form
-a valid multibyte character, no value is stored, the global variable
address@hidden is set to the value @code{EILSEQ}, and the function returns
address@hidden(size_t) -1}.  The conversion state is afterwards undefined.
-
address@hidden wchar.h
address@hidden was introduced in @w{Amendment 1} to @address@hidden C90} and
-is declared in @file{wchar.h}.
address@hidden deftypefun
-
-Use of @code{mbrtowc} is straightforward.  A function that copies a
-multibyte string into a wide-character string while at the same time
-converting all lowercase characters into uppercase could look like this
-(this is not the final version, just an example---it has no error
-checking, and sometimes leaks memory):
-
address@hidden
-wchar_t *
-mbstouwcs (const char *s)
address@hidden
-  size_t len = strlen (s);
-  wchar_t *result = malloc ((len + 1) * sizeof (wchar_t));
-  wchar_t *wcp = result;
-  wchar_t tmp[1];
-  mbstate_t state;
-  size_t nbytes;
-
-  memset (&state, '\0', sizeof (state));
-  while ((nbytes = mbrtowc (tmp, s, len, &state)) > 0)
-    @{
-      if (nbytes >= (size_t) -2)
-        /* Invalid input string.  */
-        return NULL;
-      *wcp++ = towupper (tmp[0]);
-      len -= nbytes;
-      s += nbytes;
-    @}
-  return result;
address@hidden
address@hidden smallexample
-
-The use of @code{mbrtowc} should be clear.  A single wide character is
-stored in @address@hidden, and the number of consumed bytes is stored
-in the variable @var{nbytes}.  If the conversion is successful, the
-uppercase variant of the wide character is stored in the @var{result}
-array and the pointer to the input string and the number of available
-bytes is adjusted.
-
-The only non-obvious thing about @code{mbrtowc} might be the way memory
-is allocated for the result.  The above code uses the fact that there
-can never be more wide characters in the converted results than there
-are bytes in the multibyte input string.  This method yields a
-pessimistic guess about the size of the result, and if many
-wide-character strings have to be constructed this way or if the strings
-are long, the extra memory allocation required because the input string
-contains multibyte characters might be significant.  The allocated
-memory block can be resized to the correct size before returning it, but
-a better solution might be to allocate just the right amount of space
-for the result right away.  Unfortunately, there is no function to
-compute the length of the wide-character string directly from the
-multibyte string.  There is, however, a function that does part of the
-work.
-
address@hidden wchar.h
address@hidden ISO
address@hidden size_t mbrlen (const char *restrict @var{s}, size_t @var{n}, 
mbstate_t address@hidden)
-The @code{mbrlen} function (``multibyte restartable length'') computes
-the number of at most @var{n} bytes starting at @var{s}, which form the
-next valid and complete multibyte character.
-
-If the next multibyte character corresponds to the NUL wide character,
-the return value is @math{0}.  If the next @var{n} bytes form a valid
-multibyte character, the number of bytes belonging to this
-multibyte-character byte sequence is returned.
-
-If the first @var{n} bytes possibly form a valid multibyte character but
-the character is incomplete, the return value is @code{(size_t) -2}.
-Otherwise, the multibyte-character sequence is invalid and the return
-value is @code{(size_t) -1}.
-
-The multibyte sequence is interpreted in the state represented by the
-object pointed to by @var{ps}.  If @var{ps} is a null pointer, a state
-object local to @code{mbrlen} is used.
-
address@hidden wchar.h
address@hidden was introduced in @w{Amendment 1} to @address@hidden C90} and
-is declared in @file{wchar.h}.
address@hidden deftypefun
-
-The attentive reader now will note that @code{mbrlen} can be implemented
-as:
-
address@hidden
-mbrtowc (NULL, s, n, ps != NULL ? ps : &internal)
address@hidden smallexample
-
-This is true and in fact is mentioned in the official specification.
-How can this function be used to determine the length of the
-wide-character string created from a multibyte-character string?  It is
-not directly usable, but we can define a function @code{mbslen} using
-it:
-
address@hidden
-size_t
-mbslen (const char *s)
address@hidden
-  mbstate_t state;
-  size_t result = 0;
-  size_t nbytes;
-  memset (&state, '\0', sizeof (state));
-  while ((nbytes = mbrlen (s, MB_LEN_MAX, &state)) > 0)
-    @{
-      if (nbytes >= (size_t) -2)
-        /* @r{Something is wrong.}  */
-        return (size_t) -1;
-      s += nbytes;
-      ++result;
-    @}
-  return result;
address@hidden
address@hidden smallexample
-
-This function simply calls @code{mbrlen} for each multibyte character in
-the string and counts the number of function calls.  We here use
address@hidden as the size argument in the @code{mbrlen} call.  This
-is acceptable since a) this value is larger than the length of the
-longest multibyte-character sequence and b) we know that the string
address@hidden ends with a NUL byte, which cannot be part of any other
-multibyte-character sequence but the one representing the NUL wide
-character.  Therefore, the @code{mbrlen} function will never read
-invalid memory.
-
-Now that this function is available (just to make this clear, this
-function is @emph{not} part of the @sc{gnu} C Library), we can compute
-the number of wide characters required to store the converted
-multibyte-character string @var{s} using:
-
address@hidden
-wcs_bytes = (mbslen (s) + 1) * sizeof (wchar_t);
address@hidden smallexample
-
-Please note that the @code{mbslen} function is quite inefficient.  The
-implementation of @code{mbstouwcs} with @code{mbslen} would have to
-perform the conversion of the multibyte-character input string twice, and
-this conversion might be quite expensive.  So it is necessary to think
-about the consequences of using the easier but imprecise method before
-doing the work twice.
-
address@hidden wchar.h
address@hidden ISO
address@hidden size_t wcrtomb (char *restrict @var{s}, wchar_t @var{wc}, 
mbstate_t *restrict @var{ps})
-The @code{wcrtomb} function (``wide character restartable to
-multibyte'') converts a single wide character into a multibyte string
-corresponding to that wide character.
-
-If @var{s} is a null pointer, the function resets the state stored in
-the objects pointed to by @var{ps} (or the internal @code{mbstate_t}
-object) to the initial state.  This can also be achieved by a call like
-this:
-
address@hidden
-wcrtombs (temp_buf, L'\0', ps)
address@hidden smallexample
-
address@hidden
-since, if @var{s} is a null pointer, @code{wcrtomb} performs as if it
-writes into an internal buffer, which is guaranteed to be large enough.
-
-If @var{wc} is the NUL wide character, @code{wcrtomb} emits, if
-necessary, a shift sequence to get the state @var{ps} into the initial
-state followed by a single NUL byte, which is stored in the string
address@hidden
-
-Otherwise, a byte sequence (possibly including shift sequences) is
-written into the string @var{s}.  This only happens if @var{wc} is a
-valid wide character (i.e., it has a multibyte representation in the
-character set selected by locale of the @code{LC_CTYPE} category).  If
address@hidden is not a valid wide character, nothing is stored in the string
address@hidden, @code{errno} is set to @code{EILSEQ}, the conversion state in
address@hidden is undefined, and the return value is @code{(size_t) -1}.
-
-If no error occurred, the function returns the number of bytes stored in
-the string @var{s}.  This includes all bytes representing shift
-sequences.
-
-One word about the interface of the function: there is no parameter
-specifying the length of the array @var{s}.  Instead, the function
-assumes that there are at least @code{MB_CUR_MAX} bytes available since
-this is the maximum length of any byte sequence representing a single
-character.  So the caller has to make sure that there is enough space
-available; otherwise, buffer overruns can occur.
-
address@hidden wchar.h
address@hidden was introduced in @w{Amendment 1} to @address@hidden C90} and is
-declared in @file{wchar.h}.
address@hidden deftypefun
-
-Using @code{wcrtomb} is as easy as using @code{mbrtowc}.  The following
-example appends a wide-character string to a multibyte-character string.
-Again, the code is not really useful (or correct) but is simply here to
-demonstrate use and some problems.
-
address@hidden
-char *
-mbscatwcs (char *s, size_t len, const wchar_t *ws)
address@hidden
-  mbstate_t state;
-  /* @r{Find the end of the existing string.}  */
-  char *wp = strchr (s, '\0');
-  len -= wp - s;
-  memset (&state, '\0', sizeof (state));
-  do
-    @{
-      size_t nbytes;
-      if (len < MB_CUR_LEN)
-        @{
-          /* @r{We cannot guarantee that the next}
-             @r{character fits into the buffer, so}
-             @r{return an error.}  */
-          errno = E2BIG;
-          return NULL;
-        @}
-      nbytes = wcrtomb (wp, *ws, &state);
-      if (nbytes == (size_t) -1)
-        /* @r{Error in the conversion.}  */
-        return NULL;
-      len -= nbytes;
-      wp += nbytes;
-    @}
-  while (*ws++ != L'\0');
-  return s;
address@hidden
address@hidden smallexample
-
-First the function has to find the end of the string currently in the
-array @var{s}.  The @code{strchr} call does this very efficiently, since
-a requirement for multibyte-character representations is that the NUL
-byte never be used except to represent itself (and in this context, the
-end of the string).
-
-After initializing the state object, the loop is entered where the first
-task is to make sure there is enough room in the array @var{s}.  We
-abort if there are not at least @code{MB_CUR_LEN} bytes available.  This
-is not always optimal, but we have no other choice.  We might have less
-than @code{MB_CUR_LEN} bytes available, but the next multibyte character
-might also be only 1 byte long.  At the time the @code{wcrtomb} call
-returns, it is too late to decide whether the buffer was large enough.
-If this solution is unsuitable, there is a very slow but more accurate
-solution:
-
address@hidden
-  @dots{}
-  if (len < MB_CUR_LEN)
-    @{
-      mbstate_t temp_state;
-      memcpy (&temp_state, &state, sizeof (state));
-      if (wcrtomb (NULL, *ws, &temp_state) > len)
-        @{
-          /* @r{We cannot guarantee that the next}
-             @r{character fits into the buffer, so}
-             @r{return an error.}  */
-          errno = E2BIG;
-          return NULL;
-        @}
-    @}
-  @dots{}
address@hidden smallexample
-
-Here we perform the conversion that might overflow the buffer so that
-we are afterwards in the position to make an exact decision about the
-buffer size.  Please note the @code{NULL} argument for the destination
-buffer in the new @code{wcrtomb} call; a writeable string would
-usually be used, but we've used @code{NULL} since we're not interested
-in the converted text at this point.  The most unusual thing about
-this piece of code certainly is the duplication of the
-conversion-state object, but if a change of the state is necessary to
-emit the next multibyte character, we want to have the same
-shift-state change performed in the real conversion.  Therefore, we
-have to preserve the initial shift-state information.
-
-There are certainly many more and better solutions to this problem.
-This example is only provided for educational purposes.
-
address@hidden Converting Strings
address@hidden Converting Multibyte- and Wide-Character Strings
-
-The functions described in the previous section only convert a single
-character at a time.  Most operations to be performed in real-world
-programs include strings and therefore the @address@hidden C} standard also
-defines conversions on entire strings.  However, the defined set of
-functions is quite limited; therefore, the @sc{gnu} C Library contains a few
-extensions that can help in some important situations.
-
address@hidden wchar.h
address@hidden ISO
address@hidden size_t mbsrtowcs (wchar_t *restrict @var{dst}, const char 
**restrict @var{src}, size_t @var{len}, mbstate_t *restrict @var{ps})
-The @code{mbsrtowcs} function (``multibyte string restartable to
-wide-character string'') converts a NUL-terminated multibyte-character
-string at @address@hidden into an equivalent wide-character string,
-including the NUL wide character at the end.  The conversion is started
-using the state information from the object pointed to by @var{ps} or
-from an internal object of @code{mbsrtowcs} if @var{ps} is a null
-pointer.  Before returning, the state object is updated to match the
-state after the last converted character.  The state is the initial
-state if the terminating NUL byte is reached and converted.
-
-If @var{dst} is not a null pointer, the result is stored in the array
-pointed to by @var{dst}; otherwise, the conversion result is not
-available since it is stored in an internal buffer.
-
-If @var{len} wide characters are stored in the array @var{dst} before
-reaching the end of the input string, the conversion stops and @var{len}
-is returned.  If @var{dst} is a null pointer, @var{len} is never checked.
-
-Another reason for a premature return from the function call is if the
-input string contains an invalid multibyte-sequence.  In this case the
-global variable @code{errno} is set to @code{EILSEQ} and the function
-returns @code{(size_t) -1}.
-
address@hidden XXX The ISO C9x draft seems to have a problem here.  It says 
that PS
address@hidden is not updated if DST is NULL.  This is not said straightforward 
and
address@hidden none of the other functions is described like this.  It would 
make sense
address@hidden to define the function this way but I don't think it is meant 
like this.
-
-In all other cases, the function returns the number of wide characters
-converted during this call.  If @var{dst} is not null, @code{mbsrtowcs}
-stores in the pointer pointed to by @var{src} either a null pointer (if
-the NUL byte in the input string was reached) or the address of the byte
-following the last converted multibyte character.
-
address@hidden wchar.h
address@hidden was introduced in @w{Amendment 1} to @address@hidden C90} and is
-declared in @file{wchar.h}.
address@hidden deftypefun
-
-The definition of the @code{mbsrtowcs} function has one important
-limitation.  The requirement that @var{dst} has to be a NUL-terminated
-string causes problems if you want to convert buffers with text.  A
-buffer is normally not a collection of NUL-terminated strings but
-instead a continuous collection of lines, separated by newline
-characters.  Now assume that a function to convert one line from a
-buffer is needed.  Since the line is not NUL-terminated, the source
-pointer cannot directly point into the unmodified text buffer.  This
-means that either you insert the NUL byte at the appropriate place for
-the time of the @code{mbsrtowcs} function call (which is not doable for
-a read-only buffer or in a multithreaded application) or you copy the
-line in an extra buffer where it can be terminated by a NUL byte.  It is
-not in general possible to limit the number of characters to convert by
-setting the parameter @var{len} to any specific value.  Since it is not
-known how many bytes each multibyte-character sequence is in length, you
-can only guess.
-
address@hidden stateful
-There is still a problem with the method of NUL-terminating a line right
-after the newline character, which could lead to very strange results.
-As said in the description of the @code{mbsrtowcs} function above, the
-conversion state is guaranteed to be in the initial shift state after
-processing the NUL byte at the end of the input string.  But this NUL
-byte is not really part of the text (i.e., the conversion state after
-the newline in the original text could be something different than the
-initial shift state and therefore the first character of the next line
-is encoded using this state).  But the state in question is never
-accessible to the user since the conversion stops after the NUL byte
-(which resets the state).  Most stateful character sets in use today
-require that the shift state after a newline be the initial state---but
-this is not a strict guarantee.  Therefore, simply NUL-terminating a
-piece of a running text is not always an adequate solution and,
-therefore, should never be done in generally used code.
-
-The generic conversion interface (@pxref{Generic Charset Conversion})
-does not have this limitation (it simply works on buffers, not strings),
-and the @sc{gnu} C Library contains a set of functions that take
-additional parameters specifying the maximum number of bytes that are
-consumed from the input string.  This way the problem of
address@hidden's example above could be solved by determining the line
-length and passing this length to the function.
-
address@hidden wchar.h
address@hidden ISO
address@hidden size_t wcsrtombs (char *restrict @var{dst}, const wchar_t 
**restrict @var{src}, size_t @var{len}, mbstate_t *restrict @var{ps})
-The @code{wcsrtombs} function (``wide-character string restartable to
-multibyte string'') converts the NUL-terminated wide-character string at
address@hidden@var{src}} into an equivalent multibyte-character string and
-stores the result in the array pointed to by @var{dst}.  The NUL wide
-character is also converted.  The conversion starts in the state
-described in the object pointed to by @var{ps} or by a state object
-locally to @code{wcsrtombs} in case @var{ps} is a null pointer.  If
address@hidden is a null pointer, the conversion is performed as usual, but
-the result is not available.  If all characters of the input string were
-successfully converted and if @var{dst} is not a null pointer, the
-pointer pointed to by @var{src} gets assigned a null pointer.
-
-If one of the wide characters in the input string has no valid
-multibyte-character equivalent, the conversion stops early, sets the
-global variable @code{errno} to @code{EILSEQ}, and returns
address@hidden(size_t) -1}.
-
-Another reason for a premature stop is if @var{dst} is not a null
-pointer and the next converted character would require more than
address@hidden bytes in total to the array @var{dst}.  In this case (and if
address@hidden is not a null pointer), the pointer pointed to by @var{src}
-is assigned a value pointing to the wide character right after the last
-successfully converted one.
-
-Except in the case of an encoding error, the return value of the
address@hidden function is the number of bytes in all the
-multibyte-character sequences stored in @var{dst}.  Before returning,
-the state in the object pointed to by @var{ps} (or the internal object
-in case @var{ps} is a null pointer) is updated to reflect the state
-after the last conversion.  The state is the initial shift state in case
-the terminating NUL wide character was converted.
-
address@hidden wchar.h
-The @code{wcsrtombs} function was introduced in @w{Amendment 1} to
address@hidden@sc{iso} C90} and is declared in @file{wchar.h}.
address@hidden deftypefun
-
-The restriction mentioned above for the @code{mbsrtowcs} function
-applies here also.  There is no possibility of directly controlling the
-number of input characters.  You have to place the NUL wide character at
-the correct place, or control the consumed input indirectly via the
-available output array size (the @var{len} parameter).
-
address@hidden wchar.h
address@hidden GNU
address@hidden size_t mbsnrtowcs (wchar_t *restrict @var{dst}, const char 
**restrict @var{src}, size_t @var{nmc}, size_t @var{len}, mbstate_t *restrict 
@var{ps})
-The @code{mbsnrtowcs} function is very similar to the @code{mbsrtowcs}
-function.  All the parameters are the same except for @var{nmc}, which is
-new.  The return value is the same as for @code{mbsrtowcs}.
-
-This new parameter specifies how many bytes at most can be used from the
-multibyte-character string.  In other words, the multibyte-character
-string @address@hidden need not be NUL-terminated.  But if a NUL byte
-is found within the @var{nmc} first bytes of the string, the conversion
-stops there.
-
-This function is a @sc{gnu} extension.  It is meant to work around the
-problems mentioned above.  Now it is possible to convert a buffer with
-multibyte-character text piece-for-piece without having to care about
-inserting NUL bytes and the effect of NUL bytes on the conversion state.
address@hidden deftypefun
-
-A function to convert a multibyte string into a wide-character string
-and display it could be written like this (this example is useful only
-to show the syntax):
-
address@hidden
-void
-showmbs (const char *src, FILE *fp)
address@hidden
-  mbstate_t state;
-  int cnt = 0;
-  memset (&state, '\0', sizeof (state));
-  while (1)
-    @{
-      wchar_t linebuf[100];
-      const char *endp = strchr (src, '\n');
-      size_t n;
-
-      /* @r{Exit if there is no more line.}  */
-      if (endp == NULL)
-        break;
-
-      n = mbsnrtowcs (linebuf, &src, endp - src, 99, &state);
-      linebuf[n] = L'\0';
-      fprintf (fp, "line %d: \"%S\"\n", linebuf);
-    @}
address@hidden
address@hidden smallexample
-
-There is no problem with the state after a call to @code{mbsnrtowcs}.
-Since we don't insert characters in the strings that were not there from
-the beginning, and we use @var{state} only for the conversion of the
-given buffer, there is no problem with altering the state.
-
address@hidden wchar.h
address@hidden GNU
address@hidden size_t wcsnrtombs (char *restrict @var{dst}, const wchar_t 
**restrict @var{src}, size_t @var{nwc}, size_t @var{len}, mbstate_t *restrict 
@var{ps})
-The @code{wcsnrtombs} function implements the conversion from
-wide-character strings to multibyte-character strings.  It is similar to
address@hidden, but like @code{mbsnrtowcs}, it takes an extra
-parameter, which specifies the length of the input string.
-
-No more than @var{nwc} wide characters from the input string
address@hidden@var{src}} are converted.  If the input string contains a NUL
-wide character in the first @var{nwc} characters, the conversion stops at
-this place.
-
-The @code{wcsnrtombs} function is a @sc{gnu} extension and like
address@hidden helps in situations where no NUL-terminated input
-strings are available.
address@hidden deftypefun
-
-
address@hidden Multibyte Conversion Example
address@hidden A Complete Multibyte Conversion Example
-
-The example programs given in the last sections are only brief and do
-not contain things like error checking.  Presented here is a complete
-and documented example.  It features the @code{mbrtowc} function, but it
-should be easy to derive versions using the other functions:
-
address@hidden
-int
-file_mbsrtowcs (int input, int output)
address@hidden
-  /* @r{Note the use of @code{MB_LEN_MAX}.}
-     @address@hidden cannot portably be used here.}  */
-  char buffer[BUFSIZ + MB_LEN_MAX];
-  mbstate_t state;
-  int filled = 0;
-  int eof = 0;
-
-  /* @r{Initialize the state.}  */
-  memset (&state, '\0', sizeof (state));
-
-  while (!eof)
-    @{
-      ssize_t nread;
-      ssize_t nwrite;
-      char *inp = buffer;
-      wchar_t outbuf[BUFSIZ];
-      wchar_t *outp = outbuf;
-
-      /* @r{Fill up the buffer from the input file.}  */
-      nread = read (input, buffer + filled, BUFSIZ);
-      if (nread < 0)
-        @{
-          perror ("read");
-          return 0;
-        @}
-      /* @r{If we reach end of file, make a note to read no more.} */
-      if (nread == 0)
-        eof = 1;
-
-      /* @address@hidden is now the number of bytes in @code{buffer}.} */
-      filled += nread;
-
-      /* @r{Convert those bytes to wide characters---as many as we can.} */
-      while (1)
-        @{
-          size_t thislen = mbrtowc (outp, inp, filled, &state);
-          /* @r{Stop converting at invalid character;}
-             @r{this can mean we have read just the first part}
-             @r{of a valid character.}  */
-          if (thislen == (size_t) -1)
-            break;
-          /* @r{We want to handle embedded NUL bytes}
-             @r{but the return value is 0.  Correct this.}  */
-          if (thislen == 0)
-            thislen = 1;
-          /* @r{Advance past this character.} */
-          inp += thislen;
-          filled -= thislen;
-          ++outp;
-        @}
-
-      /* @r{Write the wide characters we just made.}  */
-      nwrite = write (output, outbuf,
-                      (outp - outbuf) * sizeof (wchar_t));
-      if (nwrite < 0)
-        @{
-          perror ("write");
-          return 0;
-        @}
-
-      /* @r{See if we have a @emph{real} invalid character.} */
-      if ((eof && filled > 0) || filled >= MB_CUR_MAX)
-        @{
-          error (0, 0, "invalid multibyte character");
-          return 0;
-        @}
-
-      /* @r{If any characters must be carried forward,}
-         @r{put them at the beginning of @code{buffer}.} */
-      if (filled > 0)
-        memmove (inp, buffer, filled);
-    @}
-
-  return 1;
address@hidden
address@hidden smallexample
-
-
address@hidden Nonreentrant Conversion
address@hidden Nonreentrant Conversion Function
-
-The functions described in the previous chapter are defined in
address@hidden 1} to @address@hidden C90}, but the original @address@hidden C90}
-standard also contained functions for character-set conversion.  The
-reason that these original functions are not described first is that
-they are almost entirely useless.
-
-The problem is that all the conversion functions described in the
-original @address@hidden C90} use a local state.  Using a local state implies 
that
-multiple conversions at the same time (not only when using threads)
-cannot be done, and that you cannot first convert single characters and
-then strings since you cannot tell the conversion functions which state
-to use.
-
-These original functions are therefore usable only in a very limited set
-of situations.  You have to finish converting the entire string before
-starting a new one, and each string or text must be converted with the
-same function (there is no problem with the library itself; it is
-guaranteed that no library function changes the state of any of these
-functions).  @emph{For the above reasons, it is strongly recommended
-that the functions described in the previous section be used in place of
-nonreentrant conversion functions.}
-
address@hidden Nonreentrant Character Conversion
address@hidden Nonreentrant Conversion of Single Characters
-
address@hidden stdlib.h
address@hidden ISO
address@hidden int mbtowc (wchar_t *restrict @var{result}, const char *restrict 
@var{string}, size_t @var{size})
-The @code{mbtowc} (``multibyte to wide character'') function, when called
-with nonnull @var{string}, converts the first multibyte character
-beginning at @var{string} to its corresponding wide-character code.  It
-stores the result in @address@hidden
-
address@hidden never examines more than @var{size} bytes.  (The idea is
-to supply for @var{size} the number of bytes of data you have in hand.)
-
address@hidden with nonnull @var{string} distinguishes three
-possibilities: either the first @var{size} bytes at @var{string} start with
-valid multibyte characters, they start with an invalid byte-sequence or
-just part of a character, or @var{string} points to an empty string (a
-null character).
-
-For a valid multibyte character, @code{mbtowc} converts it to a wide
-character and stores that in @address@hidden, and returns the
-number of bytes in that character (always at least @math{1} and never
-more than @var{size}).
-
-For an invalid byte-sequence, @code{mbtowc} returns @math{-1}.  For an
-empty string, it returns @math{0}, also storing @code{'\0'} in
address@hidden@var{result}}.
-
-If the multibyte-character code uses shift characters, then
address@hidden maintains and updates a shift state as it scans.  If you
-call @code{mbtowc} with a null pointer for @var{string}, that
-initializes the shift state to its standard initial value.  It also
-returns nonzero if the multibyte-character code in use actually has a
-shift state (@pxref{Shift State}).
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden int wctomb (char address@hidden, wchar_t @var{wchar})
-The @code{wctomb} (``wide character to multibyte'') function converts the
-wide-character code @var{wchar} to its corresponding multibyte-character
-sequence, and stores the result in bytes starting at @var{string}.  At
-most @code{MB_CUR_MAX} characters are stored.
-
address@hidden with nonnull @var{string} distinguishes three
-possibilities for @var{wchar}: a valid wide-character code (one that can
-be translated to a multibyte character), an invalid code, and
address@hidden'\0'}.
-
-Given a valid code, @code{wctomb} converts it to a multibyte character,
-storing the bytes starting at @var{string}.  Then it returns the number
-of bytes in that character (always at least @math{1} and never more
-than @code{MB_CUR_MAX}).
-
-If @var{wchar} is an invalid wide-character code, @code{wctomb} returns
address@hidden  If @var{wchar} is @code{L'\0'}, it returns @code{0}, also
-storing @code{'\0'} in @address@hidden
-
-If the multibyte-character code uses shift characters, then
address@hidden maintains and updates a shift state as it scans.  If you
-call @code{wctomb} with a null pointer for @var{string}, that
-initializes the shift state to its standard initial value.  It also
-returns nonzero if the multibyte-character code in use actually has a
-shift state (@pxref{Shift State}).
-
-Calling this function with a @var{wchar} argument of zero when
address@hidden is not null has the side effect of reinitializing the
-stored shift state @emph{as well as} storing the multibyte character
address@hidden'\0'} and returning @math{0}.
address@hidden deftypefun
-
-Similar to @code{mbrlen}, there is also a nonreentrant function that
-computes the length of a multibyte character.  It can be defined in
-terms of @code{mbtowc}.
-
address@hidden stdlib.h
address@hidden ISO
address@hidden int mblen (const char address@hidden, size_t @var{size})
-The @code{mblen} function with a nonnull @var{string} argument returns
-the number of bytes that make up the multibyte character beginning at
address@hidden, never examining more than @var{size} bytes.  (The idea is
-to supply for @var{size} the number of bytes of data you have in hand.)
-
-The return value of @code{mblen} distinguishes three possibilities:
-either the first @var{size} bytes at @var{string} start with valid
-multibyte characters, they start with an invalid byte-sequence or just
-part of a character, or @var{string} points to an empty string (a null
-character).
-
-For a valid multibyte character, @code{mblen} returns the number of
-bytes in that character (always at least @code{1} and never more than
address@hidden).  For an invalid byte-sequence, @code{mblen} returns
address@hidden  For an empty string, it returns @math{0}.
-
-If the multibyte-character code uses shift characters, then @code{mblen}
-maintains and updates a shift state as it scans.  If you call
address@hidden with a null pointer for @var{string}, that initializes the
-shift state to its standard initial value.  It also returns a nonzero
-value if the multibyte-character code in use actually has a shift state
-(@pxref{Shift State}).
-
address@hidden stdlib.h
-The function @code{mblen} is declared in @file{stdlib.h}.
address@hidden deftypefun
-
-
address@hidden Nonreentrant String Conversion
address@hidden Nonreentrant Conversion of Strings
-
-For convenience, the @address@hidden C90} standard also defines functions to
-convert entire strings instead of single characters.  These functions
-suffer from the same problems as their reentrant counterparts from
address@hidden 1} to @address@hidden C90} (@pxref{Converting Strings}).
-
address@hidden stdlib.h
address@hidden ISO
address@hidden size_t mbstowcs (wchar_t address@hidden, const char 
address@hidden, size_t @var{size})
-The @code{mbstowcs} (``multibyte string to wide-character string'')
-function converts the null-terminated string of multibyte characters
address@hidden to an array of wide-character codes, storing not more than
address@hidden wide characters into the array beginning at @var{wstring}.
-The terminating null character counts toward the size, so if @var{size}
-is less than the actual number of wide characters resulting from
address@hidden, no terminating null character is stored.
-
-The conversion of characters from @var{string} begins in the initial
-shift state.
-
-If an invalid multibyte-character sequence is found, the @code{mbstowcs}
-function returns a value of @math{-1}.  Otherwise, it returns the number
-of wide characters stored in the array @var{wstring}.  This number does
-not include the terminating null character, which is present if the
-number is less than @var{size}.
-
-Here is an example showing how to convert a string of multibyte
-characters, allocating enough space for the result:
-
address@hidden
-wchar_t *
-mbstowcs_alloc (const char *string)
address@hidden
-  size_t size = strlen (string) + 1;
-  wchar_t *buf = xmalloc (size * sizeof (wchar_t));
-
-  size = mbstowcs (buf, string, size);
-  if (size == (size_t) -1)
-    return NULL;
-  buf = xrealloc (buf, (size + 1) * sizeof (wchar_t));
-  return buf;
address@hidden
address@hidden smallexample
-
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden size_t wcstombs (char address@hidden, const wchar_t 
address@hidden, size_t @var{size})
-The @code{wcstombs} (``wide-character string to multibyte string'')
-function converts the null-terminated wide-character array @var{wstring}
-into a string containing multibyte characters, storing not more than
address@hidden bytes starting at @var{string}, followed by a terminating
-null character if there is room.  The conversion of characters begins in
-the initial shift state.
-
-The terminating null character counts toward the size, so if @var{size}
-is less than or equal to the number of bytes needed in @var{wstring}, no
-terminating null character is stored.
-
-If a code that does not correspond to a valid multibyte character is
-found, the @code{wcstombs} function returns a value of @math{-1}.
-Otherwise, the return value is the number of bytes stored in the array
address@hidden  This number does not include the terminating null character,
-which is present if the number is less than @var{size}.
address@hidden deftypefun
-
address@hidden Shift State
address@hidden States in Nonreentrant Functions
-
-In some multibyte-character codes, the @emph{meaning} of any particular
-byte sequence is not fixed; it depends on what other sequences have come
-earlier in the same string.  Typically there are just a few sequences that
-can change the meaning of other sequences; these few are called
address@hidden sequences} and we say that they set the @dfn{shift state} for
-other sequences that follow.
-
-To illustrate shift state and shift sequences, suppose we decide that
-the sequence @code{0200} (just one byte) enters Japanese mode, in which
-pairs of bytes in the range @code{0240} to @code{0377} are single
-characters, while @code{0201} enters Latin-1 mode, in which single bytes
-in the range @code{0240} to @code{0377} are characters, and interpreted
-according to the @sc{iso} Latin-1 character set.  This is a multibyte
-code that has two alternative shift states (``Japanese mode'' and ``Latin-1
-mode''), and two shift sequences that specify particular shift states.
-
-When the multibyte-character code in use has shift states, then
address@hidden, @code{mbtowc}, and @code{wctomb} must maintain and update
-the current shift state as they scan the string.  To make this work
-properly, you must follow these rules:
-
address@hidden @bullet
address@hidden
-Before starting to scan a string, call the function with a null pointer
-for the multibyte-character address---for example, @code{mblen (NULL,
-0)}.  This initializes the shift state to its standard initial value.
-
address@hidden
-Scan the string one character at a time, in order.  Do not ``back up''
-and rescan characters already scanned, and do not intersperse the
-processing of different strings.
address@hidden itemize
-
-Here is an example of using @code{mblen} following these rules:
-
address@hidden
-void
-scan_string (char *s)
address@hidden
-  int length = strlen (s);
-
-  /* @r{Initialize shift state.}  */
-  mblen (NULL, 0);
-
-  while (1)
-    @{
-      int thischar = mblen (s, length);
-      /* @r{Deal with end of string and invalid characters.}  */
-      if (thischar == 0)
-        break;
-      if (thischar == -1)
-        @{
-          error ("invalid multibyte character");
-          break;
-        @}
-      /* @r{Advance past this character.}  */
-      s += thischar;
-      length -= thischar;
-    @}
address@hidden
address@hidden smallexample
-
-The functions @code{mblen}, @code{mbtowc} and @code{wctomb} are not
-reentrant when using a multibyte code that uses a shift state.  However,
-no other library functions call these functions, so you don't have to
-worry that the shift state might be mysteriously changed.
-
-
address@hidden Generic Charset Conversion
address@hidden Generic Charset Conversion
-
-The conversion functions mentioned so far in this chapter all have in
-common that they operate on character sets that are not directly
-specified by the functions.  The multibyte encoding used is specified by
-the currently selected locale for the @code{LC_CTYPE} category.  The
-wide-character set is fixed by the implementation (in the case of @sc{gnu} C
-library it is always @sc{ucs}-4 encoded @address@hidden 10646}.
-
-This has of course several problems when it comes to general character
-conversion:
-
address@hidden @bullet
address@hidden
-For every conversion where neither the source nor the destination
-character set is the character set of the locale for the @code{LC_CTYPE}
-category, one has to change the @code{LC_CTYPE} locale using
address@hidden
-
-Changing the @code{LC_TYPE} locale introduces major problems for the
-rest of the programs since several more functions, like the
-character-classification functions (@pxref{Classification of
-Characters}), use the @code{LC_CTYPE} category.
-
address@hidden
-Parallel conversions to and from different character sets are not
-possible since the @code{LC_CTYPE} selection is global and shared by all
-threads.
-
address@hidden
-If neither the source nor the destination character set is the character
-set used for @code{wchar_t} representation, there is at least a two-step
-process necessary to convert a text using the functions above.  One would
-have to select the source character set as the multibyte encoding,
-convert the text into a @code{wchar_t} text, select the destination
-character set as the multibyte encoding, and convert the wide-character
-text to the multibyte (@math{=} destination) character set.
-
-Even if this is possible (which is not guaranteed), it is a very tiring
-work.  Plus it suffers from the other two aforementioned problems even
-more, due to the steady changing of the locale.
address@hidden itemize
-
-The @sc{xpg}2 standard defines a completely new set of functions, which has
-none of these limitations.  They are not at all coupled to the selected
-locales, and they have no constraints on the character sets selected for
-source and destination.  Only the set of available conversions limits
-them.  The standard does not specify that any conversion at all must be
-available.  Such availability is a measure of the quality of the
-implementation.
-
-In the following text, first the interface to @code{iconv} and then the
-conversion function will be described.  Comparisons with other
-implementations will show what obstacles stand in the way of portable
-applications.  Finally, the implementation is described in so far as
-might interest the advanced user who wants to extend conversion
-capabilities.
-
address@hidden Generic Conversion Interface
address@hidden Generic Character-Set Conversion Interface
-
-This set of functions follows the traditional cycle of using a
-resource---open, use, close.  The interface consists of three functions,
-each of which implements one step.
-
-Before the interfaces are described, it is necessary to introduce a data
-type.  Just like other open-use-close interfaces, the functions
-introduced here work using handles, and the @file{iconv.h} header
-defines a special type for the handles used.
-
address@hidden iconv.h
address@hidden XPG2
address@hidden {Data Type} iconv_t
-This data type is an abstract type defined in @file{iconv.h}.  The user
-must not assume anything about the definition of this type; it must be
-completely opaque.
-
-Objects of this type can get assigned handles for the conversions using
-the @code{iconv} functions.  The objects themselves need not be freed,
-but the conversions that the handles stand for do.
address@hidden deftp
-
address@hidden
-The first step is the function to create a handle.
-
address@hidden iconv.h
address@hidden XPG2
address@hidden iconv_t iconv_open (const char address@hidden, const char 
address@hidden)
-The @code{iconv_open} function has to be used before starting a
-conversion.  The two parameters this function takes determine the
-source and destination character set for the conversion, and if the
-implementation is able to perform such a conversion, the function
-returns a handle.
-
-If the wanted conversion is not available, the @code{iconv_open}
-function returns @code{(iconv_t) -1}. In this case, the global variable
address@hidden can have the following values:
-
address@hidden @code
address@hidden EMFILE
-The process already has @code{OPEN_MAX} file descriptors open.
address@hidden ENFILE
-The system limit of open files is reached.
address@hidden ENOMEM
-There is not enough memory to carry out the operation.
address@hidden EINVAL
-The conversion from @var{fromcode} to @var{tocode} is not supported.
address@hidden table
-
-It is not possible to use the same descriptor in different threads to
-perform independent conversions.  The data structures associated
-with the descriptor include information about the conversion state.
-This must not be messed up by using it in different conversions.
-
-An @code{iconv} descriptor is like a file descriptor, as for every use a
-new descriptor must be created.  The descriptor does not stand for all
-of the conversions from @var{fromset} to @var{toset}.
-
-The @sc{gnu} C Library implementation of @code{iconv_open} has one
-significant extension to other implementations.  To ease the extension
-of the set of available conversions, the implementation allows storing
-the necessary files with data and code in an arbitrary number of
-directories.  How this extension must be written will be explained below
-(@pxref{glibc iconv Implementation}).  Here it is only important to say
-that all directories mentioned in the @code{GCONV_PATH} environment
-variable are considered only if they contain a file
address@hidden  These directories need not necessarily be created
-by the system administrator.  In fact, this extension is introduced to
-help users writing and using their own, new conversions.  Of course,
-this does not work for security reasons in @sc{suid} binaries; in this
-case only the system directory is considered---this is normally
address@hidden@var{prefix}/lib/gconv}.  The @code{GCONV_PATH} environment
-variable is examined exactly once at the first call of the
address@hidden function.  Later modifications of the variable have no
-effect.
-
address@hidden iconv.h
-The @code{iconv_open} function was introduced early in the
address@hidden/Open Portability Guide,} @w{Issue address@hidden/Open Company,
address@hidden/Open Portability Guide,} Issue 2 (Reading, UK: X/Open Company,
-Ltd., 1987).} It is supported by all commercial Unices, as it is
-required for the Unix branding.  However, the quality and completeness
-of the implementation varies widely.  The @code{iconv_open} function
-is declared in @file{iconv.h}.
address@hidden deftypefun
-
-The @code{iconv} implementation can associate large data structures with
-the handle returned by @code{iconv_open}.  Therefore, it is crucial to
-free all the resources once all conversions are carried out and the
-conversion is not needed anymore.
-
address@hidden iconv.h
address@hidden XPG2
address@hidden int iconv_close (iconv_t @var{cd})
-The @code{iconv_close} function frees all resources associated with the
-handle @var{cd}, which must have been returned by a successful call to
-the @code{iconv_open} function.
-
-If the function call was successful, the return value is @math{0}.
-Otherwise, it is @math{-1} and @code{errno} is set appropriately.
-Defined errors are
-
address@hidden @code
address@hidden EBADF
-The conversion descriptor is invalid.
address@hidden table
-
address@hidden iconv.h
-The @code{iconv_close} function was introduced together with the rest
-of the @code{iconv} functions in @sc{xpg}2 and is declared in @file{iconv.h}.
address@hidden deftypefun
-
-The standard defines only one actual conversion function.  This has,
-therefore, the most general interface: it allows conversion from one
-buffer to another.  Conversion from a file to a buffer, from a buffer to
-a file, or even from a file to file can be implemented on top of it.
-
address@hidden iconv.h
address@hidden XPG2
address@hidden size_t iconv (iconv_t @var{cd}, char address@hidden, size_t 
address@hidden, char address@hidden, size_t address@hidden)
address@hidden stateful
-The @code{iconv} function converts the text in the input buffer
-according to the rules associated with the descriptor @var{cd} and
-stores the result in the output buffer.  It is possible to call the
-function for the same text several times in a row, since for stateful
-character sets the necessary state information is kept in the data
-structures associated with the descriptor.
-
-The input buffer is specified by @address@hidden and it contains
address@hidden@var{inbytesleft}} bytes.  The extra indirection is necessary for
-communicating the used input back to the caller (see below).  It is
-important to note that the buffer pointer is of type @code{char} and the
-length is measured in bytes even if the input text is encoded in wide
-characters.
-
-The output buffer is specified in a similar way.  @address@hidden
-points to the beginning of the buffer with at least
address@hidden@var{outbytesleft}} bytes of room for the result.  The buffer
-pointer again is of type @code{char} and the length is measured in
-bytes.  If @var{outbuf} or @address@hidden is a null pointer, the
-conversion is performed but no output is available.
-
-If @var{inbuf} is a null pointer, the @code{iconv} function performs the
-necessary action to put the state of the conversion into the initial
-state.  This is obviously a no-op for nonstateful encodings, but if the
-encoding has a state, such a function call might put some byte sequences
-in the output buffer, which perform the necessary state changes.  The
-next call with @var{inbuf} not being a null pointer then goes on from
-the initial state.  It is important that the programmer never make any
-assumption as to whether the conversion has to deal with states.  Even
-if the input and output character sets are not stateful, the
-implementation might still have to keep states.  This is due to the
-implementation chosen for the @sc{gnu} C Library as it is described
-below.  Therefore an @code{iconv} call to reset the state should always
-be performed if some protocol requires this for the output text.
-
-The conversion stops for one of three reasons. The first is that all
-characters from the input buffer are converted.  This actually can mean
-two things: either all bytes from the input buffer are consumed or
-there are some bytes at the end of the buffer that can possibly form a
-complete character, but the input is incomplete.  The second reason for a
-stop is that the output buffer is full.  The third reason is that
-the input contains invalid characters.
-
-In all of these cases, the buffer pointers after the last successful
-conversion, for input and output buffer, are stored in @var{inbuf} and
address@hidden, and the available room in each buffer is stored in
address@hidden and @var{outbytesleft}.
-
-Since the character sets selected in the @code{iconv_open} call can be
-almost arbitrary, there can be situations where the input buffer
-contains valid characters, which have no identical representation in the
-output character set.  The behavior in this situation is undefined.  The
address@hidden behavior of the @sc{gnu} C Library in this situation is
-to return with an error immediately.  This certainly is not the most
-desirable solution.  Future versions will provide better solutions, but
-they are not yet finished.
-
-If all input from the input buffer is successfully converted and stored
-in the output buffer, the function returns the number of nonreversible
-conversions performed.  In all other cases, the return value is
address@hidden(size_t) -1} and @code{errno} is set appropriately.  In such
-cases, the value pointed to by @var{inbytesleft} is nonzero.
-
address@hidden @code
address@hidden EILSEQ
-The conversion stopped because of an invalid byte-sequence in the input.
-After the call, @address@hidden points at the first byte of the
-invalid byte-sequence.
-
address@hidden E2BIG
-The conversion stopped because it ran out of space in the output buffer.
-
address@hidden EINVAL
-The conversion stopped because of an incomplete byte-sequence at the end
-of the input buffer.
-
address@hidden EBADF
-The @var{cd} argument is invalid.
address@hidden table
-
address@hidden iconv.h
-The @code{iconv} function was introduced in the @sc{xpg}2 standard and is
-declared in the @file{iconv.h} header.
address@hidden deftypefun
-
-The definition of the @code{iconv} function is quite good overall.  It
-provides flexible functionality.  The only problems lie in the boundary
-cases, which are incomplete byte-sequences at the end of the input
-buffer and invalid input.  A third problem, which is not really a design
-problem, is the way conversions are selected.  The standard does not say
-anything about the legitimate names---a minimal set of available
-conversions.  We will see how this negatively impacts other
-implementations, as demonstrated below.
-
address@hidden iconv Examples
address@hidden A Complete @code{iconv} Example
-
-The example below features a solution for a common problem.  Given that
-we know the internal encoding used by the system for @code{wchar_t}
-strings, we often are in the position to read text from a file and store
-it in wide-character buffers.  We can do this using @code{mbsrtowcs},
-but then we run into the problems discussed above.
-
address@hidden
-int
-file2wcs (int fd, const char *charset, wchar_t *outbuf, size_t avail)
address@hidden
-  char inbuf[BUFSIZ];
-  size_t insize = 0;
-  char *wrptr = (char *) outbuf;
-  int result = 0;
-  iconv_t cd;
-
-  cd = iconv_open ("WCHAR_T", charset);
-  if (cd == (iconv_t) -1)
-    @{
-      /* @r{Something went wrong.}  */
-      if (errno == EINVAL)
-        error (0, 0, "conversion from '%s' to wchar_t not available",
-               charset);
-      else
-        perror ("iconv_open");
-
-      /* @r{Terminate the output string.}  */
-      *outbuf = L'\0';
-
-      return -1;
-    @}
-
-  while (avail > 0)
-    @{
-      size_t nread;
-      size_t nconv;
-      char *inptr = inbuf;
-
-      /* @r{Read more input.}  */
-      nread = read (fd, inbuf + insize, sizeof (inbuf) - insize);
-      if (nread == 0)
-        @{
-          /* @r{When we come here the file is completely read.}
-             @r{This still could mean there are some unused}
-             @r{characters in the @code{inbuf}.  Put them back.}  */
-          if (lseek (fd, -insize, SEEK_CUR) == -1)
-            result = -1;
-
-          /* @r{Now write out the byte sequence to get into the}
-             @r{initial state if this is necessary.}  */
-          iconv (cd, NULL, NULL, &wrptr, &avail);
-
-          break;
-        @}
-      insize += nread;
-
-      /* @r{Do the conversion.}  */
-      nconv = iconv (cd, &inptr, &insize, &wrptr, &avail);
-      if (nconv == (size_t) -1)
-        @{
-          /* @r{Not everything went right.  It might only be}
-             @r{an unfinished byte-sequence at the end of the}
-             @r{buffer, or it could be a real problem.}  */
-          if (errno == EINVAL)
-            /* @r{This is harmless.  Simply move the unused}
-               @r{bytes to the beginning of the buffer so that}
-               @r{they can be used in the next round.}  */
-            memmove (inbuf, inptr, insize);
-          else
-            @{
-              /* @r{It is a real problem.  Maybe we ran out of}
-                 @r{space in the output buffer or we have invalid}
-                 @r{input.  In any case back the file pointer to}
-                 @r{the position of the last processed byte.}  */
-              lseek (fd, -insize, SEEK_CUR);
-              result = -1;
-              break;
-            @}
-        @}
-    @}
-
-  /* @r{Terminate the output string.}  */
-  if (avail >= sizeof (wchar_t))
-    *((wchar_t *) wrptr) = L'\0';
-
-  if (iconv_close (cd) != 0)
-    perror ("iconv_close");
-
-  return (wchar_t *) wrptr - outbuf;
address@hidden
address@hidden smallexample
-
address@hidden stateful
-This example shows the most important aspects of using the @code{iconv}
-functions.  It shows how successive calls to @code{iconv} can be used to
-convert large amounts of text.  The user does not have to care about
-stateful encodings, since the functions take care of everything.
-
-An interesting point is the case where @code{iconv} returns an error and
address@hidden is set to @code{EINVAL}.  This is not really an error in
-the transformation.  It can happen whenever the input character set
-contains byte sequences of more than 1 byte for some character, and
-texts are not processed in one piece.  In this case, there is a chance
-that a multibyte sequence is cut.  The caller can then simply read the
-remainder of the takes and feed the offending bytes together with new
-characters from the input to @code{iconv} and continue the work.  The
-internal state kept in the descriptor is @emph{not} unspecified after
-such an event, as is the case with the conversion functions from the
address@hidden@sc{iso} C} standard.
-
-The example also shows the problem of using wide-character strings with
address@hidden  As explained in the description of the @code{iconv}
-function above, the function always takes a pointer to a @code{char}
-array, and the available space is measured in bytes.  In the example,
-the output buffer is a wide-character buffer; therefore, we use a local
-variable @var{wrptr} of type @code{char *}, which is used in the
address@hidden calls.
-
-This looks rather innocent but can lead to problems on platforms that
-have tight restrictions on alignment.  Therefore, the caller of
address@hidden has to make sure that the pointers passed are suitable
-for accessing characters from the appropriate character set.  Since,
-in the above case, the input parameter to the function is a
address@hidden pointer, this is the case (unless the user violates
-alignment when computing the parameter).  In other situations,
-especially when writing generic functions where you do not know what
-type of character set you are using, @code{iconv} treats text as a
-sequence of bytes, which might become tricky.
-
address@hidden Other iconv Implementations
address@hidden Some Details About Other @code{iconv} Implementations
-
-This is not really the place to discuss the @code{iconv} implementation
-of other systems, but it is necessary to know a bit about them to write
-portable programs.  The aforementioned problems with the specification
-of the @code{iconv} functions can lead to portability issues.
-
-The first thing to notice is that, due to the large number of character
-sets in use, it is certainly not practical to encode the conversions
-directly in the C library.  Therefore, the conversion information must
-come from files outside the C library.  This is usually done in one or
-both of the following ways:
-
address@hidden @bullet
address@hidden
-The C library contains a set of generic conversion functions that can
-read the needed conversion tables and other information from data files.
-These files get loaded when necessary.
-
-This solution is problematic, since it requires a great deal of effort
-to apply to all character sets (potentially an infinite set).  The
-differences in the structures of the different character sets are so
-large that many different variants of the table-processing functions
-must be developed.  In addition, the generic nature of these functions
-makes them slower than specifically implemented functions.
-
address@hidden
-The C library only contains a framework that can dynamically load
-object files and execute the conversion functions contained therein.
-
-This solution provides much more flexibility.  The C library itself
-contains only very little code and therefore reduces the general memory
-footprint.  Also, with a documented interface between the C library and
-the loadable modules, it is possible for third parties to extend the set
-of available conversion modules.  A drawback of this solution is that
-dynamic loading must be available.
address@hidden itemize
-
-Some implementations in commercial Unices implement a mixture of these
-possibilities; the majority implement only the second solution.  Using
-loadable modules moves the code out of the library itself and keeps the
-door open for extensions and improvements, but this design is also
-limiting on some platforms, since not many platforms support dynamic
-loading in statically linked programs.  On platforms without this
-capability, it is therefore not possible to use this interface in
-statically linked programs.  The @sc{gnu} C Library has, on @sc{elf}
-platforms, no problems with dynamic loading in these situations;
-therefore, this point is moot.  The danger is that you get acquainted
-with this situation and forget about the restrictions on other systems.
-
-A second thing to know about other @code{iconv} implementations is that
-the number of available conversions is often very limited.  Some
-implementations provide, in the standard release (not special
-international or developer releases), at most 100 to 200 conversion
-possibilities.  This does not mean 200 different character sets are
-supported; for example, conversions from one character set to a set of
-ten others might count as ten conversions.  Together with the other
-direction, this makes twenty conversion possibilities used up by one
-character set.  You can imagine the thin coverage these platform
-provide.  Some Unix vendors even provide only a handful of conversions,
-which renders them useless for almost all uses.
-
-This leads directly to the third and probably most problematic point.
-The way the @code{iconv} conversion functions are implemented on all
-known Unix systems and the availability of the conversion functions from
-character set @address@hidden to @address@hidden and the conversion from
address@hidden@cal{B}} to @address@hidden does @emph{not} imply that the
-conversion from @address@hidden to @address@hidden is available.
-
-This might not seem unreasonable or problematic at first, but it is a
-big problem.  To show the problem, we assume a program that has to
-convert from @address@hidden to @address@hidden  A call like:
-
address@hidden
-cd = iconv_open ("@address@hidden", "@address@hidden");
address@hidden smallexample
-
address@hidden
-fails according to the assumption above.  But what does the program
-do now?  The conversion is necessary; therefore, simply giving up is not
-an option.
-
-This is a nuisance.  The @code{iconv} function should take care of this.
-But how should the program proceed from here on?  If it tries to convert
-to character set @address@hidden, first the two @code{iconv_open}
-calls:
-
address@hidden
-cd1 = iconv_open ("@address@hidden", "@address@hidden");
address@hidden smallexample
-
address@hidden
-and
-
address@hidden
-cd2 = iconv_open ("@address@hidden", "@address@hidden");
address@hidden smallexample
-
address@hidden
-will succeed, but how to find @address@hidden
-
-Unfortunately, the answer is that there is no general solution.  On some
-systems, guessing might help.  On those systems, most character sets can
-convert to and from @sc{utf}-8 encoded @address@hidden 10646} or Unicode
-text. Besides this, only some very system-specific methods can help.
-Since the conversion functions come from loadable modules and these
-modules must be stored somewhere in the file system, one @emph{could}
-try to find them and determine from the available file which conversions
-are available and whether there is an indirect route from @address@hidden
-to @address@hidden
-
-This example shows one of the design errors of @code{iconv} mentioned
-above.  It should at least be possible to determine the list of
-available conversions programmatically so that if @code{iconv_open} says
-there is no such conversion, one could make sure this also is true for
-indirect routes.
-
address@hidden glibc iconv Implementation
address@hidden The @code{iconv} Implementation in the @sc{gnu} C Library
-
-After reading about the problems of @code{iconv} implementations in the
-last section, it is certainly good to note that the implementation in
-the @sc{gnu} C Library has none of the problems mentioned above.  What
-follows is a step-by-step analysis of the points raised above.  The
-evaluation is based on the current state of the development (as of
-January 1999).  The development of the @code{iconv} functions is not
-complete, but basic functionality has solidified.
-
-The @sc{gnu} C Library's @code{iconv} implementation uses shared
-loadable modules to implement the conversions.  A very small number of
-conversions are built into the library itself, but these are only rather
-trivial conversions.
-
-All the benefits of loadable modules are available in the @sc{gnu} C
-Library implementation.  This is especially appealing since the
-interface is well documented (see below); therefore, it is easy to write
-new conversion modules.  The drawback of using loadable objects is not a
-problem in the @sc{gnu} C Library, at least on ELF systems.  Since the
-library is able to load shared objects even in statically linked
-binaries, static linking need not be forbidden in case one wants to use
address@hidden
-
-The second mentioned problem is the number of supported conversions.
-Currently, the @sc{gnu} C Library supports more than 150 character sets.  The
-way the implementation is designed the number of supported conversions
-is greater than 22350 (@math{150} times @math{149}).  If any conversion
-from or to a character set is missing, it can be added easily.
-
-Particularly impressive as it may be, this high number is due to the
-fact that the @sc{gnu} C Library implementation of @code{iconv} does not have
-the third problem mentioned above (i.e., whenever there is a conversion
-from a character set @address@hidden to @address@hidden and from
address@hidden@cal{B}} to @address@hidden it is always possible to convert from
address@hidden@cal{A}} to @address@hidden directly).  If the @code{iconv_open}
-returns an error and sets @code{errno} to @code{EINVAL}, there is no
-known way, directly or indirectly, to perform the wanted conversion.
-
address@hidden triangulation
-Triangulation is achieved by providing for each character set a
-conversion from and to @sc{ucs}-4 encoded @address@hidden 10646}.  Using
address@hidden@sc{iso} 10646} as an intermediate representation, it is possible 
to
address@hidden (i.e., convert with an intermediate representation).
-
-There is no inherent requirement to provide a conversion to @address@hidden
-10646} for a new character set, and it is also possible to provide other
-conversions where neither source nor destination character set is 
@address@hidden
-10646}.  The existing set of conversions is simply meant to cover all
-conversions that might be of interest.
-
address@hidden @sc{iso}-2022-JP
address@hidden EUC-JP
-All currently available conversions use the triangulation method above,
-making conversion run unnecessarily slow.  If, for example, somebody
-often needs the conversion from @sc{iso}-2022-JP to EUC-JP, a quicker solution
-would involve direct conversion between the two character sets, skipping
-the input to @address@hidden 10646} first.  The two character sets of interest
-are much more similar to each other than to @address@hidden 10646}.
-
-In such a situation, one easily can write a new conversion and provide
-it as a better alternative.  The @sc{gnu} C Library @code{iconv}
-implementation would automatically use the module implementing the
-conversion if it is specified to be more efficient.
-
address@hidden Format of @file{gconv-modules} Files
-
-All information about the available conversions comes from a file named
address@hidden, which can be found in any of the directories along
-the @code{GCONV_PATH}.  The @file{gconv-modules} files are line-oriented
-text files, where each of the lines has one of the following formats:
-
address@hidden @bullet
address@hidden
-If the first non-white-space character is a @samp{#}, the line contains
-only comments and is ignored.
-
address@hidden
-Lines starting with @code{alias} define an alias name for a character
-set.  Two more words are expected on the line.  The first word
-defines the alias name, and the second defines the original name of the
-character set.  The effect is that it is possible to use the alias name
-in the @var{fromset} or @var{toset} parameters of @code{iconv_open} and
-achieve the same result as when using the real character-set name.
-
-This is quite important, since a character set often has many different
-names.  There is normally an official name, but this need not correspond
-to the most popular name.  Besides this, many character sets have
-special names that are somehow constructed.  For example, all character
-sets specified by the @sc{iso} have an alias of the form
address@hidden@var{nnn}}, where @var{nnn} is the registration number.
-This allows programs that know about the registration number to
-construct character-set names and use them in @code{iconv_open} calls.
-More on the available names and aliases follows below.
-
address@hidden
-Lines starting with @code{module} introduce an available conversion
-module.  These lines must contain three or four more words.
-
-The first word specifies the source character set, the second word the
-destination character set of conversion implemented in this module, and
-the third word is the name of the loadable module.  The file name is
-constructed by appending the usual shared-object suffix (normally
address@hidden) and this file is then supposed to be found in the same
-directory the @file{gconv-modules} file is in.  The last word on the
-line, which is optional, is a numeric value representing the cost of the
-conversion.  If this word is missing, a cost of @math{1} is assumed.
-The numeric value itself does not matter that much; the relative values
-of the sums of costs for all possible conversion paths are what counts.
-Below is a more precise description of the use of the cost value.
address@hidden itemize
-
-Returning to the example above of a module written to directly convert
-from @sc{iso}-2022-JP to EUC-JP and back, all that has to be done is to
-put the new module (let its name be ISO2022JP-EUCJP.so) in a directory
-and add a file @file{gconv-modules} with the following content in the
-same directory:
-
address@hidden
-module  ISO-2022-JP//   EUC-JP//        ISO2022JP-EUCJP    1
-module  EUC-JP//        ISO-2022-JP//   ISO2022JP-EUCJP    1
address@hidden smallexample
-
-To see why this is sufficient, it is necessary to understand how the
-conversion used by @code{iconv} (and described in the descriptor) is
-selected.  The approach to this problem is quite simple.
-
-At the first call of the @code{iconv_open} function, the program reads
-all available @file{gconv-modules} files and builds up two tables---one
-containing all the known aliases and another that contains the
-information about the conversions and which shared object implements
-them.
-
address@hidden Finding the Conversion Path in @code{iconv}
-
-The set of available conversions form a directed graph with weighted
-edges.  The weights on the edges are the costs specified in the
address@hidden files.  The @code{iconv_open} function uses an
-algorithm suitable for searching for the best path in such a graph and so
-constructs a list of conversions that must be performed in succession
-to get the transformation from the source to the destination character
-set.
-
-Explaining why the above @file{gconv-modules} file allows the
address@hidden implementation to resolve the specific @sc{iso}-2022-JP to
-EUC-JP conversion module instead of the conversion coming with the
-library itself is straightforward.  Since the latter conversion takes
-two steps (from @sc{iso}-2022-JP to @address@hidden 10646} and then from
address@hidden@sc{iso} 10646} to EUC-JP), the cost is @math{1+1 = 2}.  The above
address@hidden file, however, specifies that the new conversion
-modules can perform this conversion with only the cost of @math{1}.
-
-A mysterious item about the @file{gconv-modules} file above (and also
-the file that comes with the @sc{GNU} C Library) is the names of the
-character sets specified in the @code{module} lines.  Almost all of
-the names end in @code{//}.  Some names are actually regular
-expressions.  The part of the implementation where this is used
-is not yet finished.  For now please simply follow the existing
-examples.  It should become clearer as you read on.
-
-A last remark about the @file{gconv-modules} is about the names not
-ending with @code{//}.  A character set named @code{INTERNAL} is often
-mentioned.  From the discussion above and the chosen name, it should
-have become clear that this is the name for the representation used in
-the intermediate step of the triangulation.  We have said that this is
address@hidden, but actually that is not quite right.  The @sc{ucs}-4
-specification also includes the specification of the byte ordering
-used.  Since a @sc{ucs}-4 value consists of 4 bytes, a stored value is
-effected by byte ordering.  The internal representation is @emph{not}
-the same as @sc{ucs}-4 in case the byte ordering of the processor (or
-at least the running process) is not the same as the one required for
address@hidden  This is done for performance reasons as one does not want
-to perform unnecessary byte-swapping operations if one is not
-interested in actually seeing the result in @sc{ucs}-4.  To avoid
-trouble with endianess, the internal representation consistently is
-named @code{INTERNAL} even on big-endian systems where the
-representations are identical.
-
address@hidden iconv Module Data Structures
address@hidden @code{iconv} Module Data Structures
-
-So far, this section has described how modules are located and
-considered to be used.  What remains to be described is the interface of
-the modules so that you can write new ones. This section describes the
-interface as it is in use in January 1999.  The interface will change a
-bit in the future but, with luck, only in an upwardly compatible way.
-
-The definitions necessary to write new modules are publicly available
-in the nonstandard header @file{gconv.h}.  The following text,
-therefore, describes the definitions from this header file.  First,
-however, it is necessary to get an overview.
-
-From the perspective of the user of @code{iconv}, the interface is quite
-simple; the @code{iconv_open} function returns a handle that can be used
-in calls to @code{iconv}, and then the handle is freed with a call to
address@hidden  The problem is that the handle has to be able to
-represent the possibly long sequences of conversion steps and also the
-state of each conversion, since the handle is all that is passed to the
address@hidden function.  Therefore, the data structures are really the
-elements necessary to understanding the implementation.
-
-We need two different kinds of data structures.  The first describes the
-conversion and the second describes the state, etc.  There are really two
-type definitions like this in @file{gconv.h}.
address@hidden gconv.h
-
address@hidden gconv.h
address@hidden GNU
address@hidden {Data type} {struct __gconv_step}
-This data structure describes one conversion a module can perform.  For
-each function in a loaded module with conversion functions, there is
-exactly one object of this type.  This object is shared by all users of
-the conversion (i.e., this object does not contain any information
-corresponding to an actual conversion; it only describes the conversion
-itself).
-
address@hidden @code
address@hidden struct __gconv_loaded_object *__shlib_handle
address@hidden const char *__modname
address@hidden int __counter
-All these elements of the structure are used internally in the C library
-to coordinate loading and unloading the shared object.  You should not
-expect any of the other elements to be available or initialized.
-
address@hidden const char *__from_name
address@hidden const char *__to_name
address@hidden and @code{__to_name} contain the names of the source
-and destination character sets.  They can be used to identify the actual
-conversion to be carried out, since one module might implement
-conversions for more than one character set and/or direction.
-
address@hidden gconv_fct __fct
address@hidden gconv_init_fct __init_fct
address@hidden gconv_end_fct __end_fct
-These elements contain pointers to the functions in the loadable module.
-The interface will be explained below.
-
address@hidden int __min_needed_from
address@hidden int __max_needed_from
address@hidden int __min_needed_to
address@hidden int __max_needed_to;
-These values have to be supplied in the init function of the module.
-The @code{__min_needed_from} value specifies the minimum number of bytes
-a character of the source character set needs.  The
address@hidden specifies the maximum value that also includes
-possible shift sequences.
-
-The @code{__min_needed_to} and @code{__max_needed_to} values serve the
-same purpose as @code{__min_needed_from} and @code{__max_needed_from} but
-this time for the destination character set.
-
-It is crucial that these values be accurate, since otherwise the
-conversion functions will have problems or not work at all.
-
address@hidden int __stateful
-This element must also be initialized by the init function.  @code{int
-__stateful} is nonzero if the source character set is stateful.
-Otherwise, it is zero.
-
address@hidden void *__data
-This element can be used freely by the conversion functions in the
-module.  @code{void *__data} can be used to communicate extra
-information from one call to another.  @code{void *__data} need not be
-initialized if it is not needed at all.  If @code{void *__data} element
-is assigned a pointer to dynamically allocated memory (presumably in the
-init function), it has to be ensured that the end function de-allocates
-the memory.  Otherwise, the application will leak memory.
-
-It is important to be aware that this data structure is shared by all
-users of this specification conversion and therefore, the @code{__data}
-element must not contain data specific to any particular use of the
-conversion function.
address@hidden table
address@hidden deftp
-
address@hidden gconv.h
address@hidden GNU
address@hidden {Data type} {struct __gconv_step_data}
-This is the data structure that contains the information specific to
-each use of the conversion functions.
-
-
address@hidden @code
address@hidden char *__outbuf
address@hidden char *__outbufend
-These elements specify the output buffer for the conversion step.  The
address@hidden element points to the beginning of the buffer, and
address@hidden points to the byte following the last byte in the
-buffer.  The conversion function must not assume anything about the size
-of the buffer, but it can be safely assumed that there is room for at
-least one complete character in the output buffer.
-
-Once the conversion is finished, if the conversion is the last step, the
address@hidden element must be modified to point after the last byte
-written into the buffer to signal how much output is available.  If this
-conversion step is not the last one, the element must not be modified.
-The @code{__outbufend} element must not be modified.
-
address@hidden int __is_last
-This element is nonzero if this conversion step is the last one.  This
-information is necessary for the recursion.  See the description of the
-conversion function internals below.  This element must never be
-modified.
-
address@hidden int __invocation_counter
-The conversion function can use this element to see how many calls of
-the conversion function already happened.  Some character sets require a
-certain prolog when generating output, and by comparing this value with
-zero, one can find out whether it is the first call and whether,
-therefore, the prolog should be emitted.  This element must never be
-modified.
-
address@hidden int __internal_use
-This element is another one rarely used but needed in certain
-situations.  It is assigned a nonzero value in case the conversion
-functions are used to implement @code{mbsrtowcs} or others like it
-(i.e., the function is not used directly through the @code{iconv}
-interface).
-
-This sometimes makes a difference, since it is expected that the
address@hidden functions are used to translate entire texts, while the
address@hidden functions are normally used only to convert single
-strings and might be used multiple times to convert entire texts.
-
-But in this situation we would have problems complying with some rules
-of the character-set specification.  Some character sets require a
-prolog, which must appear exactly once for an entire text.  If a number
-of @code{mbsrtowcs} calls are used to convert the text, only the first
-call must add the prolog.  However, because there is no communication
-between the different calls of @code{mbsrtowcs}, the conversion
-functions have no chance to find this out.  The situation is different
-for sequences of @code{iconv} calls, since the handle allows access to
-the needed information.
-
-The @code{int __internal_use} element is mostly used together with
address@hidden as follows:
-
address@hidden
-if (!data->__internal_use
-     && data->__invocation_counter == 0)
-  /* @r{Emit prolog.}  */
-  @dots{}
address@hidden smallexample
-
-This element must never be modified.
-
address@hidden mbstate_t *__statep
-The @code{__statep} element points to an object of type @code{mbstate_t}
-(@pxref{Keeping the state}).  The conversion of a stateful character
-set must use the object pointed to by @code{__statep} to store
-information about the conversion state.  The @code{__statep} element
-itself must never be modified.
-
address@hidden mbstate_t __state
-This element must @emph{never} be used directly.  It is only part of
-this structure to have the needed space allocated.
address@hidden table
address@hidden deftp
-
address@hidden @code{iconv} Module Interfaces
-
-With the knowledge about the data structures, we can now describe the
-conversion function itself.  To understand the interface, a bit of
-knowledge about the functionality in the C library that loads the
-objects with the conversions is necessary.
-
-It is often the case that one conversion is used more than once (i.e.,
-there are several @code{iconv_open} calls for the same set of character
-sets during one program run).  The @code{mbsrtowcs} functions in the
address@hidden C Library also use the @code{iconv} functionality, which
-increases the number of uses of the same functions even more.
-
-Because of this multiple use of conversions, the modules do not get
-loaded exclusively for one conversion.  Instead, a module once loaded
-can be used by an arbitrary number of @code{iconv} or @code{mbsrtowcs}
-calls at the same time.  The splitting of the information between
-conversion-function-specific information and conversion data makes this
-possible.  The last section showed the two data structures used to do
-this.
-
-This is also reflected in the interface and semantics of the functions
-that the modules must provide.  There are three functions, which must
-have the following names:
-
address@hidden @code
address@hidden gconv_init
-The @code{gconv_init} function initializes the
-conversion-function-specific data structure.  This very same object is
-shared by all conversions that use this conversion and, therefore, no
-state information about the conversion itself must be stored in here.
-If a module implements more than one conversion, the @code{gconv_init}
-function will be called multiple times.
-
address@hidden gconv_end
-The @code{gconv_end} function is responsible for freeing all resources
-allocated by the @code{gconv_init} function.  If there is nothing to do,
-this function can be missing.  Special care must be taken if the module
-implements more than one conversion and the @code{gconv_init} function
-does not allocate the same resources for all conversions.
-
address@hidden gconv
-This is the actual conversion function.  It is called to convert one
-block of text.  It gets passed the conversion-step information
-initialized by @code{gconv_init} and the conversion data, specific to
-this use of the conversion functions.
address@hidden table
-
-There are three data types defined for the three module interface
-functions, and these define the interface.
-
address@hidden gconv.h
address@hidden GNU
address@hidden {Data type} int {(*__gconv_init_fct)} (struct __gconv_step *)
-This specifies the interface of the initialization function of the
-module.  It is called exactly once for each conversion the module
-implements.
-
-As explained in the description of the @code{struct __gconv_step} data
-structure above, the initialization function has to initialize parts of
-it.
-
address@hidden @code
address@hidden __min_needed_from
address@hidden __max_needed_from
address@hidden __min_needed_to
address@hidden __max_needed_to
-These elements must be initialized to the exact numbers of the minimum
-and maximum number of bytes used by one character in the source and
-destination character sets, respectively.  If the characters all have the
-same size, the minimum and maximum values are the same.
-
address@hidden __stateful
-This element must be initialized to a nonzero value if the source
-character set is stateful.  Otherwise, it must be zero.
address@hidden table
-
-If the initialization function needs to communicate some information
-to the conversion function, this communication can happen using the
address@hidden element of the @code{__gconv_step} structure.  But since
-this data is shared by all the conversions, it must not be modified by
-the conversion function.  The example below shows how this can be used.
-
address@hidden
-#define MIN_NEEDED_FROM         1
-#define MAX_NEEDED_FROM         4
-#define MIN_NEEDED_TO           4
-#define MAX_NEEDED_TO           4
-
-int
-gconv_init (struct __gconv_step *step)
address@hidden
-  /* @r{Determine which direction.}  */
-  struct iso2022jp_data *new_data;
-  enum direction dir = illegal_dir;
-  enum variant var = illegal_var;
-  int result;
-
-  if (__strcasecmp (step->__from_name, "ISO-2022-JP//") == 0)
-    @{
-      dir = from_iso2022jp;
-      var = iso2022jp;
-    @}
-  else if (__strcasecmp (step->__to_name, "ISO-2022-JP//") == 0)
-    @{
-      dir = to_iso2022jp;
-      var = iso2022jp;
-    @}
-  else if (__strcasecmp (step->__from_name, "ISO-2022-JP-2//") == 0)
-    @{
-      dir = from_iso2022jp;
-      var = iso2022jp2;
-    @}
-  else if (__strcasecmp (step->__to_name, "ISO-2022-JP-2//") == 0)
-    @{
-      dir = to_iso2022jp;
-      var = iso2022jp2;
-    @}
-
-  result = __GCONV_NOCONV;
-  if (dir != illegal_dir)
-    @{
-      new_data = (struct iso2022jp_data *)
-        malloc (sizeof (struct iso2022jp_data));
-
-      result = __GCONV_NOMEM;
-      if (new_data != NULL)
-        @{
-          new_data->dir = dir;
-          new_data->var = var;
-          step->__data = new_data;
-
-          if (dir == from_iso2022jp)
-            @{
-              step->__min_needed_from = MIN_NEEDED_FROM;
-              step->__max_needed_from = MAX_NEEDED_FROM;
-              step->__min_needed_to = MIN_NEEDED_TO;
-              step->__max_needed_to = MAX_NEEDED_TO;
-            @}
-          else
-            @{
-              step->__min_needed_from = MIN_NEEDED_TO;
-              step->__max_needed_from = MAX_NEEDED_TO;
-              step->__min_needed_to = MIN_NEEDED_FROM;
-              step->__max_needed_to = MAX_NEEDED_FROM + 2;
-            @}
-
-          /* @r{Yes, this is a stateful encoding.}  */
-          step->__stateful = 1;
-
-          result = __GCONV_OK;
-        @}
-    @}
-
-  return result;
address@hidden
address@hidden smallexample
-
-The function first checks which conversion is wanted.  The module from
-which this function is taken implements four different conversions; the
-one that is selected can be determined by comparing the names.  The
-comparison should always be done without paying attention to the case.
-
-Next, a data structure, which contains the necessary information about
-which conversion is selected, is allocated.  The data structure
address@hidden iso2022jp_data} is locally defined since, outside the
-module, this data is not used at all.  If all four conversions this
-module supports are requested, there are four data blocks.
-
-The initialization of the @code{__min_} and @code{__max_} elements of
-the step-data object is interesting.  A single @sc{iso}-2022-JP
-character can consist of 1 to 4 bytes.  Therefore, the
address@hidden and @code{MAX_NEEDED_FROM} macros are defined
-this way.  The output is always the @code{INTERNAL} character set (aka
address@hidden), and therefore each character consists of exactly 4 bytes.
-For the conversion from @code{INTERNAL} to @sc{iso}-2022-JP, we have to
-take into account that escape sequences might be necessary to switch the
-character sets.  Therefore, the @code{__max_needed_to} element for this
-direction gets assigned @code{MAX_NEEDED_FROM + 2}.  This takes into
-account the 2 bytes needed for the escape sequences to signal the
-switching.  The asymmetry in the maximum values for the two directions
-can be explained easily, when reading @sc{iso}-2022-JP text, escape
-sequences can be handled alone (i.e., it is not necessary to process a
-real character, since the effect of the escape sequence can be recorded
-in the state information).  The situation is different for the other
-direction.  Since it is in general not known which character comes next,
-you cannot emit escape sequences to change the state in advance.  This
-means the escape sequences have to be emitted together with the next
-character.  Therefore, you need room for more than only the character
-itself.
-
-The possible return values of the initialization function are
-
address@hidden @code
address@hidden __GCONV_OK
-The initialization succeeded.
address@hidden __GCONV_NOCONV
-The requested conversion is not supported in the module.  This can
-happen if the @file{gconv-modules} file has errors.
address@hidden __GCONV_NOMEM
-Memory required to store additional information could not be allocated.
address@hidden table
address@hidden deftypevr
-
-The function called before the module is unloaded is significantly
-easier.  It often has nothing at all to do, in which case it can be left
-out completely.
-
address@hidden gconv.h
address@hidden GNU
address@hidden {Data type} void {(*__gconv_end_fct)} (struct gconv_step *)
-The task of this function is to free all resources allocated in the
-initialization function.  Therefore, only the @code{__data} element of
-the object pointed to by the argument is of interest.  Continuing the
-example from the initialization function, the finalization function
-looks like this:
-
address@hidden
-void
-gconv_end (struct __gconv_step *data)
address@hidden
-  free (data->__data);
address@hidden
address@hidden smallexample
address@hidden deftypevr
-
-The most important function is the conversion function itself, which can
-get quite complicated for complex character sets.  But since this is not
-of interest here, we will only describe a possible skeleton for the
-conversion function.
-
address@hidden gconv.h
address@hidden GNU
address@hidden {Data type} int {(*__gconv_fct)} (struct __gconv_step *, struct 
__gconv_step_data *, const char **, const char *, size_t *, int)
-The conversion function can be called for two basic reasons: to convert
-text or to reset the state.  From the description of the @code{iconv}
-function, it can be seen why the flushing mode is necessary.  The mode
-selected is determined by the sixth argument, an integer.  This argument
-being nonzero means that flushing is selected.
-
-Common to both modes is the location of the output buffer.  The
-information about this buffer is stored in the conversion-step data.  A
-pointer to this information is passed as the second argument to this
-function.  The description of the @code{struct __gconv_step_data}
-structure has more information on the conversion-step data.
-
address@hidden stateful
-What has to be done for flushing depends on the source character set.
-If the source character set is not stateful, nothing has to be done.
-Otherwise, the function has to emit a byte sequence to bring the state
-object into the initial state.  Once this has all happened, the other
-conversion modules in the chain of conversions have to get the same
-chance.  Whether another step follows can be determined from the
address@hidden element of the step data structure to which the first
-parameter points.
-
-The more interesting mode is when actual text has to be converted.  The
-first step in this case is to convert as much text as possible from the
-input buffer and store the result in the output buffer.  The start of the
-input buffer is determined by the third argument, which is a pointer to a
-pointer variable referencing the beginning of the buffer.  The fourth
-argument is a pointer to the byte right after the last byte in the buffer.
-
-The conversion has to be performed according to the current state if the
-character set is stateful.  The state is stored in an object pointed to
-by the @code{__statep} element of the step data (second argument).  Once
-either the input buffer is empty or the output buffer is full, the
-conversion stops.  At this point, the pointer variable referenced by the
-third parameter must point to the byte following the last processed byte
-(i.e., if all of the input is consumed, this pointer and the fourth
-parameter have the same value).
-
-What happens now depends on whether this step is the last one.  If it is
-the last step, the only thing to be done is to update the
address@hidden element of the step data structure to point after the
-last written byte.  This update gives the caller the information on how
-much text is available in the output buffer.  In addition, the variable
-pointed to by the fifth parameter, which is of type @code{size_t}, must
-be incremented by the number of characters (@emph{not bytes}) that were
-converted in a nonreversible way.  Then, the function can return.
-
-In case the step is not the last one, the later conversion functions have
-to get a chance to do their work.  Therefore, the appropriate conversion
-function has to be called.  The information about the functions is
-stored in the conversion data structures, passed as the first parameter.
-This information and the step data are stored in arrays, so the next
-element in both cases can be found by simple pointer arithmetic:
-
address@hidden
-int
-gconv (struct __gconv_step *step, struct __gconv_step_data *data,
-       const char **inbuf, const char *inbufend, size_t *written,
-       int do_flush)
address@hidden
-  struct __gconv_step *next_step = step + 1;
-  struct __gconv_step_data *next_data = data + 1;
-  @dots{}
address@hidden smallexample
-
-The @code{next_step} pointer references the next step information, and
address@hidden references the next data record.  The call of the next
-function therefore will look similar to this:
-
address@hidden
-  next_step->__fct (next_step, next_data, &outerr, outbuf,
-                    written, 0)
address@hidden smallexample
-
-But this is not yet all.  Once the function call returns, the conversion
-function might have some more to do.  If the return value of the
-function is @code{__GCONV_EMPTY_INPUT}, more room is available in the
-output buffer.  Unless the input buffer is empty, the conversion
-functions start all over again and process the rest of the input buffer.
-If the return value is not @code{__GCONV_EMPTY_INPUT}, something went
-wrong and we will have to recover from this.
-
-A requirement for the conversion function is that the input buffer
-pointer (the third argument) always point to the last character that was
-put in converted form into the output buffer.  This is true after the
-conversion performed in the current step, but if the conversion
-functions deeper downstream stop prematurely, not all characters from
-the output buffer are consumed and, therefore, the input buffer pointers
-must be backed off to the right position.
-
-Correcting the input buffers is easy to do if the input and output
-character sets have a fixed width for all characters.  In this
-situation, we can compute how many characters are left in the output
-buffer and, therefore, can correct the input buffer pointer
-appropriately with a similar computation.  Things are getting tricky if
-either character set has characters represented with variable-length
-byte sequences, and it gets even more complicated if the conversion has
-to take care of the state.  In these cases, the conversion has to be
-performed once again, from the known state before the initial conversion
-(i.e., if necessary the state of the conversion has to be reset and the
-conversion loop has to be executed again).  The difference now is that
-it is known how much input must be created, and the conversion can stop
-before converting the first unused character.  Once this is done, the
-input buffer pointers must be updated again and the function can return.
-
-One final thing should be mentioned.  If it is necessary for the
-conversion to know whether it is the first invocation (in case a prolog
-has to be emitted), the conversion function should increment the
address@hidden element of the step data structure just
-before returning to the caller.  See the description of the @code{struct
-__gconv_step_data} structure in @ref{iconv Module Data Structures} for
-more information on how this can be used.
-
-The return value must be one of the following values:
-
address@hidden @code
address@hidden __GCONV_EMPTY_INPUT
-All input was consumed and there is room left in the output buffer.
address@hidden __GCONV_FULL_OUTPUT
-No more room in the output buffer.  In case this is not the last step,
-this value is propagated down from the call of the next conversion
-function in the chain.
address@hidden __GCONV_INCOMPLETE_INPUT
-The input buffer is not entirely empty, since it contains an incomplete
-character sequence.
address@hidden table
-
-The following example provides a framework for a conversion function.
-In case a new conversion has to be written, the following is a
-template that can be filled in to do the job:
-
address@hidden
-int
-gconv (struct __gconv_step *step, struct __gconv_step_data *data,
-       const char **inbuf, const char *inbufend, size_t *written,
-       int do_flush)
address@hidden
-  struct __gconv_step *next_step = step + 1;
-  struct __gconv_step_data *next_data = data + 1;
-  gconv_fct fct = next_step->__fct;
-  int status;
-
-  /* @r{If the function is called with no input, we have}
-     @r{to reset to the initial state.  The potentially partly}
-     @r{converted input is dropped.}  */
-  if (do_flush)
-    @{
-      status = __GCONV_OK;
-
-      /* @r{Possibly emit a byte sequence that puts the state object}
-         @r{into the initial state.}  */
-
-      /* @r{Call the steps down the chain if there are any but only}
-         @r{if we successfully emitted the escape sequence.}  */
-      if (status == __GCONV_OK && ! data->__is_last)
-        status = fct (next_step, next_data, NULL, NULL,
-                      written, 1);
-    @}
-  else
-    @{
-      /* @r{We preserve the initial values of the pointer variables.}  */
-      const char *inptr = *inbuf;
-      char *outbuf = data->__outbuf;
-      char *outend = data->__outbufend;
-      char *outptr;
-
-      do
-        @{
-          /* @r{Remember the start value for this round.}  */
-          inptr = *inbuf;
-          /* @r{The outbuf buffer is empty.}  */
-          outptr = outbuf;
-
-          /* @r{For stateful encodings the state must be safe here.}  */
-
-          /* @r{Run the conversion loop.  @code{status} is set}
-             @r{appropriately afterwards.}  */
-
-          /* @r{If this is the last step, leave the loop. There is}
-             @r{nothing we can do.}  */
-          if (data->__is_last)
-            @{
-              /* @r{Store information about how many bytes are}
-                 @r{available.}  */
-              data->__outbuf = outbuf;
-
-             /* @r{If any nonreversible conversions were performed,}
-                @r{add the number to @code{*written}.}  */
-
-             break;
-           @}
-
-          /* @r{Write out all output that was produced.}  */
-          if (outbuf > outptr)
-            @{
-              const char *outerr = data->__outbuf;
-              int result;
-
-              result = fct (next_step, next_data, &outerr,
-                            outbuf, written, 0);
-
-              if (result != __GCONV_EMPTY_INPUT)
-                @{
-                  if (outerr != outbuf)
-                    @{
-                      /* @r{Reset the input buffer pointer. Here we}
-                         @r{document the complex case.}  */
-                      size_t nstatus;
-
-                      /* @r{Reload the pointers.}  */
-                      *inbuf = inptr;
-                      outbuf = outptr;
-
-                      /* @r{Possibly reset the state.}  */
-
-                      /* @r{Redo the conversion, but this time}
-                         @r{the end of the output buffer is at}
-                         @address@hidden  */
-                    @}
-
-                  /* @r{Change the status.}  */
-                  status = result;
-                @}
-              else
-                /* @r{All the output is consumed, we can make}
-                   @r{ another run if everything was ok.}  */
-                if (status == __GCONV_FULL_OUTPUT)
-                  status = __GCONV_OK;
-           @}
-        @}
-      while (status == __GCONV_OK);
-
-      /* @r{We finished one use of this step.}  */
-      ++data->__invocation_counter;
-    @}
-
-  return status;
address@hidden
address@hidden smallexample
address@hidden deftypevr
-
-This information should be sufficient to write new modules.  Anybody
-doing so should also take a look at the available source code in the @sc{gnu}
-C Library sources.  It contains many examples of working and optimized
-modules.
-
address@hidden File charset.texi edited October 2001 by Dennis Grace, IBM 
Corporation
-
address@hidden Locales, Message Translation, Character-Set Handling, Top
address@hidden %MENU% The country and language can affect the behavior of 
library functions
address@hidden Locales and Internationalization
-
-Different countries and cultures have varying conventions for how to
-communicate.  These conventions range from very simple ones, such as the
-format for representing dates and times, to very complex ones, such as
-the language spoken.
-
address@hidden internationalization
address@hidden locales
address@hidden of software means programming it to be able
-to adapt to the user's favorite conventions.  In @address@hidden C},
-internationalization works by means of @dfn{locales}.  Each locale
-specifies a collection of conventions, one convention for each purpose.
-The user chooses a set of conventions by specifying a locale (via
-environment variables).
-
-All programs inherit the chosen locale as part of their environment.
-Provided the programs are written to obey the choice of locale, they
-will follow the conventions preferred by the user.
-
address@hidden Effects of Locale, Choosing Locale,  , Locales
address@hidden What Effects a Locale Has
-
-Each locale specifies conventions for several purposes, including the
-following:
-
address@hidden @bullet
address@hidden
-What multibyte-character sequences are valid, and how they are
-interpreted (@pxref{Character-Set Handling})
-
address@hidden
-Classification of which characters in the local character set are
-considered alphabetic, and uppercase and lowercase conversion
-conventions (@pxref{Character Handling})
-
address@hidden
-The collating sequence for the local language and character set
-(@pxref{Collation Functions})
-
address@hidden
-Formatting of numbers and currency amounts (@pxref{General Numeric})
-
address@hidden
-Formatting of dates and times (@pxref{Formatting Calendar Time})
-
address@hidden
-What language to use for output, including error messages
-(@pxref{Message Translation})
-
address@hidden
-What language to use for user answers to yes-or-no questions
-(@pxref{Yes-or-No Questions})
-
address@hidden
-What language to use for more complex user input
-(the C library doesn't yet help you implement this)
address@hidden itemize
-
-Some aspects of adapting to the specified locale are handled
-automatically by the library subroutines.  For example, all your program
-needs to do in order to use the collating sequence of the chosen locale
-is to use @code{strcoll} or @code{strxfrm} to compare strings.
-
-Other aspects of locales are beyond the comprehension of the library.
-For example, the library can't automatically translate your program's
-output messages into other languages.  The only way you can support
-output in the user's favorite language is to program this more or less
-by hand.  The C library provides functions to handle translations for
-multiple languages easily.
-
-This chapter discusses the mechanism by which you can modify the current
-locale.  The effects of the current locale on specific library functions
-are discussed in more detail in the descriptions of those functions.
-
address@hidden Choosing Locale, Locale Categories, Effects of Locale, Locales
address@hidden Choosing a Locale
-
-The simplest way for the user to choose a locale is to set the
-environment variable @code{LANG}.  This specifies a single locale to use
-for all purposes.  For example, a user could specify a hypothetical
-locale named @samp{espana-castellano} to use the standard conventions of
-most of Spain.
-
-The set of locales supported depends on the operating system you are
-using, and so do their names.  We can't make any promises about what
-locales will exist, except for one standard locale called @samp{C} or
address@hidden  Later we will describe how to construct locales.
address@hidden (@pxref{Building Locale Files}).
-
address@hidden combining locales
-A user also has the option of specifying different locales for different
-purposes---in effect, choosing a mixture of multiple locales.
-
-For example, the user might specify the locale @samp{espana-castellano}
-for most purposes, but specify the locale @samp{usa-english} for
-currency formatting.  This might make sense if the user is a
-Spanish-speaking American, working in Spanish, but representing monetary
-amounts in US dollars.
-
-Both locales @samp{espana-castellano} and @samp{usa-english},
-like all locales, would include conventions for all of the purposes to
-which locales apply.  However, the user can choose to use each locale
-for a particular subset of those purposes.
-
address@hidden Locale Categories, Setting the Locale, Choosing Locale, Locales
address@hidden Categories of Activities That Locales Affect
address@hidden categories for locales
address@hidden locale categories
-
-The purposes that locales serve are grouped into @dfn{categories}, so
-that a user or a program can choose the locale for each category
-independently.  Here is a table of categories; each name is both an
-environment variable that a user can set, and a macro name that you can
-use as an argument to @code{setlocale}.
-
address@hidden @code
address@hidden locale.h
address@hidden ISO
address@hidden LC_COLLATE
-This category applies to collation of strings (functions @code{strcoll}
-and @code{strxfrm}) (@pxref{Collation Functions}).
-
address@hidden locale.h
address@hidden ISO
address@hidden LC_CTYPE
-This category applies to classification and conversion of characters,
-and to multibyte and wide characters (@pxref{Character Handling}, and
address@hidden Handling}).
-
address@hidden locale.h
address@hidden ISO
address@hidden LC_MONETARY
-This category applies to formatting monetary values (@pxref{General Numeric}).
-
address@hidden locale.h
address@hidden ISO
address@hidden LC_NUMERIC
-This category applies to formatting numeric values that are not
-monetary (@pxref{General Numeric}).
-
address@hidden locale.h
address@hidden ISO
address@hidden LC_TIME
-This category applies to formatting date and time values
-(@pxref{Formatting Calendar Time}).
-
address@hidden locale.h
address@hidden XOPEN
address@hidden LC_MESSAGES
-This category applies to selecting the language used in the user
-interface for message translation (@pxref{The Uniforum approach}, and
address@hidden catalogs a la X/Open}) and contains regular expressions for
-affirmative and negative responses.
-
address@hidden locale.h
address@hidden ISO
address@hidden LC_ALL
-This is not an environment variable; it is only a macro that you can use
-with @code{setlocale} to set a single locale for all purposes.  Setting
-this environment variable overwrites all selections by the other
address@hidden variables or @code{LANG}.
-
address@hidden locale.h
address@hidden ISO
address@hidden LANG
-If this environment variable is defined, its value specifies the locale
-to use for all purposes except as overridden by the variables above.
address@hidden vtable
-
address@hidden LANGUAGE
-When developing the message translation functions it was felt that the
-functionality provided by the variables above is not sufficient.  For
-example, it should be possible to specify more than one locale name.
-Take a Swedish user who speaks German better than English, and a program
-whose messages are output in English by default.  It should be possible
-to specify that the first choice of language is Swedish, the second
-German, and if this also fails, to use English.  This is possible with
-the variable @code{LANGUAGE}.  For further description of this @sc{gnu}
-extension, see @ref{Using gettextized software}.
-
address@hidden Setting the Locale, Standard Locales, Locale Categories, Locales
address@hidden How Programs Set the Locale
-
-A C program inherits its locale environment variables when it starts up.
-This happens automatically.  However, these variables do not
-automatically control the locale used by the library functions, because
address@hidden@sc{iso} C} says that all programs start by default in the 
standard @samp{C}
-locale.  To use the locales specified by the environment, you must call
address@hidden  Call it as follows:
-
address@hidden
-setlocale (LC_ALL, "");
address@hidden smallexample
-
address@hidden
-to select a locale based on the user choice of the appropriate
-environment variables.
-
address@hidden changing the locale
address@hidden locale, changing
-You can also use @code{setlocale} to specify a particular locale, for
-general use or for a specific category.
-
address@hidden locale.h
-The symbols in this section are defined in the header file @file{locale.h}.
-
address@hidden locale.h
address@hidden ISO
address@hidden {char *} setlocale (int @var{category}, const char 
address@hidden)
-The function @code{setlocale} sets the current locale for category
address@hidden to @var{locale}.  A list of all the locales the system
-provides can be created by running:
-
address@hidden locale
address@hidden
-  locale -a
address@hidden smallexample
-
-If @var{category} is @code{LC_ALL}, this specifies the locale for all
-purposes.  The other possible values of @var{category} specify a single
-purpose (@pxref{Locale Categories}).
-
-You can also use this function to find out the current locale by passing
-a null pointer as the @var{locale} argument.  In this case,
address@hidden returns a string that is the name of the locale
-currently selected for category @var{category}.
-
-The string returned by @code{setlocale} can be overwritten by subsequent
-calls, so you should make a copy of the string (@pxref{Copying and
-Concatenation}) if you want to save it past any further calls to
address@hidden  (The standard library is guaranteed never to call
address@hidden itself.)
-
-You should not modify the string returned by @code{setlocale}.  It
-might be the same string that was passed as an argument in a previous
-call to @code{setlocale}.  One requirement is that the @var{category}
-must be the same in the call the string was returned from and the call
-where the string is passed in as @var{locale} parameter.
-
-When you read the current locale for category @code{LC_ALL}, the value
-encodes the entire combination of selected locales for all categories.
-In this case, the value is not just a single locale name.  In fact, we
-don't make any promises about what it looks like.  But if you specify
-the same locale name with @code{LC_ALL} in a subsequent call to
address@hidden, it restores the same combination of locale selections.
-
-To be sure you can use the returned string encoding the currently selected
-locale at a later time, you must make a copy of the string.  It is not
-guaranteed that the returned pointer remains valid over time.
-
-When the @var{locale} argument is not a null pointer, the string returned
-by @code{setlocale} reflects the newly-modified locale.
-
-If you specify an empty string for @var{locale}, this means to read the
-appropriate environment variable and use its value to select the locale
-for @var{category}.
-
-If a nonempty string is given for @var{locale}, then the locale of that
-name is used if possible.
-
-If you specify an invalid locale name, @code{setlocale} returns a null
-pointer and leaves the current locale unchanged.
address@hidden deftypefun
-
-Here is an example showing how you might use @code{setlocale} to
-temporarily switch to a new locale:
-
address@hidden
-#include <stddef.h>
-#include <locale.h>
-#include <stdlib.h>
-#include <string.h>
-
-void
-with_other_locale (char *new_locale,
-                   void (*subroutine) (int),
-                   int argument)
address@hidden
-  char *old_locale, *saved_locale;
-
-  /* @r{Get the name of the current locale.}  */
-  old_locale = setlocale (LC_ALL, NULL);
-
-  /* @r{Copy the name so it won't be clobbered by @code{setlocale}.} */
-  saved_locale = strdup (old_locale);
-  if (saved_locale == NULL)
-    fatal ("Out of memory");
-
-  /* @r{Now change the locale and do some stuff with it.} */
-  setlocale (LC_ALL, new_locale);
-  (*subroutine) (argument);
-
-  /* @r{Restore the original locale.} */
-  setlocale (LC_ALL, saved_locale);
-  free (saved_locale);
address@hidden
address@hidden smallexample
-
address@hidden Note:} Some @address@hidden C} systems may define additional
-locale categories, and future versions of the library will do so.  For
-portability, assume that any symbol beginning with @samp{LC_} might be
-defined in @file{locale.h}.
-
address@hidden Standard Locales, Locale Information, Setting the Locale, Locales
address@hidden Standard Locales
-
-The only locale names you can count on finding on all operating systems
-are these three standard ones:
-
address@hidden @code
address@hidden ``C''
-This is the standard C locale.  The attributes and behavior it provides
-are specified in the @address@hidden C} standard.  When your program starts 
up, it
-initially uses this locale by default.
-
address@hidden ``POSIX''
-This is the standard @sc{posix} locale.  Currently, it is an alias for the
-standard C locale.
-
address@hidden ``''
-The empty name says to select a locale based on environment variables
-(@pxref{Locale Categories}).
address@hidden table
-
-Defining and installing named locales is normally a responsibility of
-the system administrator at your site (or the person who installed the
address@hidden C Library).  It is also possible for the user to create private
-locales.  All this will be discussed later when describing the tool for
-such creation.
address@hidden (@pxref{Building Locale Files}).
-
-If your program needs to use something other than the @samp{C} locale,
-it will be more portable if you use whatever locale the user specifies
-with the environment, rather than trying to specify some nonstandard
-locale explicitly by name.  Remember, different machines might have
-different sets of locales installed.
-
address@hidden Locale Information, Formatting Numbers, Standard Locales, Locales
address@hidden Accessing Locale Information
-
-There are several ways to access locale information.  The simplest
-way is to let the C library itself do the work.  Several of the
-functions in this library implicitly access the locale data, and use
-what information is provided by the currently selected locale.  This is
-how the locale model is meant to work normally.
-
-As an example, take the @code{strftime} function, which is meant to
-nicely format date and time information (@pxref{Formatting Calendar
-Time}).  Part of the standard information contained in the
address@hidden category is the names of the months.  Instead of
-requiring the programmer to take care of providing the translations, the
address@hidden function does this all by itself.  @code{%A} in the
-format string is replaced by the appropriate weekday name of the locale
-currently selected by @code{LC_TIME}.  This is an easy example, and
-wherever possible, functions do things automatically in this way.
-
-But there are quite often situations when there is simply no function to
-perform the task, or it is simply not possible to do the work
-automatically.  For these cases it is necessary to access the
-information in the locale directly.  To do this, the C library provides
-two functions: @code{localeconv} and @code{nl_langinfo}.  The former is
-part of @address@hidden C} and is therefore portable, but has a
-brain-damaged interface.  The second is part of the Unix interface and
-is portable in as far as the system follows the Unix standards.
-
address@hidden The Lame Way to Locale Data, The Elegant and Fast Way, ,Locale 
Information
address@hidden @code{localeconv}: ``It is portable, but @dots{}''
-
-Together with the @code{setlocale} function, the @address@hidden C} people
-invented the @code{localeconv} function.  It is a masterpiece of poor
-design.  It is expensive to use, not extendable, and not generally
-usable, since it provides access to only @code{LC_MONETARY} and
address@hidden related information.  Nevertheless, if it is
-applicable to a given situation, it should be used since it is very
-portable.  The function @code{strfmon} formats monetary amounts
-according to the selected locale using this information.
address@hidden locale.h
address@hidden monetary value formatting
address@hidden numeric value formatting
-
address@hidden locale.h
address@hidden ISO
address@hidden {struct lconv *} localeconv (void)
-The @code{localeconv} function returns a pointer to a structure whose
-components contain information about how numeric and monetary values
-should be formatted in the current locale.
-
-You should not modify the structure or its contents.  The structure might
-be overwritten by subsequent calls to @code{localeconv}, or by calls to
address@hidden, but no other function in the library overwrites this
-value.
address@hidden deftypefun
-
address@hidden locale.h
address@hidden ISO
address@hidden {Data Type} {struct lconv}
address@hidden's return value is of this data type.  Its elements are
-described in the following subsections.
address@hidden deftp
-
-If a member of the structure @code{struct lconv} has type @code{char},
-and the value is @code{CHAR_MAX}, it means that the current locale has
-no value for that parameter.
-
address@hidden General Numeric, Currency Symbol, , The Lame Way to Locale Data
address@hidden Generic Numeric Formatting Parameters
-
-These are the standard members of @code{struct lconv}; there may be
-others.
-
address@hidden @code
address@hidden char *decimal_point
address@hidden char *mon_decimal_point
-These are the decimal-point separators used in formatting nonmonetary
-and monetary quantities, respectively.  In the @samp{C} locale, the
-value of @code{decimal_point} is @code{"."}, and the value of
address@hidden is @code{""}.
address@hidden decimal-point separator
-
address@hidden char *thousands_sep
address@hidden char *mon_thousands_sep
-These are the separators used to delimit groups of digits to the left of
-the decimal point in formatting nonmonetary and monetary quantities,
-respectively.  In the @samp{C} locale, both members have a value of
address@hidden""} (the empty string).
-
address@hidden char *grouping
address@hidden char *mon_grouping
-These are strings that specify how to group the digits to the left of
-the decimal point.  @code{grouping} applies to nonmonetary quantities,
-and @code{mon_grouping} applies to monetary quantities.  Use either
address@hidden or @code{mon_thousands_sep} to separate the digit
-groups.
address@hidden grouping of digits
-
-Each member of these strings is to be interpreted as an integer value of
-type @code{char}.  Successive numbers (from left to right) give the
-sizes of successive groups (from right to left, starting at the decimal
-point.)  The last member is either @code{0}, in which case the previous
-member is used over and over again for all the remaining groups, or
address@hidden, in which case there is no more grouping---or, put
-another way, any remaining digits form one large group without
-separators.
-
-For example, if @code{grouping} is @code{"\04\03\02"}, the correct
-grouping for the number @code{123456787654321} is @samp{12}, @samp{34},
address@hidden, @samp{78}, @samp{765}, @samp{4321}.  This uses a group of
-four digits at the end, preceded by a group of three digits, preceded by
-groups of two digits (as many as needed).  With a separator of @samp{,},
-the number would be printed as @samp{12,34,56,78,765,4321}.
-
-A value of @code{"\03"} indicates repeated groups of three digits, as
-normally used in the United States.
-
-In the standard @samp{C} locale, both @code{grouping} and
address@hidden have a value of @code{""}.  This value specifies no
-grouping at all.
-
address@hidden char int_frac_digits
address@hidden char frac_digits
-These are small integers indicating how many fractional digits (to the
-right of the decimal point) should be displayed in a monetary value in
-international and local formats, respectively.  (Most often, both
-members have the same value.)
-
-In the standard @samp{C} locale, both of these members have the value
address@hidden, meaning ``unspecified''.  The @sc{iso} standard doesn't say
-what to do when you find this value; we recommend printing no
-fractional digits.  (This locale also specifies the empty string for
address@hidden, so printing any fractional digits would be
-confusing!)
address@hidden table
-
address@hidden Currency Symbol, Sign of Money Amount, General Numeric, The Lame 
Way to Locale Data
address@hidden Printing the Currency Symbol
address@hidden currency symbols
-
-These members of the @code{struct lconv} structure specify how to print
-the symbol to identify a monetary value---the international analog of
address@hidden for US dollars.
-
-Each country has two standard currency symbols.  The @dfn{local currency
-symbol} is used commonly within the country, while the
address@hidden currency symbol} is used internationally to refer to
-that country's currency when it is necessary to indicate the country
-unambiguously.
-
-For example, many countries use the dollar as their monetary unit, and
-when dealing with international currencies it's important to specify
-that one is dealing with (say) Canadian dollars instead of US dollars or
-Australian dollars.  But when the context is known to be Canada, there
-is no need to make this explicit---dollar amounts are implicitly assumed
-to be in Canadian dollars.
-
address@hidden @code
address@hidden char *currency_symbol
-The local currency symbol for the selected locale.
-
-In the standard @samp{C} locale, this member has a value of @code{""}
-(the empty string), meaning ``unspecified''.  The @sc{iso} standard doesn't
-say what to do when you find this value; we recommend you simply print
-the empty string as you would print any other string pointed to by this
-variable.
-
address@hidden char *int_curr_symbol
-The international currency symbol for the selected locale.
-
-The value of @code{int_curr_symbol} should normally consist of a
-three-letter abbreviation determined by the international standard
address@hidden@sc{iso} 4217 Codes for the Representation of Currency and Funds},
-followed by a one-character separator (often a space).
-
-In the standard @samp{C} locale, this member has a value of @code{""}
-(the empty string), meaning ``unspecified''.  We recommend you simply print
-the empty string as you would print any other string pointed to by this
-variable.
-
address@hidden char p_cs_precedes
address@hidden char n_cs_precedes
address@hidden char int_p_cs_precedes
address@hidden char int_n_cs_precedes
-These members are @code{1} if the @code{currency_symbol} or
address@hidden strings should precede the value of a monetary
-amount, or @code{0} if the strings should follow the value.  The
address@hidden and @code{int_p_cs_precedes} members apply to
-positive amounts (or zero), and the @code{n_cs_precedes} and
address@hidden members apply to negative amounts.
-
-In the standard @samp{C} locale, all of these members have a value of
address@hidden, meaning ``unspecified''.  The @sc{iso} standard doesn't say
-what to do when you find this value.  We recommend printing the
-currency symbol before the amount, which is right for most countries.
-In other words, treat all nonzero values alike in these members.
-
-The members with the @code{int_} prefix apply to the
address@hidden while the other two apply to
address@hidden
-
address@hidden char p_sep_by_space
address@hidden char n_sep_by_space
address@hidden char int_p_sep_by_space
address@hidden char int_n_sep_by_space
-These members are @code{1} if a space should appear between the
address@hidden or @code{int_curr_symbol} strings and the
-amount, or @code{0} if no space should appear.  The
address@hidden and @code{int_p_sep_by_space} members apply to
-positive amounts (or zero), and the @code{n_sep_by_space} and
address@hidden members apply to negative amounts.
-
-In the standard @samp{C} locale, all of these members have a value of
address@hidden, meaning ``unspecified''.  The @sc{iso} standard doesn't say
-what you should do when you find this value; we suggest you treat it as
-1 (print a space).  In other words, treat all nonzero values alike in
-these members.
-
-The members with the @code{int_} prefix apply to the
address@hidden while the other two apply to
address@hidden  There is one special case with the
address@hidden, though.  Since all legal values contain a
-space at the end the string one either adds this space with printf (if
-the currency symbol must appear in front and must be separated) or one
-has to avoid printing this character at all (especially when at the
-end of the string).
address@hidden table
-
address@hidden Sign of Money Amount, , Currency Symbol, The Lame Way to Locale 
Data
address@hidden Printing the Sign of a Monetary Amount
-
-These members of the @code{struct lconv} structure specify how to print
-the sign (if any) of a monetary value.
-
address@hidden @code
address@hidden char *positive_sign
address@hidden char *negative_sign
-These are strings used to indicate positive (or zero) and negative
-monetary quantities, respectively.
-
-In the standard @samp{C} locale, both of these members have a value of
address@hidden""} (the empty string), meaning ``unspecified''.
-
-The @sc{iso} standard doesn't say what to do when you find this value; we
-recommend printing @code{positive_sign} as you find it, even if it is
-empty.  For a negative value, print @code{negative_sign} as you find it
-unless both it and @code{positive_sign} are empty, in which case print
address@hidden instead.  (Failing to indicate the sign at all seems rather
-unreasonable.)
-
address@hidden char p_sign_posn
address@hidden char n_sign_posn
address@hidden char int_p_sign_posn
address@hidden char int_n_sign_posn
-These members are small integers that indicate how to
-position the sign for nonnegative and negative monetary quantities,
-respectively.  (The string used by the sign is what was specified with
address@hidden or @code{negative_sign}.)  The possible values are
-as follows:
-
address@hidden @code
address@hidden 0
-The currency symbol and quantity should be surrounded by parentheses.
-
address@hidden 1
-Print the sign string before the quantity and currency symbol.
-
address@hidden 2
-Print the sign string after the quantity and currency symbol.
-
address@hidden 3
-Print the sign string right before the currency symbol.
-
address@hidden 4
-Print the sign string right after the currency symbol.
-
address@hidden CHAR_MAX
-``Unspecified''.  Both members have this value in the standard
address@hidden locale.
address@hidden table
-
-The @sc{iso} standard doesn't say what you should do when the value is
address@hidden  We recommend you print the sign after the currency
-symbol.
-
-The members with the @code{int_} prefix apply to the
address@hidden while the other two apply to
address@hidden
address@hidden table
-
address@hidden The Elegant and Fast Way, , The Lame Way to Locale Data, Locale 
Information
address@hidden Pinpoint Access to Locale Data
-
-When writing the @emph{X/Open Portability Guide},@footnote{X/Open
-Company, @emph{X/Open Portability Guide,} Issue 4, Version 2 (Reading,
-UK: X/Open Company, Ltd., 1994).} the authors realized that the
address@hidden function is not enough to provide reasonable access
-to locale information.  The information that was meant to be available
-in the locale (as later specified in the @sc{posix}.1 standard)
-requires more ways to access it.  Therefore, the @code{nl_langinfo}
-function was introduced.
-
address@hidden langinfo.h
address@hidden XOPEN
address@hidden {char *} nl_langinfo (nl_item @var{item})
-The @code{nl_langinfo} function can be used to access individual
-elements of the locale categories.  Unlike the @code{localeconv}
-function, which returns all the information, @code{nl_langinfo}
-lets the caller select what information it requires.  This is very
-fast and it is not a problem to call this function multiple times.
-
-A second advantage is that in addition to the numeric and monetary
-formatting information, information from the
address@hidden and @code{LC_MESSAGES} categories is available.
-
address@hidden langinfo.h
-The type @code{nl_type} is defined in @file{nl_types.h}.  The argument
address@hidden is a numeric value defined in the header @file{langinfo.h}.
-The X/Open standard defines the following values:
-
address@hidden @code
address@hidden CODESET
address@hidden returns a string with the name of the coded character
-set used in the selected locale.
-
address@hidden ABDAY_1
address@hidden ABDAY_2
address@hidden ABDAY_3
address@hidden ABDAY_4
address@hidden ABDAY_5
address@hidden ABDAY_6
address@hidden ABDAY_7
address@hidden returns the abbreviated weekday name.  @code{ABDAY_1}
-corresponds to Sunday.
address@hidden DAY_1
address@hidden DAY_2
address@hidden DAY_3
address@hidden DAY_4
address@hidden DAY_5
address@hidden DAY_6
address@hidden DAY_7
-Similar to @code{ABDAY_1}, etc., but here the return value is the
-unabbreviated weekday name.
address@hidden ABMON_1
address@hidden ABMON_2
address@hidden ABMON_3
address@hidden ABMON_4
address@hidden ABMON_5
address@hidden ABMON_6
address@hidden ABMON_7
address@hidden ABMON_8
address@hidden ABMON_9
address@hidden ABMON_10
address@hidden ABMON_11
address@hidden ABMON_12
-The return value is the abbreviated name of the month.  @code{ABMON_1}
-corresponds to January.
address@hidden MON_1
address@hidden MON_2
address@hidden MON_3
address@hidden MON_4
address@hidden MON_5
address@hidden MON_6
address@hidden MON_7
address@hidden MON_8
address@hidden MON_9
address@hidden MON_10
address@hidden MON_11
address@hidden MON_12
-Similar to @code{ABMON_1}, etc., but here the month names are not
-abbreviated.  Here the first value @code{MON_1} also corresponds to
-January.
address@hidden AM_STR
address@hidden PM_STR
-The return values are strings that can be used in the representation of
-time as an hour from 1 to 12 plus an a.m. or p.m. specifier.
-
-In locales that do not use this time representation, these strings might
-be empty, in which case the a.m./p.m. format cannot be used at all.
address@hidden D_T_FMT
-The return value can be used as a format string for @code{strftime} to
-represent time and date in a locale-specific way.
address@hidden D_FMT
-The return value can be used as a format string for @code{strftime} to
-represent a date in a locale-specific way.
address@hidden T_FMT
-The return value can be used as a format string for @code{strftime} to
-represent time in a locale-specific way.
address@hidden T_FMT_AMPM
-The return value can be used as a format string for @code{strftime} to
-represent time in the a.m./p.m. format.
-
-If the a.m./p.m. format does not make any sense for the
-selected locale, the return value might be the same as the one for
address@hidden
address@hidden ERA
-The return value represents the era used in the current locale.
-
-Most locales do not define this value.  An example of a locale that does
-define this value is the Japanese locale.  In Japan, the traditional
-representation of dates includes the name of the era corresponding to
-the then-emperor's reign.
-
-Normally it should not be necessary to use this value directly.
-Specifying the @code{E} modifier in their format strings causes the
address@hidden functions to use this information.  The format of the
-returned string is not specified, and therefore you should not assume
-knowledge of it on different systems.
address@hidden ERA_YEAR
-The return value gives the year in the relevant era of the locale.  As
-for @code{ERA}, it should not be necessary to use this value directly.
address@hidden ERA_D_T_FMT
-This return value can be used as a format string for @code{strftime} to
-represent dates and times in a locale-specific era-based way.
address@hidden ERA_D_FMT
-This return value can be used as a format string for @code{strftime} to
-represent a date in a locale-specific era-based way.
address@hidden ERA_T_FMT
-This return value can be used as a format string for @code{strftime} to
-represent time in a locale-specific era-based way.
address@hidden ALT_DIGITS
-The return value is a representation of up to @math{100} values used to
-represent the values @math{0} to @math{99}.  As for @code{ERA}, this
-value is not intended to be used directly, but instead indirectly
-through the @code{strftime} function.  When the modifier @code{O} is
-used in a format that would otherwise use numerals to represent hours,
-minutes, seconds, weekdays, months, or weeks, the appropriate value for
-the locale is used instead.
address@hidden INT_CURR_SYMBOL
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden CURRENCY_SYMBOL
address@hidden CRNCYSTR
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
-
address@hidden is a deprecated alias still required by Unix98.
address@hidden MON_DECIMAL_POINT
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden MON_THOUSANDS_SEP
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden MON_GROUPING
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden POSITIVE_SIGN
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden NEGATIVE_SIGN
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden INT_FRAC_DIGITS
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden FRAC_DIGITS
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden P_CS_PRECEDES
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden P_SEP_BY_SPACE
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden N_CS_PRECEDES
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden N_SEP_BY_SPACE
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden P_SIGN_POSN
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden N_SIGN_POSN
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
-
address@hidden INT_P_CS_PRECEDES
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden INT_P_SEP_BY_SPACE
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden INT_N_CS_PRECEDES
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden INT_N_SEP_BY_SPACE
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden INT_P_SIGN_POSN
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden INT_N_SIGN_POSN
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
-
address@hidden DECIMAL_POINT
address@hidden RADIXCHAR
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
-
-The name @code{RADIXCHAR} is a deprecated alias still used in Unix98.
address@hidden THOUSANDS_SEP
address@hidden THOUSEP
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
-
-The name @code{THOUSEP} is a deprecated alias still used in Unix98.
address@hidden GROUPING
-This is the same as the value returned by @code{localeconv} in the
address@hidden element of the @code{struct lconv}.
address@hidden YESEXPR
-The return value is a regular expression that can be used with the
address@hidden function to recognize a positive response to a yes-or-no
-question.  The @sc{gnu} C Library provides the @code{rpmatch} function
-for easier handling in applications.
address@hidden NOEXPR
-The return value is a regular expression that can be used with the
address@hidden function to recognize a negative response to a yes-or-no
-question.
address@hidden YESSTR
-The return value is a locale-specific translation of the positive
-response to a yes-or-no question.
-
-Using this symbol or its value is deprecated, since it is a very
-special case of message translation and is better handled by the
-message translation functions (@pxref{Message Translation}).
-
address@hidden NOSTR
-The return value is a locale-specific translation of the negative
-response to a yes-or-no question.  Use of this symbol or its value is
-deprecated in the same fashion as @code{YESSTR}. Instead, message
-translation should be used (@pxref{Message Translation}).
address@hidden vtable
-
-The file @file{langinfo.h} defines a many more symbols, but none of them
-are official.  Using them is not portable, and the format of the return
-values might change.  Therefore, we recommend you do not use them.
-
-The return value for any valid argument can be used for
address@hidden in all situations (with the possible exception of the
-a.m. and p.m. time-formatting codes).  If the user has not selected
-any locale for the appropriate category, @code{nl_langinfo} returns
-the information from the @code{"C"} locale.  It is therefore possible
-to use this function as shown in the example below.
-
-If the argument @var{item} is not valid, a pointer to an empty string is
-returned.
address@hidden deftypefun
-
-An example of @code{nl_langinfo} usage is a function that has to print a
-given date and time in a locale-specific way.  At first you might think
-that, since @code{strftime} internally uses the locale information,
-writing something like the following is enough:
-
address@hidden
-size_t
-i18n_time_n_data (char *s, size_t len, const struct tm *tp)
address@hidden
-  return strftime (s, len, "%X %D", tp);
address@hidden
address@hidden smallexample
-
-The format contains no weekday or month names and therefore is
-internationally usable.  This is incorrect.  The output produced is something 
like
address@hidden"hh:mm:ss MM/DD/YY"}.  This format is only recognizable in the
-United States.  Other countries use different formats.  Therefore, the function
-should be rewritten like this:
-
address@hidden
-size_t
-i18n_time_n_data (char *s, size_t len, const struct tm *tp)
address@hidden
-  return strftime (s, len, nl_langinfo (D_T_FMT), tp);
address@hidden
address@hidden smallexample
-
-Now it uses the date and time format of the locale selected when the
-program runs.  If the user selects the locale correctly, there should
-never be a misunderstanding over the time and date format.
-
address@hidden Formatting Numbers, Yes-or-No Questions, Locale Information, 
Locales
address@hidden A Dedicated Function to Format Numbers
-
-We have seen that the structure returned by @code{localeconv} as well as
-the values given to @code{nl_langinfo} allow you to retrieve the various
-pieces of locale-specific information to format numbers and monetary
-amounts.  We have also seen that the underlying rules are quite complex.
-
-Therefore, the X/Open standards introduce a function that uses such
-locale information, making it easier for the user to format numbers
-according to these rules.
-
address@hidden ssize_t strfmon (char address@hidden, size_t @var{maxsize}, 
const char address@hidden, @dots{})
-The @code{strfmon} function is similar to the @code{strftime} function
-in that it takes a buffer, its size, a format string and values to write
-into the buffer as text in a form specified by the format string.  Like
address@hidden, the function also returns the number of bytes written
-into the buffer.
-
-There are two differences: @code{strfmon} can take more than one
-argument, and the format specification is different.  Like
address@hidden, the format string consists of normal text, which is
-output as is, and format specifiers, which are indicated by a @samp{%}.
-Immediately after the @samp{%}, you can optionally specify various flags
-and formatting information before the main formatting character, in a
-similar way to @code{printf}:
-
address@hidden @bullet
address@hidden
-Immediately following the @samp{%} there can be one or more of the
-following flags:
address@hidden @asis
address@hidden @address@hidden
-The single-byte character @var{f} is used for this field as the numeric
-fill character.  By default, this character is a space character.
-Filling with this character is only performed if a left precision is
-specified.  It is not just to fill to the given field width.
address@hidden @samp{^}
-The number is printed without grouping the digits according to the rules
-of the current locale.  By default, grouping is enabled.
address@hidden @samp{+}, @samp{(}
-At most one of these flags can be used.  They select which format to
-represent the sign of a currency amount.  By default, and if
address@hidden is given, the locale equivalent of @math{+}/@math{-} is used.  If
address@hidden(} is given, negative amounts are enclosed in parentheses.  The
-exact format is determined by the values of the @code{LC_MONETARY}
-category of the locale selected at program run time.
address@hidden @samp{!}
-The output will not contain the currency symbol.
address@hidden @samp{-}
-The output will be formatted left-justified instead of right-justified if
-it does not fill the entire field width.
address@hidden table
address@hidden itemize
-
-The next part of a specification is an optional field width.  If no
-width is specified, @math{0} is taken.  During output, the function first
-determines how much space is required.  If it requires at least as many
-characters as given by the field width, it is output using as much space
-as necessary.  Otherwise, it is extended to use the full width by
-filling with the space character.  The presence or absence of the
address@hidden flag determines the side at which such padding occurs.  If
-present, the spaces are added at the right, making the output
-left-justified, and vice versa.
-
-So far the format looks familiar, being similar to the @code{printf} and
address@hidden formats.  However, the next two optional fields
-introduce something new.  The first one is a @samp{#} character followed
-by a decimal digit string.  The value of the digit string specifies the
-number of @emph{digit} positions to the left of the decimal point (or
-equivalent).  This does @emph{not} include the grouping character when
-the @samp{^} flag is not given.  If the space needed to print the number
-does not fill the whole width, the field is padded at the left side with
-the fill character, which can be selected using the @samp{=} flag and by
-default is a space.  For example, if the field width is selected as 6
-and the number is @math{123}, the fill character is @samp{*}, and the
-result will be @samp{***123}.
-
-The second optional field starts with a @samp{.} (period) and consists
-of another decimal digit string.  Its value describes the number of
-characters printed after the decimal point.  The default is selected
-from the current locale (@code{frac_digits}, @code{int_frac_digits};
address@hidden Numeric}).  If the exact representation needs more digits
-than given by the field width, the displayed value is rounded.  If the
-number of fractional digits is selected to be zero, no decimal point is
-printed.
-
-As a @sc{gnu} extension, the @code{strfmon} implementation in the @sc{gnu} libc
-allows an optional @samp{L} next as a format modifier.  If this modifier
-is given, the argument is expected to be a @code{long double} instead of
-a @code{double} value.
-
-Finally, the last component is a format specifier.  There are three
-specifiers defined:
-
address@hidden @asis
address@hidden @samp{i}
-Use the locale's rules for formatting an international currency value.
address@hidden @samp{n}
-Use the locale's rules for formatting a national currency value.
address@hidden @samp{%}
-Place a @samp{%} in the output.  There must be no flag, width specifier
-or modifier given; only @samp{%%} is allowed.
address@hidden table
-
-As for @code{printf}, the function reads the format string
-from left to right and uses the values passed to the function following
-the format string.  The values are expected to be either of type
address@hidden or @code{long double}, depending on the presence of the
-modifier @samp{L}.  The result is stored in the buffer pointed to by
address@hidden  At most @var{maxsize} characters are stored.
-
-The return value of the function is the number of characters stored in
address@hidden, including the terminating @code{NULL} byte.  If the number of
-characters stored would exceed @var{maxsize}, the function returns
address@hidden and the content of the buffer @var{s} is unspecified.  In this
-case @code{errno} is set to @code{E2BIG}.
address@hidden deftypefun
-
-A few examples should make clear how the function works.  It is assumed
-that all the following pieces of code are executed in a program that
-uses the US locale (@code{en_US}).  The simplest form of the format is
-this:
-
address@hidden
-strfmon (buf, 100, "@@%n@@%n@@%n@@", 123.45, -567.89, 12345.678);
address@hidden smallexample
-
address@hidden
-The output produced is
address@hidden
-"@@$123.45@@-$567.89@@$12,345.68@@"
address@hidden smallexample
-
-We can notice several things here.  First, the widths of the output
-numbers are different, since we have not specified a width in the format
-string.  Second, the third number is printed using thousands separators.
-The thousands separator for the @code{en_US} locale is a comma.  The
-number is also rounded.  The number @math{.678} is rounded to @math{.68}
-since the format does not specify a precision and the default value in
-the locale is @math{2}.  Finally, note that the national currency symbol
-is printed since @samp{%n} was used, not @samp{i}.  The next example
-shows how we can align the output:
-
address@hidden
-strfmon (buf, 100, "@@%=*11n@@%=*11n@@%=*11n@@", 123.45, -567.89, 12345.678);
address@hidden smallexample
-
address@hidden
-The output this time is
-
address@hidden
-"@@    $123.45@@   -$567.89@@ $12,345.68@@"
address@hidden smallexample
-
-Two things stand out.  First, all fields have the same width (eleven
-characters) since this is the width given in the format, and since no
-number required more characters to be printed.  The second important
-point is that the fill character is not used.  This is correct since the
-white space was not used to achieve a precision given by a @samp{#}
-modifier, but instead to fill to the given width.  The difference
-becomes obvious if we now add a width specification:
-
address@hidden
-strfmon (buf, 100, "@@%=*11#5n@@%=*11#5n@@%=*11#5n@@",
-         123.45, -567.89, 12345.678);
address@hidden smallexample
-
address@hidden
-The output is
-
address@hidden
-"@@ $***123.45@@-$***567.89@@ $12,456.68@@"
address@hidden smallexample
-
-Here we can see that all the currency symbols are now aligned, and that
-the space between the currency sign and the number is filled with the
-selected fill character.  Although the width is selected to be @math{5}
-and @math{123.45} has 3 digits left of the decimal point, the space is
-filled with 3 asterisks.  This is correct since, as explained above, the
-width does not include the positions used to store thousands separators.
-One last example should explain the remaining functionality:
-
address@hidden
-strfmon (buf, 100, "@@%=0(16#5.3i@@%=0(16#5.3i@@%=0(16#5.3i@@",
-         123.45, -567.89, 12345.678);
address@hidden smallexample
-
address@hidden
-This rather complex format string produces the following output:
-
address@hidden
-"@@ USD 000123,450 @@(USD 000567.890)@@ USD 12,345.678 @@"
address@hidden smallexample
-
-The most noticeable change is the alternative way of representing
-negative numbers.  In financial circles this is often done using
-parentheses, and this is what the @samp{(} flag selected.  The fill
-character is now @samp{0}.  This @samp{0} character is not regarded as a
-numeric zero, and therefore the first and second numbers are not printed
-using a thousands separator.  Since we used the format specifier
address@hidden instead of @samp{n}, the international form of the currency
-symbol is used.  This is a four-letter string, in this case @code{"USD
-"}.  The last point is that since the precision right of the decimal
-point is selected to be three, the first and second numbers are printed
-with an extra zero at the end and the third number is printed without
-rounding.
-
address@hidden Yes-or-No Questions,  , Formatting Numbers , Locales
address@hidden Yes-or-No Questions
-
-Some address@hidden programs ask a yes-or-no question.  If the messages
-(especially the questions) are translated into foreign languages, be
-sure that you localize the answers too.  It would be very bad habit to
-ask a question in one language and request the answer in another, often
-English.
-
-The @sc{gnu} C Library contains @code{rpmatch} to give applications easy
-access to the corresponding locale definitions.
-
address@hidden GNU
address@hidden stdlib.h
address@hidden int rpmatch (const char address@hidden)
-The function @code{rpmatch} checks the string in @var{response} to see
-whether it is a correct yes-or-no answer and if yes, which one.  The
-check uses the @code{YESEXPR} and @code{NOEXPR} data in the
address@hidden category of the currently selected locale.  The
-return value is as follows:
-
address@hidden @code
address@hidden 1
-The user entered an affirmative answer.
-
address@hidden 0
-The user entered a negative answer.
-
address@hidden -1
-The answer matched neither the @code{YESEXPR} nor the @code{NOEXPR}
-regular expression.
address@hidden table
-
-This function is not standardized, but is available in @sc{gnu} libc and
-at least also in the @sc{ibm} @sc{aix} library.
address@hidden deftypefun
-
address@hidden
-This function would normally be used like this:
-
address@hidden
-  @dots{}
-  /* @r{Use a safe default.}  */
-  _Bool doit = false;
-
-  fputs (gettext ("Do you really want to do this? "), stdout);
-  fflush (stdout);
-  /* @r{Prepare the @code{getline} call.}  */
-  line = NULL;
-  len = 0;
-  while (getline (&line, &len, stdout) >= 0)
-    @{
-      /* @r{Check the response.}  */
-      int res = rpmatch (line);
-      if (res >= 0)
-        @{
-          /* @r{We got a definitive answer.}  */
-          if (res > 0)
-            doit = true;
-          break;
-        @}
-    @}
-  /* @r{Free what @code{getline} allocated.}  */
-  free (line);
address@hidden smallexample
-
-Note that the loop continues until a read error is detected or until a
-definitive (positive or negative) answer is read.
-
address@hidden We need some definitions here.
address@hidden mult
address@hidden
address@hidden mult &middot;
address@hidden infty &infin;
address@hidden pie &pi;
address@hidden ifhtml
address@hidden
address@hidden mult @cdot
address@hidden infty @infty
address@hidden iftex
address@hidden mult
address@hidden mult *
address@hidden infty oo
address@hidden pie pi
address@hidden ifclear
address@hidden mul
address@hidden
address@hidden macro
address@hidden infinity
address@hidden
address@hidden macro
address@hidden
address@hidden pi
address@hidden
address@hidden macro
address@hidden ifnottex
address@hidden ifclear
-
address@hidden Mathematics
address@hidden %MENU% Math functions, useful constants, random numbers
address@hidden Mathematics
-
-This chapter contains information about functions for performing
-mathematical computations, such as trigonometric functions.  Most of
-these functions have prototypes declared in the header file
address@hidden  The complex-valued functions are defined in
address@hidden
address@hidden math.h
address@hidden complex.h
-
-All mathematical functions that take a floating-point argument have
-three variants, one each for @code{double}, @code{float} and @code{long
-double} arguments.  The @code{double} versions are mostly defined in
address@hidden@sc{iso} C89}.  The @code{float} and @code{long double} versions 
are
-from the numeric extensions to C included in @address@hidden C99}.
-
-Which of the three versions of a function should be used depends on the
-situation.  For most calculations, the @code{float} functions are the
-fastest.  On the other hand, the @code{long double} functions have the
-highest precision.  @code{double} is somewhere in between.  It is
-usually wise to pick the narrowest type that can accommodate your data.
-Not all machines have a distinct @code{long double} type; it may be the
-same as @code{double}.
-
address@hidden Mathematical Constants
address@hidden Predefined Mathematical Constants
address@hidden constants
address@hidden mathematical constants
-
-The header @file{math.h} defines several useful mathematical constants.
-All values are defined as preprocessor macros starting with @code{M_}.
-The values provided are
-
address@hidden @code
address@hidden M_E
-The base of natural logarithms
address@hidden M_LOG2E
-The logarithm to base @code{2} of @code{M_E}
address@hidden M_LOG10E
-The logarithm to base @code{10} of @code{M_E}
address@hidden M_LN2
-The natural logarithm of @code{2}
address@hidden M_LN10
-The natural logarithm of @code{10}
address@hidden M_PI
-Pi, the ratio of a circle's circumference to its diameter
address@hidden M_PI_2
-Pi divided by two
address@hidden M_PI_4
-Pi divided by four
address@hidden M_1_PI
-The reciprocal of pi (1/pi)
address@hidden M_2_PI
-Two times the reciprocal of pi
address@hidden M_2_SQRTPI
-Two times the reciprocal of the square root of pi
address@hidden M_SQRT2
-The square root of two
address@hidden M_SQRT1_2
-The reciprocal of the square root of two (also the square root of 1/2)
address@hidden vtable
-
-These constants come from the Unix98 standard and were also available in
address@hidden; therefore they are only defined if @code{_BSD_SOURCE} or
address@hidden or a more general feature-select macro is
-defined.  The default set of features includes these constants
-(@pxref{Feature-Test Macros}).
-
-All values are of type @code{double}.  As an extension, the @sc{gnu} C
-library also defines these constants with type @code{long double}.  The
address@hidden double} macros have a lowercase @samp{l} appended to their
-names: @code{M_El}, @code{M_PIl}, and so forth.  These are only
-available if @code{_GNU_SOURCE} is defined.
-
address@hidden PI
-Some programs use a constant named @code{PI} that has the same value as
address@hidden  This constant is not standard; it may have appeared in
-some old AT&T headers, and is mentioned in Stroustrup's book on C++.  It
-infringes on the user's name space, so the @sc{gnu} C Library does not
-define it.  Fixing programs written to expect it is simple; replace
address@hidden with @code{M_PI} throughout, or put @samp{-DPI=M_PI} on the
-compiler command line.
-
address@hidden Trig Functions
address@hidden Trigonometric Functions
address@hidden trigonometric functions
-
-These are the familiar @code{sin}, @code{cos} and @code{tan} functions.
-The arguments to all of these functions are in units of radians; recall
-that pi radians equals 180 degrees.
-
address@hidden pi (trigonometric constant)
-The math library normally defines @code{M_PI} to a @code{double}
-approximation of pi.  If strict @sc{iso} and/or @sc{posix} compliance
-are requested, this constant is not defined, but you can easily define
-it yourself:
-
address@hidden
-#define M_PI 3.14159265358979323846264338327
address@hidden smallexample
-
address@hidden
-You can also compute the value of pi with the expression @code{acos
-(-1.0)}.
-
address@hidden math.h
address@hidden ISO
address@hidden double sin (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float sinf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} sinl (long double @var{x})
-These functions return the sine of @var{x}, where @var{x} is given in
-radians.  The return value is in the range @code{-1} to @code{1}.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double cos (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float cosf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} cosl (long double @var{x})
-These functions return the cosine of @var{x}, where @var{x} is given in
-radians.  The return value is in the range @code{-1} to @code{1}.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double tan (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float tanf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} tanl (long double @var{x})
-These functions return the tangent of @var{x}, where @var{x} is given in
-radians.
-
-Mathematically, the tangent function has singularities at odd multiples
-of pi/2.  If the argument @var{x} is too close to one of these
-singularities, @code{tan} will signal overflow.
address@hidden deftypefun
-
-In many applications where @code{sin} and @code{cos} are used, the sine
-and cosine of the same angle are needed at the same time.  It is more
-efficient to compute them simultaneously, so the library provides a
-function to do that.
-
address@hidden math.h
address@hidden GNU
address@hidden void sincos (double @var{x}, double address@hidden, double 
address@hidden)
address@hidden math.h
address@hidden GNU
address@hidden void sincosf (float @var{x}, float address@hidden, float 
address@hidden)
address@hidden math.h
address@hidden GNU
address@hidden void sincosl (long double @var{x}, long double address@hidden, 
long double address@hidden)
-These functions return the sine of @var{x} in @address@hidden and the
-cosine of @var{x} in @address@hidden, where @var{x} is given in
-radians.  Both values, @address@hidden and @address@hidden, are in
-the range of @code{-1} to @code{1}.
-
-This function is a @sc{gnu} extension.  Portable programs should be prepared
-to cope with its absence.
address@hidden deftypefun
-
address@hidden complex trigonometric functions
-
address@hidden@sc{iso} C99} defines variants of the trig functions that work on
-complex numbers.  The @sc{gnu} C Library provides these functions, but
-they are only useful if your compiler supports the new complex types
-defined by the standard.
address@hidden XXX Change this when gcc is fixed. -zw
-(As of this writing, @sc{gcc} supports complex numbers, but there are
-bugs in the implementation.)
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} csin (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} csinf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} csinl (complex long double @var{z})
-These functions return the complex sine of @var{z}.
-The mathematical definition of the complex sine is
-
address@hidden
address@hidden (z) = 1/(2*i) * (exp (z*i) - exp (-z*i))}.
address@hidden ifnottex
address@hidden
-$$\sin(z) = {1\over 2i} (e^{zi} - e^{-zi})$$
address@hidden tex
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} ccos (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} ccosf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} ccosl (complex long double @var{z})
-These functions return the complex cosine of @var{z}.
-The mathematical definition of the complex cosine is
-
address@hidden
address@hidden (z) = 1/2 * (exp (z*i) + exp (-z*i))}
address@hidden ifnottex
address@hidden
-$$\cos(z) = {1\over 2} (e^{zi} + e^{-zi})$$
address@hidden tex
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} ctan (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} ctanf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} ctanl (complex long double @var{z})
-These functions return the complex tangent of @var{z}.
-The mathematical definition of the complex tangent is
-
address@hidden
address@hidden (z) = -i * (exp (z*i) - exp (-z*i)) / (exp (z*i) + exp (-z*i))}
address@hidden ifnottex
address@hidden
-$$\tan(z) = -i \cdot {e^{zi} - e^{-zi}\over e^{zi} + e^{-zi}}$$
address@hidden tex
-
address@hidden
-The complex tangent has poles at @math{pi/2 + 2n}, where @math{n} is an
-integer.  @code{ctan} may signal overflow if @var{z} is too close to a
-pole.
address@hidden deftypefun
-
-
address@hidden Inverse Trig Functions
address@hidden Inverse Trigonometric Functions
address@hidden inverse trigonometric functions
-
-These are the usual arc sine, arc cosine and arc tangent functions,
-which are the inverses of the sine, cosine and tangent functions
-respectively.
-
address@hidden math.h
address@hidden ISO
address@hidden double asin (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float asinf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} asinl (long double @var{x})
-These functions compute the arc sine of @var{x}---that is, the value whose
-sine is @var{x}.  The value is in units of radians.  Mathematically,
-there are infinitely many such values; the one actually returned is the
-one between @code{-pi/2} and @code{pi/2} (inclusive).
-
-The arc sine function is defined mathematically only
-over the domain @code{-1} to @code{1}.  If @var{x} is outside the
-domain, @code{asin} signals a domain error.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double acos (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float acosf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} acosl (long double @var{x})
-These functions compute the arc cosine of @var{x}---the value whose
-cosine is @var{x}.  The value is in units of radians.  Mathematically,
-there are infinitely many such values; the one actually returned is the
-one between @code{0} and @code{pi} (inclusive).
-
-The arc cosine function is defined mathematically only
-over the domain @code{-1} to @code{1}.  If @var{x} is outside the
-domain, @code{acos} signals a domain error.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double atan (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float atanf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} atanl (long double @var{x})
-These functions compute the arc tangent of @var{x}---the value whose
-tangent is @var{x}.  The value is in units of radians.  Mathematically,
-there are infinitely many such values; the one actually returned is the
-one between @code{-pi/2} and @code{pi/2} (inclusive).
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double atan2 (double @var{y}, double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float atan2f (float @var{y}, float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} atan2l (long double @var{y}, long double @var{x})
-This function computes the arc tangent of @var{y}/@var{x}, but the signs
-of both arguments are used to determine the quadrant of the result, and
address@hidden is permitted to be zero.  The return value is given in radians
-and is in the range @code{-pi} to @code{pi}, inclusive.
-
-If @var{x} and @var{y} are coordinates of a point in the plane,
address@hidden returns the signed angle between the line from the origin
-to that point and the x-axis.  Thus, @code{atan2} is useful for
-converting Cartesian coordinates to polar coordinates.  To compute the
-radial coordinate, use @code{hypot} (@pxref{Exponents and Logarithms}).
-
address@hidden This is experimentally true.  Should it be so? -zw
-If both @var{x} and @var{y} are zero, @code{atan2} returns zero.
address@hidden deftypefun
-
address@hidden inverse complex trigonometric functions
address@hidden@sc{iso} C99} defines complex versions of the inverse trig 
functions.
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} casin (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} casinf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} casinl (complex long double @var{z})
-These functions compute the complex arc sine of @var{z}---the value
-whose sine is @var{z}.  The value returned is in radians.
-
-Unlike the real-valued functions, @code{casin} is defined for all
-values of @var{z}.
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} cacos (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} cacosf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} cacosl (complex long double @var{z})
-These functions compute the complex arc cosine of @var{z}---the value
-whose cosine is @var{z}.  The value returned is in radians.
-
-Unlike the real-valued functions, @code{cacos} is defined for all
-values of @var{z}.
address@hidden deftypefun
-
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} catan (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} catanf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} catanl (complex long double @var{z})
-These functions compute the complex arc tangent of @var{z}---the value
-whose tangent is @var{z}.  The value is in units of radians.
address@hidden deftypefun
-
-
address@hidden Exponents and Logarithms
address@hidden Exponentiation and Logarithms
address@hidden exponentiation functions
address@hidden power functions
address@hidden logarithm functions
-
address@hidden math.h
address@hidden ISO
address@hidden double exp (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float expf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} expl (long double @var{x})
-These functions compute @code{e} (the base of natural logarithms) raised
-to the power @var{x}.
-
-If the magnitude of the result is too large to be representable,
address@hidden signals overflow.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double exp2 (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float exp2f (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} exp2l (long double @var{x})
-These functions compute @code{2} raised to the power @var{x}.
-Mathematically, @code{exp2 (x)} is the same as @code{exp (x * log (2))}.
address@hidden deftypefun
-
address@hidden math.h
address@hidden GNU
address@hidden double exp10 (double @var{x})
address@hidden math.h
address@hidden GNU
address@hidden float exp10f (float @var{x})
address@hidden math.h
address@hidden GNU
address@hidden {long double} exp10l (long double @var{x})
address@hidden math.h
address@hidden GNU
address@hidden double pow10 (double @var{x})
address@hidden math.h
address@hidden GNU
address@hidden float pow10f (float @var{x})
address@hidden math.h
address@hidden GNU
address@hidden {long double} pow10l (long double @var{x})
-These functions compute @code{10} raised to the power @var{x}.
-Mathematically, @code{exp10 (x)} is the same as @code{exp (x * log (10))}.
-
-These functions are @sc{gnu} extensions.  The name @code{exp10} is
-preferred, since it is analogous to @code{exp} and @code{exp2}.
address@hidden deftypefun
-
-
address@hidden math.h
address@hidden ISO
address@hidden double log (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float logf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} logl (long double @var{x})
-These functions compute the natural logarithm of @var{x}.  @code{exp (log
-(@var{x}))} equals @var{x}, exactly in mathematics and approximately in
-C.
-
-If @var{x} is negative, @code{log} signals a domain error.  If @var{x}
-is zero, it returns negative infinity; if @var{x} is too close to zero,
-it may signal overflow.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double log10 (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float log10f (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} log10l (long double @var{x})
-These functions return the base-10 logarithm of @var{x}.
address@hidden (@var{x})} equals @code{log (@var{x}) / log (10)}.
-
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double log2 (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float log2f (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} log2l (long double @var{x})
-These functions return the base-2 logarithm of @var{x}.
address@hidden (@var{x})} equals @code{log (@var{x}) / log (2)}.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double logb (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float logbf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} logbl (long double @var{x})
-These functions extract the exponent of @var{x} and return it as a
-floating-point value.  If @code{FLT_RADIX} is two, @code{logb} is equal
-to @code{floor (log2 (x))}, except it's probably faster.
-
-If @var{x} is de-normalized, @code{logb} returns the exponent @var{x}
-would have if it were normalized.  If @var{x} is infinity (positive or
-negative), @code{logb} returns @address@hidden  If @var{x} is zero,
address@hidden returns @address@hidden  It does not signal.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden int ilogb (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden int ilogbf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden int ilogbl (long double @var{x})
-These functions are equivalent to the corresponding @code{logb}
-functions, except that they return signed integer values.
address@hidden deftypefun
-
address@hidden
-Since integers cannot represent infinity and NaN, @code{ilogb} instead
-returns an integer that can't be the exponent of a normal floating-point
-number.  @file{math.h} defines constants so you can check for this.
-
address@hidden math.h
address@hidden ISO
address@hidden Macro int FP_ILOGB0
address@hidden returns this value if its argument is @code{0}.  The
-numeric value is either @code{INT_MIN} or @code{-INT_MAX}.
-
-This macro is defined in @address@hidden C99}.
address@hidden deftypevr
-
address@hidden math.h
address@hidden ISO
address@hidden Macro int FP_ILOGBNAN
address@hidden returns this value if its argument is @code{NaN}.  The
-numeric value is either @code{INT_MIN} or @code{INT_MAX}.
-
-This macro is defined in @address@hidden C99}.
address@hidden deftypevr
-
-These values are system specific.  They might even be the same.  The
-proper way to test the result of @code{ilogb} is as follows:
-
address@hidden
-i = ilogb (f);
-if (i == FP_ILOGB0 || i == FP_ILOGBNAN)
-  @{
-    if (isnan (f))
-      @{
-        /* @r{Handle NaN.}  */
-      @}
-    else if (f  == 0.0)
-      @{
-        /* @r{Handle 0.0.}  */
-      @}
-    else
-      @{
-        /* @r{Some other value with large exponent,}
-           @r{perhaps +Inf.}  */
-      @}
-  @}
address@hidden smallexample
-
address@hidden math.h
address@hidden ISO
address@hidden double pow (double @var{base}, double @var{power})
address@hidden math.h
address@hidden ISO
address@hidden float powf (float @var{base}, float @var{power})
address@hidden math.h
address@hidden ISO
address@hidden {long double} powl (long double @var{base}, long double 
@var{power})
-These are general exponentiation functions, returning @var{base} raised
-to @var{power}.
-
-Mathematically, @code{pow} would return a complex number when @var{base}
-is negative and @var{power} is not an integral value.  @code{pow} can't
-do that, so instead it signals a domain error. @code{pow} may also
-underflow or overflow the destination type.
address@hidden deftypefun
-
address@hidden square root function
address@hidden math.h
address@hidden ISO
address@hidden double sqrt (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float sqrtf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} sqrtl (long double @var{x})
-These functions return the nonnegative square root of @var{x}.
-
-If @var{x} is negative, @code{sqrt} signals a domain error.
-Mathematically, it should return a complex number.
address@hidden deftypefun
-
address@hidden cube root function
address@hidden math.h
address@hidden BSD
address@hidden double cbrt (double @var{x})
address@hidden math.h
address@hidden BSD
address@hidden float cbrtf (float @var{x})
address@hidden math.h
address@hidden BSD
address@hidden {long double} cbrtl (long double @var{x})
-These functions return the cube root of @var{x}.  They cannot
-fail; every representable real value has a representable real cube root.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double hypot (double @var{x}, double @var{y})
address@hidden math.h
address@hidden ISO
address@hidden float hypotf (float @var{x}, float @var{y})
address@hidden math.h
address@hidden ISO
address@hidden {long double} hypotl (long double @var{x}, long double @var{y})
-These functions return @code{sqrt (@address@hidden + @address@hidden)}.
-This is the length of the hypotenuse of a right triangle with sides of
-length @var{x} and @var{y}, or the distance of the point (@var{x},
address@hidden) from the origin.  Using this function instead of the direct
-formula is wise, since the error is much smaller (see also the function
address@hidden in @ref{Absolute Value}).
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double expm1 (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float expm1f (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} expm1l (long double @var{x})
-These functions return a value equivalent to @code{exp (@var{x}) - 1}.
-They are computed in a way that is accurate even if @var{x} is
-near zero---a case where @code{exp (@var{x}) - 1} would be inaccurate owing
-to subtraction of two numbers that are nearly equal.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double log1p (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float log1pf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} log1pl (long double @var{x})
-These functions returns a value equivalent to @address@hidden (1 + @var{x})}}.
-They are computed in a way that is accurate even if @var{x} is
-near zero.
address@hidden deftypefun
-
address@hidden complex exponentiation functions
address@hidden complex logarithm functions
-
address@hidden@sc{iso} C99} defines complex variants of some of the 
exponentiation and
-logarithm functions.
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} cexp (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} cexpf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} cexpl (complex long double @var{z})
-These functions return @code{e} (the base of natural
-logarithms) raised to the power of @var{z}.
-Mathematically, this corresponds to the value:
-
address@hidden
address@hidden (z) = exp (creal (z)) * (cos (cimag (z)) + I * sin (cimag (z)))}
address@hidden ifnottex
address@hidden
-$$\exp(z) = e^z = e^{{\rm Re}\,z} (\cos ({\rm Im}\,z) + i \sin ({\rm Im}\,z))$$
address@hidden tex
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} clog (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} clogf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} clogl (complex long double @var{z})
-These functions return the natural logarithm of @var{z}.
-Mathematically, this corresponds to the value:
-
address@hidden
address@hidden (z) = log (cabs (z)) + I * carg (z)}
address@hidden ifnottex
address@hidden
-$$\log(z) = \log |z| + i \arg z$$
address@hidden tex
-
address@hidden
address@hidden has a pole at 0, and will signal overflow if @var{z} equals
-or is very close to 0.  It is well-defined for all other values of
address@hidden
address@hidden deftypefun
-
-
address@hidden complex.h
address@hidden GNU
address@hidden {complex double} clog10 (complex double @var{z})
address@hidden complex.h
address@hidden GNU
address@hidden {complex float} clog10f (complex float @var{z})
address@hidden complex.h
address@hidden GNU
address@hidden {complex long double} clog10l (complex long double @var{z})
-These functions return the base-10 logarithm of the complex value
address@hidden Mathematically, this corresponds to the value:
-
address@hidden
address@hidden (z) = log10 (cabs (z)) + I * carg (z)}
address@hidden ifnottex
address@hidden
-$$\log_{10}(z) = \log_{10}|z| + i \arg z$$
address@hidden tex
-
-These functions are @sc{gnu} extensions.
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} csqrt (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} csqrtf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} csqrtl (complex long double @var{z})
-These functions return the complex square root of the argument @var{z}.  Unlike
-the real-valued functions, they are defined for all values of @var{z}.
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} cpow (complex double @var{base}, complex double 
@var{power})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} cpowf (complex float @var{base}, complex float 
@var{power})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} cpowl (complex long double @var{base}, 
complex long double @var{power})
-These functions return @var{base} raised to the power of
address@hidden  This is equivalent to @address@hidden (y * clog (x))}}
address@hidden deftypefun
-
address@hidden Hyperbolic Functions
address@hidden Hyperbolic Functions
address@hidden hyperbolic functions
-
-The functions in this section are related to the exponential functions
-(@pxref{Exponents and Logarithms}).
-
address@hidden math.h
address@hidden ISO
address@hidden double sinh (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float sinhf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} sinhl (long double @var{x})
-These functions return the hyperbolic sine of @var{x}, defined
-mathematically as @address@hidden(exp (@var{x}) - exp (address@hidden)) / 2}}. 
 They
-may signal overflow if @var{x} is too large.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double cosh (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float coshf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} coshl (long double @var{x})
-These functions return the hyperbolic cosine of @var{x}, defined
-mathematically as @address@hidden(exp (@var{x}) + exp (address@hidden)) / 2}}. 
 They
-may signal overflow if @var{x} is too large.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double tanh (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float tanhf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} tanhl (long double @var{x})
-These functions return the hyperbolic tangent of @var{x},
-defined mathematically as @address@hidden (@var{x}) / cosh (@var{x})}}.
-They may signal overflow if @var{x} is too large.
address@hidden deftypefun
-
address@hidden hyperbolic functions
-
-There are counterparts for the hyperbolic functions that take complex
-arguments.
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} csinh (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} csinhf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} csinhl (complex long double @var{z})
-These functions return the complex hyperbolic sine of @var{z}, defined
-mathematically as @address@hidden(exp (@var{z}) - exp (address@hidden)) / 2}}.
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} ccosh (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} ccoshf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} ccoshl (complex long double @var{z})
-These functions return the complex hyperbolic cosine of @var{z}, defined
-mathematically as @address@hidden(exp (@var{z}) + exp (address@hidden)) / 2}}.
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} ctanh (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} ctanhf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} ctanhl (complex long double @var{z})
-These functions return the complex hyperbolic tangent of @var{z},
-defined mathematically as @address@hidden (@var{z}) / ccosh (@var{z})}}.
address@hidden deftypefun
-
-
address@hidden inverse hyperbolic functions
-
address@hidden math.h
address@hidden ISO
address@hidden double asinh (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float asinhf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} asinhl (long double @var{x})
-These functions return the inverse hyperbolic sine of @var{x}---the
-value whose hyperbolic sine is @var{x}.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double acosh (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float acoshf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} acoshl (long double @var{x})
-These functions return the inverse hyperbolic cosine of @var{x}---the
-value whose hyperbolic cosine is @var{x}.  If @var{x} is less than
address@hidden, @code{acosh} signals a domain error.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double atanh (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float atanhf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} atanhl (long double @var{x})
-These functions return the inverse hyperbolic tangent of @var{x}---the
-value whose hyperbolic tangent is @var{x}.  If the absolute value of
address@hidden is greater than @code{1}, @code{atanh} signals a domain error;
-if it is equal to 1, @code{atanh} returns infinity.
address@hidden deftypefun
-
address@hidden inverse complex hyperbolic functions
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} casinh (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} casinhf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} casinhl (complex long double @var{z})
-These functions return the inverse complex hyperbolic sine of
address@hidden value whose complex hyperbolic sine is @var{z}.
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} cacosh (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} cacoshf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} cacoshl (complex long double @var{z})
-These functions return the inverse complex hyperbolic cosine of
address@hidden value whose complex hyperbolic cosine is @var{z}.  Unlike
-the real-valued functions, there are no restrictions on the value of @var{z}.
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} catanh (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} catanhf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} catanhl (complex long double @var{z})
-These functions return the inverse complex hyperbolic tangent of
address@hidden value whose complex hyperbolic tangent is @var{z}.  Unlike
-the real-valued functions, there are no restrictions on the value of
address@hidden
address@hidden deftypefun
-
address@hidden Special Functions
address@hidden Special Functions
address@hidden special functions
address@hidden Bessel functions
address@hidden gamma function
-
-These are some more exotic mathematical functions that are sometimes
-useful.  Currently they only have real-valued versions.
-
address@hidden math.h
address@hidden SVID
address@hidden double erf (double @var{x})
address@hidden math.h
address@hidden SVID
address@hidden float erff (float @var{x})
address@hidden math.h
address@hidden SVID
address@hidden {long double} erfl (long double @var{x})
address@hidden returns the error function of @var{x}.  The error
-function is defined as:
address@hidden
-$$\hbox{erf}(x) = {2\over\sqrt{\pi}}\cdot\int_0^x e^{-t^2} \hbox{d}t$$
address@hidden tex
address@hidden
address@hidden
-erf (x) = 2/sqrt(pi) * integral from 0 to x of exp(-t^2) dt
address@hidden smallexample
address@hidden ifnottex
address@hidden deftypefun
-
address@hidden math.h
address@hidden SVID
address@hidden double erfc (double @var{x})
address@hidden math.h
address@hidden SVID
address@hidden float erfcf (float @var{x})
address@hidden math.h
address@hidden SVID
address@hidden {long double} erfcl (long double @var{x})
address@hidden returns @code{1.0 - erf(@var{x})}, but computed in a
-fashion that avoids round-off error when @var{x} is large.
address@hidden deftypefun
-
address@hidden math.h
address@hidden SVID
address@hidden double lgamma (double @var{x})
address@hidden math.h
address@hidden SVID
address@hidden float lgammaf (float @var{x})
address@hidden math.h
address@hidden SVID
address@hidden {long double} lgammal (long double @var{x})
address@hidden returns the natural logarithm of the absolute value of
-the gamma function of @var{x}.  The gamma function is defined as
address@hidden
-$$\hbox{lgamma}(x) = \int_0^\infty t^{x-1} e^{-t} \hbox{d}t$$
address@hidden tex
address@hidden
address@hidden
-gamma (x) = integral from 0 to @infinity{} of t^(x-1) e^-t dt
address@hidden smallexample
address@hidden ifnottex
-
address@hidden signgam
-The sign of the gamma function is stored in the global variable
address@hidden, which is declared in @file{math.h}.  It is @code{1} if
-the intermediate result was positive or zero, or @code{-1} if it was
-negative.
-
-To compute the real gamma function, you can use the @code{tgamma}
-function or you can compute the values as follows:
address@hidden
-lgam = lgamma(x);
-gam  = signgam*exp(lgam);
address@hidden smallexample
-
-The gamma function has singularities at the nonpositive integers.
address@hidden will raise the zero divide exception if evaluated at a
-singularity.
address@hidden deftypefun
-
address@hidden math.h
address@hidden XPG
address@hidden double lgamma_r (double @var{x}, int address@hidden)
address@hidden math.h
address@hidden XPG
address@hidden float lgammaf_r (float @var{x}, int address@hidden)
address@hidden math.h
address@hidden XPG
address@hidden {long double} lgammal_r (long double @var{x}, int address@hidden)
address@hidden is just like @code{lgamma}, but it stores the sign of
-the intermediate result in the variable pointed to by @var{signp}
-instead of in the @var{signgam} global.  This means it is reentrant.
address@hidden deftypefun
-
address@hidden math.h
address@hidden SVID
address@hidden double gamma (double @var{x})
address@hidden math.h
address@hidden SVID
address@hidden float gammaf (float @var{x})
address@hidden math.h
address@hidden SVID
address@hidden {long double} gammal (long double @var{x})
-These functions exist for compatibility reasons.  They are equivalent
-to @code{lgamma}, @code{lgammaf} and @code{lgammal}.  It is better to
-use @code{lgamma} for two reasons.  The name better reflects the
-actual computation, and @code{lgamma} is standardized in @address@hidden
-C99} while @code{gamma} is not.
address@hidden deftypefun
-
address@hidden math.h
address@hidden XPG, ISO
address@hidden double tgamma (double @var{x})
address@hidden math.h
address@hidden XPG, ISO
address@hidden float tgammaf (float @var{x})
address@hidden math.h
address@hidden XPG, ISO
address@hidden {long double} tgammal (long double @var{x})
address@hidden applies the gamma function to @var{x}.  The gamma
-function is defined as:
address@hidden
-$$\hbox{tgamma}(x) = \int_0^\infty t^{x-1} e^{-t} \hbox{d}t$$
address@hidden tex
address@hidden
address@hidden
-gamma (x) = integral from 0 to @infinity{} of t^(x-1) e^-t dt
address@hidden smallexample
address@hidden ifnottex
-
-This function was introduced in @address@hidden C99}.
address@hidden deftypefun
-
address@hidden math.h
address@hidden SVID
address@hidden double j0 (double @var{x})
address@hidden math.h
address@hidden SVID
address@hidden float j0f (float @var{x})
address@hidden math.h
address@hidden SVID
address@hidden {long double} j0l (long double @var{x})
address@hidden returns the Bessel function of the first kind of order 0 of
address@hidden  It may signal underflow if @var{x} is too large.
address@hidden deftypefun
-
address@hidden math.h
address@hidden SVID
address@hidden double j1 (double @var{x})
address@hidden math.h
address@hidden SVID
address@hidden float j1f (float @var{x})
address@hidden math.h
address@hidden SVID
address@hidden {long double} j1l (long double @var{x})
address@hidden returns the Bessel function of the first kind of order 1 of
address@hidden  It may signal underflow if @var{x} is too large.
address@hidden deftypefun
-
address@hidden math.h
address@hidden SVID
address@hidden double jn (int n, double @var{x})
address@hidden math.h
address@hidden SVID
address@hidden float jnf (int n, float @var{x})
address@hidden math.h
address@hidden SVID
address@hidden {long double} jnl (int n, long double @var{x})
address@hidden returns the Bessel function of the first kind of order
address@hidden of @var{x}.  It may signal underflow if @var{x} is too large.
address@hidden deftypefun
-
address@hidden math.h
address@hidden SVID
address@hidden double y0 (double @var{x})
address@hidden math.h
address@hidden SVID
address@hidden float y0f (float @var{x})
address@hidden math.h
address@hidden SVID
address@hidden {long double} y0l (long double @var{x})
address@hidden returns the Bessel function of the second kind of order 0 of
address@hidden  It may signal underflow if @var{x} is too large.  If @var{x}
-is negative, @code{y0} signals a domain error; if it is zero,
address@hidden signals overflow and returns @address@hidden
address@hidden deftypefun
-
address@hidden math.h
address@hidden SVID
address@hidden double y1 (double @var{x})
address@hidden math.h
address@hidden SVID
address@hidden float y1f (float @var{x})
address@hidden math.h
address@hidden SVID
address@hidden {long double} y1l (long double @var{x})
address@hidden returns the Bessel function of the second kind of order 1 of
address@hidden  It may signal underflow if @var{x} is too large.  If @var{x}
-is negative, @code{y1} signals a domain error; if it is zero,
address@hidden signals overflow and returns @address@hidden
address@hidden deftypefun
-
address@hidden math.h
address@hidden SVID
address@hidden double yn (int n, double @var{x})
address@hidden math.h
address@hidden SVID
address@hidden float ynf (int n, float @var{x})
address@hidden math.h
address@hidden SVID
address@hidden {long double} ynl (int n, long double @var{x})
address@hidden returns the Bessel function of the second kind of order @var{n} 
of
address@hidden  It may signal underflow if @var{x} is too large.  If @var{x}
-is negative, @code{yn} signals a domain error; if it is zero,
address@hidden signals overflow and returns @address@hidden
address@hidden deftypefun
-
address@hidden Errors in Math Functions
address@hidden Known Maximum Errors in Math Functions
address@hidden math errors
address@hidden ulps
-
-This section lists the known errors of the functions in the math
-library.  Errors are measured in ``units of the last place''.  This is a
-measure for the relative error.  For a number @math{z} with the
-representation @address@hidden@mul{}2^e} (we assume @sc{ieee}
-floating-point numbers with base 2), the ULP is represented by:
-
address@hidden
-$${|d.d\dots d - (z/2^e)|}\over {2^{p-1}}$$
address@hidden tex
address@hidden
address@hidden
-|d.d...d - (z / 2^e)| / 2^(p - 1)
address@hidden smallexample
address@hidden ifnottex
-
address@hidden
-where @math{p} is the number of bits in the mantissa of the
-floating-point number representation.  Ideally the error for all
-functions is always less than 0.5ulps.  Using rounding bits, this is
-also possible and normally implemented for the basic operations.  To
-achieve the same for the complex math functions requires a lot more work
-and this has not yet been done.
-
-Therefore many of the functions in the math library have errors.  The
-table lists the maximum error for each function that is exposed by one
-of the existing tests in the test suite.  The table tries to cover as
-much as possible and list the actual maximum error (or at least a
-ballpark figure) but this is often not achieved due to the large search
-space.
-
-The table lists the ULP values for different architectures.  Different
-architectures have different results since their hardware support for
-floating-point operations varies and also the existing hardware support
-is different.
-
address@hidden
address@hidden This multitable does not fit on a single page
address@hidden {nexttowardf}  {1 + i 24} {1 + i 1.1031} {Sparc 32-bit} {Sparc 
64-bit} {powerpc/nofpu}
address@hidden @dfn{Function}  @tab @dfn{Alpha} @tab @dfn{ARM} @tab 
@dfn{Generic} @tab @dfn{hppa/fpu} @tab @dfn{ix86}
address@hidden acosf  @tab - @tab - @tab - @tab - @tab -
address@hidden acos  @tab - @tab - @tab - @tab - @tab -
address@hidden acosl  @tab - @tab - @tab - @tab - @tab 622
address@hidden acoshf  @tab - @tab - @tab - @tab - @tab -
address@hidden acosh  @tab - @tab - @tab - @tab - @tab -
address@hidden acoshl  @tab - @tab - @tab - @tab - @tab -
address@hidden asinf  @tab - @tab 2 @tab - @tab - @tab -
address@hidden asin  @tab - @tab 1 @tab - @tab - @tab -
address@hidden asinl  @tab - @tab - @tab - @tab - @tab 1
address@hidden asinhf  @tab - @tab - @tab - @tab - @tab -
address@hidden asinh  @tab - @tab - @tab - @tab - @tab -
address@hidden asinhl  @tab - @tab - @tab - @tab - @tab -
address@hidden atanf  @tab - @tab - @tab - @tab - @tab -
address@hidden atan  @tab - @tab - @tab - @tab - @tab -
address@hidden atanl  @tab - @tab - @tab - @tab - @tab -
address@hidden atanhf  @tab 1 @tab - @tab - @tab 1 @tab -
address@hidden atanh  @tab - @tab 1 @tab - @tab - @tab -
address@hidden atanhl  @tab - @tab - @tab - @tab - @tab 1
address@hidden atan2f  @tab 3 @tab - @tab - @tab 3 @tab -
address@hidden atan2  @tab - @tab - @tab - @tab - @tab -
address@hidden atan2l  @tab - @tab - @tab - @tab - @tab -
address@hidden cabsf  @tab - @tab 1 @tab - @tab - @tab -
address@hidden cabs  @tab - @tab 1 @tab - @tab - @tab -
address@hidden cabsl  @tab - @tab - @tab - @tab - @tab -
address@hidden cacosf  @tab - @tab 1 + i 1 @tab - @tab - @tab 0 + i 1
address@hidden cacos  @tab - @tab 1 + i 0 @tab - @tab - @tab -
address@hidden cacosl  @tab - @tab - @tab - @tab - @tab 0 + i 2
address@hidden cacoshf  @tab 7 + i 3 @tab 7 + i 3 @tab - @tab 7 + i 3 @tab 9 + 
i 4
address@hidden cacosh  @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 
1
address@hidden cacoshl  @tab - @tab - @tab - @tab - @tab 6 + i 1
address@hidden cargf  @tab - @tab - @tab - @tab - @tab -
address@hidden carg  @tab - @tab - @tab - @tab - @tab -
address@hidden cargl  @tab - @tab - @tab - @tab - @tab -
address@hidden casinf  @tab 1 + i 0 @tab 2 + i 1 @tab - @tab 1 + i 0 @tab 1 + i 
1
address@hidden casin  @tab 1 + i 0 @tab 3 + i 0 @tab - @tab 1 + i 0 @tab 1 + i 0
address@hidden casinl  @tab - @tab - @tab - @tab - @tab 2 + i 2
address@hidden casinhf  @tab 1 + i 6 @tab 1 + i 6 @tab - @tab 1 + i 6 @tab 1 + 
i 6
address@hidden casinh  @tab 5 + i 3 @tab 5 + i 3 @tab - @tab 5 + i 3 @tab 5 + i 
3
address@hidden casinhl  @tab - @tab - @tab - @tab - @tab 5 + i 5
address@hidden catanf  @tab 4 + i 1 @tab 4 + i 1 @tab - @tab 4 + i 1 @tab 0 + i 
1
address@hidden catan  @tab 0 + i 1 @tab 0 + i 1 @tab - @tab 0 + i 1 @tab 0 + i 1
address@hidden catanl  @tab - @tab - @tab - @tab - @tab -
address@hidden catanhf  @tab 0 + i 6 @tab 1 + i 6 @tab - @tab 0 + i 6 @tab 1 + 
i 0
address@hidden catanh  @tab 4 + i 0 @tab 4 + i 1 @tab - @tab 4 + i 0 @tab 2 + i 0
address@hidden catanhl  @tab - @tab - @tab - @tab - @tab 1 + i 0
address@hidden cbrtf  @tab - @tab - @tab - @tab - @tab -
address@hidden cbrt  @tab 1 @tab 1 @tab - @tab 1 @tab -
address@hidden cbrtl  @tab - @tab - @tab - @tab - @tab 1
address@hidden ccosf  @tab 1 + i 1 @tab 0 + i 1 @tab - @tab 1 + i 1 @tab 0 + i 1
address@hidden ccos  @tab 1 + i 0 @tab 1 + i 1 @tab - @tab 1 + i 0 @tab 1 + i 0
address@hidden ccosl  @tab - @tab - @tab - @tab - @tab 1 + i 1
address@hidden ccoshf  @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 
1
address@hidden ccosh  @tab 1 + i 0 @tab 1 + i 1 @tab - @tab 1 + i 0 @tab 1 + i 1
address@hidden ccoshl  @tab - @tab - @tab - @tab - @tab 0 + i 1
address@hidden ceilf  @tab - @tab - @tab - @tab - @tab -
address@hidden ceil  @tab - @tab - @tab - @tab - @tab -
address@hidden ceill  @tab - @tab - @tab - @tab - @tab -
address@hidden cexpf  @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 1 @tab -
address@hidden cexp  @tab - @tab 1 + i 0 @tab - @tab - @tab -
address@hidden cexpl  @tab - @tab - @tab - @tab - @tab 1 + i 1
address@hidden cimagf  @tab - @tab - @tab - @tab - @tab -
address@hidden cimag  @tab - @tab - @tab - @tab - @tab -
address@hidden cimagl  @tab - @tab - @tab - @tab - @tab -
address@hidden clogf  @tab 1 + i 3 @tab 0 + i 3 @tab - @tab 1 + i 3 @tab 1 + i 0
address@hidden clog  @tab - @tab 0 + i 1 @tab - @tab - @tab -
address@hidden clogl  @tab - @tab - @tab - @tab - @tab 1 + i 0
address@hidden clog10f  @tab 1 + i 5 @tab 1 + i 5 @tab - @tab 1 + i 5 @tab 1 + 
i 1
address@hidden clog10  @tab 0 + i 1 @tab 1 + i 1 @tab - @tab 0 + i 1 @tab 1 + i 
1
address@hidden clog10l  @tab - @tab - @tab - @tab - @tab 1 + i 1
address@hidden conjf  @tab - @tab - @tab - @tab - @tab -
address@hidden conj  @tab - @tab - @tab - @tab - @tab -
address@hidden conjl  @tab - @tab - @tab - @tab - @tab -
address@hidden copysignf  @tab - @tab - @tab - @tab - @tab -
address@hidden copysign  @tab - @tab - @tab - @tab - @tab -
address@hidden copysignl  @tab - @tab - @tab - @tab - @tab -
address@hidden cosf  @tab 1 @tab 1 @tab - @tab 1 @tab 1
address@hidden cos  @tab 2 @tab 2 @tab - @tab 2 @tab 2
address@hidden cosl  @tab - @tab - @tab - @tab - @tab 1
address@hidden coshf  @tab - @tab - @tab - @tab - @tab -
address@hidden cosh  @tab - @tab - @tab - @tab - @tab -
address@hidden coshl  @tab - @tab - @tab - @tab - @tab -
address@hidden cpowf  @tab 4 + i 2 @tab 4 + i 2 @tab - @tab 4 + i 2 @tab 4 + i 3
address@hidden cpow  @tab 2 + i 2 @tab 1 + i 1.1031 @tab - @tab 2 + i 2 @tab 1 
+ i 2
address@hidden cpowl  @tab - @tab - @tab - @tab - @tab 763 + i 2
address@hidden cprojf  @tab - @tab - @tab - @tab - @tab -
address@hidden cproj  @tab - @tab - @tab - @tab - @tab -
address@hidden cprojl  @tab - @tab - @tab - @tab - @tab -
address@hidden crealf  @tab - @tab - @tab - @tab - @tab -
address@hidden creal  @tab - @tab - @tab - @tab - @tab -
address@hidden creall  @tab - @tab - @tab - @tab - @tab -
address@hidden csinf  @tab - @tab 0 + i 1 @tab - @tab - @tab 1 + i 1
address@hidden csin  @tab - @tab - @tab - @tab - @tab -
address@hidden csinl  @tab - @tab - @tab - @tab - @tab 1 + i 0
address@hidden csinhf  @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 
1
address@hidden csinh  @tab 0 + i 1 @tab 0 + i 1 @tab - @tab 0 + i 1 @tab 1 + i 1
address@hidden csinhl  @tab - @tab - @tab - @tab - @tab 1 + i 2
address@hidden csqrtf  @tab 1 + i 0 @tab 1 + i 1 @tab - @tab 1 + i 0 @tab -
address@hidden csqrt  @tab - @tab 1 + i 0 @tab - @tab - @tab -
address@hidden csqrtl  @tab - @tab - @tab - @tab - @tab -
address@hidden ctanf  @tab - @tab 1 + i 1 @tab - @tab - @tab 0 + i 1
address@hidden ctan  @tab 1 + i 1 @tab 1 + i 1 @tab - @tab 1 + i 1 @tab 1 + i 1
address@hidden ctanl  @tab - @tab - @tab - @tab - @tab 439 + i 3
address@hidden ctanhf  @tab 2 + i 1 @tab 2 + i 1 @tab - @tab 2 + i 1 @tab 1 + i 
1
address@hidden ctanh  @tab 1 + i 0 @tab 2 + i 2 @tab - @tab 1 + i 0 @tab 0 + i 1
address@hidden ctanhl  @tab - @tab - @tab - @tab - @tab 5 + i 25
address@hidden erff  @tab - @tab - @tab - @tab - @tab -
address@hidden erf  @tab 1 @tab - @tab - @tab 1 @tab 1
address@hidden erfl  @tab - @tab - @tab - @tab - @tab -
address@hidden erfcf  @tab - @tab 12 @tab - @tab - @tab 1
address@hidden erfc  @tab 1 @tab 24 @tab - @tab 1 @tab 1
address@hidden erfcl  @tab - @tab - @tab - @tab - @tab 1
address@hidden expf  @tab - @tab - @tab - @tab - @tab -
address@hidden exp  @tab - @tab - @tab - @tab - @tab -
address@hidden expl  @tab - @tab - @tab - @tab - @tab -
address@hidden exp10f  @tab 2 @tab 2 @tab - @tab 2 @tab -
address@hidden exp10  @tab 6 @tab 6 @tab - @tab 6 @tab -
address@hidden exp10l  @tab - @tab - @tab - @tab - @tab 8
address@hidden exp2f  @tab - @tab - @tab - @tab - @tab -
address@hidden exp2  @tab - @tab - @tab - @tab - @tab -
address@hidden exp2l  @tab - @tab - @tab - @tab - @tab -
address@hidden expm1f  @tab 1 @tab 1 @tab - @tab 1 @tab -
address@hidden expm1  @tab 1 @tab - @tab - @tab 1 @tab -
address@hidden expm1l  @tab - @tab - @tab - @tab - @tab -
address@hidden fabsf  @tab - @tab - @tab - @tab - @tab -
address@hidden fabs  @tab - @tab - @tab - @tab - @tab -
address@hidden fabsl  @tab - @tab - @tab - @tab - @tab -
address@hidden fdimf  @tab - @tab - @tab - @tab - @tab -
address@hidden fdim  @tab - @tab - @tab - @tab - @tab -
address@hidden fdiml  @tab - @tab - @tab - @tab - @tab -
address@hidden floorf  @tab - @tab - @tab - @tab - @tab -
address@hidden floor  @tab - @tab - @tab - @tab - @tab -
address@hidden floorl  @tab - @tab - @tab - @tab - @tab -
address@hidden fmaf  @tab - @tab - @tab - @tab - @tab -
address@hidden fma  @tab - @tab - @tab - @tab - @tab -
address@hidden fmal  @tab - @tab - @tab - @tab - @tab -
address@hidden fmaxf  @tab - @tab - @tab - @tab - @tab -
address@hidden fmax  @tab - @tab - @tab - @tab - @tab -
address@hidden fmaxl  @tab - @tab - @tab - @tab - @tab -
address@hidden fminf  @tab - @tab - @tab - @tab - @tab -
address@hidden fmin  @tab - @tab - @tab - @tab - @tab -
address@hidden fminl  @tab - @tab - @tab - @tab - @tab -
address@hidden fmodf  @tab - @tab 1 @tab - @tab - @tab -
address@hidden fmod  @tab - @tab 2 @tab - @tab - @tab -
address@hidden fmodl  @tab - @tab - @tab - @tab - @tab -
address@hidden frexpf  @tab - @tab - @tab - @tab - @tab -
address@hidden frexp  @tab - @tab - @tab - @tab - @tab -
address@hidden frexpl  @tab - @tab - @tab - @tab - @tab -
address@hidden gammaf  @tab - @tab - @tab - @tab - @tab -
address@hidden gamma  @tab - @tab - @tab - @tab - @tab 1
address@hidden gammal  @tab - @tab - @tab - @tab - @tab 1
address@hidden hypotf  @tab 1 @tab 1 @tab - @tab 1 @tab 1
address@hidden hypot  @tab - @tab 1 @tab - @tab - @tab -
address@hidden hypotl  @tab - @tab - @tab - @tab - @tab -
address@hidden ilogbf  @tab - @tab - @tab - @tab - @tab -
address@hidden ilogb  @tab - @tab - @tab - @tab - @tab -
address@hidden ilogbl  @tab - @tab - @tab - @tab - @tab -
address@hidden j0f  @tab 2 @tab 2 @tab - @tab 2 @tab 1
address@hidden j0  @tab 2 @tab 2 @tab - @tab 2 @tab 1
address@hidden j0l  @tab - @tab - @tab - @tab - @tab 1
address@hidden j1f  @tab 2 @tab 2 @tab - @tab 2 @tab 1
address@hidden j1  @tab 1 @tab 1 @tab - @tab 1 @tab 1
address@hidden j1l  @tab - @tab - @tab - @tab - @tab 1
address@hidden jnf  @tab 4 @tab 4 @tab - @tab 4 @tab 2
address@hidden jn  @tab 4 @tab 6 @tab - @tab 4 @tab 2
address@hidden jnl  @tab - @tab - @tab - @tab - @tab 2
address@hidden lgammaf  @tab 2 @tab 2 @tab - @tab 2 @tab 2
address@hidden lgamma  @tab 1 @tab 1 @tab - @tab 1 @tab 1
address@hidden lgammal  @tab - @tab - @tab - @tab - @tab 1
address@hidden lrintf  @tab - @tab - @tab - @tab - @tab -
address@hidden lrint  @tab - @tab - @tab - @tab - @tab -
address@hidden lrintl  @tab - @tab - @tab - @tab - @tab -
address@hidden llrintf  @tab - @tab - @tab - @tab - @tab -
address@hidden llrint  @tab - @tab - @tab - @tab - @tab -
address@hidden llrintl  @tab - @tab - @tab - @tab - @tab -
address@hidden logf  @tab - @tab 1 @tab - @tab - @tab 1
address@hidden log  @tab - @tab 1 @tab - @tab - @tab -
address@hidden logl  @tab - @tab - @tab - @tab - @tab -
address@hidden log10f  @tab 2 @tab 1 @tab - @tab 2 @tab 1
address@hidden log10  @tab 1 @tab 1 @tab - @tab 1 @tab -
address@hidden log10l  @tab - @tab - @tab - @tab - @tab 1
address@hidden log1pf  @tab 1 @tab 1 @tab - @tab 1 @tab -
address@hidden log1p  @tab - @tab 1 @tab - @tab - @tab -
address@hidden log1pl  @tab - @tab - @tab - @tab - @tab -
address@hidden log2f  @tab - @tab 1 @tab - @tab - @tab -
address@hidden log2  @tab - @tab 1 @tab - @tab - @tab -
address@hidden log2l  @tab - @tab - @tab - @tab - @tab -
address@hidden logbf  @tab - @tab - @tab - @tab - @tab -
address@hidden logb  @tab - @tab - @tab - @tab - @tab -
address@hidden logbl  @tab - @tab - @tab - @tab - @tab -
address@hidden lroundf  @tab - @tab - @tab - @tab - @tab -
address@hidden lround  @tab - @tab - @tab - @tab - @tab -
address@hidden lroundl  @tab - @tab - @tab - @tab - @tab -
address@hidden llroundf  @tab - @tab - @tab - @tab - @tab -
address@hidden llround  @tab - @tab - @tab - @tab - @tab -
address@hidden llroundl  @tab - @tab - @tab - @tab - @tab -
address@hidden modff  @tab - @tab - @tab - @tab - @tab -
address@hidden modf  @tab - @tab - @tab - @tab - @tab -
address@hidden modfl  @tab - @tab - @tab - @tab - @tab -
address@hidden nearbyintf  @tab - @tab - @tab - @tab - @tab -
address@hidden nearbyint  @tab - @tab - @tab - @tab - @tab -
address@hidden nearbyintl  @tab - @tab - @tab - @tab - @tab -
address@hidden nextafterf  @tab - @tab - @tab - @tab - @tab -
address@hidden nextafter  @tab - @tab - @tab - @tab - @tab -
address@hidden nextafterl  @tab - @tab - @tab - @tab - @tab -
address@hidden nexttowardf  @tab - @tab - @tab - @tab - @tab -
address@hidden nexttoward  @tab - @tab - @tab - @tab - @tab -
address@hidden nexttowardl  @tab - @tab - @tab - @tab - @tab -
address@hidden powf  @tab - @tab - @tab - @tab - @tab -
address@hidden pow  @tab - @tab - @tab - @tab - @tab -
address@hidden powl  @tab - @tab - @tab - @tab - @tab -
address@hidden remainderf  @tab - @tab - @tab - @tab - @tab -
address@hidden remainder  @tab - @tab - @tab - @tab - @tab -
address@hidden remainderl  @tab - @tab - @tab - @tab - @tab -
address@hidden remquof  @tab - @tab - @tab - @tab - @tab -
address@hidden remquo  @tab - @tab - @tab - @tab - @tab -
address@hidden remquol  @tab - @tab - @tab - @tab - @tab -
address@hidden rintf  @tab - @tab - @tab - @tab - @tab -
address@hidden rint  @tab - @tab - @tab - @tab - @tab -
address@hidden rintl  @tab - @tab - @tab - @tab - @tab -
address@hidden roundf  @tab - @tab - @tab - @tab - @tab -
address@hidden round  @tab - @tab - @tab - @tab - @tab -
address@hidden roundl  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbf  @tab - @tab - @tab - @tab - @tab -
address@hidden scalb  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbl  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbnf  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbn  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbnl  @tab - @tab - @tab - @tab - @tab -
address@hidden scalblnf  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbln  @tab - @tab - @tab - @tab - @tab -
address@hidden scalblnl  @tab - @tab - @tab - @tab - @tab -
address@hidden sinf  @tab - @tab - @tab - @tab - @tab -
address@hidden sin  @tab - @tab - @tab - @tab - @tab -
address@hidden sinl  @tab - @tab - @tab - @tab - @tab -
address@hidden sincosf  @tab 1 @tab 1 @tab - @tab 1 @tab 1
address@hidden sincos  @tab 1 @tab 1 @tab - @tab 1 @tab 1
address@hidden sincosl  @tab - @tab - @tab - @tab - @tab 1
address@hidden sinhf  @tab - @tab 1 @tab - @tab - @tab -
address@hidden sinh  @tab - @tab 1 @tab - @tab - @tab -
address@hidden sinhl  @tab - @tab - @tab - @tab - @tab -
address@hidden sqrtf  @tab - @tab - @tab - @tab - @tab -
address@hidden sqrt  @tab - @tab - @tab - @tab - @tab -
address@hidden sqrtl  @tab - @tab - @tab - @tab - @tab -
address@hidden tanf  @tab - @tab - @tab - @tab - @tab -
address@hidden tan  @tab 1 @tab 0.5 @tab - @tab 1 @tab 1
address@hidden tanl  @tab - @tab - @tab - @tab - @tab -
address@hidden tanhf  @tab - @tab 1 @tab - @tab - @tab -
address@hidden tanh  @tab - @tab 1 @tab - @tab - @tab -
address@hidden tanhl  @tab - @tab - @tab - @tab - @tab -
address@hidden tgammaf  @tab 1 @tab 1 @tab - @tab 1 @tab 1
address@hidden tgamma  @tab 1 @tab 1 @tab - @tab 1 @tab 2
address@hidden tgammal  @tab - @tab - @tab - @tab - @tab 1
address@hidden truncf  @tab - @tab - @tab - @tab - @tab -
address@hidden trunc  @tab - @tab - @tab - @tab - @tab -
address@hidden truncl  @tab - @tab - @tab - @tab - @tab -
address@hidden y0f  @tab 1 @tab 1 @tab - @tab 1 @tab 1
address@hidden y0  @tab 2 @tab 2 @tab - @tab 2 @tab 2
address@hidden y0l  @tab - @tab - @tab - @tab - @tab 1
address@hidden y1f  @tab 2 @tab 2 @tab - @tab 2 @tab 2
address@hidden y1  @tab 3 @tab 3 @tab - @tab 3 @tab 2
address@hidden y1l  @tab - @tab - @tab - @tab - @tab 1
address@hidden ynf  @tab 2 @tab 2 @tab - @tab 2 @tab 3
address@hidden yn  @tab 3 @tab 3 @tab - @tab 3 @tab 2
address@hidden ynl  @tab - @tab - @tab - @tab - @tab 4
address@hidden multitable
-
address@hidden {nexttowardf}  {1 + i 24} {1 + i 1.1031} {Sparc 32-bit} {Sparc 
64-bit} {powerpc/nofpu}
address@hidden @dfn{Function}  @tab @dfn{IA64} @tab @dfn{M68k} @tab @dfn{MIPS} 
@tab @dfn{PowerPC} @tab @dfn{powerpc/nofpu}
address@hidden acosf  @tab - @tab - @tab - @tab - @tab -
address@hidden acos  @tab - @tab - @tab - @tab - @tab -
address@hidden acosl  @tab - @tab - @tab - @tab - @tab -
address@hidden acoshf  @tab - @tab - @tab - @tab - @tab -
address@hidden acosh  @tab - @tab - @tab - @tab - @tab -
address@hidden acoshl  @tab - @tab 1 @tab - @tab - @tab -
address@hidden asinf  @tab - @tab - @tab - @tab - @tab -
address@hidden asin  @tab - @tab - @tab - @tab - @tab -
address@hidden asinl  @tab - @tab - @tab - @tab - @tab -
address@hidden asinhf  @tab - @tab - @tab - @tab - @tab -
address@hidden asinh  @tab - @tab - @tab - @tab - @tab -
address@hidden asinhl  @tab - @tab 1 @tab - @tab - @tab -
address@hidden atanf  @tab - @tab - @tab - @tab - @tab -
address@hidden atan  @tab - @tab - @tab - @tab - @tab -
address@hidden atanl  @tab - @tab - @tab - @tab - @tab -
address@hidden atanhf  @tab - @tab - @tab 1 @tab 1 @tab 1
address@hidden atanh  @tab - @tab - @tab - @tab - @tab -
address@hidden atanhl  @tab - @tab 1 @tab - @tab - @tab -
address@hidden atan2f  @tab - @tab - @tab 3 @tab 3 @tab 3
address@hidden atan2  @tab - @tab - @tab - @tab - @tab -
address@hidden atan2l  @tab - @tab 1 @tab - @tab - @tab -
address@hidden cabsf  @tab - @tab - @tab - @tab - @tab -
address@hidden cabs  @tab - @tab - @tab - @tab - @tab -
address@hidden cabsl  @tab - @tab - @tab - @tab - @tab -
address@hidden cacosf  @tab 0 + i 1 @tab 2 + i 1 @tab - @tab - @tab -
address@hidden cacos  @tab - @tab - @tab - @tab - @tab -
address@hidden cacosl  @tab 0 + i 2 @tab 1 + i 2 @tab - @tab - @tab -
address@hidden cacoshf  @tab 7 + i 0 @tab 7 + i 1 @tab 7 + i 3 @tab 7 + i 3 
@tab 7 + i 3
address@hidden cacosh  @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 
1 + i 1
address@hidden cacoshl  @tab 7 + i 1 @tab 6 + i 2 @tab - @tab - @tab -
address@hidden cargf  @tab - @tab - @tab - @tab - @tab -
address@hidden carg  @tab - @tab - @tab - @tab - @tab -
address@hidden cargl  @tab - @tab - @tab - @tab - @tab -
address@hidden casinf  @tab 1 + i 1 @tab 5 + i 1 @tab 1 + i 0 @tab 1 + i 0 @tab 
1 + i 0
address@hidden casin  @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0 @tab 
1 + i 0
address@hidden casinl  @tab 2 + i 2 @tab 3 + i 2 @tab - @tab - @tab -
address@hidden casinhf  @tab 1 + i 6 @tab 19 + i 1 @tab 1 + i 6 @tab 1 + i 6 
@tab 1 + i 6
address@hidden casinh  @tab 5 + i 3 @tab 6 + i 13 @tab 5 + i 3 @tab 5 + i 3 
@tab 5 + i 3
address@hidden casinhl  @tab 5 + i 5 @tab 5 + i 6 @tab - @tab - @tab -
address@hidden catanf  @tab 0 + i 1 @tab 0 + i 1 @tab 4 + i 1 @tab 4 + i 1 @tab 
4 + i 1
address@hidden catan  @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 
0 + i 1
address@hidden catanl  @tab - @tab 1 + i 0 @tab - @tab - @tab -
address@hidden catanhf  @tab - @tab - @tab 0 + i 6 @tab 0 + i 6 @tab 0 + i 6
address@hidden catanh  @tab 4 + i 0 @tab - @tab 4 + i 0 @tab 4 + i 0 @tab 4 + i 0
address@hidden catanhl  @tab 1 + i 0 @tab 1 + i 0 @tab - @tab - @tab -
address@hidden cbrtf  @tab - @tab - @tab - @tab - @tab -
address@hidden cbrt  @tab - @tab - @tab 1 @tab 1 @tab 1
address@hidden cbrtl  @tab - @tab 1 @tab - @tab - @tab -
address@hidden ccosf  @tab 0 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 
1 + i 1
address@hidden ccos  @tab 1 + i 0 @tab - @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0
address@hidden ccosl  @tab 1 + i 1 @tab 1 + i 1 @tab - @tab - @tab -
address@hidden ccoshf  @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 
1 + i 1
address@hidden ccosh  @tab 1 + i 1 @tab - @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0
address@hidden ccoshl  @tab 0 + i 1 @tab 0 + i 1 @tab - @tab - @tab -
address@hidden ceilf  @tab - @tab - @tab - @tab - @tab -
address@hidden ceil  @tab - @tab - @tab - @tab - @tab -
address@hidden ceill  @tab - @tab - @tab - @tab - @tab -
address@hidden cexpf  @tab 1 + i 1 @tab 2 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 
1 + i 1
address@hidden cexp  @tab - @tab - @tab - @tab - @tab -
address@hidden cexpl  @tab 0 + i 1 @tab 0 + i 1 @tab - @tab - @tab -
address@hidden cimagf  @tab - @tab - @tab - @tab - @tab -
address@hidden cimag  @tab - @tab - @tab - @tab - @tab -
address@hidden cimagl  @tab - @tab - @tab - @tab - @tab -
address@hidden clogf  @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 3 @tab 1 + i 3 @tab 
1 + i 3
address@hidden clog  @tab - @tab - @tab - @tab - @tab -
address@hidden clogl  @tab 1 + i 0 @tab 1 + i 1 @tab - @tab - @tab -
address@hidden clog10f  @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 5 @tab 1 + i 5 
@tab 1 + i 5
address@hidden clog10  @tab 1 + i 1 @tab 1 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 
0 + i 1
address@hidden clog10l  @tab 1 + i 1 @tab 1 + i 2 @tab - @tab - @tab -
address@hidden conjf  @tab - @tab - @tab - @tab - @tab -
address@hidden conj  @tab - @tab - @tab - @tab - @tab -
address@hidden conjl  @tab - @tab - @tab - @tab - @tab -
address@hidden copysignf  @tab - @tab - @tab - @tab - @tab -
address@hidden copysign  @tab - @tab - @tab - @tab - @tab -
address@hidden copysignl  @tab - @tab - @tab - @tab - @tab -
address@hidden cosf  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden cos  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden cosl  @tab 1 @tab 1 @tab - @tab - @tab -
address@hidden coshf  @tab - @tab - @tab - @tab - @tab -
address@hidden cosh  @tab - @tab - @tab - @tab - @tab -
address@hidden coshl  @tab - @tab - @tab - @tab - @tab -
address@hidden cpowf  @tab 5 + i 3 @tab 2 + i 6 @tab 4 + i 2 @tab 4 + i 2 @tab 
4 + i 2
address@hidden cpow  @tab 2 + i 2 @tab 1 + i 2 @tab 2 + i 2 @tab 2 + i 2 @tab 2 
+ i 2
address@hidden cpowl  @tab 3 + i 4 @tab 15 + i 2 @tab - @tab - @tab -
address@hidden cprojf  @tab - @tab - @tab - @tab - @tab -
address@hidden cproj  @tab - @tab - @tab - @tab - @tab -
address@hidden cprojl  @tab - @tab - @tab - @tab - @tab -
address@hidden crealf  @tab - @tab - @tab - @tab - @tab -
address@hidden creal  @tab - @tab - @tab - @tab - @tab -
address@hidden creall  @tab - @tab - @tab - @tab - @tab -
address@hidden csinf  @tab 1 + i 1 @tab 1 + i 1 @tab - @tab - @tab -
address@hidden csin  @tab - @tab - @tab - @tab - @tab -
address@hidden csinl  @tab 1 + i 0 @tab 1 + i 0 @tab - @tab - @tab -
address@hidden csinhf  @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 
1 + i 1
address@hidden csinh  @tab 1 + i 1 @tab - @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1
address@hidden csinhl  @tab 1 + i 2 @tab 1 + i 0 @tab - @tab - @tab -
address@hidden csqrtf  @tab 1 + i 0 @tab - @tab 1 + i 0 @tab 1 + i 0 @tab 1 + i 0
address@hidden csqrt  @tab - @tab - @tab - @tab - @tab -
address@hidden csqrtl  @tab - @tab - @tab - @tab - @tab -
address@hidden ctanf  @tab 0 + i 1 @tab - @tab - @tab - @tab -
address@hidden ctan  @tab 1 + i 1 @tab 1 + i 0 @tab 1 + i 1 @tab 1 + i 1 @tab 1 
+ i 1
address@hidden ctanl  @tab 2 + i 1 @tab 1 + i 2 @tab - @tab - @tab -
address@hidden ctanhf  @tab 0 + i 1 @tab 0 + i 1 @tab 2 + i 1 @tab 2 + i 1 @tab 
2 + i 1
address@hidden ctanh  @tab 1 + i 1 @tab 0 + i 1 @tab 1 + i 0 @tab 1 + i 0 @tab 
1 + i 0
address@hidden ctanhl  @tab 1 + i 24 @tab 0 + i 1 @tab - @tab - @tab -
address@hidden erff  @tab - @tab - @tab - @tab - @tab -
address@hidden erf  @tab 1 @tab - @tab 1 @tab 1 @tab 1
address@hidden erfl  @tab - @tab - @tab - @tab - @tab -
address@hidden erfcf  @tab 1 @tab 1 @tab - @tab 1 @tab -
address@hidden erfc  @tab 1 @tab - @tab 1 @tab 1 @tab 1
address@hidden erfcl  @tab 1 @tab 1 @tab - @tab - @tab -
address@hidden expf  @tab - @tab - @tab - @tab - @tab -
address@hidden exp  @tab - @tab - @tab - @tab - @tab -
address@hidden expl  @tab - @tab - @tab - @tab - @tab -
address@hidden exp10f  @tab 2 @tab - @tab 2 @tab 2 @tab 2
address@hidden exp10  @tab 6 @tab - @tab 6 @tab 6 @tab 6
address@hidden exp10l  @tab 3 @tab - @tab - @tab - @tab -
address@hidden exp2f  @tab - @tab - @tab - @tab - @tab -
address@hidden exp2  @tab - @tab - @tab - @tab - @tab -
address@hidden exp2l  @tab - @tab - @tab - @tab - @tab -
address@hidden expm1f  @tab - @tab - @tab 1 @tab 1 @tab 1
address@hidden expm1  @tab - @tab - @tab 1 @tab 1 @tab 1
address@hidden expm1l  @tab 1 @tab 1 @tab - @tab - @tab -
address@hidden fabsf  @tab - @tab - @tab - @tab - @tab -
address@hidden fabs  @tab - @tab - @tab - @tab - @tab -
address@hidden fabsl  @tab - @tab - @tab - @tab - @tab -
address@hidden fdimf  @tab - @tab - @tab - @tab - @tab -
address@hidden fdim  @tab - @tab - @tab - @tab - @tab -
address@hidden fdiml  @tab - @tab - @tab - @tab - @tab -
address@hidden floorf  @tab - @tab - @tab - @tab - @tab -
address@hidden floor  @tab - @tab - @tab - @tab - @tab -
address@hidden floorl  @tab - @tab - @tab - @tab - @tab -
address@hidden fmaf  @tab - @tab - @tab - @tab - @tab -
address@hidden fma  @tab - @tab - @tab - @tab - @tab -
address@hidden fmal  @tab - @tab - @tab - @tab - @tab -
address@hidden fmaxf  @tab - @tab - @tab - @tab - @tab -
address@hidden fmax  @tab - @tab - @tab - @tab - @tab -
address@hidden fmaxl  @tab - @tab - @tab - @tab - @tab -
address@hidden fminf  @tab - @tab - @tab - @tab - @tab -
address@hidden fmin  @tab - @tab - @tab - @tab - @tab -
address@hidden fminl  @tab - @tab - @tab - @tab - @tab -
address@hidden fmodf  @tab - @tab - @tab - @tab - @tab -
address@hidden fmod  @tab - @tab - @tab - @tab - @tab -
address@hidden fmodl  @tab - @tab - @tab - @tab - @tab -
address@hidden frexpf  @tab - @tab - @tab - @tab - @tab -
address@hidden frexp  @tab - @tab - @tab - @tab - @tab -
address@hidden frexpl  @tab - @tab - @tab - @tab - @tab -
address@hidden gammaf  @tab - @tab - @tab - @tab - @tab -
address@hidden gamma  @tab - @tab - @tab - @tab - @tab -
address@hidden gammal  @tab 1 @tab 1 @tab - @tab - @tab -
address@hidden hypotf  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden hypot  @tab - @tab - @tab - @tab - @tab -
address@hidden hypotl  @tab - @tab - @tab - @tab - @tab -
address@hidden ilogbf  @tab - @tab - @tab - @tab - @tab -
address@hidden ilogb  @tab - @tab - @tab - @tab - @tab -
address@hidden ilogbl  @tab - @tab - @tab - @tab - @tab -
address@hidden j0f  @tab 1 @tab 1 @tab 2 @tab 1 @tab 2
address@hidden j0  @tab 2 @tab 1 @tab 2 @tab 2 @tab 2
address@hidden j0l  @tab 2 @tab 1 @tab - @tab - @tab -
address@hidden j1f  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden j1  @tab 1 @tab - @tab 1 @tab 1 @tab 1
address@hidden j1l  @tab 1 @tab 1 @tab - @tab - @tab -
address@hidden jnf  @tab 3 @tab 5 @tab 4 @tab 3 @tab 4
address@hidden jn  @tab 3 @tab 1 @tab 4 @tab 3 @tab 4
address@hidden jnl  @tab 2 @tab 2 @tab - @tab - @tab -
address@hidden lgammaf  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden lgamma  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden lgammal  @tab 1 @tab 1 @tab - @tab - @tab -
address@hidden lrintf  @tab - @tab - @tab - @tab - @tab -
address@hidden lrint  @tab - @tab - @tab - @tab - @tab -
address@hidden lrintl  @tab - @tab - @tab - @tab - @tab -
address@hidden llrintf  @tab - @tab - @tab - @tab - @tab -
address@hidden llrint  @tab - @tab - @tab - @tab - @tab -
address@hidden llrintl  @tab - @tab - @tab - @tab - @tab -
address@hidden logf  @tab 1 @tab 1 @tab - @tab - @tab -
address@hidden log  @tab - @tab - @tab - @tab - @tab -
address@hidden logl  @tab - @tab 1 @tab - @tab - @tab -
address@hidden log10f  @tab 1 @tab 1 @tab 2 @tab 2 @tab 2
address@hidden log10  @tab - @tab - @tab 1 @tab 1 @tab 1
address@hidden log10l  @tab 1 @tab 2 @tab - @tab - @tab -
address@hidden log1pf  @tab - @tab - @tab 1 @tab 1 @tab 1
address@hidden log1p  @tab - @tab - @tab - @tab - @tab -
address@hidden log1pl  @tab - @tab 1 @tab - @tab - @tab -
address@hidden log2f  @tab - @tab - @tab - @tab - @tab -
address@hidden log2  @tab - @tab - @tab - @tab - @tab -
address@hidden log2l  @tab - @tab 1 @tab - @tab - @tab -
address@hidden logbf  @tab - @tab - @tab - @tab - @tab -
address@hidden logb  @tab - @tab - @tab - @tab - @tab -
address@hidden logbl  @tab - @tab - @tab - @tab - @tab -
address@hidden lroundf  @tab - @tab - @tab - @tab - @tab -
address@hidden lround  @tab - @tab - @tab - @tab - @tab -
address@hidden lroundl  @tab - @tab - @tab - @tab - @tab -
address@hidden llroundf  @tab - @tab - @tab - @tab - @tab -
address@hidden llround  @tab - @tab - @tab - @tab - @tab -
address@hidden llroundl  @tab - @tab - @tab - @tab - @tab -
address@hidden modff  @tab - @tab - @tab - @tab - @tab -
address@hidden modf  @tab - @tab - @tab - @tab - @tab -
address@hidden modfl  @tab - @tab - @tab - @tab - @tab -
address@hidden nearbyintf  @tab - @tab - @tab - @tab - @tab -
address@hidden nearbyint  @tab - @tab - @tab - @tab - @tab -
address@hidden nearbyintl  @tab - @tab - @tab - @tab - @tab -
address@hidden nextafterf  @tab - @tab - @tab - @tab - @tab -
address@hidden nextafter  @tab - @tab - @tab - @tab - @tab -
address@hidden nextafterl  @tab - @tab - @tab - @tab - @tab -
address@hidden nexttowardf  @tab - @tab - @tab - @tab - @tab -
address@hidden nexttoward  @tab - @tab - @tab - @tab - @tab -
address@hidden nexttowardl  @tab - @tab - @tab - @tab - @tab -
address@hidden powf  @tab - @tab - @tab - @tab - @tab -
address@hidden pow  @tab - @tab - @tab - @tab - @tab -
address@hidden powl  @tab - @tab 1 @tab - @tab - @tab -
address@hidden remainderf  @tab - @tab - @tab - @tab - @tab -
address@hidden remainder  @tab - @tab - @tab - @tab - @tab -
address@hidden remainderl  @tab - @tab - @tab - @tab - @tab -
address@hidden remquof  @tab - @tab - @tab - @tab - @tab -
address@hidden remquo  @tab - @tab - @tab - @tab - @tab -
address@hidden remquol  @tab - @tab - @tab - @tab - @tab -
address@hidden rintf  @tab - @tab - @tab - @tab - @tab -
address@hidden rint  @tab - @tab - @tab - @tab - @tab -
address@hidden rintl  @tab - @tab - @tab - @tab - @tab -
address@hidden roundf  @tab - @tab - @tab - @tab - @tab -
address@hidden round  @tab - @tab - @tab - @tab - @tab -
address@hidden roundl  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbf  @tab - @tab - @tab - @tab - @tab -
address@hidden scalb  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbl  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbnf  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbn  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbnl  @tab - @tab - @tab - @tab - @tab -
address@hidden scalblnf  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbln  @tab - @tab - @tab - @tab - @tab -
address@hidden scalblnl  @tab - @tab - @tab - @tab - @tab -
address@hidden sinf  @tab - @tab - @tab - @tab - @tab -
address@hidden sin  @tab - @tab - @tab - @tab - @tab -
address@hidden sinl  @tab - @tab - @tab - @tab - @tab -
address@hidden sincosf  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden sincos  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden sincosl  @tab 1 @tab 1 @tab - @tab - @tab -
address@hidden sinhf  @tab - @tab - @tab - @tab - @tab -
address@hidden sinh  @tab - @tab - @tab - @tab - @tab -
address@hidden sinhl  @tab - @tab 1 @tab - @tab - @tab -
address@hidden sqrtf  @tab - @tab - @tab - @tab - @tab -
address@hidden sqrt  @tab - @tab - @tab - @tab - @tab -
address@hidden sqrtl  @tab - @tab - @tab - @tab - @tab -
address@hidden tanf  @tab - @tab - @tab - @tab - @tab -
address@hidden tan  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden tanl  @tab - @tab 1 @tab - @tab - @tab -
address@hidden tanhf  @tab - @tab - @tab - @tab - @tab -
address@hidden tanh  @tab - @tab - @tab - @tab - @tab -
address@hidden tanhl  @tab - @tab - @tab - @tab - @tab -
address@hidden tgammaf  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden tgamma  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden tgammal  @tab 1 @tab 1 @tab - @tab - @tab -
address@hidden truncf  @tab - @tab - @tab - @tab - @tab -
address@hidden trunc  @tab - @tab - @tab - @tab - @tab -
address@hidden truncl  @tab - @tab - @tab - @tab - @tab -
address@hidden y0f  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden y0  @tab 2 @tab 1 @tab 2 @tab 2 @tab 2
address@hidden y0l  @tab 1 @tab 2 @tab - @tab - @tab -
address@hidden y1f  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden y1  @tab 3 @tab 1 @tab 3 @tab 3 @tab 3
address@hidden y1l  @tab 1 @tab 1 @tab - @tab - @tab -
address@hidden ynf  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden yn  @tab 3 @tab 1 @tab 3 @tab 3 @tab 3
address@hidden ynl  @tab 2 @tab 4 @tab - @tab - @tab -
address@hidden multitable
-
address@hidden {nexttowardf}  {1 + i 24} {1 + i 1.1031} {Sparc 32-bit} {Sparc 
64-bit} {powerpc/nofpu}
address@hidden @dfn{Function}  @tab @dfn{S/390} @tab @dfn{SH4} @tab @dfn{Sparc 
32-bit} @tab @dfn{Sparc 64-bit} @tab @dfn{x86_64/fpu}
address@hidden acosf  @tab - @tab - @tab - @tab - @tab -
address@hidden acos  @tab - @tab - @tab - @tab - @tab -
address@hidden acosl  @tab - @tab - @tab - @tab - @tab -
address@hidden acoshf  @tab - @tab - @tab - @tab - @tab -
address@hidden acosh  @tab - @tab - @tab - @tab - @tab -
address@hidden acoshl  @tab - @tab - @tab - @tab - @tab -
address@hidden asinf  @tab - @tab 2 @tab - @tab - @tab -
address@hidden asin  @tab - @tab 1 @tab - @tab - @tab -
address@hidden asinl  @tab - @tab - @tab - @tab - @tab 1
address@hidden asinhf  @tab - @tab - @tab - @tab - @tab -
address@hidden asinh  @tab - @tab - @tab - @tab - @tab -
address@hidden asinhl  @tab - @tab - @tab - @tab - @tab -
address@hidden atanf  @tab - @tab - @tab - @tab - @tab -
address@hidden atan  @tab - @tab - @tab - @tab - @tab -
address@hidden atanl  @tab - @tab - @tab - @tab - @tab -
address@hidden atanhf  @tab 1 @tab - @tab 1 @tab 1 @tab 1
address@hidden atanh  @tab - @tab 1 @tab - @tab - @tab -
address@hidden atanhl  @tab - @tab - @tab - @tab - @tab 1
address@hidden atan2f  @tab 3 @tab 4 @tab 3 @tab 3 @tab 3
address@hidden atan2  @tab - @tab - @tab - @tab - @tab -
address@hidden atan2l  @tab - @tab - @tab - @tab 1 @tab -
address@hidden cabsf  @tab - @tab 1 @tab - @tab - @tab -
address@hidden cabs  @tab - @tab 1 @tab - @tab - @tab -
address@hidden cabsl  @tab - @tab - @tab - @tab - @tab -
address@hidden cacosf  @tab - @tab 1 + i 1 @tab - @tab - @tab 0 + i 1
address@hidden cacos  @tab - @tab 1 + i 0 @tab - @tab - @tab -
address@hidden cacosl  @tab - @tab - @tab - @tab 0 + i 1 @tab 0 + i 2
address@hidden cacoshf  @tab 7 + i 3 @tab 7 + i 3 @tab 7 + i 3 @tab 7 + i 3 
@tab 7 + i 3
address@hidden cacosh  @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 
1 + i 1
address@hidden cacoshl  @tab - @tab - @tab - @tab 5 + i 1 @tab 6 + i 1
address@hidden cargf  @tab - @tab - @tab - @tab - @tab -
address@hidden carg  @tab - @tab - @tab - @tab - @tab -
address@hidden cargl  @tab - @tab - @tab - @tab - @tab -
address@hidden casinf  @tab 1 + i 0 @tab 2 + i 1 @tab 1 + i 0 @tab 1 + i 0 @tab 
1 + i 1
address@hidden casin  @tab 1 + i 0 @tab 3 + i 0 @tab 1 + i 0 @tab 1 + i 0 @tab 
1 + i 0
address@hidden casinl  @tab - @tab - @tab - @tab 0 + i 1 @tab 2 + i 2
address@hidden casinhf  @tab 1 + i 6 @tab 1 + i 6 @tab 1 + i 6 @tab 1 + i 6 
@tab 1 + i 6
address@hidden casinh  @tab 5 + i 3 @tab 5 + i 3 @tab 5 + i 3 @tab 5 + i 3 @tab 
5 + i 3
address@hidden casinhl  @tab - @tab - @tab - @tab 4 + i 2 @tab 5 + i 5
address@hidden catanf  @tab 4 + i 1 @tab 4 + i 1 @tab 4 + i 1 @tab 4 + i 1 @tab 
4 + i 1
address@hidden catan  @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 
0 + i 1
address@hidden catanl  @tab - @tab - @tab - @tab 0 + i 1 @tab -
address@hidden catanhf  @tab 0 + i 6 @tab 1 + i 6 @tab 0 + i 6 @tab 0 + i 6 
@tab 0 + i 6
address@hidden catanh  @tab 4 + i 0 @tab 4 + i 1 @tab 4 + i 0 @tab 4 + i 0 @tab 
4 + i 0
address@hidden catanhl  @tab - @tab - @tab - @tab 1 + i 1 @tab 1 + i 0
address@hidden cbrtf  @tab - @tab - @tab - @tab - @tab -
address@hidden cbrt  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden cbrtl  @tab - @tab - @tab - @tab 1 @tab 1
address@hidden ccosf  @tab 1 + i 1 @tab 0 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 
1 + i 1
address@hidden ccos  @tab 1 + i 0 @tab 1 + i 1 @tab 1 + i 0 @tab 1 + i 0 @tab 1 
+ i 0
address@hidden ccosl  @tab - @tab - @tab - @tab - @tab 1 + i 1
address@hidden ccoshf  @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 
1 + i 1
address@hidden ccosh  @tab 1 + i 0 @tab 1 + i 1 @tab 1 + i 0 @tab 1 + i 0 @tab 
1 + i 1
address@hidden ccoshl  @tab - @tab - @tab - @tab - @tab 0 + i 1
address@hidden ceilf  @tab - @tab - @tab - @tab - @tab -
address@hidden ceil  @tab - @tab - @tab - @tab - @tab -
address@hidden ceill  @tab - @tab - @tab - @tab - @tab -
address@hidden cexpf  @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 
1 + i 1
address@hidden cexp  @tab - @tab 1 + i 0 @tab - @tab - @tab -
address@hidden cexpl  @tab - @tab - @tab - @tab 1 + i 1 @tab 0 + i 1
address@hidden cimagf  @tab - @tab - @tab - @tab - @tab -
address@hidden cimag  @tab - @tab - @tab - @tab - @tab -
address@hidden cimagl  @tab - @tab - @tab - @tab - @tab -
address@hidden clogf  @tab 1 + i 3 @tab 0 + i 3 @tab 1 + i 3 @tab 1 + i 3 @tab 
1 + i 3
address@hidden clog  @tab - @tab 0 + i 1 @tab - @tab - @tab -
address@hidden clogl  @tab - @tab - @tab - @tab 1 + i 0 @tab 1 + i 0
address@hidden clog10f  @tab 1 + i 5 @tab 1 + i 5 @tab 1 + i 5 @tab 1 + i 5 
@tab 1 + i 5
address@hidden clog10  @tab 0 + i 1 @tab 1 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 
1 + i 1
address@hidden clog10l  @tab - @tab - @tab - @tab 0 + i 1 @tab 1 + i 1
address@hidden conjf  @tab - @tab - @tab - @tab - @tab -
address@hidden conj  @tab - @tab - @tab - @tab - @tab -
address@hidden conjl  @tab - @tab - @tab - @tab - @tab -
address@hidden copysignf  @tab - @tab - @tab - @tab - @tab -
address@hidden copysign  @tab - @tab - @tab - @tab - @tab -
address@hidden copysignl  @tab - @tab - @tab - @tab - @tab -
address@hidden cosf  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden cos  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden cosl  @tab - @tab - @tab - @tab 1 @tab 1
address@hidden coshf  @tab - @tab - @tab - @tab - @tab -
address@hidden cosh  @tab - @tab - @tab - @tab - @tab -
address@hidden coshl  @tab - @tab - @tab - @tab - @tab -
address@hidden cpowf  @tab 4 + i 2 @tab 4 + i 2 @tab 4 + i 2 @tab 4 + i 2 @tab 
5 + i 2
address@hidden cpow  @tab 2 + i 2 @tab 1 + i 1.1031 @tab 2 + i 2 @tab 2 + i 2 
@tab 2 + i 2
address@hidden cpowl  @tab - @tab - @tab - @tab 1 + i 1 @tab 5 + i 2
address@hidden cprojf  @tab - @tab - @tab - @tab - @tab -
address@hidden cproj  @tab - @tab - @tab - @tab - @tab -
address@hidden cprojl  @tab - @tab - @tab - @tab - @tab -
address@hidden crealf  @tab - @tab - @tab - @tab - @tab -
address@hidden creal  @tab - @tab - @tab - @tab - @tab -
address@hidden creall  @tab - @tab - @tab - @tab - @tab -
address@hidden csinf  @tab - @tab 0 + i 1 @tab - @tab - @tab 0 + i 1
address@hidden csin  @tab - @tab - @tab - @tab - @tab -
address@hidden csinl  @tab - @tab - @tab - @tab 1 + i 0 @tab 1 + i 0
address@hidden csinhf  @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 
1 + i 1
address@hidden csinh  @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 0 + i 1 @tab 
1 + i 1
address@hidden csinhl  @tab - @tab - @tab - @tab - @tab 1 + i 2
address@hidden csqrtf  @tab 1 + i 0 @tab 1 + i 1 @tab 1 + i 0 @tab 1 + i 0 @tab 
1 + i 0
address@hidden csqrt  @tab - @tab 1 + i 0 @tab - @tab - @tab -
address@hidden csqrtl  @tab - @tab - @tab - @tab 1 + i 1 @tab -
address@hidden ctanf  @tab - @tab 1 + i 1 @tab - @tab - @tab 0 + i 1
address@hidden ctan  @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 + i 1 @tab 1 
+ i 1
address@hidden ctanl  @tab - @tab - @tab - @tab 0 + i 2 @tab 439 + i 3
address@hidden ctanhf  @tab 2 + i 1 @tab 2 + i 1 @tab 2 + i 1 @tab 2 + i 1 @tab 
2 + i 1
address@hidden ctanh  @tab 1 + i 0 @tab 2 + i 2 @tab 1 + i 0 @tab 1 + i 0 @tab 
1 + i 1
address@hidden ctanhl  @tab - @tab - @tab - @tab - @tab 5 + i 25
address@hidden erff  @tab - @tab - @tab - @tab - @tab -
address@hidden erf  @tab 1 @tab - @tab 1 @tab 1 @tab 1
address@hidden erfl  @tab - @tab - @tab - @tab - @tab -
address@hidden erfcf  @tab - @tab 12 @tab - @tab - @tab -
address@hidden erfc  @tab 1 @tab 24 @tab 1 @tab 1 @tab 1
address@hidden erfcl  @tab - @tab - @tab - @tab 1 @tab 1
address@hidden expf  @tab - @tab - @tab - @tab - @tab -
address@hidden exp  @tab - @tab - @tab - @tab - @tab -
address@hidden expl  @tab - @tab - @tab - @tab - @tab -
address@hidden exp10f  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden exp10  @tab 6 @tab 6 @tab 6 @tab 6 @tab 6
address@hidden exp10l  @tab - @tab - @tab - @tab 1 @tab 3
address@hidden exp2f  @tab - @tab - @tab - @tab - @tab -
address@hidden exp2  @tab - @tab - @tab - @tab - @tab -
address@hidden exp2l  @tab - @tab - @tab - @tab - @tab -
address@hidden expm1f  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden expm1  @tab 1 @tab - @tab 1 @tab 1 @tab 1
address@hidden expm1l  @tab - @tab - @tab - @tab 1 @tab -
address@hidden fabsf  @tab - @tab - @tab - @tab - @tab -
address@hidden fabs  @tab - @tab - @tab - @tab - @tab -
address@hidden fabsl  @tab - @tab - @tab - @tab - @tab -
address@hidden fdimf  @tab - @tab - @tab - @tab - @tab -
address@hidden fdim  @tab - @tab - @tab - @tab - @tab -
address@hidden fdiml  @tab - @tab - @tab - @tab - @tab -
address@hidden floorf  @tab - @tab - @tab - @tab - @tab -
address@hidden floor  @tab - @tab - @tab - @tab - @tab -
address@hidden floorl  @tab - @tab - @tab - @tab - @tab -
address@hidden fmaf  @tab - @tab - @tab - @tab - @tab -
address@hidden fma  @tab - @tab - @tab - @tab - @tab -
address@hidden fmal  @tab - @tab - @tab - @tab - @tab -
address@hidden fmaxf  @tab - @tab - @tab - @tab - @tab -
address@hidden fmax  @tab - @tab - @tab - @tab - @tab -
address@hidden fmaxl  @tab - @tab - @tab - @tab - @tab -
address@hidden fminf  @tab - @tab - @tab - @tab - @tab -
address@hidden fmin  @tab - @tab - @tab - @tab - @tab -
address@hidden fminl  @tab - @tab - @tab - @tab - @tab -
address@hidden fmodf  @tab - @tab 1 @tab - @tab - @tab -
address@hidden fmod  @tab - @tab 2 @tab - @tab - @tab -
address@hidden fmodl  @tab - @tab - @tab - @tab - @tab -
address@hidden frexpf  @tab - @tab - @tab - @tab - @tab -
address@hidden frexp  @tab - @tab - @tab - @tab - @tab -
address@hidden frexpl  @tab - @tab - @tab - @tab - @tab -
address@hidden gammaf  @tab - @tab - @tab - @tab - @tab -
address@hidden gamma  @tab - @tab - @tab - @tab - @tab -
address@hidden gammal  @tab - @tab - @tab - @tab 1 @tab 1
address@hidden hypotf  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden hypot  @tab - @tab 1 @tab - @tab - @tab -
address@hidden hypotl  @tab - @tab - @tab - @tab - @tab -
address@hidden ilogbf  @tab - @tab - @tab - @tab - @tab -
address@hidden ilogb  @tab - @tab - @tab - @tab - @tab -
address@hidden ilogbl  @tab - @tab - @tab - @tab - @tab -
address@hidden j0f  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden j0  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden j0l  @tab - @tab - @tab - @tab 2 @tab 1
address@hidden j1f  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden j1  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden j1l  @tab - @tab - @tab - @tab 4 @tab 1
address@hidden jnf  @tab 4 @tab 4 @tab 4 @tab 4 @tab 4
address@hidden jn  @tab 4 @tab 6 @tab 4 @tab 4 @tab 4
address@hidden jnl  @tab - @tab - @tab - @tab 4 @tab 2
address@hidden lgammaf  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden lgamma  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden lgammal  @tab - @tab - @tab - @tab 1 @tab 1
address@hidden lrintf  @tab - @tab - @tab - @tab - @tab -
address@hidden lrint  @tab - @tab - @tab - @tab - @tab -
address@hidden lrintl  @tab - @tab - @tab - @tab - @tab -
address@hidden llrintf  @tab - @tab - @tab - @tab - @tab -
address@hidden llrint  @tab - @tab - @tab - @tab - @tab -
address@hidden llrintl  @tab - @tab - @tab - @tab - @tab -
address@hidden logf  @tab - @tab 1 @tab - @tab - @tab -
address@hidden log  @tab - @tab 1 @tab - @tab - @tab -
address@hidden logl  @tab - @tab - @tab - @tab - @tab -
address@hidden log10f  @tab 2 @tab 1 @tab 2 @tab 2 @tab 2
address@hidden log10  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden log10l  @tab - @tab - @tab - @tab 1 @tab 1
address@hidden log1pf  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden log1p  @tab - @tab 1 @tab - @tab - @tab -
address@hidden log1pl  @tab - @tab - @tab - @tab 1 @tab -
address@hidden log2f  @tab - @tab 1 @tab - @tab - @tab -
address@hidden log2  @tab - @tab 1 @tab - @tab - @tab -
address@hidden log2l  @tab - @tab - @tab - @tab 1 @tab -
address@hidden logbf  @tab - @tab - @tab - @tab - @tab -
address@hidden logb  @tab - @tab - @tab - @tab - @tab -
address@hidden logbl  @tab - @tab - @tab - @tab - @tab -
address@hidden lroundf  @tab - @tab - @tab - @tab - @tab -
address@hidden lround  @tab - @tab - @tab - @tab - @tab -
address@hidden lroundl  @tab - @tab - @tab - @tab - @tab -
address@hidden llroundf  @tab - @tab - @tab - @tab - @tab -
address@hidden llround  @tab - @tab - @tab - @tab - @tab -
address@hidden llroundl  @tab - @tab - @tab - @tab - @tab -
address@hidden modff  @tab - @tab - @tab - @tab - @tab -
address@hidden modf  @tab - @tab - @tab - @tab - @tab -
address@hidden modfl  @tab - @tab - @tab - @tab - @tab -
address@hidden nearbyintf  @tab - @tab - @tab - @tab - @tab -
address@hidden nearbyint  @tab - @tab - @tab - @tab - @tab -
address@hidden nearbyintl  @tab - @tab - @tab - @tab - @tab -
address@hidden nextafterf  @tab - @tab - @tab - @tab - @tab -
address@hidden nextafter  @tab - @tab - @tab - @tab - @tab -
address@hidden nextafterl  @tab - @tab - @tab - @tab - @tab -
address@hidden nexttowardf  @tab - @tab - @tab - @tab - @tab -
address@hidden nexttoward  @tab - @tab - @tab - @tab - @tab -
address@hidden nexttowardl  @tab - @tab - @tab - @tab - @tab -
address@hidden powf  @tab - @tab - @tab - @tab - @tab -
address@hidden pow  @tab - @tab - @tab - @tab - @tab -
address@hidden powl  @tab - @tab - @tab - @tab - @tab -
address@hidden remainderf  @tab - @tab - @tab - @tab - @tab -
address@hidden remainder  @tab - @tab - @tab - @tab - @tab -
address@hidden remainderl  @tab - @tab - @tab - @tab - @tab -
address@hidden remquof  @tab - @tab - @tab - @tab - @tab -
address@hidden remquo  @tab - @tab - @tab - @tab - @tab -
address@hidden remquol  @tab - @tab - @tab - @tab - @tab -
address@hidden rintf  @tab - @tab - @tab - @tab - @tab -
address@hidden rint  @tab - @tab - @tab - @tab - @tab -
address@hidden rintl  @tab - @tab - @tab - @tab - @tab -
address@hidden roundf  @tab - @tab - @tab - @tab - @tab -
address@hidden round  @tab - @tab - @tab - @tab - @tab -
address@hidden roundl  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbf  @tab - @tab - @tab - @tab - @tab -
address@hidden scalb  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbl  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbnf  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbn  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbnl  @tab - @tab - @tab - @tab - @tab -
address@hidden scalblnf  @tab - @tab - @tab - @tab - @tab -
address@hidden scalbln  @tab - @tab - @tab - @tab - @tab -
address@hidden scalblnl  @tab - @tab - @tab - @tab - @tab -
address@hidden sinf  @tab - @tab - @tab - @tab - @tab -
address@hidden sin  @tab - @tab - @tab - @tab - @tab -
address@hidden sinl  @tab - @tab - @tab - @tab - @tab -
address@hidden sincosf  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden sincos  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden sincosl  @tab - @tab - @tab - @tab 1 @tab 1
address@hidden sinhf  @tab - @tab 1 @tab - @tab - @tab -
address@hidden sinh  @tab - @tab 1 @tab - @tab - @tab -
address@hidden sinhl  @tab - @tab - @tab - @tab - @tab -
address@hidden sqrtf  @tab - @tab - @tab - @tab - @tab -
address@hidden sqrt  @tab - @tab - @tab - @tab - @tab -
address@hidden sqrtl  @tab - @tab - @tab - @tab 1 @tab -
address@hidden tanf  @tab - @tab - @tab - @tab - @tab -
address@hidden tan  @tab 1 @tab 0.5 @tab 1 @tab 1 @tab 1
address@hidden tanl  @tab - @tab - @tab - @tab - @tab -
address@hidden tanhf  @tab - @tab 1 @tab - @tab - @tab -
address@hidden tanh  @tab - @tab 1 @tab - @tab - @tab -
address@hidden tanhl  @tab - @tab - @tab - @tab 1 @tab -
address@hidden tgammaf  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden tgamma  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden tgammal  @tab - @tab - @tab - @tab 1 @tab 1
address@hidden truncf  @tab - @tab - @tab - @tab - @tab -
address@hidden trunc  @tab - @tab - @tab - @tab - @tab -
address@hidden truncl  @tab - @tab - @tab - @tab - @tab -
address@hidden y0f  @tab 1 @tab 1 @tab 1 @tab 1 @tab 1
address@hidden y0  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden y0l  @tab - @tab - @tab - @tab 3 @tab 1
address@hidden y1f  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden y1  @tab 3 @tab 3 @tab 3 @tab 3 @tab 3
address@hidden y1l  @tab - @tab - @tab - @tab 1 @tab 1
address@hidden ynf  @tab 2 @tab 2 @tab 2 @tab 2 @tab 2
address@hidden yn  @tab 3 @tab 3 @tab 3 @tab 3 @tab 3
address@hidden ynl  @tab - @tab - @tab - @tab 5 @tab 4
address@hidden multitable
-
-
address@hidden Pseudorandom Numbers
address@hidden Pseudorandom Numbers
address@hidden random numbers
address@hidden pseudorandom numbers
address@hidden seed (for random numbers)
-
-This section describes the @sc{gnu} facilities for generating a series
-of pseudorandom numbers.  The numbers generated are not truly random;
-typically, they form a sequence that repeats periodically, with a period
-so large that you can ignore it for ordinary purposes.  The
-random-number generator works by remembering a @dfn{seed} value, which
-it uses to compute the next random number and also to compute a new
-seed.
-
-Although the generated numbers look unpredictable within one run of a
-program, the sequence of numbers is @emph{exactly the same} from one run
-to the next.  This is because the initial seed is always the same.  This
-is convenient when you are debugging a program, but it is unhelpful if
-you want the program to behave unpredictably.  If you want a different
-pseudorandom series each time your program runs, you must specify a
-different seed each time.  For ordinary purposes, basing the seed on the
-current time works well.
-
-You can obtain repeatable sequences of numbers on a particular machine type
-by specifying the same initial seed value for the random-number
-generator.  There is no standard meaning for a particular seed value;
-the same seed, used in different C libraries or on different @sc{cpu} types,
-will give you different random numbers.
-
-The @sc{gnu} library supports the standard @address@hidden C} random-number 
functions
-plus two other sets derived from @sc{bsd} and @sc{svid}.  The @sc{bsd} and 
@address@hidden C}
-functions provide identical, somewhat limited functionality.  If only a
-small number of random bits are required, we recommend you use the
address@hidden@sc{iso} C} interface, @code{rand} and @code{srand}.  The 
@sc{svid} functions
-provide a more flexible interface, which allows better random-number
-generator algorithms, provides more random bits (up to 48) per call, and
-can provide random floating-point numbers.  These functions are required
-by the @sc{xpg} standard and therefore will be present in all modern Unix
-systems.
-
address@hidden ISO Random
address@hidden @sc{ISO} C Random-Number Functions
-
-This section describes the random-number functions that are part of
-the @sc{ISO} C standard.
-
-To use these facilities, you should include the header file
address@hidden in your program.
address@hidden stdlib.h
-
address@hidden stdlib.h
address@hidden ISO
address@hidden Macro int RAND_MAX
-The value of this macro is an integer constant representing the
-largest value the @code{rand} function can return.  In the @sc{GNU}
-library, it is @code{2147483647}, which is the largest signed integer
-representable in 32 bits.  In other libraries, it may be as low as
address@hidden
address@hidden deftypevr
-
address@hidden stdlib.h
address@hidden ISO
address@hidden int rand (void)
-The @code{rand} function returns the next pseudorandom number in the
-series.  The value ranges from @code{0} to @code{RAND_MAX}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden void srand (unsigned int @var{seed})
-This function establishes @var{seed} as the seed for a new series of
-pseudorandom numbers.  If you call @code{rand} before a seed has been
-established with @code{srand}, it uses the value @code{1} as a default
-seed.
-
-To produce a different pseudorandom series each time your program is
-run, do @code{srand (time (0))}.
address@hidden deftypefun
-
address@hidden extended the C standard functions to support reproducible
-random numbers in multithreaded programs.  However, the extension is
-badly designed and unsuitable for serious work.
-
address@hidden stdlib.h
address@hidden POSIX.1
address@hidden int rand_r (unsigned int address@hidden)
-This function returns a random number in the range 0 to
address@hidden just as @code{rand} does.  However, all its state is
-stored in the @var{seed} argument.  This means the @sc{RNG}'s state
-can only have as many bits as the type @code{unsigned int} has.  This
-is far too few to provide a good @sc{RNG}.
-
-If your program requires a reentrant @sc{RNG}, we recommend you use
-the reentrant @sc{GNU} extensions to the @sc{SVID} random-number
-generator.  The @sc{POSIX}.1 interface should only be used when the
address@hidden extensions are not available.
address@hidden deftypefun
-
-
address@hidden BSD Random
address@hidden @sc{BSD} Random-Number Functions
-
-This section describes a set of random-number generation functions
-that are derived from @sc{BSD}.  There is no advantage to using these
-functions with the GNU C Library; we support them for @sc{BSD}
-compatibility only.
-
-The prototypes for these functions are in @file{stdlib.h}.
address@hidden stdlib.h
-
address@hidden stdlib.h
address@hidden BSD
address@hidden {long int} random (void)
-This function returns the next pseudorandom number in the sequence.
-The value returned ranges from @code{0} to @code{RAND_MAX}.
-
-Temporarily, this function was defined to return a @code{int32_t}
-value to indicate that the return value always contains 32 bits even
-if @code{long int} is wider.  The standard demands it differently.
-Users must always be aware of the 32-bit limitation, though.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden BSD
address@hidden void srandom (unsigned int @var{seed})
-The @code{srandom} function sets the state of the random-number
-generator based on the integer @var{seed}.  If you supply a @var{seed}
-value of @code{1}, this will cause @code{random} to reproduce the
-default set of random numbers.
-
-To produce a different set of pseudorandom numbers each time your
-program runs, do @code{srandom (time (0))}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden BSD
address@hidden {void *} initstate (unsigned int @var{seed}, void 
address@hidden, size_t @var{size})
-The @code{initstate} function is used to initialize the random-number
-generator state.  The argument @var{state} is an array of @var{size}
-bytes, used to hold the state information.  It is initialized based on
address@hidden  The size must be between 8 and 256 bytes, and should be a
-power of two.  The bigger the @var{state} array, the better.
-
-The return value is the previous value of the state information array.
-You can use this value later as an argument to @code{setstate} to
-restore that state.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden BSD
address@hidden {void *} setstate (void address@hidden)
-The @code{setstate} function restores the random-number state
-information @var{state}.  The argument must have been the result of a
-previous call to @var{initstate} or @var{setstate}.
-
-The return value is the previous value of the state information array.
-You can use this value later as an argument to @code{setstate} to
-restore that state.
-
-If the function fails, the return value is @code{NULL}.
address@hidden deftypefun
-
-The four functions described so far in this section all work on a
-state that is shared by all threads.  The state is not directly
-accessible to the user and can only be modified by these functions.
-This makes it hard to deal with situations where each thread should
-have its own pseudorandom-number generator.
-
-The @sc{GNU} C Library contains four additional functions that contain
-the state as an explicit parameter and therefore make it possible to
-handle thread-local @sc{PRNG}s.  Besides this, there are no
-differences.  In fact, the four functions already discussed are
-implemented internally using the following interfaces.
-
-The @file{stdlib.h} header contains a definition of the following type:
-
address@hidden stdlib.h
address@hidden GNU
address@hidden {Data Type} {struct random_data}
-
-Objects of type @code{struct random_data} contain the information
-necessary to represent the state of the @sc{PRNG}.  Although a
-complete definition of the type is present, the type should be treated
-as opaque.
address@hidden deftp
-
-The functions modifying the state follow exactly the already described
-functions.
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int random_r (struct random_data *restrict @var{buf}, int32_t 
*restrict @var{result})
-The @code{random_r} function behaves exactly like the @code{random}
-function, except that it uses and modifies the state in the object
-pointed to by the first parameter instead of the global state.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int srandom_r (unsigned int @var{seed}, struct random_data 
address@hidden)
-The @code{srandom_r} function behaves exactly like the @code{srandom}
-function, except that it uses and modifies the state in the object
-pointed to by the second parameter instead of the global state.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int initstate_r (unsigned int @var{seed}, char *restrict 
@var{statebuf}, size_t @var{statelen}, struct random_data *restrict @var{buf})
-The @code{initstate_r} function behaves exactly like the
address@hidden function, except that it uses and modifies the state
-in the object pointed to by the fourth parameter instead of the global
-state.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int setstate_r (char *restrict @var{statebuf}, struct 
random_data *restrict @var{buf})
-The @code{setstate_r} function behaves exactly like the
address@hidden function, except that it uses and modifies the state
-in the object pointed to by the first parameter instead of the global
-state.
address@hidden deftypefun
-
address@hidden SVID Random
address@hidden @sc{SVID} Random-Number Functions
-
-The C library on @sc{SVID} systems contains yet another kind of
-random-number generator functions.  They use a state of 48 bits of
-data.  The user can choose among a collection of functions that return
-the random bits in different forms.
-
-Generally, there are two kinds of function.  The first uses a state of
-the random-number generator that is shared among several functions and
-by all threads of the process.  The second requires the user to handle
-the state.
-
-All functions have in common that they use the same congruential
-formula with the same constants.  The formula is
-
address@hidden
-Y = (a * X + c) mod m
address@hidden smallexample
-
address@hidden
-where @var{X} is the state of the generator at the beginning and
address@hidden the state at the end.  @code{a} and @code{c} are constants
-determining the way the generator works.  By default they are
-
address@hidden
-a = 0x5DEECE66D = 25214903917
-c = 0xb = 11
address@hidden smallexample
-
address@hidden
-but they can also be changed by the user.  @code{m} is of course 2^48
-since the state consists of a 48-bit array.
-
-The prototypes for these functions are in @file{stdlib.h}.
address@hidden stdlib.h
-
-
address@hidden stdlib.h
address@hidden SVID
address@hidden double drand48 (void)
-This function returns a @code{double} value in the range of @code{0.0}
-to @code{1.0} (exclusive).  The random bits are determined by the global
-state of the random-number generator in the C library.
-
-Since the @code{double} type according to @sc{IEEE} 754 has a 52-bit
-mantissa, 4 bits are not initialized by the random-number generator.
-These are chosen to be the least significant bits and are initialized
-to @code{0}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden SVID
address@hidden double erand48 (unsigned short int @var{xsubi}[3])
-This function returns a @code{double} value in the range of @code{0.0}
-to @code{1.0} (exclusive), similarly to @code{drand48}.  The argument
-is an array describing the state of the random-number generator.
-
-This function can be called subsequently since it updates the array to
-guarantee random numbers.  The array should have been initialized before
-initial use to obtain reproducible results.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden SVID
address@hidden {long int} lrand48 (void)
-The @code{lrand48} function returns an integer value in the range of
address@hidden to @code{2^31} (exclusive).  Even if the size of the @code{long
-int} type can take more than 32 bits, no higher numbers are returned.
-The random bits are determined by the global state of the random-number
-generator in the C library.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden SVID
address@hidden {long int} nrand48 (unsigned short int @var{xsubi}[3])
-This function is similar to the @code{lrand48} function in that it
-returns a number in the range of @code{0} to @code{2^31} (exclusive),
-but the state of the random-number generator used to produce the
-random bits is determined by the array provided as the parameter to
-the function.
-
-The numbers in the array are updated afterwards so that subsequent
-calls to this function yield different results (as is expected of a
-random-number generator).  The array should have been initialized
-before the first call to obtain reproducible results.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden SVID
address@hidden {long int} mrand48 (void)
-The @code{mrand48} function is similar to @code{lrand48}.  The only
-difference is that the numbers returned are in the range @code{-2^31} to
address@hidden (exclusive).
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden SVID
address@hidden {long int} jrand48 (unsigned short int @var{xsubi}[3])
-The @code{jrand48} function is similar to @code{nrand48}.  The only
-difference is that the numbers returned are in the range @code{-2^31} to
address@hidden (exclusive).  For the @code{xsubi} parameter the same
-requirements are necessary.
address@hidden deftypefun
-
-The internal state of the random-number generator can be initialized in
-several ways.  The methods differ in the completeness of the
-information provided.
-
address@hidden stdlib.h
address@hidden SVID
address@hidden void srand48 (long int @var{seedval})
-The @code{srand48} function sets the most significant 32 bits of the
-internal state of the random-number generator to the least
-significant 32 bits of the @var{seedval} parameter.  The lower 16 bits
-are initialized to the value @code{0x330E}.  Even if the @code{long
-int} type contains more than 32 bits, only the lower 32 bits are used.
-
-Owing to this limitation, initialization of the state of this
-function is not very useful.  But it makes it easy to use a construct
-like @code{srand48 (time (0))}.
-
-A side effect of this function is that the values @code{a} and @code{c}
-from the internal state, which are used in the congruential formula,
-are reset to the default values given above.  This is of importance once
-the user has called the @code{lcong48} function (see below).
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden SVID
address@hidden {unsigned short int *} seed48 (unsigned short int 
@var{seed16v}[3])
-The @code{seed48} function initializes all 48 bits of the state of the
-internal random-number generator from the contents of the parameter
address@hidden  Here the lower 16 bits of the first element of
address@hidden initialize the least significant 16 bits of the internal
-state, the lower 16 bits of @address@hidden initialize the mid-order
-16 bits of the state and the 16 lower bits of @address@hidden
-initialize the most significant 16 bits of the state.
-
-Unlike @code{srand48} this function lets the user initialize all 48 bits
-of the state.
-
-The value returned by @code{seed48} is a pointer to an array containing
-the values of the internal state before the change.  This might be
-useful to restart the random-number generator at a certain state.
-Otherwise the value can simply be ignored.
-
-As for @code{srand48}, the values @code{a} and @code{c} from the
-congruential formula are reset to the default values.
address@hidden deftypefun
-
-There is one more function to initialize the random-number generator
-that enables you to specify even more information by allowing you to
-change the parameters in the congruential formula.
-
address@hidden stdlib.h
address@hidden SVID
address@hidden void lcong48 (unsigned short int @var{param}[7])
-The @code{lcong48} function allows the user to change the complete state
-of the random-number generator.  Unlike @code{srand48} and
address@hidden, this function also changes the constants in the
-congruential formula.
-
-From the seven elements in the array @var{param} the least significant
-16 bits of the entries @address@hidden to @address@hidden
-determine the initial state, the least significant 16 bits of
address@hidden@var{param}[3]} to @address@hidden determine the 48-bit
-constant @code{a} and @address@hidden determines the 16-bit value
address@hidden
address@hidden deftypefun
-
-All the above functions have in common that they use the global
-parameters for the congruential formula.  In multithreaded programs,
-it might sometimes be useful to have different parameters in different
-threads.  For this reason, all the above functions have a counterpart
-that works on a description of the random-number generator in the
-user-supplied buffer instead of the global state.
-
-It is no problem if several threads use the global state if all
-threads use the functions that take a pointer to an array containing
-the state.  The random numbers are computed following the same loop,
-but if the state in the array is different, all threads will obtain an
-individual random-number generator.
-
-The user-supplied buffer must be of type @code{struct drand48_data}.
-This type should be regarded as opaque and not manipulated directly.
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int drand48_r (struct drand48_data address@hidden, double 
address@hidden)
-This function is equivalent to the @code{drand48} function with the
-difference that it does not modify the global random-number generator
-parameters but instead the parameters in the buffer supplied through
-the pointer @var{buffer}.  The random number is returned in the
-variable pointed to by @var{result}.
-
-The return value of the function indicates whether the call succeeded.
-If the value is less than @code{0} an error occurred and @var{errno} is
-set to indicate the problem.
-
-This function is a @sc{GNU} extension and should not be used in
-portable programs.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int erand48_r (unsigned short int @var{xsubi}[3], struct 
drand48_data address@hidden, double address@hidden)
-The @code{erand48_r} function works like @code{erand48}, but in
-addition it takes an argument @var{buffer} that describes the
-random-number generator.  The state of the random-number generator is
-taken from the @code{xsubi} array, the parameters for the congruential
-formula from the global random-number generator data.  The random
-number is returned in the variable pointed to by @var{result}.
-
-The return value is nonnegative if the call succeeded.
-
-This function is a @sc{GNU} extension and should not be used in
-portable programs.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int lrand48_r (struct drand48_data address@hidden, double 
address@hidden)
-This function is similar to @code{lrand48}, but in addition it takes a
-pointer to a buffer describing the state of the random-number
-generator just like @code{drand48}.
-
-If the return value of the function is nonnegative, the variable
-pointed to by @var{result} contains the result.  Otherwise an error
-occurred.
-
-This function is a @sc{GNU} extension and should not be used in
-portable programs.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int nrand48_r (unsigned short int @var{xsubi}[3], struct 
drand48_data address@hidden, long int address@hidden)
-The @code{nrand48_r} function works like @code{nrand48} in that it
-produces a random number in the range @code{0} to @code{2^31}.  But
-instead of using the global parameters for the congruential formula,
-it uses the information from the buffer pointed to by @var{buffer}.
-The state is described by the values in @var{xsubi}.
-
-If the return value is nonnegative, the variable pointed to by
address@hidden contains the result.
-
-This function is a @sc{GNU} extension and should not be used in portable
-programs.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int mrand48_r (struct drand48_data address@hidden, double 
address@hidden)
-This function is similar to @code{mrand48}, but like the other
-reentrant functions it uses the random-number generator described by
-the value in the buffer pointed to by @var{buffer}.
-
-If the return value is nonnegative, the variable pointed to by
address@hidden contains the result.
-
-This function is a @sc{GNU} extension and should not be used in
-portable programs.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int jrand48_r (unsigned short int @var{xsubi}[3], struct 
drand48_data address@hidden, long int address@hidden)
-The @code{jrand48_r} function is similar to @code{jrand48}.  Like the
-other reentrant functions of this function family, it uses the
-congruential formula parameters from the buffer pointed to by
address@hidden
-
-If the return value is nonnegative, the variable pointed to by
address@hidden contains the result.
-
-This function is a GNU extension and should not be used in portable
-programs.
address@hidden deftypefun
-
-Before any of the above functions are used, the buffer of type
address@hidden drand48_data} should be initialized.  The easiest way to
-do this is to fill the whole buffer with null bytes, e.g.:
-
address@hidden
-memset (buffer, '\0', sizeof (struct drand48_data));
address@hidden smallexample
-
address@hidden
-Using any of the reentrant functions of this family now will
-automatically initialize the random-number generator to the default
-values for the state and the parameters of the congruential formula.
-
-The other possibility is to use any of the functions that explicitly
-initialize the buffer.  Though it might be obvious how to initialize
-the buffer from looking at the parameter to the function, it is highly
-recommended to use these functions since the result might not always
-be what you expect.
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int srand48_r (long int @var{seedval}, struct drand48_data 
address@hidden)
-The description of the random-number generator represented by the
-information in @var{buffer} is initialized in a similar way to that of
address@hidden The state is initialized from the parameter
address@hidden, and the parameters for the congruential formula are
-initialized to their default values.
-
-If the return value is nonnegative, the function call succeeded.
-
-This function is a @sc{GNU} extension and should not be used in
-portable programs.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int seed48_r (unsigned short int @var{seed16v}[3], struct 
drand48_data address@hidden)
-This function is similar to @code{srand48_r}, but like @code{seed48}
-it initializes all 48 bits of the state from the parameter
address@hidden
-
-If the return value is nonnegative, the function call succeeded.  It
-does not return a pointer to the previous state of the random-number
-generator like the @code{seed48} function does.  If the user wants to
-preserve the state for a later rerun, she can copy the whole buffer
-pointed to by @var{buffer}.
-
-This function is a @sc{GNU} extension and should not be used in
-portable programs.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int lcong48_r (unsigned short int @var{param}[7], struct 
drand48_data address@hidden)
-This function initializes all aspects of the random-number generator
-described in @var{buffer} with the data in @var{param}.  Here it is
-especially true that the function does more than just copying the
-contents of @var{param} and @var{buffer}.  More work is required and
-therefore it is important to use this function rather than
-initializing the random-number generator directly.
-
-If the return value is nonnegative, the function call succeeded.
-
-This function is a @sc{GNU} extension and should not be used in
-portable programs.
address@hidden deftypefun
-
address@hidden FP Function Optimizations
address@hidden Is Fast Code or Small Code Preferred?
address@hidden optimization
-
-If an application uses many floating-point functions, it is often the
-case that the cost of the function calls themselves is not negligible.
-Modern processors can often execute the operations themselves very
-fast, but the function call disrupts the instruction pipeline.
-
-For this reason, the @sc{GNU} C Library provides optimizations for
-many of the frequently used math functions.  When @sc{GNU CC} is used
-and the user activates the optimizer, several new in-line functions
-and macros are defined.  These new functions and macros have the same
-names as the library functions and so are used instead of the latter.
-In the case of in-line functions, the compiler will decide whether it
-is reasonable to use them, and this decision is usually correct.
-
-This means that calls to the library functions may be unnecessary, and
-can increase the speed of generated code significantly.  The drawback
-is that code size will increase, and the increase is not always
-negligible.
-
-There are two kind of in-line functions: those that give the same
-result as the library functions, and others that might not set
address@hidden and might have a reduced precision or argument range in
-comparison with the library functions.  The latter in-line functions
-are only available if the flag @code{-ffast-math} is given to @sc{GNU
-CC}.
-
-In cases where the in-line functions and macros are not wanted, the
-symbol @code{__NO_MATH_INLINES} should be defined before any system
-header is included.  This will ensure that only library functions are
-used.  Of course, it can be determined for each file in the project
-whether giving this option is preferable or not.
-
-Not all hardware implements the entire @sc{IEEE} 754 standard, and
-even if it does there may be a substantial performance penalty for
-using some of its features.  For example, enabling traps on some
-processors forces the @sc{FPU} to run unpipelined, which can more
-than double calculation time.
address@hidden ***Add explanation of -lieee, -mieee.
-
address@hidden Arithmetic, Date and Time, Mathematics, Top
address@hidden %MENU% Low level arithmetic functions
address@hidden Arithmetic Functions
-
-This chapter contains information about functions for doing basic
-arithmetic operations, such as splitting a float into its integer and
-fractional parts or retrieving the imaginary part of a complex value.
-These functions are declared in the header files @file{math.h} and
address@hidden
-
address@hidden Integers
address@hidden Integers
address@hidden integer
-
-The C language defines several integer data types: integer, short
-integer, long integer, and character; all in both signed and unsigned
-varieties.  The @sc{gnu} C Compiler extends the language to contain long
-long integers as well.
address@hidden signedness
-
-The C integer types were intended to allow code to be portable among
-machines with different inherent data sizes (word sizes), so each type
-may have different ranges on different machines.  The problem with
-this is that a program often needs to be written for a particular range
-of integers, and sometimes must be written for a particular size of
-storage, regardless of what machine the program runs on.
-
-To address this problem, the @sc{gnu} C Library contains C type definitions
-you can use to declare integers that meet your exact needs.  Because the
address@hidden C Library header files are customized to a specific machine, your
-program source code doesn't have to be.
-
-These @code{typedef}s are in @file{stdint.h}.
address@hidden stdint.h
-
-If you require that an integer be represented in exactly N bits, use one
-of the following types, with the obvious mapping to bit size and signedness:
-
address@hidden @bullet
address@hidden int8_t
address@hidden int16_t
address@hidden int32_t
address@hidden int64_t
address@hidden uint8_t
address@hidden uint16_t
address@hidden uint32_t
address@hidden uint64_t
address@hidden itemize
-
-If your C compiler and target machine do not allow integers of a certain
-size, the corresponding above type does not exist.
-
-If you don't need a specific storage size, but want the smallest data
-structure with @emph{at least} N bits, use one of these:
-
address@hidden @bullet
address@hidden int_least8_t
address@hidden int_least16_t
address@hidden int_least32_t
address@hidden int_least64_t
address@hidden uint_least8_t
address@hidden uint_least16_t
address@hidden uint_least32_t
address@hidden uint_least64_t
address@hidden itemize
-
-If you don't need a specific storage size, but want the data structure
-that allows the fastest access while having at least N bits (and
-among data structures with the same access speed, the smallest one), use
-one of these:
-
address@hidden @bullet
address@hidden int_fast8_t
address@hidden int_fast16_t
address@hidden int_fast32_t
address@hidden int_fast64_t
address@hidden uint_fast8_t
address@hidden uint_fast16_t
address@hidden uint_fast32_t
address@hidden uint_fast64_t
address@hidden itemize
-
-If you want an integer with the widest range possible on the platform on
-which it is being used, use one of the following.  If you use these,
-you should write code that takes into account the variable size and range
-of the integer.
-
address@hidden @bullet
address@hidden intmax_t
address@hidden uintmax_t
address@hidden itemize
-
-The @sc{gnu} C Library also provides macros that tell you the maximum
-and minimum possible values for each integer data type.  The macro names
-follow these examples: @code{INT32_MAX}, @code{UINT8_MAX},
address@hidden, @code{INT_LEAST64_MIN}, @code{UINTMAX_MAX},
address@hidden, @code{INTMAX_MIN}.  There are no macros for unsigned
-integer minima.  These are always zero.
address@hidden maximum possible integer
address@hidden minimum possible integer
-
-There are similar macros for use with C's built in integer types that
-should come with your C address@hidden Loosemore, et al., ``Data
-Type Measurements'' (see chap. 1, n. 1).}
-
-Don't forget that you can use the C @code{sizeof} function with any of these
-data types to get the number of bytes of storage each uses.
-
-
address@hidden Integer Division
address@hidden Integer Division
address@hidden integer division functions
-
-This section describes functions for performing integer division.  These
-functions are redundant when @sc{gnu} CC is used, because in @sc{gnu} C
-the @samp{/} operator always rounds toward zero.  But in other C
-implementations, @samp{/} may round differently with negative arguments.
address@hidden and @code{ldiv} are useful because they specify how to round
-the quotient---toward zero.  The remainder has the same sign as the
-numerator.
-
-These functions are specified to return a result @var{r} such that the value
address@hidden@address@hidden + @var{r}.rem} equals
address@hidden
-
address@hidden stdlib.h
-To use these facilities, you should include the header file
address@hidden in your program.
-
address@hidden stdlib.h
address@hidden ISO
address@hidden {Data Type} div_t
-This is a structure type used to hold the result returned by the @code{div}
-function.  It has the following members:
-
address@hidden @code
address@hidden int quot
-The quotient from the division
-
address@hidden int rem
-The remainder from the division
address@hidden table
address@hidden deftp
-
address@hidden stdlib.h
address@hidden ISO
address@hidden div_t div (int @var{numerator}, int @var{denominator})
-This function @code{div} computes the quotient and remainder from
-the division of @var{numerator} by @var{denominator}, returning the
-result in a structure of type @code{div_t}.
-
-If the result cannot be represented (as in a division by zero), the
-behavior is undefined.
-
-Here is an example, albeit not a very useful one:
-
address@hidden
-div_t result;
-result = div (20, -6);
address@hidden smallexample
-
address@hidden
-Now @code{result.quot} is @code{-3} and @code{result.rem} is @code{2}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden {Data Type} ldiv_t
-This is a structure type used to hold the result returned by the @code{ldiv}
-function.  It has the following members:
-
address@hidden @code
address@hidden long int quot
-The quotient from the division
-
address@hidden long int rem
-The remainder from the division
address@hidden table
-
-This is identical to @code{div_t}, except that the components are of
-type @code{long int} rather than @code{int}.
address@hidden deftp
-
address@hidden stdlib.h
address@hidden ISO
address@hidden ldiv_t ldiv (long int @var{numerator}, long int 
@var{denominator})
-The @code{ldiv} function is similar to @code{div}, except that the
-arguments are of type @code{long int} and the result is returned as a
-structure of type @code{ldiv_t}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden {Data Type} lldiv_t
-This is a structure type used to hold the result returned by the @code{lldiv}
-function.  It has the following members:
-
address@hidden @code
address@hidden long long int quot
-The quotient from the division
-
address@hidden long long int rem
-The remainder from the division
address@hidden table
-
-This is identical to @code{div_t}, except that the components are of
-type @code{long long int} rather than @code{int}.
address@hidden deftp
-
address@hidden stdlib.h
address@hidden ISO
address@hidden lldiv_t lldiv (long long int @var{numerator}, long long int 
@var{denominator})
-The @code{lldiv} function is like the @code{div} function, but the
-arguments are of type @code{long long int} and the result is returned as
-a structure of type @code{lldiv_t}.
-
-The @code{lldiv} function was added in @address@hidden C99}.
address@hidden deftypefun
-
address@hidden inttypes.h
address@hidden ISO
address@hidden {Data Type} imaxdiv_t
-This is a structure type used to hold the result returned by the @code{imaxdiv}
-function.  It has the following members:
-
address@hidden @code
address@hidden intmax_t quot
-The quotient from the division
-
address@hidden intmax_t rem
-The remainder from the division
address@hidden table
-
-This is identical to @code{div_t}, except that the components are of
-type @code{intmax_t} rather than @code{int} (@pxref{Integers} for a
-description of the @code{intmax_t} type).
-
address@hidden deftp
-
address@hidden inttypes.h
address@hidden ISO
address@hidden imaxdiv_t imaxdiv (intmax_t @var{numerator}, intmax_t 
@var{denominator})
-The @code{imaxdiv} function is like the @code{div} function, but the
-arguments are of type @code{intmax_t} and the result is returned as a
-structure of type @code{imaxdiv_t} (@pxref{Integers} for a description
-of the @code{intmax_t} type).
-
-The @code{imaxdiv} function was added in @address@hidden C99}.
address@hidden deftypefun
-
-
address@hidden Floating-Point Numbers
address@hidden Floating-Point Numbers
address@hidden floating point
address@hidden @sc{ieee} 754
address@hidden @sc{ieee} floating point
-
-Most computer hardware has support for two different kinds of numbers:
-integers (@address@hidden, -2, -1, 0, 1, 2, address@hidden) and
-floating-point numbers.  Floating-point numbers have three parts: the
address@hidden, the @dfn{exponent} and the @dfn{sign bit}.  The real
-number represented by a floating-point value is given by
address@hidden
-$(s \mathrel? -1 \mathrel: 1) \cdot 2^e \cdot M$
address@hidden tex
address@hidden
address@hidden(s ? -1 : 1) @mul{} 2^e @mul{} M}
address@hidden ifnottex
-where @math{s} is the sign bit, @math{e} the exponent, and @math{M} the
address@hidden, ``Floating-Point Representation Concepts''.} It is possible to
-have a different @dfn{base} for the exponent, but all modern hardware
-uses @math{2}.
-
-Floating-point numbers can represent a finite subset of the real
-numbers.  While this subset is large enough for most purposes, it is
-important to remember that the only reals that can be represented
-exactly are rational numbers that have a terminating binary expansion
-shorter than the width of the mantissa.  Even simple fractions such as
address@hidden/5} can only be approximated by floating point.
-
-Mathematical operations and functions frequently need to produce values
-that are not representable.  Often these values can be approximated
-closely enough for practical purposes, but sometimes they can't.
-Historically there was no way to tell when the results of a calculation
-were inaccurate.  Modern computers implement the @address@hidden 754} standard
-for numerical computations, which defines a framework for indicating to
-the program when the results of calculation are not trustworthy.  This
-framework consists of a set of @dfn{exceptions} that indicate why a
-result could not be represented, and the special values @dfn{infinity}
-and @dfn{not a number} (NaN).
-
address@hidden Floating-Point Classes
address@hidden Floating-Point Number Classification Functions
address@hidden floating-point classes
address@hidden classes, floating-point
address@hidden math.h
-
address@hidden@sc{iso} C99} defines macros that let you determine what sort of
-floating-point number a variable holds.
-
address@hidden math.h
address@hidden ISO
address@hidden {Macro} int fpclassify (@emph{float-type} @var{x})
-This is a generic macro that works on all floating-point types and that
-returns a value of type @code{int}.  The possible values are
-
address@hidden @code
address@hidden FP_NAN
-The floating-point number @var{x} is @dfn{Not a Number} (@pxref{Infinity
-and NaN}).
address@hidden FP_INFINITE
-The value of @var{x} is either plus or minus infinity (@pxref{Infinity
-and NaN}).
address@hidden FP_ZERO
-The value of @var{x} is zero.  In floating-point formats like @address@hidden
-754}, where zero can be signed, this value is also returned if
address@hidden is negative zero.
address@hidden FP_SUBNORMAL
-Numbers whose absolute value is too small to be represented in the
-normal format are represented in an alternate, @dfn{de-normalized}
address@hidden, ``Floating-Point Representation Concepts''.}  This format is 
less
-precise but can represent values closer to zero.  @code{fpclassify}
-returns this value for values of @var{x} in this alternate format.
address@hidden FP_NORMAL
-This value is returned for all other values of @var{x}.  It indicates
-that there is nothing special about the number.
address@hidden vtable
-
address@hidden deftypefn
-
address@hidden is most useful if more than one property of a number
-must be tested.  There are more specific macros, which only test one
-property at a time.  Generally these macros execute faster than
address@hidden, since there is special hardware support for them.
-You should therefore use the specific macros whenever possible.
-
address@hidden math.h
address@hidden ISO
address@hidden {Macro} int isfinite (@emph{float-type} @var{x})
-This macro returns a nonzero value if @var{x} is finite---not plus or
-minus infinity, and not NaN.  It is equivalent to:
-
address@hidden
-(fpclassify (x) != FP_NAN && fpclassify (x) != FP_INFINITE)
address@hidden smallexample
-
address@hidden is implemented as a macro that accepts any
-floating-point type.
address@hidden deftypefn
-
address@hidden math.h
address@hidden ISO
address@hidden {Macro} int isnormal (@emph{float-type} @var{x})
-This macro returns a nonzero value if @var{x} is finite and normalized.
-It is equivalent to:
-
address@hidden
-(fpclassify (x) == FP_NORMAL)
address@hidden smallexample
address@hidden deftypefn
-
address@hidden math.h
address@hidden ISO
address@hidden {Macro} int isnan (@emph{float-type} @var{x})
-This macro returns a nonzero value if @var{x} is NaN.  It is equivalent
-to:
-
address@hidden
-(fpclassify (x) == FP_NAN)
address@hidden smallexample
address@hidden deftypefn
-
-Another set of floating-point classification functions was provided by
address@hidden  The @sc{gnu} C Library also supports these functions; however, 
we
-recommend that you use the @sc{iso} C99 macros in new code.  Those are standard
-and will be available more widely.  Also, since they are macros, you do
-not have to worry about the type of their argument.
-
address@hidden math.h
address@hidden BSD
address@hidden int isinf (double @var{x})
address@hidden math.h
address@hidden BSD
address@hidden int isinff (float @var{x})
address@hidden math.h
address@hidden BSD
address@hidden int isinfl (long double @var{x})
-This function returns @code{-1} if @var{x} represents negative infinity,
address@hidden if @var{x} represents positive infinity, and @code{0} otherwise.
address@hidden deftypefun
-
address@hidden math.h
address@hidden BSD
address@hidden int isnan (double @var{x})
address@hidden math.h
address@hidden BSD
address@hidden int isnanf (float @var{x})
address@hidden math.h
address@hidden BSD
address@hidden int isnanl (long double @var{x})
-This function returns a nonzero value if @var{x} is a @dfn{Not a Number}
-value, and zero otherwise.
-
-The @code{isnan} macro defined by @address@hidden C99} overrides the
address@hidden function.  This is normally not a problem, because the two
-routines behave identically.  However, if you really need to get the
address@hidden function for some reason, you can write:
-
address@hidden
-(isnan) (x)
address@hidden smallexample
address@hidden deftypefun
-
address@hidden math.h
address@hidden BSD
address@hidden int finite (double @var{x})
address@hidden math.h
address@hidden BSD
address@hidden int finitef (float @var{x})
address@hidden math.h
address@hidden BSD
address@hidden int finitel (long double @var{x})
-This function returns a nonzero value if @var{x} is finite or a @dfn{Not
-a Number} value, and zero otherwise.
address@hidden deftypefun
-
address@hidden Note:} The functions listed in this section are @sc{bsd}
-extensions.
-
-
address@hidden Floating-Point Errors
address@hidden Errors in Floating-Point Calculations
-
address@hidden FP Exceptions
address@hidden FP Exceptions
address@hidden exception
address@hidden signal
address@hidden zero divide
address@hidden division by zero
address@hidden inexact exception
address@hidden invalid exception
address@hidden overflow exception
address@hidden underflow exception
-
-The @address@hidden 754} standard defines five @dfn{exceptions} that can occur
-during a calculation.  Each corresponds to a particular sort of error,
-such as overflow.
-
-When exceptions occur (when exceptions are @dfn{raised}, in the language
-of the standard), one of two things can happen.  By default, the
-exception is simply noted in the floating-point @dfn{status word}, and
-the program continues as if nothing had happened.  The operation
-produces a default value, which depends on the exception (see the table
-below).  Your program can check the status word to find out which
-exceptions happened.
-
-Alternatively, you can enable @dfn{traps} for exceptions.  In that case,
-when an exception is raised, your program will receive the @code{SIGFPE}
-signal.  The default action for this signal is to terminate the
address@hidden how you can change the effect of the signal, see
-Loosemore et al., ``Signal Handling''.}
-
address@hidden matherr
-In the System V math library, the user-defined function @code{matherr}
-is called when certain exceptions occur inside math library functions.
-However, the Unix98 standard deprecates this interface.  We support it
-for historical compatibility, but recommend that you do not use it in
-new programs.
-
address@hidden
-The exceptions defined in @address@hidden 754} are
-
address@hidden @samp
address@hidden Invalid Operation
-This exception is raised if the given operands are invalid for the
-operation to be performed.  Examples are
-(see @address@hidden 754}, @w{section 7}):
address@hidden
address@hidden
-Addition or subtraction: @address@hidden - @infinity{}} (but
address@hidden@infinity{} + @infinity{} = @infinity{}})
address@hidden
-Multiplication: @math{0 @mul{} @infinity{}}
address@hidden
-Division: @math{0/0} or @address@hidden/@infinity{}}
address@hidden
-Remainder: @math{x} REM @math{y}, where @math{y} is zero or @math{x} is
-infinite
address@hidden
-Square root if the operand is less then zero; more generally, any
-mathematical function evaluated outside its domain produces this
-exception
address@hidden
-Conversion of a floating-point number to an integer or decimal
-string, when the number cannot be represented in the target format (due
-to overflow, infinity, or NaN)
address@hidden
-Conversion of an unrecognizable input string
address@hidden
-Comparison via predicates involving @math{<} or @math{>}, when one or
-the other of the operands is NaN; you can prevent this exception by
-using the unordered comparison functions instead (@pxref{FP Comparison
-Functions})
address@hidden enumerate
-
-If the exception does not trap, the result of the operation is NaN.
-
address@hidden Division by Zero
-This exception is raised when a finite nonzero number is divided by
-zero.  If no trap occurs, the result is either @address@hidden or
address@hidden@infinity{}}, depending on the signs of the operands.
-
address@hidden Overflow
-This exception is raised whenever the result cannot be represented as a
-finite value in the precision format of the destination.  If no trap
-occurs, the result depends on the sign of the intermediate result and
-the current rounding mode (@address@hidden 754}, @w{section 7.3}):
address@hidden
address@hidden
-Round to nearest carries all overflows to @address@hidden
-with the sign of the intermediate result.
address@hidden
-Round toward @math{0} carries all overflows to the largest representable
-finite number with the sign of the intermediate result.
address@hidden
-Round toward @address@hidden carries positive overflows to the
-largest representable finite number and negative overflows to
address@hidden@infinity{}}.
-
address@hidden
-Round toward @address@hidden carries negative overflows to the
-most negative representable finite number and positive overflows
-to @address@hidden
address@hidden enumerate
-
-Whenever the overflow exception is raised, the inexact exception is also
-raised.
-
address@hidden Underflow
-The underflow exception is raised when an intermediate result is too
-small to be calculated accurately, or if the operation's result rounded
-to the destination precision is too small to be normalized.
-
-When no trap is installed for the underflow exception, underflow is
-signaled (via the underflow flag) only when both tininess and loss of
-accuracy have been detected.  If no trap handler is installed, the
-operation continues with an imprecise small value, or zero if the
-destination precision cannot hold the small exact result.
-
address@hidden Inexact
-This exception is signalled if a rounded result is not exact (such as
-when calculating the square root of two) or a result overflows without
-an overflow trap.
address@hidden table
-
address@hidden Infinity and NaN
address@hidden Infinity and NaN
address@hidden infinity
address@hidden not a number
address@hidden NaN
-
address@hidden@sc{ieee} 754} floating-point numbers can represent positive or 
negative
-infinity, and @dfn{NaN} (not a number).  These three values arise from
-calculations whose result is undefined or cannot be represented
-accurately.  You can also deliberately set a floating-point variable to
-any of them, which is sometimes useful.  Some examples of calculations
-that produce infinity or NaN:
-
address@hidden
address@hidden
address@hidden/0 = @infinity{}}
address@hidden (0) = address@hidden
address@hidden (-1) = NaN}
address@hidden smallexample
address@hidden ifnottex
address@hidden
-$${1\over0} = \infty$$
-$$\log 0 = -\infty$$
-$$\sqrt{-1} = \hbox{NaN}$$
address@hidden tex
-
-When a calculation produces any of these values, an exception also
-occurs (@pxref{FP Exceptions}).
-
-The basic operations and math functions all accept infinity and NaN and
-produce sensible output.  Infinities propagate through calculations as
-one would expect: for example, @math{2 + @infinity{} = @infinity{}},
address@hidden/@infinity{} = 0}, atan @math{(@infinity{}) = @pi{}/2}.  NaN, on
-the other hand, infects any calculation that involves it.  Unless the
-calculation would produce the same result no matter what real value
-replaced NaN, the result is NaN.
-
-In comparison operations, positive infinity is larger than all values
-except itself and NaN, and negative infinity is smaller than all values
-except itself and NaN.  NaN is @dfn{unordered}: it is not equal to,
-greater than, or less than anything, @emph{including itself}. @code{x ==
-x} is false if the value of @code{x} is NaN.  You can use this to test
-whether a value is NaN or not, but the recommended way to test for NaN
-is with the @code{isnan} function (@pxref{Floating-Point Classes}).  In
-addition, @code{<}, @code{>}, @code{<=} and @code{>=} will raise an
-exception when applied to NaNs.
-
address@hidden defines macros that allow you to explicitly set a variable
-to infinity or NaN.
-
address@hidden math.h
address@hidden ISO
address@hidden Macro float INFINITY
-An expression representing positive infinity.  It is equal to the value
-produced  by mathematical operations like @code{1.0 / 0.0}.
address@hidden represents negative infinity.
-
-You can test whether a floating-point value is infinite by comparing it
-to this macro.  However, this is not recommended; you should use the
address@hidden macro instead (@pxref{Floating-Point Classes}).
-
-This macro was introduced in the @address@hidden C99} standard.
address@hidden deftypevr
-
address@hidden math.h
address@hidden GNU
address@hidden Macro float NAN
-An expression representing a value which is @dfn{not a number}.  This
-macro is a @sc{gnu} extension, available only on machines that support the
address@hidden a number} value---that is to say, on all machines that support
address@hidden floating point.
-
-You can use @samp{#ifdef NAN} to test whether the machine supports
-NaN.  (Of course, you must arrange for @sc{gnu} extensions to be visible,
-such as by defining @code{_GNU_SOURCE}, and then you must include
address@hidden)
address@hidden deftypevr
-
address@hidden@sc{ieee} 754} also allows for another unusual value: negative 
zero.  This
-value is produced when you divide a positive number by negative
-infinity, or when a negative result is smaller than the limits of
-representation.  Negative zero behaves identically to zero in all
-calculations, unless you explicitly test the sign bit with
address@hidden or @code{copysign}.
-
address@hidden Status bit operations
address@hidden Examining the FPU Status Word
-
address@hidden@sc{iso} C99} defines functions to query and manipulate the
-floating-point status word.  You can use these functions to check for
-untrapped exceptions when it's convenient, rather than worrying about
-them in the middle of a calculation.
-
-These constants represent the various @address@hidden 754} exceptions.  Not all
-FPUs report all the different exceptions.  Each constant is defined if
-and only if the FPU you are compiling for supports that exception, so
-you can test for FPU support with @samp{#ifdef}.  They are defined in
address@hidden
-
address@hidden @code
address@hidden fenv.h
address@hidden ISO
address@hidden FE_INEXACT
- The inexact exception
address@hidden fenv.h
address@hidden ISO
address@hidden FE_DIVBYZERO
- The divide by zero exception
address@hidden fenv.h
address@hidden ISO
address@hidden FE_UNDERFLOW
- The underflow exception
address@hidden fenv.h
address@hidden ISO
address@hidden FE_OVERFLOW
- The overflow exception
address@hidden fenv.h
address@hidden ISO
address@hidden FE_INVALID
- The invalid exception
address@hidden vtable
-
-The macro @code{FE_ALL_EXCEPT} is the bit-wise OR of all exception
-macros that are supported by the FP implementation.
-
-These functions allow you to clear exception flags, test for exceptions,
-and save and restore the set of exceptions flagged.
-
address@hidden fenv.h
address@hidden ISO
address@hidden int feclearexcept (int @var{excepts})
-This function clears all of the supported exception flags indicated by
address@hidden
-
-The function returns zero when the operation was successful and a
-nonzero value otherwise.
address@hidden deftypefun
-
address@hidden fenv.h
address@hidden ISO
address@hidden int feraiseexcept (int @var{excepts})
-This function raises the supported exceptions indicated by
address@hidden  If more than one exception bit in @var{excepts} is
-set, the order in which the exceptions are raised is undefined except
-that overflow (@code{FE_OVERFLOW}) or underflow (@code{FE_UNDERFLOW})
-are raised before inexact (@code{FE_INEXACT}).  For overflow or
-underflow, whether the inexact exception is also raised is
-implementation dependent.
-
-The function returns zero when the operation was successful and a nonzero
-value otherwise.
address@hidden deftypefun
-
address@hidden fenv.h
address@hidden ISO
address@hidden int fetestexcept (int @var{excepts})
-Test whether the exception flags indicated by the parameter @var{except}
-are currently set.  If any of them are, a nonzero value is returned,
-which specifies which exceptions are set.  Otherwise, the result is
-zero.
address@hidden deftypefun
-
-To understand these functions, imagine that the status word is an
-integer variable named @var{status}.  @code{feclearexcept} is then
-equivalent to @samp{status &= ~excepts} and @code{fetestexcept} is
-equivalent to @samp{(status & excepts)}.  The actual implementation may
-be very different, of course.
-
-Exception flags are only cleared when the program explicitly requests it,
-by calling @code{feclearexcept}.  If you want to check for exceptions
-from a set of calculations, you should clear all the flags first.  Here
-is a simple example of the way to use @code{fetestexcept}:
-
address@hidden
address@hidden
-  double f;
-  int raised;
-  feclearexcept (FE_ALL_EXCEPT);
-  f = compute ();
-  raised = fetestexcept (FE_OVERFLOW | FE_INVALID);
-  if (raised & FE_OVERFLOW) @{ /* @dots{} */ @}
-  if (raised & FE_INVALID) @{ /* @dots{} */ @}
-  /* @dots{} */
address@hidden
address@hidden smallexample
-
-You cannot explicitly set bits in the status word.  You can, however,
-save the entire status word and restore it later.  This is done with the
-following functions:
-
address@hidden fenv.h
address@hidden ISO
address@hidden int fegetexceptflag (fexcept_t address@hidden, int @var{excepts})
-This function stores in the variable pointed to by @var{flagp} an
-implementation-defined value representing the current setting of the
-exception flags indicated by @var{excepts}.
-
-The function returns zero if the operation was successful and a nonzero
-value otherwise.
address@hidden deftypefun
-
address@hidden fenv.h
address@hidden ISO
address@hidden int fesetexceptflag (const fexcept_t address@hidden, int 
@var{excepts})
-This function restores the flags for the exceptions indicated by
address@hidden to the values stored in the variable pointed to by
address@hidden
-
-The function returns zero if the operation was successful and a nonzero
-value otherwise.
address@hidden deftypefun
-
-The value stored in @code{fexcept_t} bears no resemblance to the bit
-mask returned by @code{fetestexcept}.  The type may not even be an
-integer.  Do not attempt to modify an @code{fexcept_t} variable.
-
address@hidden Math Error Reporting
address@hidden Error Reporting by Mathematical Functions
address@hidden errors, mathematical
address@hidden domain error
address@hidden range error
-
-Many of the math functions are defined only over a subset of the real or
-complex numbers.  Even if they are mathematically defined, their result
-may be larger or smaller than the range representable by their return
-type.  These are known as @dfn{domain errors}, @dfn{overflows}, and
address@hidden, respectively.  Math functions do several things when
-one of these errors occurs.  In this manual we will refer to the
-complete response as @dfn{signalling} a domain error, overflow, or
-underflow.
-
-When a math function suffers a domain error, it raises the invalid
-exception and returns NaN.  It also sets @var{errno} to @code{EDOM};
-this is for compatibility with old systems that do not support @address@hidden
-754} exception handling.  Likewise, when overflow occurs, math
-functions raise the overflow exception and return @address@hidden or
address@hidden@infinity{}} as appropriate.  They also set @var{errno} to
address@hidden  When underflow occurs, the underflow exception is
-raised, and zero (appropriately signed) is returned.  @var{errno} may be
-set to @code{ERANGE}, but this is not guaranteed.
-
-Some of the math functions are defined mathematically to result in a
-complex value over parts of their domains.  The most familiar example of
-this is taking the square root of a negative number.  The complex math
-functions, such as @code{csqrt}, will return the appropriate complex value
-in this case.  The real-valued functions, such as @code{sqrt}, will
-signal a domain error.
-
-Some older hardware does not support infinities.  On that hardware,
-overflows instead return a particular very large number (usually the
-largest representable number).  @file{math.h} defines macros you can use
-to test for overflow on both old and new hardware.
-
address@hidden math.h
address@hidden ISO
address@hidden Macro double HUGE_VAL
address@hidden math.h
address@hidden ISO
address@hidden Macro float HUGE_VALF
address@hidden math.h
address@hidden ISO
address@hidden Macro {long double} HUGE_VALL
-An expression representing a particular very large number.  On machines
-that use @address@hidden 754} floating-point format, @code{HUGE_VAL} is 
infinity.
-On other machines, it's typically the largest positive number that can
-be represented.
-
-Mathematical functions return the appropriately typed version of
address@hidden or @address@hidden when the result is too large
-to be represented.
address@hidden deftypevr
-
address@hidden Rounding
address@hidden Rounding Modes
-
-Floating-point calculations are carried out internally with extra
-precision, and then rounded to fit into the destination type.  This
-ensures that results are as precise as the input data.  @address@hidden 754}
-defines four possible rounding modes:
-
address@hidden @dfn
address@hidden Round to nearest
-This is the default mode.  It should be used unless there is a specific
-need for one of the others.  In this mode, results are rounded to the
-nearest representable value.  If the result is midway between two
-representable values, the even representable is chosen. @dfn{Even} here
-means the lowest-order bit is zero.  This rounding mode prevents
-statistical bias and guarantees numeric stability---round-off errors in
-a lengthy calculation will remain smaller than half of
address@hidden
-
address@hidden @item Round toward @address@hidden
address@hidden Round toward plus Infinity.
-All results are rounded to the smallest representable value that is
-greater than the result.
-
address@hidden @item Round toward @address@hidden
address@hidden Round toward minus Infinity.
-All results are rounded to the largest representable value that is less
-than the result.
-
address@hidden Round toward zero
-All results are rounded to the largest representable value whose
-magnitude is less than that of the result.  In other words, if the
-result is negative, it is rounded up; if it is positive, it is rounded
-down.
address@hidden table
-
address@hidden
address@hidden defines constants which you can use to refer to the
-various rounding modes.  Each one will be defined if and only if the FPU
-supports the corresponding rounding mode.
-
address@hidden @code
address@hidden fenv.h
address@hidden ISO
address@hidden FE_TONEAREST
address@hidden FE_TONEAREST
-Round to nearest
-
address@hidden fenv.h
address@hidden ISO
address@hidden FE_UPWARD
address@hidden FE_UPWARD
-Round toward @address@hidden
-
address@hidden fenv.h
address@hidden ISO
address@hidden FE_DOWNWARD
address@hidden FE_DOWNWARD
-Round toward @address@hidden
-
address@hidden fenv.h
address@hidden ISO
address@hidden FE_TOWARDZERO
address@hidden FE_TOWARDZERO
-Round toward zero
address@hidden table
-
-Underflow is an unusual case.  Normally, @address@hidden 754} floating-point
-numbers are always address@hidden, ``Floating-Point Representation Concepts''.}
-Numbers smaller than @math{2^r} (where @math{r} is the minimum exponent,
address@hidden for @var{float}) cannot be represented as
-normalized numbers.  Rounding all such numbers to zero or @math{2^r}
-would cause some algorithms to fail at 0.  Therefore, they are left in
-de-normalized form.  That produces loss of precision, since some bits of
-the mantissa are stolen to indicate the decimal point.
-
-If a result is too small to be represented as a de-normalized number, it
-is rounded to zero.  However, the sign of the result is preserved; if
-the calculation was negative, the result is @dfn{negative zero}.
-Negative zero can also result from some operations on infinity, such as
address@hidden/address@hidden  Negative zero behaves identically to zero except
-when the @code{copysign} or @code{signbit} functions are used to check
-the sign bit directly.
-
-At any time one of the above four rounding modes is selected.  You can
-find out which one with this function:
-
address@hidden fenv.h
address@hidden ISO
address@hidden int fegetround (void)
-Returns the currently selected rounding mode, represented by one of the
-values of the defined rounding mode macros.
address@hidden deftypefun
-
address@hidden
-To change the rounding mode, use this function:
-
address@hidden fenv.h
address@hidden ISO
address@hidden int fesetround (int @var{round})
-Changes the currently selected rounding mode to @var{round}.  If
address@hidden does not correspond to one of the supported rounding modes
-nothing is changed.  @code{fesetround} returns zero if it changed the
-rounding mode and a nonzero value if the mode is not supported.
address@hidden deftypefun
-
-You should avoid changing the rounding mode if possible.  It can be an
-expensive operation; also, some hardware requires you to compile your
-program differently for it to work.  The resulting code may run slower.
-See your compiler documentation for details.
address@hidden This section used to claim that functions existed to round one 
number
address@hidden in a specific fashion.  I can't find any functions in the library
address@hidden that do that. -zw
-
address@hidden Control Functions
address@hidden Floating-Point Control Functions
-
address@hidden@sc{ieee} 754} floating-point implementations allow the 
programmer to
-decide whether traps will occur for each of the exceptions, by setting
-bits in the @dfn{control word}.  In C, traps result in the program
-receiving the @code{SIGFPE} address@hidden, ``Signal Handling''.}
-
address@hidden@sc{ieee} 754} says that trap handlers are given details of the
-exceptional situation and can set the result value.  C signals do not
-provide any mechanism to pass this information back and forth.
-Trapping exceptions in C is therefore not very useful.
-
-It is sometimes necessary to save the state of the floating-point unit
-while you perform some calculation.  The library provides functions
-that save and restore the exception flags, the set of exceptions that
-generate traps, and the rounding mode.  This information is known as
-the @dfn{floating-point environment}.
-
-The functions to save and restore the floating-point environment all
-use a variable of type @code{fenv_t} to store information.  This type
-is defined in @file{fenv.h}.  Its size and contents are implementation
-defined.  You should not attempt to manipulate a variable of this type
-directly.
-
-To save the state of the FPU, use one of these functions:
-
address@hidden fenv.h
address@hidden ISO
address@hidden int fegetenv (fenv_t address@hidden)
-Store the floating-point environment in the variable pointed to by
address@hidden
-
-The function returns zero if the operation was successful and a
-nonzero value otherwise.
address@hidden deftypefun
-
address@hidden fenv.h
address@hidden ISO
address@hidden int feholdexcept (fenv_t address@hidden)
-Store the current floating-point environment in the object pointed to
-by @var{envp}.  Then clear all exception flags, and set the FPU to
-trap no exceptions.  Not all FPUs support trapping no exceptions; if
address@hidden cannot set this mode, it returns a nonzero value.
-If it succeeds, it returns zero.
address@hidden deftypefun
-
-The functions that restore the floating-point environment can take
-these kinds of arguments:
-
address@hidden @bullet
address@hidden
-Pointers to @code{fenv_t} objects that were initialized previously by
-a call to @code{fegetenv} or @code{feholdexcept}.
address@hidden
address@hidden FE_DFL_ENV
-The special macro @code{FE_DFL_ENV}, which represents the
-floating-point environment as it was available at program start.
address@hidden
-Implementation-defined macros with names starting with @code{FE_} and
-having type @code{fenv_t *}.
-
address@hidden FE_NOMASK_ENV
-If possible, the @sc{gnu} C Library defines a macro
address@hidden, which represents an environment where every
-exception raised causes a trap to occur.  You can test for this macro
-using @code{#ifdef}.  It is only defined if @code{_GNU_SOURCE} is
-defined.
-
-Some platforms might define other predefined environments.
address@hidden itemize
-
address@hidden
-To set the floating-point environment, you can use either of these
-functions:
-
address@hidden fenv.h
address@hidden ISO
address@hidden int fesetenv (const fenv_t address@hidden)
-Set the floating-point environment to that described by @var{envp}.
-
-The function returns zero if the operation was successful and a
-nonzero value otherwise.
address@hidden deftypefun
-
address@hidden fenv.h
address@hidden ISO
address@hidden int feupdateenv (const fenv_t address@hidden)
-Like @code{fesetenv}, this function sets the floating-point
-environment to that described by @var{envp}.  However, if any
-exceptions were flagged in the status word before @code{feupdateenv}
-was called, they remain flagged after the call.  In other words, after
address@hidden is called, the status word is the bit-wise @sc{or} of
-the previous status word and the one saved in @var{envp}.
-
-The function returns zero if the operation was successful and a
-nonzero value otherwise.
address@hidden deftypefun
-
address@hidden
-To control for individual exceptions if raising them causes a trap to
-occur, you can use the following two functions.
-
address@hidden Note:} These functions are all @sc{gnu} extensions.
-
address@hidden fenv.h
address@hidden GNU
address@hidden int feenableexcept (int @var{excepts})
-This function enables traps for each of the exceptions as indicated by
-the parameter @var{except}.  The individual exceptions are described
-in @ref{Status bit operations}.  Only the specified exceptions are
-enabled---the status of the other exceptions is not changed.
-
-The function returns the previously enabled exceptions if the
-operation was successful, @code{-1} otherwise.
address@hidden deftypefun
-
address@hidden fenv.h
address@hidden GNU
address@hidden int fedisableexcept (int @var{excepts})
-This function disables traps for each of the exceptions as indicated
-by the parameter @var{except}.  The individual exceptions are
-described in @ref{Status bit operations}.  Only the specified
-exceptions are disabled---the status of the other exceptions is not
-changed.
-
-The function returns the previously enabled exceptions if the
-operation was successful and @code{-1} otherwise.
address@hidden deftypefun
-
address@hidden fenv.h
address@hidden GNU
address@hidden int fegetexcept (int @var{excepts})
-The function returns a bitmask of all currently enabled exceptions.  It
-returns @code{-1} in case of failure.
address@hidden deftypefun
-
address@hidden Arithmetic Functions
address@hidden Arithmetic Functions
-
-The C library provides functions to do basic operations on
-floating-point numbers.  These include absolute value, maximum and
-minimum, normalization, bit twiddling, rounding and a few others.
-
address@hidden Absolute Value
address@hidden Absolute Value
address@hidden absolute value functions
-
-These functions are provided for obtaining the @dfn{absolute value} (or
address@hidden) of a number.  The absolute value of a real number
address@hidden is @var{x} if @var{x} is positive, @address@hidden if @var{x} is
-negative.  For a complex number @var{z}, whose real part is @var{x} and
-whose imaginary part is @var{y}, the absolute value is @address@hidden
-(@address@hidden + @address@hidden)}}.
-
address@hidden math.h
address@hidden stdlib.h
-Prototypes for @code{abs}, @code{labs} and @code{llabs} are in @file{stdlib.h};
address@hidden is declared in @file{inttypes.h};
address@hidden, @code{fabsf} and @code{fabsl} are declared in @file{math.h}.
address@hidden, @code{cabsf} and @code{cabsl} are declared in @file{complex.h}.
-
address@hidden stdlib.h
address@hidden ISO
address@hidden int abs (int @var{number})
address@hidden stdlib.h
address@hidden ISO
address@hidden {long int} labs (long int @var{number})
address@hidden stdlib.h
address@hidden ISO
address@hidden {long long int} llabs (long long int @var{number})
address@hidden inttypes.h
address@hidden ISO
address@hidden intmax_t imaxabs (intmax_t @var{number})
-These functions return the absolute value of @var{number}.
-
-Most computers use a two's complement integer representation, in which
-the absolute value of @code{INT_MIN} (the smallest possible @code{int})
-cannot be represented; thus, @address@hidden (INT_MIN)}} is not defined.
-
address@hidden and @code{imaxdiv} are new to @address@hidden C99}.
-
-See @ref{Integers} for a description of the @code{intmax_t} type.
-
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double fabs (double @var{number})
address@hidden math.h
address@hidden ISO
address@hidden float fabsf (float @var{number})
address@hidden math.h
address@hidden ISO
address@hidden {long double} fabsl (long double @var{number})
-This function returns the absolute value of the floating-point number
address@hidden
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden double cabs (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden float cabsf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {long double} cabsl (complex long double @var{z})
-These functions return the absolute value of the complex number
address@hidden (@pxref{Complex Numbers}).  The absolute value of a complex
-number is
-
address@hidden
-sqrt (creal (@var{z}) * creal (@var{z}) + cimag (@var{z}) * cimag (@var{z}))
address@hidden smallexample
-
-This function should always be used instead of the direct formula
-because it takes special care to avoid losing precision.  It may also
-take advantage of hardware support for this operation (see
address@hidden in @ref{Exponents and Logarithms}).
address@hidden deftypefun
-
address@hidden Normalization Functions
address@hidden Normalization Functions
address@hidden normalization functions (floating-point)
-
-The functions described in this section are primarily provided as a
-way to efficiently perform certain low-level manipulations on
-floating-point numbers that are represented internally using a binary
address@hidden, ``Floating-Point Representation Concepts''.}  These functions
-are required to have equivalent behavior even if the representation
-does not use a radix of 2, but of course they are unlikely to be
-particularly efficient in those cases.
-
address@hidden math.h
-All these functions are declared in @file{math.h}.
-
address@hidden math.h
address@hidden ISO
address@hidden double frexp (double @var{value}, int address@hidden)
address@hidden math.h
address@hidden ISO
address@hidden float frexpf (float @var{value}, int address@hidden)
address@hidden math.h
address@hidden ISO
address@hidden {long double} frexpl (long double @var{value}, int 
address@hidden)
-These functions are used to split the number @var{value}
-into a normalized fraction and an exponent.
-
-If the argument @var{value} is not zero, the return value is @var{value}
-times a power of two, and is always in the range 1/2 (inclusive) to 1
-(exclusive).  The corresponding exponent is stored in
address@hidden@var{exponent}}; the return value multiplied by 2 raised to this
-exponent equals the original number @var{value}.
-
-For example, @code{frexp (12.8, &exponent)} returns @code{0.8} and
-stores @code{4} in @code{exponent}.
-
-If @var{value} is zero, then the return value is zero, and zero is
-stored in @address@hidden
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double ldexp (double @var{value}, int @var{exponent})
address@hidden math.h
address@hidden ISO
address@hidden float ldexpf (float @var{value}, int @var{exponent})
address@hidden math.h
address@hidden ISO
address@hidden {long double} ldexpl (long double @var{value}, int 
@var{exponent})
-These functions return the result of multiplying the floating-point
-number @var{value} by 2 raised to the power @var{exponent}.  (It can
-be used to reassemble floating-point numbers that were taken apart
-by @code{frexp}.)
-
-For example, @code{ldexp (0.8, 4)} returns @code{12.8}.
address@hidden deftypefun
-
-The following functions, which come from @sc{bsd}, provide facilities
-equivalent to those of @code{ldexp} and @code{frexp}.  See also the
address@hidden@sc{iso} C} function @code{logb}, which originally also appeared 
in
address@hidden
-
address@hidden math.h
address@hidden BSD
address@hidden double scalb (double @var{value}, int @var{exponent})
address@hidden math.h
address@hidden BSD
address@hidden float scalbf (float @var{value}, int @var{exponent})
address@hidden math.h
address@hidden BSD
address@hidden {long double} scalbl (long double @var{value}, int 
@var{exponent})
-The @code{scalb} function is the @sc{bsd} name for @code{ldexp}.
address@hidden deftypefun
-
address@hidden math.h
address@hidden BSD
address@hidden {long long int} scalbn (double @var{x}, int n)
address@hidden math.h
address@hidden BSD
address@hidden {long long int} scalbnf (float @var{x}, int n)
address@hidden math.h
address@hidden BSD
address@hidden {long long int} scalbnl (long double @var{x}, int n)
address@hidden is identical to @code{scalb}, except that the exponent
address@hidden is an @code{int} instead of a floating-point number.
address@hidden deftypefun
-
address@hidden math.h
address@hidden BSD
address@hidden {long long int} scalbln (double @var{x}, long int n)
address@hidden math.h
address@hidden BSD
address@hidden {long long int} scalblnf (float @var{x}, long int n)
address@hidden math.h
address@hidden BSD
address@hidden {long long int} scalblnl (long double @var{x}, long int n)
address@hidden is identical to @code{scalb}, except that the exponent
address@hidden is a @code{long int} instead of a floating-point number.
address@hidden deftypefun
-
address@hidden math.h
address@hidden BSD
address@hidden {long long int} significand (double @var{x})
address@hidden math.h
address@hidden BSD
address@hidden {long long int} significandf (float @var{x})
address@hidden math.h
address@hidden BSD
address@hidden {long long int} significandl (long double @var{x})
address@hidden returns the mantissa of @var{x} scaled to the range
address@hidden, 2)}.
-It is equivalent to @address@hidden (@var{x}, (double) -ilogb (@var{x}))}}.
-
-This function exists mainly for use in certain standardized tests
-of @address@hidden 754} conformance.
address@hidden deftypefun
-
address@hidden Rounding Functions
address@hidden Rounding Functions
address@hidden converting floats to integers
-
address@hidden math.h
-The functions listed here perform operations such as rounding and
-truncation of floating-point values. Some of these functions convert
-floating-point numbers to integer values.  They are all declared in
address@hidden
-
-You can also convert floating-point numbers to integers simply by
-casting them to @code{int}.  This discards the fractional part,
-effectively rounding toward zero.  However, this only works if the
-result can actually be represented as an @code{int}---for very large
-numbers, this is impossible.  The functions listed here return the
-result as a @code{double} instead to get around this problem:
-
address@hidden math.h
address@hidden ISO
address@hidden double ceil (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float ceilf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} ceill (long double @var{x})
-These functions round @var{x} upward to the nearest integer,
-returning that value as a @code{double}.  Thus, @code{ceil (1.5)}
-is @code{2.0}.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double floor (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float floorf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} floorl (long double @var{x})
-These functions round @var{x} downward to the nearest
-integer, returning that value as a @code{double}.  Thus, @code{floor
-(1.5)} is @code{1.0} and @code{floor (-1.5)} is @code{-2.0}.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double trunc (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float truncf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} truncl (long double @var{x})
-The @code{trunc} functions round @var{x} toward zero to the nearest
-integer (returned in floating-point format).  Thus, @code{trunc (1.5)}
-is @code{1.0} and @code{trunc (-1.5)} is @code{-1.0}.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double rint (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float rintf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} rintl (long double @var{x})
-These functions round @var{x} to an integer value according to the
-current rounding address@hidden Loosemore et al., ``Floating-Point
-Parameters'', for information about the various rounding modes.}  The
-default rounding mode is to round to the nearest integer; some
-machines support other modes, but round-to-nearest is always used
-unless you explicitly select another.
-
-If @var{x} was not initially an integer, these functions raise the
-inexact exception.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double nearbyint (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float nearbyintf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} nearbyintl (long double @var{x})
-These functions return the same value as the @code{rint} functions, but
-do not raise the inexact exception if @var{x} is not an integer.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double round (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden float roundf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long double} roundl (long double @var{x})
-These functions are similar to @code{rint}, but they round halfway
-cases away from zero instead of to the nearest even integer.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden {long int} lrint (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long int} lrintf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long int} lrintl (long double @var{x})
-These functions are just like @code{rint}, but they return a
address@hidden int} instead of a floating-point number.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden {long long int} llrint (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long long int} llrintf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long long int} llrintl (long double @var{x})
-These functions are just like @code{rint}, but they return a
address@hidden long int} instead of a floating-point number.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden {long int} lround (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long int} lroundf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long int} lroundl (long double @var{x})
-These functions are just like @code{round}, but they return a
address@hidden int} instead of a floating-point number.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden {long long int} llround (double @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long long int} llroundf (float @var{x})
address@hidden math.h
address@hidden ISO
address@hidden {long long int} llroundl (long double @var{x})
-These functions are just like @code{round}, but they return a
address@hidden long int} instead of a floating-point number.
address@hidden deftypefun
-
-
address@hidden math.h
address@hidden ISO
address@hidden double modf (double @var{value}, double address@hidden)
address@hidden math.h
address@hidden ISO
address@hidden float modff (float @var{value}, float address@hidden)
address@hidden math.h
address@hidden ISO
address@hidden {long double} modfl (long double @var{value}, long double 
address@hidden)
-These functions break the argument @var{value} into an integer part and a
-fractional part (between @code{-1} and @code{1}, exclusive).  Their sum
-equals @var{value}.  Each of the parts has the same sign as @var{value},
-and the integer part is always rounded toward zero.
-
address@hidden stores the integer part in @address@hidden and
-returns the fractional part.  For example, @code{modf (2.5, &intpart)}
-returns @code{0.5} and stores @code{2.0} into @code{intpart}.
address@hidden deftypefun
-
address@hidden Remainder Functions
address@hidden Remainder Functions
-
-The functions in this section compute the remainder on division of two
-floating-point numbers.  Each is a little different; pick the one that
-suits your problem.
-
address@hidden math.h
address@hidden ISO
address@hidden double fmod (double @var{numerator}, double @var{denominator})
address@hidden math.h
address@hidden ISO
address@hidden float fmodf (float @var{numerator}, float @var{denominator})
address@hidden math.h
address@hidden ISO
address@hidden {long double} fmodl (long double @var{numerator}, long double 
@var{denominator})
-These functions compute the remainder from the division of
address@hidden by @var{denominator}.  Specifically, the return value is
address@hidden@var{numerator} - @address@hidden * @var{denominator}}}, where 
@var{n}
-is the quotient of @var{numerator} divided by @var{denominator}, rounded
-toward zero to an integer.  Thus, @address@hidden (6.5, 2.3)}} returns
address@hidden, which is @code{6.5} minus @code{4.6}.
-
-The result has the same sign as the @var{numerator} and has magnitude
-less than the magnitude of the @var{denominator}.
-
-If @var{denominator} is zero, @code{fmod} signals a domain error.
address@hidden deftypefun
-
address@hidden math.h
address@hidden BSD
address@hidden double drem (double @var{numerator}, double @var{denominator})
address@hidden math.h
address@hidden BSD
address@hidden float dremf (float @var{numerator}, float @var{denominator})
address@hidden math.h
address@hidden BSD
address@hidden {long double} dreml (long double @var{numerator}, long double 
@var{denominator})
-These functions are like @code{fmod} except that they round the
-internal quotient @var{n} to the nearest integer instead of toward
-zero to an integer.  For example, @code{drem (6.5, 2.3)} returns
address@hidden, which is @code{6.5} minus @code{6.9}.
-
-The absolute value of the result is less than or equal to half the
-absolute value of the @var{denominator}.  The difference between
address@hidden (@var{numerator}, @var{denominator})} and @code{drem
-(@var{numerator}, @var{denominator})} is always either
address@hidden, minus @var{denominator}, or zero.
-
-If @var{denominator} is zero, @code{drem} signals a domain error.
address@hidden deftypefun
-
address@hidden math.h
address@hidden BSD
address@hidden double remainder (double @var{numerator}, double 
@var{denominator})
address@hidden math.h
address@hidden BSD
address@hidden float remainderf (float @var{numerator}, float @var{denominator})
address@hidden math.h
address@hidden BSD
address@hidden {long double} remainderl (long double @var{numerator}, long 
double @var{denominator})
-This function is another name for @code{drem}.
address@hidden deftypefun
-
address@hidden FP Bit Twiddling
address@hidden Setting and Modifying Single Bits of FP Values
address@hidden FP arithmetic
-
-There are some operations that are too complicated or expensive to
-perform by hand on floating-point numbers.  @address@hidden C99} defines
-functions to do these operations, which mostly involve changing single
-bits.
-
address@hidden math.h
address@hidden ISO
address@hidden double copysign (double @var{x}, double @var{y})
address@hidden math.h
address@hidden ISO
address@hidden float copysignf (float @var{x}, float @var{y})
address@hidden math.h
address@hidden ISO
address@hidden {long double} copysignl (long double @var{x}, long double 
@var{y})
-These functions return @var{x} but with the sign of @var{y}.  They
-work even if @var{x} or @var{y} are NaN or zero.  Both of these can
-carry a sign (although not all implementations support it), and this
-is one of the few operations that can tell the difference.
-
address@hidden never raises an exception.
address@hidden except signalling NaNs
-
-This function is defined in @address@hidden 559} (and the appendix with
-recommended functions in @address@hidden 754}/@address@hidden 854}).
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden int signbit (@emph{float-type} @var{x})
address@hidden is a generic macro that can work on all floating-point
-types.  It returns a nonzero value if the value of @var{x} has its
-sign bit set.
-
-This is not the same as @code{x < 0.0}, because @address@hidden 754}
-floating-point allows zero to be signed.  The comparison @code{-0.0 <
-0.0} is false, but @code{signbit (-0.0)} will return a nonzero value.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double nextafter (double @var{x}, double @var{y})
address@hidden math.h
address@hidden ISO
address@hidden float nextafterf (float @var{x}, float @var{y})
address@hidden math.h
address@hidden ISO
address@hidden {long double} nextafterl (long double @var{x}, long double 
@var{y})
-The @code{nextafter} function returns the next representable neighbor
-of @var{x} in the direction toward @var{y}.  The size of the step
-between @var{x} and the result depends on the type of the result.  If
address@hidden@var{x} = @var{y}}, the function simply returns @var{y}.  If
-either value is @code{NaN}, @code{NaN} is returned.  Otherwise, a
-value corresponding to the value of the least significant bit in the
-mantissa is added or subtracted, depending on the direction.
address@hidden will signal overflow or underflow if the result goes
-outside of the range of normalized numbers.
-
-This function is defined in @address@hidden 559} (and the appendix with
-recommended functions in @address@hidden 754}/@address@hidden 854}).
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double nexttoward (double @var{x}, long double @var{y})
address@hidden math.h
address@hidden ISO
address@hidden float nexttowardf (float @var{x}, long double @var{y})
address@hidden math.h
address@hidden ISO
address@hidden {long double} nexttowardl (long double @var{x}, long double 
@var{y})
-These functions are identical to the corresponding versions of
address@hidden except that their second argument is a @code{long
-double}.
address@hidden deftypefun
-
address@hidden NaN
address@hidden math.h
address@hidden ISO
address@hidden double nan (const char address@hidden)
address@hidden math.h
address@hidden ISO
address@hidden float nanf (const char address@hidden)
address@hidden math.h
address@hidden ISO
address@hidden {long double} nanl (const char address@hidden)
-The @code{nan} function returns a representation of NaN, provided that
-NaN is supported by the target platform.
address@hidden ("@var{n-char-sequence}")} is equivalent to
address@hidden ("NAN(@var{n-char-sequence})")}.
-
-The argument @var{tagp} is used in an unspecified manner.  On @address@hidden
-754} systems, there are many representations of NaN, and @var{tagp}
-selects one.  On other systems it may do nothing.
address@hidden deftypefun
-
address@hidden FP Comparison Functions
address@hidden Floating-Point Comparison Functions
address@hidden unordered comparison
-
-The standard C comparison operators provoke exceptions when one or other
-of the operands is NaN.  For example:
-
address@hidden
-int v = a < 1.0;
address@hidden smallexample
-
address@hidden
-will raise an exception if @var{a} is NaN (this does @emph{not} happen
-with @code{==} and @code{!=}; those merely return false and true,
-respectively, when NaN is examined).  Frequently, this exception is
-undesirable.  @address@hidden C99} therefore defines comparison functions
-that do not raise exceptions when NaN is examined.  All of the
-functions are implemented as macros that allow their arguments to be
-of any floating-point type.  The macros are guaranteed to evaluate
-their arguments only once.
-
address@hidden math.h
address@hidden ISO
address@hidden Macro int isgreater (@emph{real-floating} @var{x}, 
@emph{real-floating} @var{y})
-This macro determines whether the argument @var{x} is greater than
address@hidden  It is equivalent to @code{(@var{x}) > (@var{y})}, but no
-exception is raised if @var{x} or @var{y} are NaN.
address@hidden deftypefn
-
address@hidden math.h
address@hidden ISO
address@hidden Macro int isgreaterequal (@emph{real-floating} @var{x}, 
@emph{real-floating} @var{y})
-This macro determines whether the argument @var{x} is greater than or
-equal to @var{y}.  It is equivalent to @code{(@var{x}) >= (@var{y})}, but no
-exception is raised if @var{x} or @var{y} are NaN.
address@hidden deftypefn
-
address@hidden math.h
address@hidden ISO
address@hidden Macro int isless (@emph{real-floating} @var{x}, 
@emph{real-floating} @var{y})
-This macro determines whether the argument @var{x} is less than @var{y}.
-It is equivalent to @code{(@var{x}) < (@var{y})}, but no exception is
-raised if @var{x} or @var{y} are NaN.
address@hidden deftypefn
-
address@hidden math.h
address@hidden ISO
address@hidden Macro int islessequal (@emph{real-floating} @var{x}, 
@emph{real-floating} @var{y})
-This macro determines whether the argument @var{x} is less than or equal
-to @var{y}.  It is equivalent to @code{(@var{x}) <= (@var{y})}, but no
-exception is raised if @var{x} or @var{y} are NaN.
address@hidden deftypefn
-
address@hidden math.h
address@hidden ISO
address@hidden Macro int islessgreater (@emph{real-floating} @var{x}, 
@emph{real-floating} @var{y})
-This macro determines whether the argument @var{x} is less than or
-greater than @var{y}.  It is equivalent to @code{(@var{x}) < (@var{y})
-|| (@var{x}) > (@var{y})} (although it only evaluates @var{x} and
address@hidden once), but no exception is raised if @var{x} or @var{y} are
-NaN.
-
-This macro is not equivalent to @address@hidden != @var{y}}, because that
-expression is true if @var{x} or @var{y} are NaN.
address@hidden deftypefn
-
address@hidden math.h
address@hidden ISO
address@hidden Macro int isunordered (@emph{real-floating} @var{x}, 
@emph{real-floating} @var{y})
-This macro determines whether its arguments are unordered.  In other
-words, it is true if @var{x} or @var{y} are NaN and false otherwise.
address@hidden deftypefn
-
-Not all machines provide hardware support for these operations.  On
-machines that do not, the macros can be very slow.  Therefore, you
-should not use these functions when NaN is not a concern.
-
-There are no macros @code{isequal} or @code{isunequal}.  They are
-unnecessary, because the @code{==} and @code{!=} operators do
address@hidden throw an exception if one or both of the operands are NaN.
-
address@hidden Misc FP Arithmetic
address@hidden Miscellaneous FP Arithmetic Functions
address@hidden minimum
address@hidden maximum
address@hidden positive difference
address@hidden multiply-add
-
-The functions in this section perform miscellaneous but common
-operations that are awkward to express with C operators.  On some
-processors, these functions can use special machine instructions to
-perform these operations faster than the equivalent C code.
-
address@hidden math.h
address@hidden ISO
address@hidden double fmin (double @var{x}, double @var{y})
address@hidden math.h
address@hidden ISO
address@hidden float fminf (float @var{x}, float @var{y})
address@hidden math.h
address@hidden ISO
address@hidden {long double} fminl (long double @var{x}, long double @var{y})
-The @code{fmin} function returns the lesser of the two values @var{x}
-and @var{y}.  It is similar to the expression:
address@hidden
-((x) < (y) ? (x) : (y))
address@hidden smallexample
-except that @var{x} and @var{y} are only evaluated once.
-
-If an argument is NaN, the other argument is returned.  If both arguments
-are NaN, NaN is returned.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double fmax (double @var{x}, double @var{y})
address@hidden math.h
address@hidden ISO
address@hidden float fmaxf (float @var{x}, float @var{y})
address@hidden math.h
address@hidden ISO
address@hidden {long double} fmaxl (long double @var{x}, long double @var{y})
-The @code{fmax} function returns the greater of the two values @var{x}
-and @var{y}.
-
-If an argument is NaN, the other argument is returned.  If both arguments
-are NaN, NaN is returned.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double fdim (double @var{x}, double @var{y})
address@hidden math.h
address@hidden ISO
address@hidden float fdimf (float @var{x}, float @var{y})
address@hidden math.h
address@hidden ISO
address@hidden {long double} fdiml (long double @var{x}, long double @var{y})
-The @code{fdim} function returns the positive difference between
address@hidden and @var{y}.  The positive difference is @address@hidden -
address@hidden if @var{x} is greater than @var{y}, and @math{0} otherwise.
-
-If @var{x}, @var{y}, or both are NaN, NaN is returned.
address@hidden deftypefun
-
address@hidden math.h
address@hidden ISO
address@hidden double fma (double @var{x}, double @var{y}, double @var{z})
address@hidden math.h
address@hidden ISO
address@hidden float fmaf (float @var{x}, float @var{y}, float @var{z})
address@hidden math.h
address@hidden ISO
address@hidden {long double} fmal (long double @var{x}, long double @var{y}, 
long double @var{z})
address@hidden butterfly
-The @code{fma} function performs floating-point multiply-add.  This is
-the operation @math{(@var{x} @mul{} @var{y}) + @var{z}}, but the
-intermediate result is not rounded to the destination type.  This can
-sometimes improve the precision of a calculation.
-
-This function was introduced because some processors have a special
-instruction to perform multiply-add.  The C compiler cannot use it
-directly, because the expression @samp{x*y + z} is defined to round the
-intermediate result.  @code{fma} lets you choose when you want to round
-only once.
-
address@hidden FP_FAST_FMA
-On processors that do not implement multiply-add in hardware,
address@hidden can be very slow since it must avoid intermediate rounding.
address@hidden defines the symbols @code{FP_FAST_FMA},
address@hidden, and @code{FP_FAST_FMAL} when the corresponding
-version of @code{fma} is no slower than the expression @samp{x*y + z}.
-In the @sc{gnu} C Library, this always means the operation is
-implemented in hardware.
address@hidden deftypefun
-
address@hidden Complex Numbers
address@hidden Complex Numbers
address@hidden complex.h
address@hidden complex numbers
-
address@hidden@sc{iso} C99} introduces support for complex numbers in C.  This 
is
-done with a new type qualifier, @code{complex}.  It is a keyword if
-and only if @file{complex.h} has been included.  There are three
-complex types, corresponding to the three real types: @code{float
-complex}, @code{double complex} and @code{long double complex}.
-
-To construct complex numbers, you need a way to indicate the imaginary
-part of a number.  There is no standard notation for an imaginary
-floating-point constant.  Instead, @file{complex.h} defines two macros
-that can be used to create complex numbers.
-
address@hidden Macro {const float complex} _Complex_I
-This macro is a representation of the complex number "@math{0+1i}".
-Multiplying a real floating-point value by @code{_Complex_I} gives a
-complex number whose value is purely imaginary.  You can use this to
-construct complex constants:
-
address@hidden
address@hidden + 4.0i} = @code{3.0 + 4.0 * _Complex_I}
address@hidden smallexample
-
-Note that @code{_Complex_I * _Complex_I} has the value @code{-1}, but
-the type of that value is @code{complex}.
address@hidden deftypevr
-
address@hidden Put this back in when gcc supports _Imaginary_I.  It's too 
confusing.
address@hidden
address@hidden
-Without an optimizing compiler this is more expensive than the use of
address@hidden but with is better than nothing.  You can avoid all
-the hassles if you use the @code{I} macro below if the name is not
-problem.
-
address@hidden Macro {const float imaginary} _Imaginary_I
-This macro is a representation of the value "@math{1i}".  I.e., it is
-the value for which
-
address@hidden
-_Imaginary_I * _Imaginary_I = -1
address@hidden smallexample
-
address@hidden
-The result is not of type @code{float imaginary} but instead @code{float}.
-One can use it to easily construct complex number like in
-
address@hidden
-3.0 - _Imaginary_I * 4.0
address@hidden smallexample
-
address@hidden
-which results in the complex number with a real part of 3.0 and a
-imaginary part -4.0.
address@hidden deftypevr
address@hidden ignore
-
address@hidden
address@hidden is a bit of a mouthful.  @file{complex.h} also defines
-a shorter name for the same constant.
-
address@hidden Macro {const float complex} I
-This macro has exactly the same value as @code{_Complex_I}.  Most of the
-time it is preferable.  However, it causes problems if you want to use
-the identifier @code{I} for something else.  You can safely write:
-
address@hidden
-#include <complex.h>
-#undef I
address@hidden smallexample
-
address@hidden
-if you need @code{I} for your own purposes.  In that case, we
-recommend you also define some other short name for @code{_Complex_I},
-such as @code{J}.
-
address@hidden
-If the implementation does not support the @code{imaginary} types
address@hidden is defined as @code{_Complex_I} which is the second-best
-solution.  It still can be used in the same way but requires a most
-clever compiler to get the same results.
address@hidden ignore
address@hidden deftypevr
-
address@hidden Operations on Complex
address@hidden Projections, Conjugates and Decomposing of Complex Numbers
address@hidden project complex numbers
address@hidden conjugate complex numbers
address@hidden decompose complex numbers
address@hidden complex.h
-
address@hidden@sc{iso} C99} also defines functions that perform basic 
operations on
-complex numbers, such as decomposition and conjugation.  The prototypes
-for all these functions are in @file{complex.h}.  All functions are
-available in three variants, one for each of the three complex types.
-
address@hidden complex.h
address@hidden ISO
address@hidden double creal (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden float crealf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {long double} creall (complex long double @var{z})
-These functions return the real part of the complex number @var{z}.
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden double cimag (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden float cimagf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {long double} cimagl (complex long double @var{z})
-These functions return the imaginary part of the complex number @var{z}.
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} conj (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} conjf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} conjl (complex long double @var{z})
-These functions return the conjugate value of the complex number
address@hidden  The conjugate of a complex number has the same real part and a
-negated imaginary part.  In other words, @samp{conj(a + bi) = a + -bi}.
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden double carg (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden float cargf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {long double} cargl (complex long double @var{z})
-These functions return the argument of the complex number @var{z}.
-The argument of a complex number is the angle in the complex plane
-between the positive real axis and a line passing through zero and the
-number.  This angle is measured in the usual fashion and ranges from @math{0}
-to @address@hidden
-
address@hidden has a branch cut along the positive real axis.
address@hidden deftypefun
-
address@hidden complex.h
address@hidden ISO
address@hidden {complex double} cproj (complex double @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex float} cprojf (complex float @var{z})
address@hidden complex.h
address@hidden ISO
address@hidden {complex long double} cprojl (complex long double @var{z})
-These functions return the projection of the complex value @var{z}
-onto the Riemann sphere.  Values with an infinite imaginary part are
-projected to positive infinity on the real axis, even if the real part
-is NaN.  If the real part is infinite, the result is equivalent to:
-
address@hidden
-INFINITY + I * copysign (0.0, cimag (z))
address@hidden smallexample
address@hidden deftypefun
-
address@hidden Parsing of Numbers
address@hidden Parsing of Numbers
address@hidden parsing numbers (in formatted input)
address@hidden converting strings to numbers
address@hidden number syntax, parsing
address@hidden syntax, for reading numbers
-
-This section describes functions for ``reading'' integer and
-floating-point numbers from a string.  It may be more convenient in
-some cases to use @code{sscanf} or one of the related functions
-(@pxref{Formatted Input}).  But often you can make a program more
-robust by finding the tokens in the string by hand, then converting
-the numbers one by one.
-
address@hidden Parsing of Integers
address@hidden Parsing of Integers
-
address@hidden stdlib.h
address@hidden wchar.h
-The @samp{str} functions are declared in @file{stdlib.h}, and those
-beginning with @samp{wcs} are declared in @file{wchar.h}.  You might
-wonder about the use of @code{restrict} in the prototypes of the
-functions in this section.  It is seemingly useless, but the
address@hidden@sc{iso} C} standard uses it (for the functions defined there), so
-we have to use it as well.
-
address@hidden stdlib.h
address@hidden ISO
address@hidden {long int} strtol (const char *restrict @var{string}, char 
**restrict @var{tailptr}, int @var{base})
-The @code{strtol} (``string-to-long'') function converts the initial
-part of @var{string} to a signed integer, which is returned as a value
-of type @code{long int}.
-
-This function attempts to decompose @var{string} as follows:
-
address@hidden @bullet
address@hidden
-A (possibly empty) sequence of white-space characters---which
-characters are white space is determined by the @code{isspace}
-function (@pxref{Classification of Characters}).  These are discarded.
-
address@hidden
-An optional plus or minus sign (@samp{+} or @samp{-})
-
address@hidden
-A nonempty sequence of digits in the radix specified by
address@hidden @var{base} is zero, decimal radix is assumed unless
-the series of digits begins with @samp{0} (specifying octal radix), or
address@hidden or @samp{0X} (specifying hexadecimal radix); in other words,
-the same syntax used for integer constants in C.
-
-Otherwise @var{base} must have a value between @code{2} and @code{36}.
-If @var{base} is @code{16}, the digits may optionally be preceded by
address@hidden or @samp{0X}.  If base has no legal value, the value
-returned is @code{0l}, and the global variable @code{errno} is set to
address@hidden
-
address@hidden
-Any remaining characters in the string---if @var{tailptr} is not a
-null pointer, @code{strtol} stores a pointer to this tail in
address@hidden@var{tailptr}}.
address@hidden itemize
-
-If the string is empty, contains only white space, or does not contain
-an initial substring that has the expected syntax for an integer in
-the specified @var{base}, no conversion is performed.  In this case,
address@hidden returns a value of zero and the value stored in
address@hidden@var{tailptr}} is the value of @var{string}.
-
-In a locale other than the standard @code{"C"} locale, this function
-may recognize additional implementation-dependent syntax.
-
-If the string has valid syntax for an integer but the value is not
-representable because of overflow, @code{strtol} returns either
address@hidden or @code{LONG_MIN}, as appropriate for the sign of the
address@hidden, ``Range of an Integer Type''.}  It also sets @code{errno}
-to @code{ERANGE} to indicate there was overflow.
-
-You should not check for errors by examining the return value of
address@hidden, because the string might be a valid representation of
address@hidden, @code{LONG_MAX}, or @code{LONG_MIN}.  Instead, check
-whether @var{tailptr} points to what you expect after the number
-(e.g., @code{'\0'} if the string should end after the number).  You
-also need to clear @var{errno} before the call and check it afterward,
-in case there was overflow.
-
-There is an example at the end of this section.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {long int} wcstol (const wchar_t *restrict @var{string}, wchar_t 
**restrict @var{tailptr}, int @var{base})
-The @code{wcstol} function is equivalent to the @code{strtol} function
-in nearly all aspects, but it handles wide-character strings.
-
-The @code{wcstol} function was introduced in @w{Amendment 1} of 
@address@hidden C90}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden {unsigned long int} strtoul (const char *restrict @var{string}, 
char **restrict @var{tailptr}, int @var{base})
-The @code{strtoul} (``string-to-unsigned-long'') function is like
address@hidden except it converts to an @code{unsigned long int} value.
-The syntax is the same as described above for @code{strtol}.  The
-value returned on overflow is @address@hidden
-
-If @var{string} depicts a negative number, @code{strtoul} acts the
-same as @var{strtol} but casts the result to an unsigned integer.
-That means, for example, that @code{strtoul} on @code{"-1"} returns
address@hidden, and an input more negative than @code{LONG_MIN}
-returns (@code{ULONG_MAX} + 1) / 2.
-
address@hidden sets @var{errno} to @code{EINVAL} if @var{base} is out
-of range, or to @code{ERANGE} on overflow.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {unsigned long int} wcstoul (const wchar_t *restrict 
@var{string}, wchar_t **restrict @var{tailptr}, int @var{base})
-The @code{wcstoul} function is equivalent to the @code{strtoul}
-function in nearly all aspects, but it handles wide-character strings.
-
-The @code{wcstoul} function was introduced in @w{Amendment 1} of 
@address@hidden C90}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden {long long int} strtoll (const char *restrict @var{string}, char 
**restrict @var{tailptr}, int @var{base})
-The @code{strtoll} function is like @code{strtol} except that it
-returns a @code{long long int} value and accepts numbers with a
-correspondingly larger range.
-
-If the string has valid syntax for an integer but the value is not
-representable because of overflow, @code{strtoll} returns either
address@hidden or @code{LONG_LONG_MIN}, as appropriate for the
-sign of the address@hidden  It also sets @code{errno} to
address@hidden to indicate there was overflow.
-
-The @code{strtoll} function was introduced in @address@hidden C99}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {long long int} wcstoll (const wchar_t *restrict @var{string}, 
wchar_t **restrict @var{tailptr}, int @var{base})
-The @code{wcstoll} function is equivalent to the @code{strtoll}
-function in nearly all aspects, but it handles wide-character strings.
-
-The @code{wcstoll} function was introduced in @w{Amendment 1} of 
@address@hidden C90}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden BSD
address@hidden {long long int} strtoq (const char *restrict @var{string}, char 
**restrict @var{tailptr}, int @var{base})
address@hidden (``string-to-quad-word'') is the @sc{bsd} name for 
@code{strtoll}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden {long long int} wcstoq (const wchar_t *restrict @var{string}, 
wchar_t **restrict @var{tailptr}, int @var{base})
-The @code{wcstoq} function is equivalent to the @code{strtoq} function
-in nearly all aspects, but it handles wide-character strings.
-
-The @code{wcstoq} function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden {unsigned long long int} strtoull (const char *restrict 
@var{string}, char **restrict @var{tailptr}, int @var{base})
-The @code{strtoull} function is related to @code{strtoll} the same way
address@hidden is related to @code{strtol}.
-
-The @code{strtoull} function was introduced in @address@hidden C99}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {unsigned long long int} wcstoull (const wchar_t *restrict 
@var{string}, wchar_t **restrict @var{tailptr}, int @var{base})
-The @code{wcstoull} function is equivalent to the @code{strtoull}
-function in nearly all aspects, but it handles wide-character strings.
-
-The @code{wcstoull} function was introduced in @w{Amendment 1} of 
@address@hidden C90}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden BSD
address@hidden {unsigned long long int} strtouq (const char *restrict 
@var{string}, char **restrict @var{tailptr}, int @var{base})
address@hidden is the @sc{bsd} name for @code{strtoull}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden {unsigned long long int} wcstouq (const wchar_t *restrict 
@var{string}, wchar_t **restrict @var{tailptr}, int @var{base})
-The @code{wcstouq} function is equivalent to the @code{strtouq}
-function in nearly all aspects, but it handles wide-character strings.
-
-The @code{wcstoq} function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden inttypes.h
address@hidden ISO
address@hidden intmax_t strtoimax (const char *restrict @var{string}, char 
**restrict @var{tailptr}, int @var{base})
-The @code{strtoimax} function is like @code{strtol} except that it returns
-an @code{intmax_t} value and accepts numbers of a corresponding range.
-
-If the string has valid syntax for an integer but the value is not
-representable because of overflow, @code{strtoimax} returns either
address@hidden or @code{INTMAX_MIN} (@pxref{Integers}), as
-appropriate for the sign of the value.  It also sets @code{errno} to
address@hidden to indicate there was overflow.
-
-See @ref{Integers} for a description of the @code{intmax_t} type.  The
address@hidden function was introduced in @address@hidden C99}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden intmax_t wcstoimax (const wchar_t *restrict @var{string}, 
wchar_t **restrict @var{tailptr}, int @var{base})
-The @code{wcstoimax} function is equivalent to the @code{strtoimax}
-function in nearly all aspects, but it handles wide-character strings.
-
-The @code{wcstoimax} function was introduced in @address@hidden C99}.
address@hidden deftypefun
-
address@hidden inttypes.h
address@hidden ISO
address@hidden uintmax_t strtoumax (const char *restrict @var{string}, char 
**restrict @var{tailptr}, int @var{base})
-The @code{strtoumax} function is related to @code{strtoimax}
-the same way that @code{strtoul} is related to @code{strtol}.
-
-See @ref{Integers} for a description of the @code{intmax_t} type.  The
address@hidden function was introduced in @address@hidden C99}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden uintmax_t wcstoumax (const wchar_t *restrict @var{string}, 
wchar_t **restrict @var{tailptr}, int @var{base})
-The @code{wcstoumax} function is equivalent to the @code{strtoumax}
-function in nearly all aspects, but it handles wide-character strings.
-
-The @code{wcstoumax} function was introduced in @address@hidden C99}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden {long int} atol (const char address@hidden)
-This function is similar to the @code{strtol} function with a @var{base}
-argument of @code{10}, except that it need not detect overflow errors.
-The @code{atol} function is provided mostly for compatibility with
-existing code; using @code{strtol} is more robust.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden int atoi (const char address@hidden)
-This function is like @code{atol} except that it returns an
address@hidden  The @code{atoi} function is also considered obsolete; use
address@hidden instead.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden {long long int} atoll (const char address@hidden)
-This function is similar to @code{atol} except that it returns a
address@hidden long int}.
-
-The @code{atoll} function was introduced in @address@hidden C99}.  It too is
-obsolete (despite having just been added); use @code{strtoll} instead.
address@hidden deftypefun
-
-All the functions mentioned in this section so far do not handle
-alternative representations of characters as described in the locale
-data.  Some locales specify the thousands-separator and the way they
-have to be used, which can help to make large numbers more readable.
-To read such numbers, one has to use the @code{scanf} functions with
-the @samp{'} flag.
-
-Here is a function that parses a string as a sequence of integers and
-returns the sum of them:
-
address@hidden
-int
-sum_ints_from_string (char *string)
address@hidden
-  int sum = 0;
-
-  while (1) @{
-    char *tail;
-    int next;
-
-    /* @r{Skip white space by hand, to detect the end.}  */
-    while (isspace (*string)) string++;
-    if (*string == 0)
-      break;
-
-    /* @r{There is more non-white-space,}  */
-    /* @r{so it ought to be another number.}  */
-    errno = 0;
-    /* @r{Parse it.}  */
-    next = strtol (string, &tail, 0);
-    /* @r{Add it in, if not overflow.}  */
-    if (errno)
-      printf ("Overflow\n");
-    else
-      sum += next;
-    /* @r{Advance past it.}  */
-    string = tail;
-  @}
-
-  return sum;
address@hidden
address@hidden smallexample
-
address@hidden Parsing of Floats
address@hidden Parsing of Floats
-
address@hidden stdlib.h
-The @samp{str} functions are declared in @file{stdlib.h}, and those
-beginning with @samp{wcs} are declared in @file{wchar.h}.  One might
-wonder about the use of @code{restrict} in the prototypes of the
-functions in this section.  It is seemingly useless, but the
address@hidden@sc{iso} C} standard uses it (for the functions defined there), so
-we have to use it as well.
-
address@hidden stdlib.h
address@hidden ISO
address@hidden double strtod (const char *restrict @var{string}, char 
**restrict @var{tailptr})
-The @code{strtod} (``string-to-double'') function converts the initial
-part of @var{string} to a floating-point number, which is returned as a
-value of type @code{double}.
-
-This function attempts to decompose @var{string} as follows:
-
address@hidden @bullet
address@hidden
-A (possibly empty) sequence of white-space characters---which
-characters are white space is determined by the @code{isspace}
-function (@pxref{Classification of Characters}).  These are discarded.
-
address@hidden
-An optional plus or minus sign (@samp{+} or @samp{-})
-
address@hidden A floating-point number in decimal or hexadecimal format; the
-decimal format is:
address@hidden @minus
-
address@hidden
-A nonempty sequence of digits optionally containing a decimal-point
-character---normally @samp{.}, but it depends on the locale
-(@pxref{General Numeric}).
-
address@hidden
-An optional exponent part, consisting of a character @samp{e} or
address@hidden, an optional sign and a sequence of digits
-
address@hidden itemize
-
-The hexadecimal format is as follows:
address@hidden @minus
-
address@hidden
-A 0x or 0X followed by a nonempty sequence of hexadecimal digits
-optionally containing a decimal-point character---normally @samp{.}, but
-it depends on the locale (@pxref{General Numeric})
-
address@hidden
-An optional binary-exponent part, consisting of a character @samp{p} or
address@hidden, an optional sign, and a sequence of digits
-
address@hidden itemize
-
address@hidden
-Any remaining characters in the string.  If @var{tailptr} is not a null
-pointer, a pointer to this tail of the string is stored in
address@hidden@var{tailptr}}.
address@hidden itemize
-
-If the string is empty, contains only white space, or does not contain an
-initial substring that has the expected syntax for a floating-point
-number, no conversion is performed.  In this case, @code{strtod} returns
-a value of zero and the value returned in @address@hidden is the
-value of @var{string}.
-
-In a locale other than the standard @code{"C"} or @code{"POSIX"} locales,
-this function may recognize additional locale-dependent syntax.
-
-If the string has valid syntax for a floating-point number but the value
-is outside the range of a @code{double}, @code{strtod} will signal
-overflow or underflow as described in @ref{Math Error Reporting}.
-
address@hidden recognizes four special input strings.  The strings
address@hidden"inf"} and @code{"infinity"} are converted to @address@hidden,
-or to the largest representable value if the floating-point format
-doesn't support infinities.  You can prepend a @code{"+"} or @code{"-"}
-to specify the sign.  Case is ignored when scanning these strings.
-
-The strings @code{"nan"} and @code{"nan(@address@hidden)"} are converted
-to NaN.  Again, case is ignored.  If @address@hidden are provided, they
-are used in some unspecified fashion to select a particular
-representation of NaN (there can be several).
-
-Since zero is a valid result as well as the value returned on error, you
-should check for errors in the same way as for @code{strtol}, by
-examining @var{errno} and @var{tailptr}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden float strtof (const char address@hidden, char address@hidden)
address@hidden stdlib.h
address@hidden ISO
address@hidden {long double} strtold (const char address@hidden, char 
address@hidden)
-These functions are analogous to @code{strtod}, but they return
address@hidden and @code{long double} values respectively.  They report
-errors in the same way as @code{strtod}.  @code{strtof} can be
-substantially faster than @code{strtod}, but has less precision;
-conversely, @code{strtold} can be much slower, but has more precision
-(on systems where @code{long double} is a separate type).
-
-These functions have been @sc{gnu} extensions and are new to @address@hidden 
C99}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden double wcstod (const wchar_t *restrict @var{string}, wchar_t 
**restrict @var{tailptr})
address@hidden stdlib.h
address@hidden ISO
address@hidden float wcstof (const wchar_t address@hidden, wchar_t 
address@hidden)
address@hidden stdlib.h
address@hidden ISO
address@hidden {long double} wcstold (const wchar_t address@hidden, wchar_t 
address@hidden)
-The @code{wcstod}, @code{wcstof} and @code{wcstol} functions are
-equivalent in nearly all aspect to the @code{strtod}, @code{strtof}
-and @code{strtold} functions, but they handle wide-character strings.
-
-The @code{wcstod} function was introduced in @w{Amendment 1} of @address@hidden
-C90}.  The @code{wcstof} and @code{wcstold} functions were introduced in
address@hidden@sc{iso} C99}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden double atof (const char address@hidden)
-This function is similar to the @code{strtod} function, except that it
-need not detect overflow and underflow errors.  The @code{atof} function
-is provided mostly for compatibility with existing code; using
address@hidden is more robust.
address@hidden deftypefun
-
-The @sc{gnu} C Library also provides @samp{_l} versions of these
-functions, which take an additional argument, the locale to use in
-conversion (@pxref{Parsing of Integers}).
-
address@hidden System V Number Conversion
address@hidden Old-fashioned System V Number-to-String Functions
-
-The old @w{System V} C library provided three functions to convert
-numbers to strings, with unusual and hard-to-use semantics.  The @sc{gnu} C
-library also provides these functions and some natural extensions.
-
-These functions are only available in glibc and on systems descended
-from AT&T Unix.  Therefore, unless these functions do precisely what you
-need, it is better to use @code{sprintf}, which is standard.
-
-All these functions are defined in @file{stdlib.h}.
-
address@hidden stdlib.h
address@hidden SVID, Unix98
address@hidden {char *} ecvt (double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden)
-The function @code{ecvt} converts the floating-point number
address@hidden to a string with at most @var{ndigit} decimal digits.  The
-returned string contains no decimal point or sign. The first digit of
-the string is nonzero (unless @var{value} is actually zero) and the
-last digit is rounded to nearest.  @address@hidden is set to the
-index in the string of the first digit after the decimal point.
address@hidden@var{neg}} is set to a nonzero value if @var{value} is negative
-and zero otherwise.
-
-If @var{ndigit} decimal digits would exceed the precision of a
address@hidden, it is reduced to a system-specific value.
-
-The returned string is statically allocated and overwritten by each call
-to @code{ecvt}.
-
-If @var{value} is zero, whether @address@hidden is @code{0} or
address@hidden is implementation defined.
-
-For example: @code{ecvt (12.3, 5, &d, &n)} returns @code{"12300"}
-and sets @var{d} to @code{2} and @var{n} to @code{0}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden SVID, Unix98
address@hidden {char *} fcvt (double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden)
-The function @code{fcvt} is like @code{ecvt}, but @var{ndigit} specifies
-the number of digits after the decimal point.  If @var{ndigit} is less
-than zero, @var{value} is rounded to the @address@hidden'th place to the
-left of the decimal point.  For example, if @var{ndigit} is @code{-1},
address@hidden will be rounded to the nearest 10.  If @var{ndigit} is
-negative and larger than the number of digits to the left of the decimal
-point in @var{value}, @var{value} will be rounded to one significant digit.
-
-If @var{ndigit} decimal digits would exceed the precision of a
address@hidden, it is reduced to a system-specific value.
-
-The returned string is statically allocated and overwritten by each call
-to @code{fcvt}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden SVID, Unix98
address@hidden {char *} gcvt (double @var{value}, int @var{ndigit}, char 
address@hidden)
address@hidden is functionally equivalent to @samp{sprintf(buf, "%*g",
-ndigit, value)}.  It is provided only for compatibility's sake.  It
-returns @var{buf}.
-
-If @var{ndigit} decimal digits would exceed the precision of a
address@hidden, it is reduced to a system-specific value.
address@hidden deftypefun
-
-As extensions, the @sc{gnu} C Library provides versions of these three
-functions that take @code{long double} arguments.
-
address@hidden stdlib.h
address@hidden GNU
address@hidden {char *} qecvt (long double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden)
-This function is equivalent to @code{ecvt}, except that it takes a
address@hidden double} for the first parameter and that @var{ndigit} is
-restricted by the precision of a @code{long double}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden {char *} qfcvt (long double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden)
-This function is equivalent to @code{fcvt}, except that it takes a
address@hidden double} for the first parameter, and that @var{ndigit} is
-restricted by the precision of a @code{long double}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden {char *} qgcvt (long double @var{value}, int @var{ndigit}, char 
address@hidden)
-This function is equivalent to @code{gcvt}, except that it takes a
address@hidden double} for the first parameter, and that @var{ndigit} is
-restricted by the precision of a @code{long double}.
address@hidden deftypefun
-
-
address@hidden gcvt_r
-The @code{ecvt} and @code{fcvt} functions, and their @code{long
-double} equivalents, all return a string located in a static buffer,
-which is overwritten by the next call to the function.  The @sc{gnu} C
-Library provides another set of extended functions that write the
-converted string into a user-supplied buffer.  These have the
-conventional @code{_r} suffix.
-
address@hidden is not necessary, because @code{gcvt} already uses a
-user-supplied buffer.
-
address@hidden stdlib.h
address@hidden GNU
address@hidden {char *} ecvt_r (double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden, char address@hidden, size_t @var{len})
-The @code{ecvt_r} function is the same as @code{ecvt}, except
-that it places its result into the user-specified buffer pointed to by
address@hidden, with length @var{len}.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden SVID, Unix98
address@hidden {char *} fcvt_r (double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden, char address@hidden, size_t @var{len})
-The @code{fcvt_r} function is the same as @code{fcvt}, except
-that it places its result into the user-specified buffer pointed to by
address@hidden, with length @var{len}.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden {char *} qecvt_r (long double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden, char address@hidden, size_t @var{len})
-The @code{qecvt_r} function is the same as @code{qecvt}, except
-that it places its result into the user-specified buffer pointed to by
address@hidden, with length @var{len}.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden {char *} qfcvt_r (long double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden, char address@hidden, size_t @var{len})
-The @code{qfcvt_r} function is the same as @code{qfcvt}, except
-that it places its result into the user-specified buffer pointed to by
address@hidden, with length @var{len}.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden Date and Time, Resource Usage And Limitation, Arithmetic, Top
address@hidden %MENU% Functions for getting the date and time and formatting 
them nicely
address@hidden Date and Time
-
-This chapter describes functions for manipulating dates and times,
-including functions for determining what time it is and conversion
-between different time representations.
-
address@hidden Time Basics
address@hidden Time Basics
address@hidden time
-
-Discussing time in a technical manual can be difficult because the
-word @dfn{time} in English refers to lots of different things.  In
-this manual, we use a rigorous terminology to avoid confusion, and the
-only thing we use the simple word @dfn{time} for is to talk about the
-abstract concept.
-
-A @dfn{calendar time} is a point in the time continuum, for example
-November 4, 1990 at 18:02.5 @sc{UTC}.  Sometimes this is called @dfn{absolute
-time}.
address@hidden calendar time
-
-We don't speak of a @dfn{date}, because that is inherent in a calendar
-time.
address@hidden date
-
-An @dfn{interval} is a contiguous part of the time continuum between
-two calendar times, such as the hour between 9:00 and 10:00 on July 4,
-1980.
address@hidden interval
-
-An @dfn{elapsed time} is the length of an interval, such as 35
-minutes.  People sometimes sloppily use the word @dfn{interval} to refer
-to the elapsed time of some interval.
address@hidden elapsed time
address@hidden time, elapsed
-
-An @dfn{amount of time} is a sum of elapsed times, which need not be of
-any specific intervals.  For example, the amount of time it takes to
-read a book might be 9 hours, independently of when and in how many
-sittings it is read.
-
-A @dfn{period} is the elapsed time of an interval between two events,
-especially when they are part of a sequence of regularly repeating
-events.
address@hidden period of time
-
address@hidden @dfn{time} is like calendar time, except that it is based on
-the subset of the time continuum when a particular process is actively
-using a @sc{cpu}.  @sc{cpu} time is therefore relative to a process.
address@hidden @sc{cpu} time
-
address@hidden time} is an amount of time that a @sc{cpu} is in use.
-In fact, it's a basic system resource, since there is a limit to how
-much can exist in any given interval (that limit is the elapsed time
-of the interval multiplied by the number of @sc{cpu}s in the
-processor).  People often call this @sc{cpu} time, but we reserve the
-latter term in this manual for the definition above.
address@hidden processor time
-
address@hidden Elapsed Time
address@hidden Elapsed Time
address@hidden elapsed time
-
-One way to represent an elapsed time is with a simple arithmetic data
-type, as with the following function to compute the elapsed time between
-two calendar times.  This function is declared in @file{time.h}:
-
address@hidden time.h
address@hidden ISO
address@hidden double difftime (time_t @var{time1}, time_t @var{time0})
-The @code{difftime} function returns the number of seconds of elapsed
-time between calendar time @var{time1} and calendar time @var{time0}, as
-a value of type @code{double}.  The difference ignores leap seconds
-unless leap second support is enabled.
-
-In the @sc{gnu} system, you can simply subtract @code{time_t} values.  But on
-other systems, the @code{time_t} data type might use some other encoding
-where subtraction doesn't work directly.
address@hidden deftypefun
-
-The @sc{gnu} C Library provides two data types specifically for
-representing an elapsed time.  They are used by various @sc{gnu} C
-Library functions, and you can use them for your own purposes too.
-They're exactly the same, except that one has a resolution in
-microseconds, and the other, newer one, has a resolution in
-nanoseconds.
-
address@hidden sys/time.h
address@hidden BSD
address@hidden {Data Type} {struct timeval}
address@hidden timeval
-The @code{struct timeval} structure represents an elapsed time.  It is
-declared in @file{sys/time.h} and has the following members:
-
address@hidden @code
address@hidden long int tv_sec
-This represents the number of whole seconds of elapsed time.
-
address@hidden long int tv_usec
-This is the rest of the elapsed time (a fraction of a second),
-represented as the number of microseconds.  It is always less than one
-million.
-
address@hidden table
address@hidden deftp
-
address@hidden sys/time.h
address@hidden POSIX.1
address@hidden {Data Type} {struct timespec}
address@hidden timespec
-The @code{struct timespec} structure represents an elapsed time.  It is
-declared in @file{time.h} and has the following members:
-
address@hidden @code
address@hidden long int tv_sec
-This represents the number of whole seconds of elapsed time.
-
address@hidden long int tv_nsec
-This is the rest of the elapsed time (a fraction of a second),
-represented as the number of nanoseconds.  It is always less than one
-billion.
-
address@hidden table
address@hidden deftp
-
-It is often necessary to subtract two values of type @address@hidden
-timeval}} or @address@hidden timespec}}.  Here is the best way to do
-this (it works even on some peculiar operating systems where the
address@hidden member has an unsigned type):
-
address@hidden
-/* @r{Subtract the `struct timeval' values X and Y,}
-   @r{storing the result in RESULT.}
-   @r{Return 1 if the difference is negative, otherwise 0.}  */
-
-int
-timeval_subtract (result, x, y)
-     struct timeval *result, *x, *y;
address@hidden
-  /* @r{Perform the carry for the later subtraction by updating @var{y}.} */
-  if (x->tv_usec < y->tv_usec) @{
-    int nsec = (y->tv_usec - x->tv_usec) / 1000000 + 1;
-    y->tv_usec -= 1000000 * nsec;
-    y->tv_sec += nsec;
-  @}
-  if (x->tv_usec - y->tv_usec > 1000000) @{
-    int nsec = (x->tv_usec - y->tv_usec) / 1000000;
-    y->tv_usec += 1000000 * nsec;
-    y->tv_sec -= nsec;
-  @}
-
-  /* @r{Compute the time remaining to wait.}
-     @address@hidden is certainly positive.} */
-  result->tv_sec = x->tv_sec - y->tv_sec;
-  result->tv_usec = x->tv_usec - y->tv_usec;
-
-  /* @r{Return 1 if result is negative.} */
-  return x->tv_sec < y->tv_sec;
address@hidden
address@hidden smallexample
-
-Common functions that use @code{struct timeval} are @code{gettimeofday}
-and @code{settimeofday}.
-
-
-There are no @sc{gnu} C Library functions specifically oriented toward
-dealing with elapsed times, but the calendar time, processor time and
-alarm and sleeping functions have a lot to do with them.
-
-
address@hidden Processor And CPU Time
address@hidden Processor and @sc{cpu} Time
-
-If you are trying to optimize your program or measure its efficiency,
-it's very useful to know how much processor time it uses.  For that,
-calendar time and elapsed times are useless because a process may
-spend time waiting for I/O or for other processes to use the @sc{cpu}.
-However, you can get the information with the functions in this
-section.
-
address@hidden time (@pxref{Time Basics}) is represented by the data type
address@hidden, which is a number of @dfn{clock ticks}.  It gives the
-total amount of time a process has actively used a @sc{cpu} since some
-arbitrary event.  On the @sc{gnu} system, that event is the creation of the
-process.  While arbitrary in general, the event is always the same event
-for any particular process, so you can always measure how much time on
-the @sc{cpu} a particular computation takes by examinining the process' 
@sc{cpu}
-time before and after the computation.
address@hidden @sc{cpu} time
address@hidden clock ticks
address@hidden ticks, clock
-
-In the @sc{gnu} system, @code{clock_t} is equivalent to @code{long int} and
address@hidden is an integer value.  But in other systems, both
address@hidden and the macro @code{CLOCKS_PER_SEC} can be either integer
-or floating-point types.  Casting @sc{cpu} time values to @code{double}, as
-in the example above, makes sure that operations such as arithmetic and
-printing work properly and consistently no matter what the underlying
-representation is.
-
-Note that the clock can wrap around.  On a 32-bit system with
address@hidden set to one million, this function will return
-the same value approximately every 72 address@hidden Loosemore
-et al., ``Resource Usage and Limitation'', for additional functions to
-examine a process' use of processor time and to control it.}
-
address@hidden CPU Time
address@hidden @sc{cpu} Time Inquiry
-
-To get a process' @sc{cpu} time, you can use the @code{clock} function.  This
-facility is declared in the header file @file{time.h}.
address@hidden time.h
-
-In typical usage, you call the @code{clock} function at the beginning
-and end of the interval you want to time, subtract the values and then
-divide by @code{CLOCKS_PER_SEC} (the number of clock ticks per second)
-to get processor time, like this:
-
address@hidden
-
-#include <time.h>
-
-clock_t start, end;
-double cpu_time_used;
-
-start = clock();
address@hidden /* @r{Do the work.} */
-end = clock();
-cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;
-
address@hidden smallexample
-
-Do not use a single @sc{cpu} time as an amount of time; it doesn't
-work that way.  Either do a subtraction as shown above or query
-processor time directly (@pxref{Processor Time}).
-
-Different computers and operating systems vary wildly in how they keep
-track of @sc{cpu} time.  It's common for the internal processor clock
-to have a resolution somewhere between a hundredth and millionth of a
-second.
-
address@hidden time.h
address@hidden ISO
address@hidden Macro int CLOCKS_PER_SEC
-The value of this macro is the number of clock ticks per second measured
-by the @code{clock} function.  @sc{posix} requires that this value be one
-million independent of the actual resolution.
address@hidden deftypevr
-
address@hidden time.h
address@hidden POSIX.1
address@hidden Macro int CLK_TCK
-This is an obsolete name for @code{CLOCKS_PER_SEC}.
address@hidden deftypevr
-
address@hidden time.h
address@hidden ISO
address@hidden {Data Type} clock_t
-This is the type of the value returned by the @code{clock} function.
-Values of type @code{clock_t} are numbers of clock ticks.
address@hidden deftp
-
address@hidden time.h
address@hidden ISO
address@hidden clock_t clock (void)
-This function returns the calling process' current @sc{cpu} time.  If the 
@sc{cpu}
-time is not available or cannot be represented, @code{clock} returns the
-value @code{(clock_t)(-1)}.
address@hidden deftypefun
-
-
address@hidden Processor Time
address@hidden Processor Time Inquiry
-
-The @code{times} function returns information about a process'
-consumption of processor time in a @address@hidden tms}} object, in
-addition to the process' @sc{cpu} time (@pxref{Time Basics}).  You
-should include the header file @file{sys/times.h} to use this
-facility.
address@hidden processor time
address@hidden @sc{cpu} time
address@hidden sys/times.h
-
address@hidden sys/times.h
address@hidden POSIX.1
address@hidden {Data Type} {struct tms}
-The @code{tms} structure is used to return information about process
-times.  It contains at least the following members:
-
address@hidden @code
address@hidden clock_t tms_utime
-This is the total processor time the calling process has used in
-executing the instructions of its program.
-
address@hidden clock_t tms_stime
-This is the processor time the system has used on behalf of the calling
-process.
-
address@hidden clock_t tms_cutime
-This is the sum of the @code{tms_utime} values and the
address@hidden values of all terminated child processes of the
-calling process, whose status has been reported to the parent process
-by @code{wait} or @address@hidden, ``Process
-Completion''.}  In other words, it represents the total processor time
-used in executing the instructions of all the terminated child
-processes of the calling process, excluding child processes that have
-not yet been reported by @code{wait} or @code{waitpid}.
address@hidden child process
-
address@hidden clock_t tms_cstime
-This is similar to @code{tms_cutime}, but represents the total
-processor time the system has used on behalf of all the terminated
-child processes of the calling process.
address@hidden table
-
-All of the times are given in numbers of clock ticks.  Unlike @sc{cpu}
-time, these are the actual amounts of time; they are not relative to
-any address@hidden, ``Creating a Process''.}
address@hidden deftp
-
address@hidden sys/times.h
address@hidden POSIX.1
address@hidden clock_t times (struct tms address@hidden)
-The @code{times} function stores the processor time information for
-the calling process in @var{buffer}.
-
-The return value is the calling process' @sc{cpu} time (the same value
-you get from @code{clock()}).  @code{times} returns
address@hidden(clock_t)(-1)} to indicate failure.
address@hidden deftypefun
-
address@hidden Note:} The @code{clock} function described in
address@hidden Time}, is specified by the @address@hidden C} standard.  The
address@hidden function is a feature of @sc{posix}.1.  In the @sc{gnu}
-system, the @sc{cpu} time is defined to be equivalent to the sum of
-the @code{tms_utime} and @code{tms_stime} fields returned by
address@hidden
-
address@hidden Calendar Time
address@hidden Calendar Time
-
-This section describes facilities for keeping track of calendar time
-(@pxref{Time Basics}).
-
-The @sc{gnu} C Library represents calendar time three ways:
-
address@hidden @bullet
address@hidden
address@hidden time} (the @code{time_t} data type) is a compact
-representation, typically giving the number of seconds of elapsed time
-since some implementation-specific base time.
address@hidden simple time
-
address@hidden
-There is also a @dfn{high-resolution time} representation.  Like simple
-time, this represents a calendar time as an elapsed time since a base
-time, but instead of measuring in whole seconds, it uses a @code{struct
-timeval} data type, which includes fractions of a second.  Use this time
-representation instead of simple time when you need greater precision.
address@hidden high-resolution time
-
address@hidden
address@hidden time} or @dfn{broken-down time} (the @code{struct tm} data
-type) represents a calendar time as a set of components specifying the
-year, month, etc., in the Gregorian calendar for a specific time
-zone.  This calendar time representation is usually used only to
-communicate with people.
address@hidden local time
address@hidden broken-down time
address@hidden Gregorian calendar
address@hidden calendar, Gregorian
address@hidden itemize
-
address@hidden Simple Calendar Time
address@hidden Simple Calendar Time
-
-This section describes the @code{time_t} data type for representing
-calendar time as simple time, and the functions that operate on simple
-time objects.  These facilities are declared in the header file
address@hidden
address@hidden time.h
-
address@hidden epoch
address@hidden time.h
address@hidden ISO
address@hidden {Data Type} time_t
-This is the data type used to represent simple time.  Sometimes, it also
-represents an elapsed time.  When interpreted as a calendar time value,
-it represents the number of seconds elapsed since 00:00:00 on January 1,
-1970, Coordinated Universal Time (this calendar time is sometimes
-referred to as the @dfn{epoch}).  @sc{posix} requires that this count not
-include leap seconds, but on some systems this count includes leap seconds
-if you set @code{TZ} to certain values (@pxref{TZ Variable}).
-
-A simple time has no concept of local time zone.  Calendar Time
address@hidden is the same instant in time regardless of where on the globe
-the computer is.
-
-In the @sc{gnu} C Library, @code{time_t} is equivalent to @code{long int}.
-In other systems, @code{time_t} might be either an integer or
-floating-point type.
address@hidden deftp
-
-The function @code{difftime} tells you the elapsed time between two
-simple calendar times, which is not always as easy to compute as just
-subtracting (@pxref{Elapsed Time}).
-
address@hidden time.h
address@hidden ISO
address@hidden time_t time (time_t address@hidden)
-The @code{time} function returns the current calendar time as a value of
-type @code{time_t}.  If the argument @var{result} is not a null pointer,
-the calendar time value is also stored in @address@hidden  If the
-current calendar time is not available, the value
address@hidden@code{(time_t)(-1)}} is returned.
address@hidden deftypefun
-
address@hidden The GNU C Library implements stime() with a call to 
settimeofday() on
address@hidden Linux.
address@hidden time.h
address@hidden SVID, XPG
address@hidden int stime (time_t address@hidden)
address@hidden sets the system clock, i.e., it tells the system that the
-current calendar time is @var{newtime}, where @code{newtime} is
-interpreted as described in the above definition of @code{time_t}.
-
address@hidden is a newer function that sets the system clock to
-better than one second precision.  @code{settimeofday} is generally a
-better choice than @code{stime} (@pxref{High-Resolution Calendar}).
-
-Only the superuser can set the system clock.
-
-If the function succeeds, the return value is zero.  Otherwise, it is
address@hidden and @code{errno} is set accordingly:
-
address@hidden @code
address@hidden EPERM
-The process is not superuser.
address@hidden table
address@hidden deftypefun
-
-
-
address@hidden High-Resolution Calendar
address@hidden High-Resolution Calendar
-
-The @code{time_t} data type used to represent simple times has a
-resolution of only 1 second.  Some applications need more precision.
-
-So, the @sc{gnu} C Library also contains functions that are capable of
-representing calendar times to a higher resolution than 1 second.  The
-functions and the associated data types described in this section are
-declared in @file{sys/time.h}.
address@hidden sys/time.h
-
address@hidden sys/time.h
address@hidden BSD
address@hidden {Data Type} {struct timezone}
-The @code{struct timezone} structure is used to hold minimal information
-about the local time zone.  It has the following members:
-
address@hidden @code
address@hidden int tz_minuteswest
-This is the number of minutes west of @sc{UTC}.
-
address@hidden int tz_dsttime
-If nonzero, daylight saving time applies during some part of the year.
address@hidden table
-
-The @code{struct timezone} type is obsolete and should never be used.
-Instead, use the facilities described in @ref{Time Zone Functions}.
address@hidden deftp
-
address@hidden sys/time.h
address@hidden BSD
address@hidden int gettimeofday (struct timeval address@hidden, struct timezone 
address@hidden)
-The @code{gettimeofday} function returns the current calendar time as
-the elapsed time since the epoch in the @code{struct timeval} structure
-indicated by @var{tp}.  (@pxref{Elapsed Time} for a description of
address@hidden timeval}).  Information about the time zone is returned in
-the structure pointed at @var{tzp}.  If the @var{tzp} argument is a null
-pointer, time zone information is ignored.
-
-The return value is @code{0} on success and @code{-1} on failure.  The
-following @code{errno} error condition is defined for this function:
-
address@hidden @code
address@hidden ENOSYS
-The operating system does not support getting time zone information, and
address@hidden is not a null pointer.  The @sc{gnu} operating system does not
-support using @address@hidden timezone}} to represent time zone
-information; that is an obsolete feature of 4.3 @sc{bsd}.
-Instead, use the facilities described in @ref{Time Zone Functions}.
address@hidden table
address@hidden deftypefun
-
address@hidden sys/time.h
address@hidden BSD
address@hidden int settimeofday (const struct timeval address@hidden, const 
struct timezone address@hidden)
-The @code{settimeofday} function sets the current calendar time in the
-system clock according to the arguments.  As for @code{gettimeofday},
-the calendar time is represented as the elapsed time since the epoch.
-As for @code{gettimeofday}, time zone information is ignored if
address@hidden is a null pointer.
-
-You must be a privileged user in order to use @code{settimeofday}.
-
-Some kernels automatically set the system clock from some source such
-as a hardware clock when they start up.  Others, including Linux,
-place the system clock in an @dfn{invalid} state (in which attempts to
-read the clock fail).  A call of @code{stime} removes the system clock
-from an invalid state, and system start-up scripts typically run a
-program that calls @code{stime}.
-
address@hidden causes a sudden jump forward or backward, which
-can cause a variety of problems in a system.  Use @code{adjtime} (below)
-to make a smooth transition from one time to another by temporarily
-speeding up or slowing down the clock.
-
-With a Linux kernel, @code{adjtimex} does the same thing and can also
-make permanent changes to the speed of the system clock so that it
-doesn't need to be corrected as often.
-
-The return value is @code{0} on success and @code{-1} on failure.  The
-following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden EPERM
-This process cannot set the clock because it is not privileged.
-
address@hidden ENOSYS
-The operating system does not support setting time zone information, and
address@hidden is not a null pointer.
address@hidden table
address@hidden deftypefun
-
address@hidden On Linux, GNU libc implements adjtime() as a call to adjtimex().
address@hidden sys/time.h
address@hidden BSD
address@hidden int adjtime (const struct timeval address@hidden, struct timeval 
address@hidden)
-This function speeds up or slows down the system clock in order to make
-a gradual adjustment.  This ensures that the calendar time reported by
-the system clock is always monotonically increasing, which might not
-happen if you simply set the clock.
-
-The @var{delta} argument specifies a relative adjustment to be made to
-the clock time.  If negative, the system clock is slowed down for a
-while until it has lost this much elapsed time.  If positive, the system
-clock is speeded up for a while.
-
-If the @var{olddelta} argument is not a null pointer, the
address@hidden function returns information about any previous time
-adjustment that has not yet been completed.
-
-This function is typically used to synchronize the clocks of computers
-in a local network.  You must be a privileged user to use it.
-
-With a Linux kernel, you can use the @code{adjtimex} function to
-permanently change the clock speed.
-
-The return value is @code{0} on success and @code{-1} on failure.  The
-following @code{errno} error condition is defined for this function:
-
address@hidden @code
address@hidden EPERM
-You do not have privilege to set the time.
address@hidden table
address@hidden deftypefun
-
address@hidden Note:} The @code{gettimeofday},
address@hidden and @code{adjtime} functions are derived from
address@hidden
-
-
-Symbols for the following function are declared in @file{sys/timex.h}:
-
address@hidden sys/timex.h
address@hidden GNU
address@hidden int adjtimex (struct timex address@hidden)
-
address@hidden is functionally identical to @code{ntp_adjtime}
-(@pxref{High-Accuracy Clock}).
-
-This function is present only with a Linux kernel.
-
address@hidden deftypefun
-
address@hidden Broken-down Time
address@hidden Broken-Down Time
address@hidden broken-down time
address@hidden calendar time and broken-down time
-
-Calendar time is represented by the usual @sc{gnu} C Library functions
-as an elapsed time since a fixed base calendar time.  This is
-convenient for computation, but has no relation to the way people
-normally think of calendar time.  By contrast, @dfn{broken-down time}
-is a binary representation of calendar time separated into year,
-month, day and so on.  Broken-down time values are not useful for
-calculations, but they are useful for printing human-readable time
-information.
-
-A broken-down time value is always relative to a choice of time
-zone, and it also indicates which time zone that is.
-
-The symbols in this section are declared in the header file @file{time.h}.
-
address@hidden time.h
address@hidden ISO
address@hidden {Data Type} {struct tm}
-This is the data type used to represent a broken-down time.  The structure
-contains at least the following members, which can appear in any order:
-
address@hidden @code
address@hidden int tm_sec
-This is the number of full seconds since the top of the minute (normally
-in the range @code{0} through @code{59}, but the actual upper limit is
address@hidden, to allow for leap seconds if leap second support is
-available).
address@hidden leap second
-
address@hidden int tm_min
-This is the number of full minutes since the top of the hour (in the
-range @code{0} through @code{59}).
-
address@hidden int tm_hour
-This is the number of full hours past midnight (in the range @code{0} through
address@hidden).
-
address@hidden int tm_mday
-This is the ordinal day of the month (in the range @code{1} through @code{31}).
-Watch out for this one!  As the only ordinal number in the structure, it is
-inconsistent with the rest of the structure.
-
address@hidden int tm_mon
-This is the number of full calendar months since the beginning of the
-year (in the range @code{0} through @code{11}).  Watch out for this one!
-People usually use ordinal numbers for month-of-year (where January = 1).
-
address@hidden int tm_year
-This is the number of full calendar years since 1900.
-
address@hidden int tm_wday
-This is the number of full days since Sunday (in the range @code{0} through
address@hidden).
-
address@hidden int tm_yday
-This is the number of full days since the beginning of the year (in the
-range @code{0} through @code{365}).
-
address@hidden int tm_isdst
address@hidden daylight saving time
address@hidden summer time
-This is a flag that indicates whether daylight saving time is (or was,
-or will be) in effect at the time described.  The value is positive if
-daylight saving time is in effect, zero if it is not and negative if
-the information is not available.
-
address@hidden long int tm_gmtoff
-This field describes the time zone that was used to compute this
-broken-down time value, including any adjustment for daylight saving; it
-is the number of seconds that you must add to @sc{UTC} to get local time.
-You can also think of this as the number of seconds east of @sc{UTC}.  For
-example, for US eastern standard time, the value is @code{-5*60*60}.
-The @code{tm_gmtoff} field is derived from @sc{bsd} and is a @sc{gnu} library
-extension; it is not visible in a strict @address@hidden C} environment.
-
address@hidden const char *tm_zone
-This field is the name for the time zone that was used to compute this
-broken-down time value.  Like @code{tm_gmtoff}, this field is a @sc{bsd} and
address@hidden extension, and is not visible in a strict @address@hidden C} 
environment.
address@hidden table
address@hidden deftp
-
-
address@hidden time.h
address@hidden ISO
address@hidden {struct tm *} localtime (const time_t address@hidden)
-The @code{localtime} function converts the simple time pointed to by
address@hidden to broken-down time representation, expressed relative to the
-user's specified time zone.
-
-The return value is a pointer to a static broken-down time structure, which
-might be overwritten by subsequent calls to @code{ctime}, @code{gmtime},
-or @code{localtime} (but no other library function overwrites the contents
-of this object).
-
-The return value is the null pointer if @var{time} cannot be represented
-as a broken-down time; typically this is because the year cannot fit into
-an @code{int}.
-
-Calling @code{localtime} has one other effect: it sets the variable
address@hidden with information about the current time zone
-(@pxref{Time Zone Functions}).
address@hidden deftypefun
-
-Using the @code{localtime} function is a big problem in multithreaded
-programs.  The result is returned in a static buffer and this is used in
-all threads.  @sc{posix}.1c introduced a variant of this function.
-
address@hidden time.h
address@hidden POSIX.1c
address@hidden {struct tm *} localtime_r (const time_t address@hidden, struct 
tm address@hidden)
-The @code{localtime_r} function works just like the @code{localtime}
-function.  It takes a pointer to a variable containing a simple time
-and converts it to the broken-down time format.
-
-But the result is not placed in a static buffer.  Instead it is placed
-in the object of type @code{struct tm} to which the parameter
address@hidden points.
-
-If the conversion is successful the function returns a pointer to the
-object the result was written into, i.e., it returns @var{resultp}.
address@hidden deftypefun
-
-
address@hidden time.h
address@hidden ISO
address@hidden {struct tm *} gmtime (const time_t address@hidden)
-This function is similar to @code{localtime}, except that the broken-down
-time is expressed as Coordinated Universal Time (@sc{UTC}) (formerly called
-Greenwich mean time (@sc{GMT})) rather than relative to a local time zone.
-
address@hidden deftypefun
-
-As for the @code{localtime} function, we have the problem that the
-result is placed in a static variable.  @sc{posix}.1c also provides a
-replacement for @code{gmtime}.
-
address@hidden time.h
address@hidden POSIX.1c
address@hidden {struct tm *} gmtime_r (const time_t address@hidden, struct tm 
address@hidden)
-This function is similar to @code{localtime_r}, except that it
-converts, just like @code{gmtime}, the given time as Coordinated
-Universal Time.
-
-If the conversion is successful, the function returns a pointer to the
-object the result was written into, i.e., it returns @var{resultp}.
address@hidden deftypefun
-
-
address@hidden time.h
address@hidden ISO
address@hidden time_t mktime (struct tm address@hidden)
-The @code{mktime} function is used to convert a broken-down time
-structure to a simple time representation.  It also @dfn{normalizes}
-the contents of the broken-down time structure, by filling in the day
-of week and day of year based on the other date and time components.
-
-The @code{mktime} function ignores the specified contents of the
address@hidden and @code{tm_yday} members of the broken-down time
-structure.  It uses the values of the other components to determine the
-calendar time; it's permissible for these components to have
-unnormalized values outside their normal ranges.  The last thing that
address@hidden does is adjust the components of the @var{brokentime}
-structure (including the @code{tm_wday} and @code{tm_yday}).
-
-If the specified broken-down time cannot be represented as a simple time,
address@hidden returns a value of @code{(time_t)(-1)} and does not modify
-the contents of @var{brokentime}.
-
-Calling @code{mktime} also sets the variable @code{tzname} with
-information about the current time zone (@pxref{Time Zone Functions}).
address@hidden deftypefun
-
address@hidden time.h
address@hidden ???
address@hidden time_t timelocal (struct tm address@hidden)
-
address@hidden is functionally identical to @code{mktime}, but more
-mnemonically named.  It is the inverse of the @code{localtime}
-function.
-
address@hidden Note:}  @code{mktime} is essentially universally
-available.  @code{timelocal} is rather rare.
-
address@hidden deftypefun
-
address@hidden time.h
address@hidden ???
address@hidden time_t timegm (struct tm address@hidden)
-
address@hidden is functionally identical to @code{mktime}, except that
-it always takes the input values to be Coordinated Universal Time
-(@sc{UTC}) regardless of any local time zone setting.
-
address@hidden is the inverse of @code{gmtime}.
-
address@hidden Note:}  @code{mktime} is essentially universally
-available.  @code{timegm} is rather rare.  For the most portable
-conversion from a @sc{UTC} broken-down time to a simple time, set
-the @code{TZ} environment variable to @sc{UTC}, call @code{mktime}, then set
address@hidden back.
-
address@hidden deftypefun
-
-
-
address@hidden High-Accuracy Clock
address@hidden High-Accuracy Clock
-
address@hidden time, high-precision
address@hidden clock, high-accuracy
address@hidden sys/timex.h
address@hidden On Linux, GNU libc implements ntp_gettime() and npt_adjtime() as 
calls
address@hidden to adjtimex().
-The @code{ntp_gettime} and @code{ntp_adjtime} functions provide an
-interface to monitor and manipulate the system clock to maintain
-high-accuracy time.  For example, you can fine-tune the speed of the
-clock or synchronize it with another time source.
-
-A typical use of these functions is by a server implementing the
-Network Time Protocol to synchronize the clocks of multiple systems
-and high-precision clocks.
-
-These functions are declared in @file{sys/timex.h}.
-
address@hidden struct ntptimeval
address@hidden {Data Type} {struct ntptimeval}
-This structure is used for information about the system clock.  It
-contains the following members:
address@hidden @code
address@hidden struct timeval time
-This is the current calendar time, expressed as the elapsed time since
-the epoch.  The @code{struct timeval} data type is described in
address@hidden Time}.
-
address@hidden long int maxerror
-This is the maximum error, measured in microseconds.  Unless updated
-via @code{ntp_adjtime} periodically, this value will reach some
-platform-specific maximum value.
-
address@hidden long int esterror
-This is the estimated error, measured in microseconds.  This value can
-be set by @code{ntp_adjtime} to indicate the estimated offset of the
-system clock from the true calendar time.
address@hidden table
address@hidden deftp
-
address@hidden sys/timex.h
address@hidden GNU
address@hidden int ntp_gettime (struct ntptimeval address@hidden)
-The @code{ntp_gettime} function sets the structure pointed to by
address@hidden to current values.  The elements of the structure
-afterwards contain the values the timer implementation in the kernel
-assumes.  They might or might not be correct.  If they are not, an
address@hidden call is necessary.
-
-The return value is @code{0} on success and other values on failure.  The
-following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden TIME_ERROR
-The precision clock model is not properly set up at the moment, thus the
-clock must be considered unsynchronized, and the values should be
-treated with care.
address@hidden table
address@hidden deftypefun
-
address@hidden struct timex
address@hidden {Data Type} {struct timex}
-This structure is used to control and monitor the system clock.  It
-contains the following members:
address@hidden @code
address@hidden unsigned int modes
-This variable controls whether and which values are set.  Several
-symbolic constants have to be combined with @emph{binary or} to specify
-the effective mode.  These constants start with @code{MOD_}.
-
address@hidden long int offset
-This value indicates the current offset of the system clock from the true
-calendar time.  The value is given in microseconds.  If bit
address@hidden is set in @code{modes}, the offset (and possibly other
-dependent values) can be set.  The offset's absolute value must not
-exceed @code{MAXPHASE}.
-
-
address@hidden long int frequency
-This value indicates the difference in frequency between the true
-calendar time and the system clock.  The value is expressed as scaled
-PPM (parts per million, 0.0001%).  The scaling is @code{1 <<
-SHIFT_USEC}.  The value can be set with bit @code{MOD_FREQUENCY}, but
-the absolute value must not exceed @code{MAXFREQ}.
-
address@hidden long int maxerror
-This is the maximum error, measured in microseconds.  A new value can be
-set using bit @code{MOD_MAXERROR}.  Unless updated via
address@hidden periodically, this value will increase steadily
-and reach some platform-specific maximum value.
-
address@hidden long int esterror
-This is the estimated error, measured in microseconds.  This value can
-be set using bit @code{MOD_ESTERROR}.
-
address@hidden int status
-This variable reflects the various states of the clock machinery.  There
-are symbolic constants for the significant bits, starting with
address@hidden  Some of these flags can be updated using the
address@hidden bit.
-
address@hidden long int constant
-This value represents the bandwidth or stiffness of the PLL (phase
-locked loop) implemented in the kernel.  The value can be changed using
-bit @code{MOD_TIMECONST}.
-
address@hidden long int precision
-This value represents the accuracy or the maximum error when reading the
-system clock.  The value is expressed in microseconds.
-
address@hidden long int tolerance
-This value represents the maximum frequency error of the system clock in
-scaled PPM.  This value is used to increase the @code{maxerror} every
-second.
-
address@hidden struct timeval time
-This is the current calendar time.
-
address@hidden long int tick
-This is the elapsed time between clock ticks in microseconds.  A clock
-tick is a periodic timer interrupt on which the system clock is based.
-
address@hidden long int ppsfreq
-This is the first of a few optional variables that are present only if
-the system clock can use a PPS (pulse per second) signal to discipline
-the system clock.  The value is expressed in scaled PPM and it denotes
-the difference in frequency between the system clock and the PPS signal.
-
address@hidden long int jitter
-This value expresses a median filtered average of the PPS signal's
-dispersion in microseconds.
-
address@hidden int shift
-This value is a binary exponent for the duration of the PPS calibration
-interval, ranging from @code{PPS_SHIFT} to @code{PPS_SHIFTMAX}.
-
address@hidden long int stabil
-This value represents the median filtered dispersion of the PPS
-frequency in scaled PPM.
-
address@hidden long int jitcnt
-This counter represents the number of pulses where the jitter exceeded
-the allowed maximum @code{MAXTIME}.
-
address@hidden long int calcnt
-This counter reflects the number of successful calibration intervals.
-
address@hidden long int errcnt
-This counter represents the number of calibration errors (caused by
-large offsets or jitter).
-
address@hidden long int stbcnt
-This counter denotes the number of calibrations where the stability
-exceeded the threshold.
address@hidden table
address@hidden deftp
-
address@hidden sys/timex.h
address@hidden GNU
address@hidden int ntp_adjtime (struct timex address@hidden)
-The @code{ntp_adjtime} function sets the structure specified by
address@hidden to current values.
-
-In addition, @code{ntp_adjtime} updates some settings to match what
-you pass to it in address@hidden  Use the @code{modes} element of
address@hidden to select what settings to update.  You can set
address@hidden, @code{freq}, @code{maxerror}, @code{esterror},
address@hidden, @code{constant} and @code{tick}.
-
address@hidden = zero means set nothing.
-
-Only the superuser can update settings.
-
address@hidden On Linux, ntp_adjtime() also does the adjtime() function if you 
set
address@hidden modes = ADJ_OFFSET_SINGLESHOT (in fact, that is how GNU libc 
implements
address@hidden adjtime()).  But this should be considered an internal function 
because
address@hidden it's so inconsistent with the rest of what ntp_adjtime() does 
and is
address@hidden forced in an ugly way into the struct timex.  So we don't 
document it
address@hidden and instead document adjtime() as the way to achieve the 
function.
-
-The return value is @code{0} on success and other values on failure.  The
-following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden TIME_ERROR
-The high-accuracy clock model is not properly set up at the moment, thus the
-clock must be considered unsynchronized, and the values should be
-treated with care.  Another reason could be that the specified new values
-are not allowed.
-
address@hidden EPERM
-The process specified a settings update but is not superuser.
-
address@hidden table
-
-For more details see RFC1305 (Network Time Protocol, Version 3) and
-related documents.
-
address@hidden Note:} Early versions of the @sc{gnu} C Library did not
-have this function but did have the synonymous @code{adjtimex}.
-
address@hidden deftypefun
-
-
address@hidden Formatting Calendar Time
address@hidden Formatting Calendar Time
-
-The functions described in this section format calendar time values as
-strings.  These functions are declared in the header file @file{time.h}.
address@hidden time.h
-
address@hidden time.h
address@hidden ISO
address@hidden {char *} asctime (const struct tm address@hidden)
-The @code{asctime} function converts the broken-down time value that
address@hidden points to into a string in a standard format:
-
address@hidden
-"Tue May 21 13:46:22 1991\n"
address@hidden smallexample
-
-The abbreviations for the days of week are: @samp{Sun}, @samp{Mon},
address@hidden, @samp{Wed}, @samp{Thu}, @samp{Fri} and @samp{Sat}.
-
-The abbreviations for the months are: @samp{Jan}, @samp{Feb},
address@hidden, @samp{Apr}, @samp{May}, @samp{Jun}, @samp{Jul}, @samp{Aug},
address@hidden, @samp{Oct}, @samp{Nov} and @samp{Dec}.
-
-The return value points to a statically allocated string, which might
-be overwritten by subsequent calls to @code{asctime} or @code{ctime}
-(but no other library function overwrites the contents of this
-string).
address@hidden deftypefun
-
address@hidden time.h
address@hidden POSIX.1c
address@hidden {char *} asctime_r (const struct tm address@hidden, char 
address@hidden)
-This function is similar to @code{asctime}, but instead of placing the
-result in a static buffer it writes the string in the buffer pointed
-to by the parameter @var{buffer}.  This buffer should have room for at
-least 26 bytes, including the terminating null.
-
-If no error occurred, the function returns a pointer to the string the
-result was written into, i.e., it returns @var{buffer}.  Otherwise, it
-returns @code{NULL}.
address@hidden deftypefun
-
-
address@hidden time.h
address@hidden ISO
address@hidden {char *} ctime (const time_t address@hidden)
-The @code{ctime} function is similar to @code{asctime}, except that you
-specify the calendar time argument as a @code{time_t} simple time value
-rather than in broken-down local time format.  It is equivalent to:
-
address@hidden
-asctime (localtime (@var{time}))
address@hidden smallexample
-
address@hidden sets the variable @code{tzname}, because @code{localtime}
-does so (@pxref{Time Zone Functions}).
address@hidden deftypefun
-
address@hidden time.h
address@hidden POSIX.1c
address@hidden {char *} ctime_r (const time_t address@hidden, char 
address@hidden)
-This function is similar to @code{ctime} but places the result in the
-string pointed to by @var{buffer}.  It is equivalent to:@footnote{This
-was written using GCC extensions. See Richard M. Stallman,
-``Statements and Declarations in Expressions'' in @emph{Using and
-Porting GCC} (Boston, MA: GNU Press, July 1999),
address@hidden:// gcc.gnu.org/ onlinedocs/ gcc-2.95.3/ gcc.htm}.}
-
address@hidden
-(@{ struct tm tm; asctime_r (localtime_r (time, &tm), buf); @})
address@hidden smallexample
-
-If no error occurred the function returns a pointer to the string the
-result was written into, i.e., it returns @var{buffer}.  Otherwise, it
-returns a @code{NULL}.
address@hidden deftypefun
-
-
address@hidden time.h
address@hidden ISO
address@hidden size_t strftime (char address@hidden, size_t @var{size}, const 
char address@hidden, const struct tm address@hidden)
-This function is similar to the @code{sprintf} function (@pxref{Formatted
-Input}), but the conversion specifications that can appear in the format
-template @var{template} are specialized for printing components of the date
-and time @var{brokentime} according to the locale currently specified for
-time conversion (@pxref{Locales}).
-
-Ordinary characters appearing in the @var{template} are copied to the
-output string @var{s}; this can include multibyte-character sequences.
-Conversion specifiers are introduced by a @samp{%} character, followed
-by an optional flag, which can be one of the following.  These flags
-are all @sc{gnu} extensions. The first three affect only the output of
-numbers:
-
address@hidden @code
address@hidden _
-The number is padded with spaces.
-
address@hidden -
-The number is not padded at all.
-
address@hidden 0
-The number is padded with zeros even if the format specifies padding
-with spaces.
-
address@hidden ^
-The output uses uppercase characters, but only if this is possible
-(@pxref{Case Conversion}).
address@hidden table
-
-The default action is to pad the number with zeros to keep it a constant
-width.  Numbers that do not have a range indicated below are never
-padded, since there is no natural width for them.
-
-Following the flag, an optional specification of the width is
-possible.  This is specified in decimal notation.  If the natural size
-of the output of the field has less than the specified number of
-characters, the result is written right-adjusted and space padded to
-the given size.
-
-An optional modifier can follow the optional flag and width
-specification.  The modifiers, which were first standardized by
address@hidden and by @address@hidden C99}, are
-
address@hidden @code
address@hidden E
-Use the locale's alternate representation for date and time.  This
-modifier applies to the @code{%c}, @code{%C}, @code{%x}, @code{%X},
address@hidden and @code{%Y} format specifiers.  In a Japanese locale, for
-example, @code{%Ex} might yield a date format based on the Japanese
-Emperors' reigns.
-
address@hidden O
-Use the locale's alternate numeric symbols for numbers.  This modifier
-applies only to numeric format specifiers.
address@hidden table
-
-If the format supports the modifier but no alternate representation
-is available, it is ignored.
-
-The conversion specifier ends with a format specifier taken from the
-following list.  The whole @samp{%} sequence is replaced in the output
-string as follows:
-
address@hidden @code
address@hidden %a
-This is the abbreviated weekday name according to the current locale.
-
address@hidden %A
-This is the full weekday name according to the current locale.
-
address@hidden %b
-This is the abbreviated month name according to the current locale.
-
address@hidden %B
-This is the full month name according to the current locale.
-
address@hidden %c
-This is the preferred calendar time representation for the current locale.
-
address@hidden %C
-This is the century of the year.  This is equivalent to the greatest
-integer not greater than the year divided by 100.  This format was
-first standardized by @sc{posix}.2-1992 and by @address@hidden C99}.
-
address@hidden %d
-This is the day of the month as a decimal number (range @code{01} through 
@code{31}).
-
address@hidden %D
-This is the date using the format @code{%m/%d/%y}.  This format was
-first standardized by @sc{posix}.2-1992 and by @address@hidden C99}.
-
address@hidden %e
-This is the day of the month like with @code{%d}, but padded with blank (range
address@hidden 1} through @code{31}).
-
-This format was first standardized by @sc{posix}.2-1992 and by @address@hidden 
C99}.
-
address@hidden %F
-This is the date using the format @code{%Y-%m-%d}.  This is the form
-specified in the @address@hidden 8601} standard and is the preferred form
-for all uses.  This format was first standardized by @address@hidden C99}
-and by @sc{posix}.1-2001.
-
address@hidden %g
-This is the year corresponding to the @sc{iso} week number, but
-without the century (range @code{00} through @code{99}).  This has the
-same format and value as @code{%y}, except that if the @sc{iso} week
-number (see @code{%V}) belongs to the previous or next year, that year
-is used instead.  This format was first standardized by @address@hidden
-C99} and by @sc{posix}.1-2001.
-
address@hidden %G
-This is the year corresponding to the @sc{iso} week number.  This has
-the same format and value as @code{%Y}, except that if the @sc{iso}
-week number (see @code{%V}) belongs to the previous or next year, that
-year is used instead.  This format was first standardized by
address@hidden@sc{iso} C99} and by @sc{posix}.1-2001 but was previously 
available
-as a @sc{gnu} extension.
-
address@hidden %h
-This is the abbreviated month name according to the current locale.
-The action is the same as for @code{%b}.  This format was first
-standardized by @sc{posix}.2-1992 and by @address@hidden C99}.
-
address@hidden %H
-This is the hour as a decimal number, using a 24-hour clock (range @code{00} 
through
address@hidden).
-
address@hidden %I
-This is the hour as a decimal number, using a 12-hour clock (range @code{01} 
through
address@hidden).
-
address@hidden %j
-This is the day of the year as a decimal number (range @code{001} through 
@code{366}).
-
address@hidden %k
-This is the hour as a decimal number, using a 24-hour clock like
address@hidden, but padded with blank (range @code{ 0} through @code{23}).
-This format is a @sc{gnu} extension.
-
address@hidden %l
-This is the hour as a decimal number, using a 12-hour clock like
address@hidden, but padded with blank (range @code{ 1} through @code{12}).
-This format is a @sc{gnu} extension.
-
address@hidden %m
-This is the month as a decimal number (range @code{01} through @code{12}).
-
address@hidden %M
-This is the minute as a decimal number (range @code{00} through @code{59}).
-
address@hidden %n
-This is a single @samp{\n} (newline) character.  This format was first
-standardized by @sc{posix}.2-1992 and by @address@hidden C99}.
-
address@hidden %p
-This is either @samp{AM} or @samp{PM}, according to the given time
-value; or the corresponding strings for the current locale.  Noon is
-treated as @samp{PM} and midnight as @samp{AM}.  In most locales
address@hidden/@samp{PM} format is not supported; in such cases,
address@hidden"%p"} yields an empty string.
-
address@hidden
-We currently have a problem with makeinfo.  Write @samp{AM} and @samp{am}
-both results in `am'.  I.e., the difference in case is not visible anymore.
address@hidden ignore
address@hidden %P
-This is either @samp{am} or @samp{pm}, according to the given time
-value; or the corresponding strings for the current locale, printed in
-lowercase characters.  Noon is treated as @samp{pm} and midnight as
address@hidden  In most locales @samp{AM}/@samp{PM} format is not
-supported; in such cases, @code{"%P"} yields an empty string.  This
-format is a @sc{gnu} extension.
-
address@hidden %r
-This is the complete calendar time using the a.m./p.m. format of the
-current locale.  This format was first standardized by
address@hidden and by @address@hidden C99}.  In the @sc{posix} locale,
-this format is equivalent to @code{%I:%M:%S %p}.
-
address@hidden %R
-This is the hour and minute in decimal numbers using the format
address@hidden:%M}. This format was first standardized by @address@hidden C99}
-and by @sc{posix}.1-2001 but was previously available as a @sc{gnu}
-extension.
-
address@hidden %s
-This is the number of seconds since the epoch, i.e., since 1970-01-01
-00:00:00 @sc{UTC}.  Leap seconds are not counted unless leap second support
-is available.  This format is a @sc{gnu} extension.
-
address@hidden %S
-This is the seconds as a decimal number (range @code{00} through @code{60}).
-
address@hidden %t
-This is a single @samp{\t} (tabulator) character.  This format was
-first standardized by @sc{posix}.2-1992 and by @address@hidden C99}.
-
address@hidden %T
-This is the time of day using decimal numbers, in the format
address@hidden:%M:%S}.  This format was first standardized by
address@hidden and by @address@hidden C99}.
-
address@hidden %u
-This is the day of the week as a decimal number (range @code{1}
-through @code{7}), Monday being @code{1}.  This format was first
-standardized by @sc{posix}.2-1992 and by @address@hidden C99}.
-
address@hidden %U
-This is the week number of the current year as a decimal number (range 
@code{00}
-through @code{53}), starting with the first Sunday as the first day of
-the first week.  Days preceding the first Sunday in the year are
-considered to be in week @code{00}.
-
address@hidden %V
-This is the @address@hidden 8601:1988} week number as a decimal number
-(range @code{01} through @code{53}).  @sc{iso} weeks start with Monday
-and end with Sunday.  Week @code{01} of a year is the first week that
-has the majority of its days in that year; this is equivalent to the
-week containing the year's first Thursday, and it is also equivalent
-to the week containing January 4.  Week @code{01} of a year can
-contain days from the previous year.  The week before week @code{01}
-of a year is the last week (@code{52} or @code{53}) of the previous
-year even if it contains days from the new year.  This format was
-first standardized by @sc{posix}.2-1992 and by @address@hidden C99}.
-
address@hidden %w
-This is the day of the week as a decimal number (range @code{0} through
address@hidden), Sunday being @code{0}.
-
address@hidden %W
-This is the week number of the current year as a decimal number (range 
@code{00}
-through @code{53}), starting with the first Monday as the first day of
-the first week.  All days preceding the first Monday in the year are
-considered to be in week @code{00}.
-
address@hidden %x
-This is the preferred date representation for the current locale.
-
address@hidden %X
-This is the preferred time of day representation for the current locale.
-
address@hidden %y
-This is the year without a century as a decimal number (range @code{00} through
address@hidden).  This is equivalent to the year modulo 100.
-
address@hidden %Y
-This is the year as a decimal number, using the Gregorian calendar.  Years
-before the year @code{1} are numbered @code{0}, @code{-1}, and so on.
-
address@hidden %z
-This is the @w{RFC 822}/@address@hidden 8601:1988} numeric time zone
-(e.g., @code{-0600} or @code{+0100}), or nothing if no time zone is
-determinable.  This format was first standardized by @address@hidden C99}
-and by @sc{posix}.1-2001 but was previously available as a @sc{gnu}
-extension.
-
-In the @sc{posix} locale, a full @w{RFC 822} time stamp is generated by the 
format
address@hidden@samp{"%a, %d %b %Y %H:%M:%S %z"}} (or the equivalent
address@hidden@samp{"%a, %d %b %Y %T %z"}}).
-
address@hidden %Z
-This is the time zone abbreviation (empty if the time zone can't be 
determined).
-
address@hidden %%
-This is a literal @samp{%} character.
address@hidden table
-
-The @var{size} parameter can be used to specify the maximum number of
-characters to be stored in the array @var{s}, including the
-terminating null character.  If the formatted time requires more than
address@hidden characters, @code{strftime} returns zero and the contents
-of the array @var{s} are undefined.  Otherwise, the return value
-indicates the number of characters placed in the array @var{s}, not
-including the terminating null character.
-
address@hidden:} This convention for the return value, prescribed in
address@hidden@sc{iso} C}, can lead to problems in some situations.  For certain
-format strings and certain locales, the output really can be the empty
-string, and this cannot be discovered by testing the return value
-only.  For example, in most locales the a.m./p.m. time format is not
-supported (most of the world uses the 24-hour time representation).
-In such locales, @code{"%p"} will return the empty string, i.e., the
-return value is zero.  To detect situations like this, something
-similar to the following code should be used:
-
address@hidden
-buf[0] = '\1';
-len = strftime (buf, bufsize, format, tp);
-if (len == 0 && buf[0] != '\0')
-  @{
-    /* Something went wrong in the strftime call.  */
-    @dots{}
-  @}
address@hidden smallexample
-
-If @var{s} is a null pointer, @code{strftime} does not actually write
-anything, but instead returns the number of characters it would have written.
-
-According to @sc{posix}.1, every call to @code{strftime} implies a
-call to @code{tzset}.  So the contents of the environment variable
address@hidden are examined before any output is produced.
-
-For an example of @code{strftime}, see @ref{Time Functions Example}.
address@hidden deftypefun
-
address@hidden time.h
address@hidden ISO/Amend1
address@hidden size_t wcsftime (wchar_t address@hidden, size_t @var{size}, 
const wchar_t address@hidden, const struct tm address@hidden)
-The @code{wcsftime} function is equivalent to the @code{strftime}
-function with the difference that it operates on wide-character
-strings.  The buffer where the result is stored, pointed to by
address@hidden, must be an array of wide characters.  The parameter
address@hidden, which specifies the size of the output buffer, gives the
-number of wide characters, not the number of bytes.
-
-Also, the format string @var{template} is a wide-character string.
-Since all characters needed to specify the format string are in the
-basic character set, it is portably possible to write format strings
-in the C source code using the @code{L"@dots{}"} notation.  The
-parameter @var{brokentime} has the same meaning as in the
address@hidden call.
-
-The @code{wcsftime} function supports the same flags, modifiers, and
-format specifiers as the @code{strftime} function.
-
-The return value of @code{wcsftime} is the number of wide characters
-stored in @code{s}.  When more characters would have to be written than
-can be placed in the buffer @var{s} the return value is zero, with the
-same problems indicated in the @code{strftime} documentation.
address@hidden deftypefun
-
address@hidden Parsing Date and Time
address@hidden Convert Textual Time and Date Information Back
-
-The @address@hidden C} standard does not specify any functions that can
-convert the output of the @code{strftime} function back into a binary
-format.  This led to a variety of more-or-less successful
-implementations with different interfaces over the years.  Then the
-Unix standard was extended by the addition of two functions:
address@hidden and @code{getdate}.  Both have strange interfaces, but
-at least they are widely available.
-
address@hidden Low-Level Time String Parsing
address@hidden Interpret String According to Given Format
-
-The first function is rather low-level.  It is nevertheless frequently
-used in software since it is better known.  Its interface and
-implementation are heavily influenced by the @code{getdate} function,
-which is defined and implemented in terms of calls to @code{strptime}.
-
address@hidden time.h
address@hidden XPG4
address@hidden {char *} strptime (const char address@hidden, const char 
address@hidden, struct tm address@hidden)
-The @code{strptime} function parses the input string @var{s} according
-to the format string @var{fmt} and stores its results in the
-structure @var{tp}.
-
-The input string could be generated by a @code{strftime} call or
-obtained any other way.  It does not need to be in a
-human-recognizable format; e.g. a date passed as @code{"02:1999:9"} is
-acceptable, even though it is ambiguous without context.  As long as
-the format string @var{fmt} matches the input string, the function
-will succeed.
-
-The user has to make sure, though, that the input can be parsed in a
-unambiguous way.  The string @code{"1999112"} can be parsed using the
-format @code{"%Y%m%d"} as 1999-1-12, 1999-11-2, or even 19991-1-2.  It
-is necessary to add appropriate separators to reliably get results.
-
-The format string consists of the same components as the format string
-of the @code{strftime} function.  The only difference is that the
-flags @code{_}, @code{-}, @code{0} and @code{^} are not allowed.
address@hidden Is this really the intention?  --drepper
-Several of the distinct formats of @code{strftime} do the same work in
address@hidden, since differences like case of the input do not
-matter.  For reasons of symmetry, though, all formats are supported.
-
-The modifiers @code{E} and @code{O} are also allowed everywhere the
address@hidden function allows them.
-
-The formats are
-
address@hidden @code
address@hidden %a
address@hidden %A
-This is the weekday name according to the current locale, in abbreviated form 
or
-the full name.
-
address@hidden %b
address@hidden %B
address@hidden %h
-This is the month name according to the current locale, in abbreviated form or
-the full name.
-
address@hidden %c
-This is the date and time representation for the current locale.
-
address@hidden %Ec
-This is like @code{%c}, but the locale's alternative date and time
-format is used.
-
address@hidden %C
-This is the century of the year.
-
-It makes sense to use this format only if the format string also
-contains the @code{%y} format.
-
address@hidden %EC
-This is the locale's representation of the period.
-
-Unlike @code{%C}, it sometimes makes sense to use this format since some
-cultures represent years relative to the beginning of eras instead of
-using the Gregorian years.
-
address@hidden %d
address@hidden %e
-This is the day of the month as a decimal number (range @code{1} through 
@code{31}).
-Leading zeros are permitted but not required.
-
address@hidden %Od
address@hidden %Oe
-This is same as @code{%d} but using the locale's alternative numeric symbols.
-
-Leading zeros are permitted but not required.
-
address@hidden %D
-Equivalent to @code{%m/%d/%y}.
-
address@hidden %F
-This is equivalent to @code{%Y-%m-%d}, which is the @address@hidden 8601} date
-format.
-
-This is a @sc{gnu} extension following an @address@hidden C99} extension to
address@hidden
-
address@hidden %g
-This is the year corresponding to the @sc{iso} week number, but without the 
century
-(range @code{00} through @code{99}).
-
-Currently, this is not fully implemented.  The format is recognized,
-input is consumed, but no field in @var{tm} is set.
-
-This format is a @sc{gnu} extension following a @sc{gnu} extension of 
@code{strftime}.
-
address@hidden %G
-This is the year corresponding to the @sc{iso} week number.
-
-Currently, this is not fully implemented.  The format is recognized,
-input is consumed, but no field in @var{tm} is set.
-
-This format is a @sc{gnu} extension following a @sc{gnu} extension of 
@code{strftime}.
-
address@hidden %H
address@hidden %k
-This is the hour as a decimal number, using a 24-hour clock (range @code{00} 
through
address@hidden).
-
address@hidden is a @sc{gnu} extension following a @sc{gnu} extension of 
@code{strftime}.
-
address@hidden %OH
-This is the same as @code{%H} but using the locale's alternative numeric 
symbols.
-
address@hidden %I
address@hidden %l
-This is the hour as a decimal number, using a 12-hour clock (range @code{01} 
through
address@hidden).
-
address@hidden is a @sc{gnu} extension following a @sc{gnu} extension of 
@code{strftime}.
-
address@hidden %OI
-This is the same as @code{%I} but using the locale's alternative numeric 
symbols.
-
address@hidden %j
-This is the day of the year as a decimal number (range @code{1} through 
@code{366}).
-
-Leading zeros are permitted but not required.
-
address@hidden %m
-This is the month as a decimal number (range @code{1} through @code{12}).
-
-Leading zeros are permitted but not required.
-
address@hidden %Om
-This is the same as @code{%m} but using the locale's alternative
-numeric symbols.
-
address@hidden %M
-This is the minute as a decimal number (range @code{0} through @code{59}).
-
-Leading zeros are permitted but not required.
-
address@hidden %OM
-This is the same as @code{%M} but using the locale's alternative
-numeric symbols.
-
address@hidden %n
address@hidden %t
-This matches any white space.
-
address@hidden %p
address@hidden %P
-This is the locale-dependent equivalent to @samp{AM} or @samp{PM}.
-
-This format is not useful unless @code{%I} or @code{%l} is also used.
-Another complication is that the locale might not define these values
-at all, and therefore the conversion fails.
-
address@hidden is a @sc{gnu} extension following a @sc{gnu} extension to 
@code{strftime}.
-
address@hidden %r
-This is the complete time using the a.m./p.m. format of the current
-locale.
-
-A complication is that the locale might not define this format at all,
-and therefore the conversion fails.
-
address@hidden %R
-This is the hour and minute in decimal numbers using the format @code{%H:%M}.
-
address@hidden is a @sc{gnu} extension following a @sc{gnu} extension to 
@code{strftime}.
-
address@hidden %s
-This is the number of seconds since the epoch, i.e., since 1970-01-01 00:00:00 
@sc{UTC}.
-Leap seconds are not counted unless leap second support is available.
-
address@hidden is a @sc{gnu} extension following a @sc{gnu} extension to 
@code{strftime}.
-
address@hidden %S
-This is the seconds as a decimal number (range @code{0} through @code{60}).
-
-Leading zeros are permitted but not required.
-
-The Unix specification says the upper bound on this value is
address@hidden, a result of a decision to allow double leap seconds.  You
-will not see the value @code{61}, because no minute has more than one
-leap second, but the myth persists.
-
address@hidden %OS
-This is the same as @code{%S} but using the locale's alternative
-numeric symbols.
-
address@hidden %T
-This is equivalent to the use of @code{%H:%M:%S} in this place.
-
address@hidden %u
-This is the day of the week as a decimal number (range @code{1} through
address@hidden), Monday being @code{1}.
-
-Leading zeros are permitted but not required.
-
-Currently, this is not fully implemented.  The format is recognized,
-input is consumed, but no field in @var{tm} is set.
-
address@hidden %U
-This is the week number of the current year as a decimal number (range @code{0}
-through @code{53}).
-
-Leading zeros are permitted but not required.
-
address@hidden %OU
-This is the same as @code{%U} but using the locale's alternative
-numeric symbols.
-
address@hidden %V
-This is the @address@hidden 8601:1988} week number as a decimal number (range 
@code{1}
-through @code{53}).
-
-Leading zeros are permitted but not required.
-
-Currently, this is not fully implemented.  The format is recognized,
-input is consumed, but no field in @var{tm} is set.
-
address@hidden %w
-This is the day of the week as a decimal number (range @code{0} through
address@hidden), Sunday being @code{0}.
-
-Leading zeros are permitted but not required.
-
-Currently, this is not fully implemented.  The format is recognized,
-input is consumed but no field in @var{tm} is set.
-
address@hidden %Ow
-This is the same as @code{%w} but using the locale's alternative
-numeric symbols.
-
address@hidden %W
-This is the week number of the current year as a decimal number (range @code{0}
-through @code{53}).
-
-Leading zeros are permitted but not required.
-
-Currently, this is not fully implemented.  The format is recognized,
-input is consumed, but no field in @var{tm} is set.
-
address@hidden %OW
-This is the same as @code{%W} but using the locale's alternative numeric 
symbols.
-
address@hidden %x
-This is the date using the locale's date format.
-
address@hidden %Ex
-This is like @code{%x}, but the locale's alternative data representation is 
used.
-
address@hidden %X
-This is the time using the locale's time format.
-
address@hidden %EX
-This is like @code{%X}, but the locale's alternative time representation is 
used.
-
address@hidden %y
-This is the year without a century as a decimal number (range @code{0} through
address@hidden).
-
-Leading zeros are permitted but not required.
-
-It is questionable to use this format without the @code{%C} format.
-The @code{strptime} function does regard input values in the range
address@hidden to @math{99} as the years @math{1969} to @math{1999} and the
-values @math{0} to @math{68} as the years @math{2000} to @math{2068}.
-But maybe this heuristic fails for some input data.
-
-Therefore, it is best to avoid @code{%y} completely and use @code{%Y}
-instead.
-
address@hidden %Ey
-This is the offset from @code{%EC} in the locale's alternative representation.
-
address@hidden %Oy
-This is the offset of the year (from @code{%C}) using the locale's alternative
-numeric symbols.
-
address@hidden %Y
-This is the year as a decimal number, using the Gregorian calendar.
-
address@hidden %EY
-This is the full alternative year representation.
-
address@hidden %z
-This is the offset from @sc{GMT} in @address@hidden 8601}/RFC822 format.
-
address@hidden %Z
-This is the time zone name.
-
-Currently, this is not fully implemented.  The format is recognized,
-input is consumed, but no field in @var{tm} is set.
-
address@hidden %%
-This is a literal @samp{%} character.
address@hidden table
-
-All other characters in the format string must have a matching
-character in the input string.  Exceptions are white spaces in the
-input string that can match zero or more white-space characters in the
-format string.
-
address@hidden Note:} The @sc{xpg} standard advises applications
-to use at least one white-space character (as specified by
address@hidden) or other nonalphanumeric characters between any two
-conversion specifications.  The @sc{gnu} C Library does not have this
-limitation, but other libraries might have trouble parsing formats
-like @code{"%d%m%Y%H%M%S"}.
-
-The @code{strptime} function processes the input string from right to
-left.  Each of the three possible input elements (white space, literal,
-or format) are handled one after the other.  If the input cannot be
-matched to the format string, the function stops.  The remainder of the
-format and input strings are not processed.
-
-The function returns a pointer to the first character it was unable to
-process.  If the input string contains more characters than required
-by the format string, the return value points right after the last
-consumed input character.  If the whole input string is consumed, the
-return value points to the @code{NULL} byte at the end of the string.
-If an error occurs, i.e., @code{strptime} fails to match all of the
-format string, the function returns @code{NULL}.
address@hidden deftypefun
-
-The specification of the function in the @sc{xpg} standard is rather
-vague, leaving out a few important pieces of information.  Most
-importantly, it does not specify what happens to those elements of
address@hidden that are not directly initialized by the different formats.
-The implementations on different Unix systems vary here.
-
-The @sc{gnu} libc implementation does not touch those fields that are
-not directly initialized.  Exceptions are the @code{tm_wday} and
address@hidden elements, which are recomputed if any of the year,
-month, or date elements changed.  This has two implications:
-
address@hidden @bullet
address@hidden
-Before calling the @code{strptime} function for a new input string,
-you should prepare the @var{tm} structure you pass.  Normally this
-will mean initializing all values to zero.  Alternatively, you can set
-all fields to values like @code{INT_MAX}, allowing you to determine
-which elements were set by the function call.  Zero does not work
-here, since it is a valid value for many of the fields.
-
-Careful initialization is necessary if you want to find out whether a
-certain field in @var{tm} was initialized by the function call.
-
address@hidden
-You can construct a @code{struct tm} value with several consecutive
address@hidden calls.  A useful application of this is the parsing of
-two separate strings, one containing date information and the other
-time information.  By parsing one after the other without clearing the
-structure in between, you can construct a complete broken-down time.
address@hidden itemize
-
-The following example shows a function that parses a string that
-contains the date information in either US style or @address@hidden 8601}
-form:
-
address@hidden
-const char *
-parse_date (const char *input, struct tm *tm)
address@hidden
-  const char *cp;
-
-  /* @r{First clear the result structure.}  */
-  memset (tm, '\0', sizeof (*tm));
-
-  /* @r{Try the ISO format first.}  */
-  cp = strptime (input, "%F", tm);
-  if (cp == NULL)
-    @{
-      /* @r{Does not match.  Try the US form.}  */
-      cp = strptime (input, "%D", tm);
-    @}
-
-  return cp;
address@hidden
address@hidden smallexample
-
address@hidden General Time String Parsing
address@hidden A More User-Friendly Way to Parse Times and Dates
-
-The Unix standard defines another function for parsing date strings.
-The interface is weird, but if the function happens to suit your
-application, it is just fine.  It is problematic to use this function
-in multithreaded programs or libraries, since it returns a pointer to
-a static variable and uses a global variable and global state (an
-environment variable).
-
address@hidden time.h
address@hidden Unix98
address@hidden getdate_err
-This variable of type @code{int} contains the error code of the last
-unsuccessful call to @code{getdate}.  Defined values are:
-
address@hidden @math
address@hidden 1
-The environment variable @code{DATEMSK} is not defined or is null.
address@hidden 2
-The template file denoted by the @code{DATEMSK} environment variable
-cannot be opened.
address@hidden 3
-Information about the template file cannot retrieved.
address@hidden 4
-The template file is not a regular file.
address@hidden 5
-An I/O error occurred while reading the template file.
address@hidden 6
-Not enough memory is available to execute the function.
address@hidden 7
-The template file contains no matching template.
address@hidden 8
-The input date is invalid, but would match a template otherwise.  This
-includes dates like February 31st, and dates that cannot be represented
-in a @code{time_t} variable.
address@hidden table
address@hidden defvar
-
address@hidden time.h
address@hidden Unix98
address@hidden {struct tm *} getdate (const char address@hidden)
-The interface to @code{getdate} is the simplest possible way for a
-function to parse a string and return the value.  @var{string} is the
-input string, and the result is returned in a statically allocated
-variable.
-
-The details about how the string is processed are hidden from the
-user.  In fact, they can be outside the control of the program.  Which
-formats are recognized is controlled by the file named by the
-environment variable @code{DATEMSK}.  This file should contain lines
-of valid format strings that could be passed to @code{strptime}.
-
-The @code{getdate} function reads these format strings one after the
-other and tries to match the input string.  The first line that
-completely matches the input string is used.
-
-Elements not initialized through the format string retain the values
-present at the time of the @code{getdate} function call.
-
-The formats recognized by @code{getdate} are the same as for
address@hidden  See above for an explanation.  There are only a few
-extensions to the @code{strptime} behavior:
-
address@hidden @bullet
address@hidden
-If the @code{%Z} format is given, the broken-down time is based on the
-current time of the time zone matched, not of the current time zone of
-the run-time environment.
-
-Currently, this is not implemented.  The problem is that time zone
-names are not unique.  If a fixed time zone is assumed for a given
-string (say @code{EST} meaning US East Coast time), then uses for
-countries other than the United States will fail.  So far, we have
-found no good solution to this.
-
address@hidden
-If only the weekday is specified, the selected day depends on the
-current date.  If the current weekday is greater or equal to the
address@hidden value, the current week's day is chosen, otherwise the
-day next week is chosen.
-
address@hidden
-A similar heuristic is used when only the month is given and not the
-year.  If the month is greater than or equal to the current month,
-then the current year is used.  Otherwise, it wraps to next year.  The
-first day of the month is assumed if one is not explicitly specified.
-
address@hidden
-The current hour, minute and second are used if the appropriate value
-is not set through the format.
-
address@hidden
-If no date is given, tomorrow's date is used if the time is smaller
-than the current time.  Otherwise, today's date is taken.
address@hidden itemize
-
-The format in the template file need not contain only format elements.
-The following is a list of possible format strings (taken from the
-Unix standard):
-
address@hidden
-%m
-%A %B %d, %Y %H:%M:%S
-%A
-%B
-%m/%d/%y %I %p
-%d,%m,%Y %H:%M
-at %A the %dst of %B in %Y
-run job at %I %p,%B %dnd
-%A den %d. %B %Y %H.%M Uhr
address@hidden smallexample
-
-As you can see, the template list can contain very specific strings like
address@hidden job at %I %p,%B %dnd}.  Using the above list of templates and
-assuming the current time is Mon Sep 22 12:19:47 EDT 1986, we can obtain the
-following results for the given input.
-
address@hidden {xxxxxxxxxxxx} {xxxxxxxxxx} 
{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}
address@hidden        @samp{Input} @tab     Match @tab Result
address@hidden        @samp{Mon} @tab       @var{%a} @tab    @samp{Mon Sep 22 
12:19:47 EDT 1986}
address@hidden        @samp{Sun} @tab       @var{%a} @tab    @samp{Sun Sep 28 
12:19:47 EDT 1986}
address@hidden        @samp{Fri} @tab       @var{%a} @tab    @samp{Fri Sep 26 
12:19:47 EDT 1986}
address@hidden        @samp{September} @tab @var{%B} @tab    @samp{Mon Sep 1 
12:19:47 EDT 1986}
address@hidden        @samp{January} @tab   @var{%B} @tab    @samp{Thu Jan 1 
12:19:47 EST 1987}
address@hidden        @samp{December} @tab  @var{%B} @tab    @samp{Mon Dec 1 
12:19:47 EST 1986}
address@hidden        @samp{Sep Mon} @tab   @var{%b %a} @tab @samp{Mon Sep 1 
12:19:47 EDT 1986}
address@hidden        @samp{Jan Fri} @tab   @var{%b %a} @tab @samp{Fri Jan 2 
12:19:47 EST 1987}
address@hidden        @samp{Dec Mon} @tab   @var{%b %a} @tab @samp{Mon Dec 1 
12:19:47 EST 1986}
address@hidden        @samp{Jan Wed 1989} @tab  @var{%b %a %Y} @tab @samp{Wed 
Jan 4 12:19:47 EST 1989}
address@hidden        @samp{Fri 9} @tab     @var{%a %H} @tab @samp{Fri Sep 26 
09:00:00 EDT 1986}
address@hidden        @samp{Feb 10:30} @tab @var{%b %H:%S} @tab @samp{Sun Feb 1 
10:00:30 EST 1987}
address@hidden        @samp{10:30} @tab     @var{%H:%M} @tab @samp{Tue Sep 23 
10:30:00 EDT 1986}
address@hidden        @samp{13:30} @tab     @var{%H:%M} @tab @samp{Mon Sep 22 
13:30:00 EDT 1986}
address@hidden multitable
-
-The return value of the function is a pointer to a static variable of
-type @address@hidden tm}}, or a null pointer if an error occurred.  The
-result is only valid until the next @code{getdate} call, making this
-function unusable in multithreaded applications.
-
-The @code{errno} variable is @emph{not} changed.  Error conditions are
-stored in the global variable @code{getdate_err}.  See the
-description above for a list of the possible error values.
-
address@hidden:} The @code{getdate} function should @emph{never} be
-used in @sc{suid}-programs.  Using the @code{DATEMSK} environment
-variable, you can get the function to open any arbitrary file, and
-chances are high that with some bogus input (such as a binary file),
-the program will crash.
address@hidden deftypefun
-
address@hidden time.h
address@hidden GNU
address@hidden int getdate_r (const char address@hidden, struct tm 
address@hidden)
-The @code{getdate_r} function is the reentrant counterpart of
address@hidden  It does not use the global variable @code{getdate_err}
-to signal an error, but instead returns an error code.  The same error
-codes as described in the @code{getdate_err} documentation above are
-used, with 0 meaning success.
-
-Moreover, @code{getdate_r} stores the broken-down time in the variable
-of type @code{struct tm} pointed to by the second argument, rather than
-in a static variable.
-
-This function is not defined in the Unix standard.  Nevertheless, it
-is available on some other Unix systems as well.
-
-The warning against using @code{getdate} in @sc{suid}-programs applies to
address@hidden
address@hidden deftypefun
-
address@hidden TZ Variable
address@hidden Specifying the Time Zone with @code{TZ}
-
-In @sc{posix} systems, a user can specify the time zone by means of the
address@hidden environment variable.  For information about how to set
-environment variables, see @ref{Environment Variables}.  The functions
-for accessing the time zone are declared in @file{time.h}.
address@hidden time.h
address@hidden time zone
-
-You should not normally need to set @code{TZ}.  If the system is
-configured properly, the default time zone will be correct.  You might
-set @code{TZ} if you are using a computer over a network from a
-different time zone, and would like times reported to you in the time
-zone local to you, rather than what is local to the computer.
-
-In @sc{posix}.1 systems the value of the @code{TZ} variable can be in one of
-three formats.  With the @sc{gnu} C Library, the most common format is the
-last one, which can specify a selection from a large database of time
-zone information for many regions of the world.  The first two formats
-are used to describe the time zone information directly, which is both
-more cumbersome and less precise.  But the @sc{posix}.1 standard only
-specifies the details of the first two formats, so it is good to be
-familiar with them in case you come across a @sc{posix}.1 system that doesn't
-support a time zone information database.
-
-The first format is used when there is no daylight saving time (or
-summer time) in the local time zone:
-
address@hidden
address@hidden@var{std} @var{offset}}
address@hidden smallexample
-
-The @var{std} string specifies the name of the time zone.  It must be
-three or more characters long and must not contain a leading colon,
-embedded digits, commas, or plus or minus signs.  There is no space
-character separating the time zone name from the @var{offset}, so these
-restrictions are necessary to parse the specification correctly.
-
-The @var{offset} specifies the time value you must add to the local time
-to get a Coordinated Universal Time value.  It has syntax like
address@hidden|@address@hidden@code{:address@hidden@code{:address@hidden  This
-is positive if the local time zone is west of the prime meridian and
-negative if it is east.  The hour must be between @code{0} and
address@hidden and the minute and seconds between @code{0} and @code{59}.
-
-For example, here is how we would specify eastern standard time, but
-without any daylight saving time alternative:
-
address@hidden
-EST+5
address@hidden smallexample
-
-The second format is used when there is daylight saving time:
-
address@hidden
address@hidden@var{std} @var{offset} @var{dst} 
address@hidden@code{,address@hidden@code{/address@hidden@code{,address@hidden@code{/address@hidden
address@hidden smallexample
-
-The initial @var{std} and @var{offset} specify the standard time zone, as
-described above.  The @var{dst} string and @var{offset} specify the name
-and offset for the corresponding daylight saving time zone; if the
address@hidden is omitted, it defaults to one hour ahead of standard time.
-
-The remainder of the specification describes when daylight saving time
-is in effect.  The @var{start} field is when daylight saving time goes
-into effect, and the @var{end} field is when the change is made back
-to standard time.  The following formats are recognized for these
-fields:
-
address@hidden @code
address@hidden address@hidden
-This specifies the Julian day, with @var{n} between @code{1} and @code{365}.
-February 29 is never counted, even in leap years.
-
address@hidden @var{n}
-This specifies the Julian day, with @var{n} between @code{0} and @code{365}.
-February 29 is counted in leap years.
-
address@hidden address@hidden@address@hidden
-This specifies day @var{d} of week @var{w} of month @var{m}.  The day
address@hidden must be between @code{0} (Sunday) and @code{6}.  The week
address@hidden must be between @code{1} and @code{5}; week @code{1} is the
-first week in which day @var{d} occurs, and week @code{5} specifies the
address@hidden @var{d} day in the month.  The month @var{m} should be
-between @code{1} and @code{12}.
address@hidden table
-
-The @var{time} fields specify when, in the local time currently in
-effect, the change to the other time occurs.  If omitted, the default is
address@hidden:00:00}.
-
-For example, here is how you would specify the eastern time zone in
-the United States, including the appropriate daylight saving time and
-its dates of applicability.  The normal offset from @sc{UTC} is five hours;
-since this is west of the prime meridian, the sign is positive.
-Summer time begins on the first Sunday in April at 2:00 a.m., and ends
-on the last Sunday in October at 2:00 a.m.
-
address@hidden
-EST+5EDT,M4.1.0/2,M10.5.0/2
address@hidden smallexample
-
-The schedule of daylight saving time in any particular jurisdiction has
-changed over the years.  To be strictly correct, the conversion of dates
-and times in the past should be based on the schedule that was in effect
-then.  However, this format has no facilities to let you specify how the
-schedule has changed from year to year.  The most you can do is specify
-one particular schedule---usually the present day schedule---and this is
-used to convert any date, no matter when.  For precise time zone
-specifications, it is best to use the time zone information database
-(see below).
-
-The third format looks like this:
-
address@hidden
-:@var{characters}
address@hidden smallexample
-
-Each operating system interprets this format differently; in the
address@hidden C Library, @var{characters} is the name of a file that
-describes the time zone.
-
address@hidden /etc/localtime
address@hidden localtime
-If the @code{TZ} environment variable does not have a value, the
-operation chooses a time zone by default.  In the @sc{gnu} C Library,
-the default time zone is like the specification
address@hidden:/etc/localtime} (or @samp{TZ=:/usr/local/etc/localtime},
-depending on how @sc{gnu} C Library was address@hidden,
-``Installing the @acronym{GNU} C Library''.}  Other C libraries use their own 
rule for choosing
-the default time zone, so there is little we can say about them.
-
address@hidden time zone database
address@hidden /share/lib/zoneinfo
address@hidden zoneinfo
-If @var{characters} begins with a slash, it is an absolute file name;
-otherwise the library looks for the file
address@hidden@file{/share/lib/zoneinfo/@var{characters}}}.  The @file{zoneinfo}
-directory contains data files describing local time zones in many
-different parts of the world.  The names represent major cities, with
-subdirectories for geographical areas; for example,
address@hidden/New_York}, @file{Europe/London}, @file{Asia/Hong_Kong}.
-These data files are installed by the system administrator, who also
-sets @file{/etc/localtime} to point to the data file for the local time
-zone.  The @sc{gnu} C Library comes with a large database of time zone
-information for most regions of the world, which is maintained by a
-community of volunteers and put in the public domain.
-
address@hidden Time Zone Functions
address@hidden Functions and Variables for Time Zones
-
address@hidden time.h
address@hidden POSIX.1
address@hidden {char *} tzname [2]
-The array @code{tzname} contains two strings, which are the standard
-names of the pair of time zones (standard and daylight saving) that
-the user has selected.  @code{tzname[0]} is the name of the standard
-time zone (for example, @code{"EST"}), and @code{tzname[1]} is the
-name for the time zone when daylight saving time is in use (for
-example, @code{"EDT"}).  These correspond to the @var{std} and
address@hidden strings (respectively) from the @code{TZ} environment
-variable.  If daylight saving time is never used, @code{tzname[1]} is
-the empty string.
-
-The @code{tzname} array is initialized from the @code{TZ} environment
-variable whenever @code{tzset}, @code{ctime}, @code{strftime},
address@hidden or @code{localtime} is called.  If multiple
-abbreviations have been used (e.g., @code{"EWT"} and @code{"EDT"} for
-US eastern war time and eastern daylight time), the array contains
-the most recent abbreviation.
-
-The @code{tzname} array is required for @sc{posix}.1 compatibility, but in
address@hidden programs it is better to use the @code{tm_zone} member of the
-broken-down time structure, since @code{tm_zone} reports the correct
-abbreviation even when it is not the latest one.
-
-Though the strings are declared as @code{char *}, the user must
-refrain from modifying these strings.  Modifying the strings will
-almost certainly lead to trouble.
-
address@hidden deftypevar
-
address@hidden time.h
address@hidden POSIX.1
address@hidden void tzset (void)
-The @code{tzset} function initializes the @code{tzname} variable from
-the value of the @code{TZ} environment variable.  It is not usually
-necessary for your program to call this function, because it is called
-automatically when you use the other time conversion functions that
-depend on the time zone.
address@hidden deftypefun
-
-The following variables are defined for compatibility with System V
-Unix.  Like @code{tzname}, these variables are set by calling
address@hidden or the other time conversion functions.
-
address@hidden time.h
address@hidden SVID
address@hidden {long int} timezone
-This contains the difference between @sc{UTC} and the latest local standard
-time, in seconds west of @sc{UTC}.  For example, in the US eastern time
-zone, the value is @code{5*60*60}.  Unlike the @code{tm_gmtoff} member
-of the broken-down time structure, this value is not adjusted for
-daylight saving, and its sign is reversed.  In @sc{gnu} programs it is
-better to use @code{tm_gmtoff}, since it contains the correct offset
-even when it is not the latest one.
address@hidden deftypevar
-
address@hidden time.h
address@hidden SVID
address@hidden int daylight
-This variable has a nonzero value if daylight saving time rules apply.
-A nonzero value does not necessarily mean that daylight saving time is
-now in effect; it means only that daylight saving time is sometimes in
-effect.
address@hidden deftypevar
-
address@hidden Time Functions Example
address@hidden Time Functions Example
-
-Here is an example program showing the use of some of the calendar
-time functions:
-
address@hidden
-#include <time.h>
-#include <stdio.h>
-
-#define SIZE 256
-
-int
-main (void)
address@hidden
-  char buffer[SIZE];
-  time_t curtime;
-  struct tm *loctime;
-
-  /* @r{Get the current time.} */
-  curtime = time (NULL);
-
-  /* @r{Convert it to local time representation.} */
-  loctime = localtime (&curtime);
-
-  /* @r{Print out the date and time in the standard format.} */
-  fputs (asctime (loctime), stdout);
-
-  /* @r{Print it out in a nice format.} */
-  strftime (buffer, SIZE, "Today is %A, %B %d.\n", loctime);
-  fputs (buffer, stdout);
-  strftime (buffer, SIZE, "The time is %I:%M %p.\n", loctime);
-  fputs (buffer, stdout);
-
-  return 0;
address@hidden
-
address@hidden smallexample
-
-It produces output like this:
-
address@hidden
-Wed Jul 31 13:02:36 1991
-Today is Wednesday, July 31.
-The time is 01:02 PM.
address@hidden smallexample
-
-
address@hidden Setting an Alarm
address@hidden Setting an Alarm
-
-The @code{alarm} and @code{setitimer} functions provide a mechanism for a
-process to interrupt itself in the future.  They do this by setting a
-timer; when the timer expires, the process receives a signal.
-
address@hidden setting an alarm
address@hidden interval timer, setting
address@hidden alarms, setting
address@hidden timers, setting
-Each process has three independent interval timers available:
-
address@hidden @bullet
address@hidden
-A real-time timer that counts elapsed time.  This timer sends a
address@hidden signal to the process when it expires.
address@hidden real-time timer
address@hidden timer, real-time
-
address@hidden
-A virtual timer that counts processor time used by the process.  This timer
-sends a @code{SIGVTALRM} signal to the process when it expires.
address@hidden virtual timer
address@hidden timer, virtual
-
address@hidden
-A profiling timer that counts both processor time used by the process
-and processor time spent in system calls on behalf of the process.
-This timer sends a @code{SIGPROF} signal to the process when it
-expires.
address@hidden profiling timer
address@hidden timer, profiling
-
-This timer is useful for profiling in interpreters.  The interval timer
-mechanism does not have the fine granularity necessary for profiling
-native code.
address@hidden @xref{profil} !!!
address@hidden itemize
-
-You can only have one timer of each kind set at any given time.  If you
-set a timer that has not yet expired, that timer is simply reset to the
-new value.
-
-You should establish a handler for the appropriate alarm signal using
address@hidden or @code{sigaction} before issuing a call to
address@hidden or @code{alarm}.  Otherwise, an unusual chain of
-events could cause the timer to expire before your program establishes
-the handler.  In this case it would be terminated, since termination
-is the default action for the alarm address@hidden, ``Signal
-Handling''.}
-
-To be able to use the alarm function to interrupt a system call that
-might otherwise block indefinitely, it is important to @emph{not} set
-the @code{SA_RESTART} flag when registering the signal handler using
address@hidden  When not using @code{sigaction}, things get even
-uglier---the @code{signal} function has to fix semantics with respect
-to restarts.  The @sc{bsd} semantics for this function is to set the
-flag.  Therefore, if @code{sigaction} for whatever reason cannot be
-used, it is necessary to use @code{sysv_signal} and not @code{signal}.
-
-The @code{setitimer} function is the primary means for setting an alarm.
-This facility is declared in the header file @file{sys/time.h}.  The
address@hidden function, declared in @file{unistd.h}, provides a somewhat
-simpler interface for setting the real-time timer.
address@hidden unistd.h
address@hidden sys/time.h
-
address@hidden sys/time.h
address@hidden BSD
address@hidden {Data Type} {struct itimerval}
-This structure is used to specify when a timer should expire.  It contains
-the following members:
address@hidden @code
address@hidden struct timeval it_interval
-This is the period between successive timer interrupts.  If zero, the
-alarm will only be sent once.
-
address@hidden struct timeval it_value
-This is the period between now and the first timer interrupt.  If zero,
-the alarm is disabled.
address@hidden table
-
-The @code{struct timeval} data type is described in @ref{Elapsed Time}.
address@hidden deftp
-
address@hidden sys/time.h
address@hidden BSD
address@hidden int setitimer (int @var{which}, struct itimerval address@hidden, 
struct itimerval address@hidden)
-The @code{setitimer} function sets the timer specified by @var{which}
-according to @var{new}.  The @var{which} argument can have a value of
address@hidden, @code{ITIMER_VIRTUAL}, or @code{ITIMER_PROF}.
-
-If @var{old} is not a null pointer, @code{setitimer} returns information
-about any previous unexpired timer of the same kind in the structure it
-points to.
-
-The return value is @code{0} on success and @code{-1} on failure.  The
-following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden EINVAL
-The timer period is too large.
address@hidden table
address@hidden deftypefun
-
address@hidden sys/time.h
address@hidden BSD
address@hidden int getitimer (int @var{which}, struct itimerval address@hidden)
-The @code{getitimer} function stores information about the timer specified
-by @var{which} in the structure pointed at by @var{old}.
-
-The return value and error conditions are the same as for @code{setitimer}.
address@hidden deftypefun
-
address@hidden sys/time.h
address@hidden BSD
address@hidden @code
address@hidden ITIMER_REAL
-This constant can be used as the @var{which} argument to the
address@hidden and @code{getitimer} functions to specify the real-time
-timer.
-
address@hidden sys/time.h
address@hidden BSD
address@hidden ITIMER_VIRTUAL
-This constant can be used as the @var{which} argument to the
address@hidden and @code{getitimer} functions to specify the virtual
-timer.
-
address@hidden sys/time.h
address@hidden BSD
address@hidden ITIMER_PROF
-This constant can be used as the @var{which} argument to the
address@hidden and @code{getitimer} functions to specify the profiling
-timer.
address@hidden vtable
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden {unsigned int} alarm (unsigned int @var{seconds})
-The @code{alarm} function sets the real-time timer to expire in
address@hidden address@hidden Loosemore et al., ``Signal Handlers That
-Return'', for an example showing the use of the @code{alarm}
-function.}  If you want to cancel any existing alarm, you can do this
-by calling @code{alarm} with a @var{seconds} argument of zero.
-
-The return value indicates how many seconds remain before the previous
-alarm would have been sent.  If there is no previous alarm, @code{alarm}
-returns zero.
address@hidden deftypefun
-
-The @code{alarm} function could be defined in terms of @code{setitimer}
-like this:
-
address@hidden
-unsigned int
-alarm (unsigned int seconds)
address@hidden
-  struct itimerval old, new;
-  new.it_interval.tv_usec = 0;
-  new.it_interval.tv_sec = 0;
-  new.it_value.tv_usec = 0;
-  new.it_value.tv_sec = (long int) seconds;
-  if (setitimer (ITIMER_REAL, &new, &old) < 0)
-    return 0;
-  else
-    return old.it_value.tv_sec;
address@hidden
address@hidden smallexample
-
-If you simply want your process to wait for a given number of seconds,
-you should use the @code{sleep} function (@pxref{Sleeping}).
-
-You shouldn't count on the signal arriving precisely when the timer
-expires.  In a multiprocessing environment, there is typically some
-amount of delay involved.
-
address@hidden Note:} The @code{setitimer} and @code{getitimer}
-functions are derived from @sc{bsd} Unix, while the @code{alarm} function is
-specified by the @sc{posix}.1 standard.  @code{setitimer} is more powerful than
address@hidden, but @code{alarm} is more widely used.
-
address@hidden Sleeping
address@hidden Sleeping
-
-The function @code{sleep} gives a simple way to make the program wait
-for a short interval.  If your program doesn't use signals (except to
-terminate), then you can expect @code{sleep} to wait reliably
-throughout the specified interval.  Otherwise, @code{sleep} can return
-sooner if a signal arrives; if you want to wait for a given interval
-regardless of signals, use @code{select} and don't specify any
-descriptors to wait address@hidden, ``Waiting for Input or Output''.}
address@hidden !!! select can get EINTR; using SA_RESTART makes sleep win too.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden {unsigned int} sleep (unsigned int @var{seconds})
-The @code{sleep} function waits for @var{seconds} or until a signal
-is delivered, whichever happens first.
-
-If the @code{sleep} function returns because the requested interval is
-over, it returns a value of zero.  If it returns because of delivery
-of a signal, its return value is the remaining time in the sleep
-interval.
-
-The @code{sleep} function is declared in @file{unistd.h}.
address@hidden deftypefun
-
-Resist the temptation to implement a sleep for a fixed amount of time
-by using the return value of @code{sleep}, when nonzero, to call
address@hidden again.  This will work with a certain amount of accuracy
-as long as signals arrive infrequently.  But each signal can cause the
-eventual wake-up time to be off by an additional second or so.
-Suppose a few signals happen to arrive in rapid succession by bad
-luck---there is no limit on how much this could shorten or lengthen
-the wait.
-
-Instead, compute the calendar time at which the program should stop
-waiting, and keep trying to wait until that calendar time.  This won't
-be off by more than a second.  With just a little more work, you can
-use @code{select} and make the waiting period quite accurate.  Of
-course, heavy system load can cause additional unavoidable
-delays---unless the machine is dedicated to one application, there is
-no way you can avoid this.
-
-On some systems, @code{sleep} can do strange things if your program
-uses @code{SIGALRM} explicitly.  Even if @code{SIGALRM} signals are
-being ignored or blocked when @code{sleep} is called, @code{sleep}
-might return prematurely on delivery of a @code{SIGALRM} signal.  If
-you have established a handler for @code{SIGALRM} signals and a
address@hidden signal is delivered while the process is sleeping, the
-action taken might be just to cause @code{sleep} to return instead of
-to invoke your handler.  And, if @code{sleep} is interrupted by
-delivery of a signal whose handler requests an alarm or alters the
-handling of @code{SIGALRM}, this handler and @code{sleep} will
-interfere.
-
-On the @sc{gnu} system, it is safe to use @code{sleep} and @code{SIGALRM} in
-the same program, because @code{sleep} does not work by means of
address@hidden
-
address@hidden time.h
address@hidden POSIX.1
address@hidden int nanosleep (const struct timespec address@hidden, struct 
timespec address@hidden)
-If resolution to seconds is not enough, the @code{nanosleep} function
-can be used.  As the name suggests, the sleep interval can be
-specified in nanoseconds.  The actual elapsed time of the sleep
-interval might be longer, since the system rounds the elapsed time you
-request up to the next integer multiple of the actual resolution the
-system can deliver.
-
address@hidden is the elapsed time of the interval you want to
-sleep.
-
-The function returns as address@hidden the elapsed time left in the
-interval for which you requested to sleep.  If the interval completed
-without getting interrupted by a signal, this is zero.
-
address@hidden timespec} is described in @ref{Elapsed Time}.
-
-If the function returns because the interval is over, the return value
-is zero.  If the function returns @math{-1}, the global variable
address@hidden is set to the following values:
-
address@hidden @code
address@hidden EINTR
-The call was interrupted because a signal was delivered to the thread.
-If the @var{remaining} parameter is not the null pointer, the
-structure pointed to by @var{remaining} is updated to contain the
-remaining elapsed time.
-
address@hidden EINVAL
-The nanosecond value in the @var{requested_time} parameter contains an
-illegal value.  Either the value is negative or greater than or equal to
-1000 million.
address@hidden table
-
-This function is a cancellation point in multithreaded programs.  This
-is a problem if the thread allocates some resources (like memory, file
-descriptors, semaphores or whatever) at the time @code{nanosleep} is
-called.  If the thread gets canceled, these resources stay allocated
-until the program ends.  To avoid this, calls to @code{nanosleep}
-should be protected using cancellation handlers.
address@hidden ref pthread_cleanup_push / pthread_cleanup_pop
-
-The @code{nanosleep} function is declared in @file{time.h}.
address@hidden deftypefun
-
address@hidden Message Translation, Searching and Sorting, Locales, Top
address@hidden %MENU% How to make the program speak the user's language
address@hidden Message Translation
-
-The program's interface with a user should be designed to make tasks
-easier for the user.  One way it can do this is to use messages in
-whichever language the user prefers.
-
-Printing messages in different languages can be implemented in
-different ways.  You could add all the different languages in the
-source code and add among the variants every time a message has to be
-printed.  This is certainly not a good solution, since extending the
-set of languages is difficult (the code must be changed), and the code
-itself can become really big with dozens of message sets.
-
-A better solution is to keep the message sets for each language in
-separate files that are loaded at run time depending on the language
-selection of the user.
-
-The @sc{gnu} C Library provides two different sets of functions to
-support message translation.  The problem is that neither of the
-interfaces is officially defined by the @sc{posix} standard.  The
address@hidden family of functions is defined in the X/Open standard,
-but this is derived from industry decisions and therefore not
-necessarily based on reasonable decisions.
-
-As mentioned above, the message catalog handling provides easy
-extendability by using external data files that contain the message
-translations.  These files contain for each of the messages used in
-the program a translation for the appropriate language.  So the tasks
-of the message handling functions are
-
address@hidden @bullet
address@hidden
-Locate the external data file with the appropriate translations.
address@hidden
-Load the data and make it possible to address the messages.
address@hidden
-Map a given key to the translated message.
address@hidden itemize
-
-The two approaches mainly differ in the implementation of this last
-step.  The design decisions made for this step influence the rest.
-
address@hidden Message catalogs a la X/Open
address@hidden X/Open Message Catalog Handling
-
-The @code{catgets} functions are based on the simple scheme:
-
address@hidden
-Associate every message to translate in the source code with a unique
-identifier.  To retrieve a message from a catalog file, just the
-identifier is used.
address@hidden quotation
-
-This means for the author of the program that he will have to make
-sure the meaning of the identifier in the program code and in the
-message catalogs are always the same.
-
-Before a message can be translated, the catalog file must be located.
-The user of the program must be able to guide the responsible function
-to find whichever catalog she wants.
-
-All the types, constants and functions for the @code{catgets} functions
-are defined/declared in the @file{nl_types.h} header file.
-
address@hidden The catgets Functions
address@hidden The @code{catgets} Function Family
-
address@hidden nl_types.h
address@hidden X/Open
address@hidden nl_catd catopen (const char address@hidden, int @var{flag})
-The @code{catgets} function tries to locate the message data file name
address@hidden and loads it when found.  The return value is of an
-opaque type and can be used in calls to the other functions to refer
-to this loaded catalog.
-
-The return value is @code{(nl_catd) -1} in case the function failed
-and no catalog was loaded.  The global variable @var{errno} contains a
-code for the error causing the failure.  But even if the function call
-succeeded, this does not mean that all messages can be translated.
-
-Locating the catalog file must happen in a way that lets the user of
-the program influence the decision.  It is up to the user to decide
-about the language to use, and sometimes it is useful to use alternate
-catalog files.  All this can be specified by the user by setting some
-environment variables.
-
-The first problem is to find out where all the message catalogs are
-stored.  Every program could have its own place to keep all the
-different files, but usually the catalog files are grouped by
-languages and the catalogs for all programs are kept in the same
-place.
-
address@hidden NLSPATH environment variable
-To tell the @code{catopen} function where the catalog for the program
-can be found, the user can set the environment variable @code{NLSPATH}
-to a value that describes her choice.  Since this value must be usable
-for different languages and locales, it cannot be a simple string.
-Instead, it is a format string (similar to @code{printf}'s).  An
-example is
-
address@hidden
-/usr/share/locale/%L/%N:/usr/share/locale/%L/LC_MESSAGES/%N
address@hidden smallexample
-
-First, one can see that more than one directory can be specified (with
-the usual syntax of separating them by colons).  The next things to
-observe are the format strings, @code{%L} and @code{%N} in this case.
-The @code{catopen} function knows about several of them, and the
-replacement for all of them is of course different.
-
address@hidden @code
address@hidden %N
-This format element is substituted with the name of the catalog file.
-This is the value of the @var{cat_name} argument given to
address@hidden
-
address@hidden %L
-This format element is substituted with the name of the currently
-selected locale for translating messages.  How this is determined is
-explained below.
-
address@hidden %l
-This is the lowercase ell. This format element is substituted with the
-language element of the locale name.  The string describing the
-selected locale is expected to have the form
address@hidden@address@hidden@var{codeset}]]}, and this format uses
-the first part @var{lang}.
-
address@hidden %t
-This format element is substituted by the territory part @var{terr} of
-the name of the currently selected locale.  See the explanation of the
-format above.
-
address@hidden %c
-This format element is substituted by the codeset part @var{codeset} of
-the name of the currently selected locale.  See the explanation of the
-format above.
-
address@hidden %%
-Since @code{%} is used in a meta character, there must be a way to
-express the @code{%} character in the result itself.  Using @code{%%}
-does this just like it works for @code{printf}.
address@hidden table
-
-
-Using @code{NLSPATH} allows arbitrary directories to be searched for
-message catalogs while still allowing different languages to be used.
-If the @code{NLSPATH} environment variable is not set, the default value
-is
-
address@hidden
address@hidden/share/locale/%L/%N:@var{prefix}/share/locale/%L/LC_MESSAGES/%N
address@hidden smallexample
-
address@hidden
-where @var{prefix} is given to @code{configure} while installing the @sc{gnu}
-C Library (this value is in many cases @code{/usr} or the empty string).
-
-The remaining problem is to decide which must be used.  The value
-decides about the substitution of the format elements mentioned above.
-First of all, the user can specify a path in the message catalog name
-(i.e., the name contains a slash character).  In this situation the
address@hidden environment variable is not used.  The catalog must
-exist as specified in the program, perhaps relative to the current
-working directory.  This situation in not desirable and catalog names
-should never be written this way.  Besides this, this behavior is not
-portable to all other platforms providing the @code{catgets}
-interface.
-
address@hidden LC_ALL environment variable
address@hidden LC_MESSAGES environment variable
address@hidden LANG environment variable
-Otherwise, the values of environment variables from the standard
-environment are examined (@pxref{Standard Environment}).  Which
-variables are examined is decided by the @var{flag} parameter of
address@hidden  If the value is @code{NL_CAT_LOCALE} (which is
-defined in @file{nl_types.h}), then the @code{catopen} function uses
-the name of the locale currently selected for the @code{LC_MESSAGES}
-category.
-
-If @var{flag} is zero, the @code{LANG} environment variable is
-examined.  This is a leftover from the early days where the concept of
-the locales had not even reached the level of @sc{posix} locales.
-
-The environment variable and the locale name should have a value of
-the form @address@hidden@address@hidden as explained
-above.  If no environment variable is set, the @code{"C"} locale is
-used, which prevents any translation.
-
-The return value of the function is in any case a valid string.  Either
-it is a translation from a message catalog or it is the same as the
address@hidden parameter.  So a piece of code to decide whether a
-translation actually happened must look like this:
-
address@hidden
address@hidden
-  char *trans = catgets (desc, set, msg, input_string);
-  if (trans == input_string)
-    @{
-      /* Something went wrong.  */
-    @}
address@hidden
address@hidden smallexample
-
address@hidden
-When an error occurred the global variable @var{errno} is set to:
-
address@hidden @var
address@hidden EBADF
-The catalog does not exist.
address@hidden ENOMSG
-The set/message tuple does not name an existing element in the
-message catalog.
address@hidden table
-
-While it sometimes can be useful to test for errors, programs normally
-will avoid any test.  If the translation is not available, it is not a
-big problem if the original, untranslated message is printed.  Either
-the user understands this as well, or he will look for the reason why
-the messages are not translated.
address@hidden deftypefun
-
-The currently selected locale does not depend on a call to the
address@hidden function.  It is not necessary for the locale data
-files for this locale to exist and for calling @code{setlocale} to
-succeed.  The @code{catopen} function directly reads the values of the
-environment variables.
-
-
address@hidden {char *} catgets (nl_catd @var{catalog_desc}, int @var{set}, int 
@var{message}, const char address@hidden)
-The function @code{catgets} has to be used to access the massage catalog
-previously opened using the @code{catopen} function.  The
address@hidden parameter must be a value previously returned by
address@hidden
-
-The next two parameters, @var{set} and @var{message}, reflect the
-internal organization of the message catalog files.  This will be
-explained in detail below.  For now it is interesting to know that a
-catalog can consist of several sets and the messages in each thread
-are individually numbered using numbers.  Neither the set number nor
-the message number must be consecutive.  They can be arbitrarily
-chosen.  But each message (unless equal to another one) must have its
-own unique pair of set and message number.
-
-Since it is not guaranteed that the message catalog for the language
-selected by the user exists, the last parameter @var{string} helps to
-handle this case gracefully.  If no matching string can be found,
address@hidden is returned.  This means for the programmer that:
-
address@hidden @bullet
address@hidden
-The @var{string} parameters should contain reasonable text (this also
-helps to understand the program, since otherwise there would be no
-hint as to the string that is expected to be returned.
address@hidden
-All @var{string} arguments should be written in the same language.
address@hidden itemize
address@hidden deftypefun
-
-It is somewhat uncomfortable to write a program using the
address@hidden functions if no supporting functionality is available.
-Since each set/message number tuple must be unique, the programmer
-must keep lists of the messages at the same time the code is written.
-And the work between several people working on the same project must
-be coordinated.  We will see how these problems can be relaxed a bit
-(@pxref{Common Usage}).
-
address@hidden int catclose (nl_catd @var{catalog_desc})
-The @code{catclose} function can be used to free the resources
-associated with a message catalog that previously was opened by a call
-to @code{catopen}.  If the resources can be successfully freed, the
-function returns @code{0}.  Otherwise, it returns @address@hidden and
-the global variable @var{errno} is set.  Errors can occur if the
-catalog descriptor @var{catalog_desc} is not valid, in which case
address@hidden is set to @code{EBADF}.
address@hidden deftypefun
-
-
address@hidden The message catalog files
address@hidden  Format of the Message Catalog Files
-
-The only reasonable way to translate all the messages of a function
-and store the result in a message catalog file that can be read by the
address@hidden function is to write all the message text to the
-translator and let her translate them all; we must have a file with
-entries that associate the set/message tuple with a specific
-translation.  This file format is specified in the X/Open standard and
-is as follows:
-
address@hidden @bullet
address@hidden
-Lines containing only white-space characters or empty lines are
-ignored.
-
address@hidden
-Lines that contain as the first non-white-space character a @code{$}
-followed by a white-space character are comment and are also ignored.
-
address@hidden
-If a line contains as the first non-white-space characters the
-sequence @code{$set} followed by a white-space character, an
-additional argument is required to follow.  This argument can either
-be
-
address@hidden @minus
address@hidden
-A number; in this case, the value of this number determines the set to
-which the following messages are added.
-
address@hidden
-An identifier consisting of alphanumeric characters plus the
-underscore character; in this case, the set automatically gets a
-number assigned.  This value is one added to the largest set number
-that has appeared so far.
-
-How to use the symbolic names is explained in @ref{Common Usage}.
-
-It is an error if a symbol name appears more than once.  All following
-messages are placed in a set with this number.
address@hidden itemize
-
address@hidden
-If a line contains as the first non-white-space characters the
-sequence @code{$delset} followed by a white-space character, an
-additional argument is required to follow.  This argument can either
-be
-
address@hidden @minus
address@hidden
-A number; in this case, the value of this number determines the set
-that will be deleted.
-
address@hidden
-An identifier consisting of alphanumeric characters plus the
-underscore character; this symbolic identifier must match a name for a
-set that was previously defined.  It is an error if the name is
-unknown.
address@hidden itemize
-
-In both cases, all messages in the specified set will be removed.
-They will not appear in the output.  But if this set is selected again
-later with a @code{$set} command, messages could be added again, and
-these messages will appear in the output.
-
address@hidden
-If a line contains after leading white spaces the sequence
address@hidden, the quoting character used for this input file is
-changed to the first non-white-space character following the
address@hidden  If no non-white-space character is present before the
-line ends, quoting is disabled.
-
-By default, no quoting character is used.  In this mode, strings are
-terminated with the first unescaped line break.  If there is a
address@hidden sequence present, newline need not be escaped.  Instead,
-a string is terminated with the first unescaped appearance of the
-quote character.
-
-A common usage of this feature would be to set the quote character to
address@hidden"}.  Then any appearance of the @samp{"} in the strings must be
-escaped using the backslash (i.e., @samp{\"} must be written).
-
address@hidden
-Any other line must start with a number or an alphanumeric identifier
-(with the underscore character included).  The following characters
-(starting after the first white-space character) will form the string
-that gets associated with the currently selected set and the message
-number represented by the number and identifier respectively.
-
-If the start of the line is a number, the message number is obvious.
-It is an error if the same message number already appeared for this
-set.
-
-If the leading token was an identifier, the message number gets
-automatically assigned.  The value is the current maximum messages
-number for this set plus one.  It is an error if the identifier was
-already used for a message in this set.  It is OK to reuse the
-identifier for a message in another thread.  How to use the symbolic
-identifiers will be explained below (@pxref{Common Usage}).  There is
-one limitation with the identifier: it must not be @code{Set}.  The
-reason will be explained below.
-
-The text of the messages can contain escape characters.  The usual
-bunch of characters known from the @address@hidden C} language are
-recognized (@samp{\n}, @samp{\t}, @samp{\v}, @samp{\b}, @samp{\r},
address@hidden, @samp{\\}, and @address@hidden, where @var{nnn} is the
-octal coding of a character code).
address@hidden itemize
-
address@hidden:} The handling of identifiers instead of numbers for
-the set and messages is a @sc{gnu} extension.  Systems strictly following the
-X/Open specification do not have this feature.  An example for a message
-catalog file is this:
-
address@hidden
-$ This is a leading comment.
-$quote "
-
-$set SetOne
-1 Message with ID 1.
-two "   Message with ID \"two\", which gets the value 2 assigned"
-
-$set SetTwo
-$ Since the last set got the number 1 assigned this set has number 2.
-4000 "The numbers can be arbitrary, they need not start at one."
address@hidden smallexample
-
-This small example shows various aspects:
address@hidden @bullet
address@hidden
-Lines 1 and 9 are comments, since they start with @code{$} followed by
-a white space.
address@hidden
-The quoting character is set to @samp{"}.  Otherwise, the quotes in
-the message definition would have to be left away, and in this case,
-the message with the identifier @code{two} would lose its leading
-white space.
address@hidden
-Mixing numbered messages with messages having symbolic names is no
-problem, and the numbering happens automatically.
address@hidden itemize
-
-
-While this file format is pretty easy, it is not the best possible for
-use in a running program.  The @code{catopen} function would have to
-parse the file and handle syntactic errors gracefully.  This is not so
-easy, and the whole process is pretty slow.  Therefore, the
address@hidden functions expect the data in another more compact and
-ready-to-use file format.  There is a special program @code{gencat},
-which is explained in detail in the next section.
-
-Files in this other format are not human readable.  To be easy to use
-for programs, it is a binary file.  But the format is byte-order
-independent, so translation files can be shared by systems of
-arbitrary architecture (as long as they use the @sc{gnu} C Library).
-
-Details about the binary file format are not important to know, since
-these files are always created by the @code{gencat} program.  The
-sources of the @sc{gnu} C Library also provide the sources for the
address@hidden program, so the interested reader can look through these
-source files to learn about the file format.
-
-
address@hidden The gencat program
address@hidden Generate Message Catalogs Files
-
address@hidden gencat
-The @code{gencat} program is specified in the X/Open standard, and the
address@hidden implementation follows this specification, so it processes
-all correctly formed input files.  Additionally, some extension are
-implemented that help to work in a more reasonable way with the
address@hidden functions.
-
-The @code{gencat} program can be invoked in two ways:
-
address@hidden
-`gencat address@hidden@dots{} address@hidden address@hidden@dots{}]`
address@hidden smallexample
-
-This is the interface defined in the X/Open standard.  If no
address@hidden parameter is given, input will be read from standard
-input.  Multiple input files will be read as if they are concatenated.
-If @var{Output-File} is also missing, the output will be written to
-standard output.  To provide the interface one is used to from other
-programs, a second interface is provided.
-
address@hidden
-`gencat address@hidden@dots{} -o @var{Output-File} address@hidden@dots{}`
address@hidden smallexample
-
-The option @samp{-o} is used to specify the output file, and all file
-arguments are used as input files.
-
-Besides this, you can use @file{-} or @file{/dev/stdin} for
address@hidden to denote the standard input.  Correspondingly, one
-can use @file{-} and @file{/dev/stdout} for @var{Output-File} to
-denote standard output.  Using @file{-} as a file name is allowed in
-X/Open, while using the device names is a @sc{gnu} extension.
-
-The @code{gencat} program works by concatenating all input files and
-then merging the resulting collection of message sets with a possibly
-existing output file.  This is done by removing all messages with
-set/message number tuples matching any of the generated messages from
-the output file, and then adding all the new messages.  To regenerate
-a catalog file while ignoring the old contents therefore requires you
-to remove the output file if it exists.  If the output is written to
-standard output, no merging takes place.
-
address@hidden
-The following table shows the options understood by the @code{gencat}
-program; the X/Open standard does not specify any option for the
-program, so all of these are @sc{gnu} extensions:
-
address@hidden @samp
address@hidden -V
address@hidden --version
-Print the version information and exit.
address@hidden -h
address@hidden --help
-Print a usage message listing all available options, then exit successfully.
address@hidden --new
-Never merge the new messages from the input files with the old content
-of the output files.  The old content of the output files is
-discarded.
address@hidden -H
address@hidden --header=name
-This option is used to emit the symbolic names given to sets and
-messages in the input files for use in the program.  Details about how
-to use this are given in the next section.  The @var{name} parameter to
-this option specifies the name of the output file.  It will contain a
-number of C preprocessor @code{#define}s to associate a name with a
-number.
-
-The generated file only contains the symbols from the input files.  If
-the output is merged with the previous content of the output file, the
-possibly existing symbols from the file(s) that generated the old
-output files are not in the generated header file.
address@hidden table
-
-
address@hidden Common Usage
address@hidden How to Use the @code{catgets} Interface
-
-The @code{catgets} functions can be used in two different ways: by
-slavishly following the X/Open specs and not relying on the extensions
-or by using the @sc{gnu} extensions.  We will take a look at the
-former method first to understand the benefits of extensions.
-
address@hidden Not Using Symbolic Names
-
-Since the X/Open format of the message catalog files does not allow
-symbol names, we have to work with numbers all the time.  When we
-start writing a program, we have to replace all appearances of
-translatable strings with something like:
-
address@hidden
-catgets (catdesc, set, msg, "string")
address@hidden smallexample
-
address@hidden
address@hidden is retrieved from a call to @code{catopen}, which is
-normally done once at the program start.  The @code{"string"} is the
-string we want to translate.  The problems start with the set and
-message numbers.
-
-In a bigger program, several programmers usually work at the same time
-on the program, so coordinating the number allocation is crucial.
-Though no two different strings must be indexed by the same tuple of
-numbers, it is highly desirable to reuse the numbers for equal strings
-with equal translations (there might be strings that are equal in one
-language but have different translations due to different contexts).
-
-The allocation process can be relaxed a bit by different set numbers
-for different parts of the program.  So the number of developers who
-have to coordinate the allocation can be reduced.  But still, lists
-must be made to keep track of the allocation, and errors can easily
-happen.  These errors cannot be discovered by the compiler or the
address@hidden functions.  Only the user of the program might see
-wrong messages printed.  In the worst cases, the messages are so
-irritating that they cannot be recognized as wrong.  Think about the
-translations for @code{"true"} and @code{"false"} being exchanged.
-This could result in a disaster.
-
-
address@hidden Using Symbolic Names
-
-The problems mentioned in the last section derive from the fact that:
-
address@hidden
address@hidden
-The numbers are allocated once, and due to the possibly frequent use
-of them, it is difficult to change a number later.
address@hidden
-The numbers do not allow you to guess anything about the string, and
-therefore collisions can easily happen.
address@hidden enumerate
-
-By constantly using symbolic names and by providing a method that maps
-the string content to a symbolic name (however this will happen), you
-can prevent both of the above problems.  The cost of this is that the
-programmer has to write a complete message catalog file while she is
-writing the program itself.
-
-This is necessary since the symbolic names must be mapped to numbers
-before the program sources can be compiled.  In the last section, it
-was described how to generate a header containing the mapping of the
-names.  For the example message file given in the last section, we
-could call the @code{gencat} program as follows (assume @file{ex.msg}
-contains the sources):
-
address@hidden
-gencat -H ex.h -o ex.cat ex.msg
address@hidden smallexample
-
address@hidden
-This generates a header file with the following content:
-
address@hidden
-#define SetTwoSet 0x2   /* ex.msg:8 */
-
-#define SetOneSet 0x1   /* ex.msg:4 */
-#define SetOnetwo 0x2   /* ex.msg:6 */
address@hidden smallexample
-
-As can be seen, the various symbols given in the source file are
-mangled to generate unique identifiers and these identifiers get
-numbers assigned.  Reading the source file and knowing about the rules
-will allow you to predict the content of the header file (it is
-deterministic), but this is not necessary.  The @code{gencat} program
-can take care of everything.  All the programmer has to do is put the
-generated header file in the dependency list of the source files of
-his project and add a rule to regenerate the header of any of the
-input files change.
-
-One word about the symbol mangling.  Every symbol consists of two parts:
-the name of the message set plus the name of the message or the special
-string @code{Set}.  So @code{SetOnetwo} means this macro can be used to
-access the translation with identifier @code{two} in the message set
address@hidden
-
-The other names denote the names of the message sets.  The special
-string @code{Set} is used in the place of the message identifier.
-
-If in the code the second string of the set @code{SetOne} is used, the
-C code should look like this:
-
address@hidden
-catgets (catdesc, SetOneSet, SetOnetwo,
-         "   Message with ID \"two\", which gets the value 2 assigned")
address@hidden smallexample
-
-Writing the function this way will allow you to change the message
-number and even the set number without any change in the C source
-code (the text of the string is normally not the same; this is only
-for this example).
-
-
address@hidden Using Symbolic Version Numbers
-
-To illustrate the usual way to work with the symbolic version numbers,
-here is a little example.  Assume we want to write the very complex
-and famous greeting program.  We start by writing the code as usual:
-
address@hidden
-#include <stdio.h>
-int
-main (void)
address@hidden
-  printf ("Hello, world!\n");
-  return 0;
address@hidden
address@hidden smallexample
-
-Now we want to internationalize the message and therefore replace the
-message with whatever the user wants:
-
address@hidden
-#include <nl_types.h>
-#include <stdio.h>
-#include "msgnrs.h"
-int
-main (void)
address@hidden
-  nl_catd catdesc = catopen ("hello.cat", NL_CAT_LOCALE);
-  printf (catgets (catdesc, SetMainSet, SetMainHello,
-                   "Hello, world!\n"));
-  catclose (catdesc);
-  return 0;
address@hidden
address@hidden smallexample
-
-We see how the catalog object is opened and the returned descriptor
-used in the other function calls.  It is not really necessary to check
-for failure of any of the functions, since even in these situations,
-the functions will behave reasonably.  They simply will be return a
-translation.
-
-What remains unspecified here are the constants @code{SetMainSet} and
address@hidden  These are the symbolic names describing the
-message.  To get the actual definitions that match the information in
-the catalog file, we have to create the message catalog source file
-and process it using the @code{gencat} program:
-
address@hidden
-$ Messages for the famous greeting program.
-$quote "
-
-$set Main
-Hello "Hallo, Welt!\n"
address@hidden smallexample
-
-Now we can start building the program (assume the message catalog source
-file is named @file{hello.msg} and the program source file @file{hello.c}):
-
address@hidden
address@hidden
-% gencat -H msgnrs.h -o hello.cat hello.msg
-% cat msgnrs.h
-#define MainSet 0x1     /* hello.msg:4 */
-#define MainHello 0x1   /* hello.msg:5 */
-% gcc -o hello hello.c -I.
-% cp hello.cat /usr/share/locale/de/LC_MESSAGES
-% echo $LC_ALL
-de
-% ./hello
-Hallo, Welt!
-%
address@hidden cartouche
address@hidden smallexample
-
-The call of the @code{gencat} program creates the missing header file
address@hidden as well as the message catalog binary.  The former is
-used in the compilation of @file{hello.c} while the latter is placed
-in a directory where the @code{catopen} function will try to locate
-it.  Please check the @code{LC_ALL} environment variable and the
-default path for @code{catopen} presented in the description above.
-
-
address@hidden The Uniforum approach
address@hidden The Uniforum Approach to Message Translation
-
-Sun Microsystems tried to standardize a different approach to message
-translation in the Uniforum group.  There never was a real standard
-defined, but the interface was used in Sun's operation systems.  Since
-this approach fits better in the development process of free software,
-it is also used throughout the @sc{gnu} project and the @sc{gnu}
address@hidden package provides support for this outside the @sc{gnu}
-C Library.
-
-The code of the @file{libintl} from @sc{gnu} @file{gettext} is the
-same as the code in the @sc{gnu} C Library.  So the documentation in
-the @sc{gnu} @file{gettext} manual is also valid for the functionality
-here.  The following text will describe the library functions in
-detail.  But the numerous helper programs are not described in this
-manual.  Instead, people should read the @sc{gnu} @file{gettext}
address@hidden GNU Project, @emph{GNU gettext Utilities} (Free
-Software Foundation, May 6, 2003),
address@hidden http:// www.gnu.org/ software/ gettext/ manual/ gettext}.}  We 
will
-only give a short overview.
-
-Though the @code{catgets} functions are available by default on more
-systems, the @code{gettext} interface is at least as portable as the
-former.  The @sc{gnu} @file{gettext} package can be used wherever the
-functions are not available.
-
address@hidden Message catalogs with gettext
address@hidden The @code{gettext} Family of Functions
-
-The paradigm underlying the @code{gettext} approach to message
-translation is different from that of the @code{catgets} functions,
-though the basic functionally is equivalent. 
-
address@hidden Translation with gettext
address@hidden What Has to Be Done to Translate a Message?
-
-The @code{gettext} functions have a very simple interface.  The most
-basic function just takes the string that will be translated as the
-argument and returns the translation.  This is fundamentally different
-from the @code{catgets} approach, where an extra key is necessary and
-the original string is only used for the error case.
-
-If the string that has to be translated is the only argument, this of
-course means the string itself is the key---the translation will be
-selected based on the original string.  The message catalogs must
-therefore contain the original strings plus one translation for any
-such string.  The task of the @code{gettext} function is it to compare
-the argument string with the available strings in the catalog and
-return the appropriate translation.  Of course this process is
-optimized so that it is not more expensive than an access using an
-atomic key like in @code{catgets}.
-
-The @code{gettext} approach has some advantages but also some
-disadvantages.  Please see the @sc{gnu} @file{gettext} manual for a detailed
-discussion of the pros and address@hidden
-
-All the definitions and declarations for @code{gettext} can be found
-in the @file{libintl.h} header file.  On systems where these functions
-are not part of the C library, they can be found in a separate library
-named @file{libintl.a} (or accordingly different for shared
-libraries).
-
address@hidden libintl.h
address@hidden GNU
address@hidden {char *} gettext (const char address@hidden)
-The @code{gettext} function searches the currently selected message
-catalogs for a string that is equal to @var{msgid}.  If there is such
-a string available, it is returned.  Otherwise, the argument string
address@hidden is returned.
-
-Although the return value is @code{char *}, the returned string must
-not be changed.  This broken type results from the history of the
-function and does not reflect the way the function should be used.
-
-Above, we referred to ``message catalogs'' (plural).  This is a
-specialty of the @sc{gnu} implementation of these functions, and we
-will say more about this when we talk about the ways message catalogs
-are selected (@pxref{Locating gettext catalog}).
-
-The @code{gettext} function does not modify the value of the global
address@hidden variable.  This is necessary to make it possible to write
-something like:
-
address@hidden
-  printf (gettext ("Operation failed: %m\n"));
address@hidden smallexample
-
-Here the @var{errno} value is used in the @code{printf} function while
-processing the @code{%m} format element, and if the @code{gettext}
-function would change this value (it is called before @code{printf} is
-called), we would get a wrong message.
-
-So there is no easy way to detect a missing message catalog besides
-comparing the argument string with the result.  But it is normally the
-task of the user to react on missing catalogs.  The program cannot
-guess when a message catalog is really necessary, since no translation
-is necessary for a user who speaks the language the program was
-developed in.
address@hidden deftypefun
-
-The remaining two functions to access the message catalog add some
-functionality to select a message catalog that is not the default one.
-This is important if parts of the program are developed independently.
-Every part can have its own message catalog and all of them can be
-used at the same time.  The C library itself is an example; internally
-it uses the @code{gettext} functions, but since it must not depend on
-a currently selected default message catalog, it must specify all
-ambiguous information.
-
address@hidden libintl.h
address@hidden GNU
address@hidden {char *} dgettext (const char address@hidden, const char 
address@hidden)
-The @code{dgettext} function acts just like the @code{gettext}
-function.  It only takes an additional first argument
address@hidden, which guides the selection of the message catalogs
-that are searched for the translation.  If the @var{domainname}
-parameter is the null pointer, the @code{dgettext} function is exactly
-equivalent to @code{gettext}, since the default value for the domain
-name is used.
-
-As for @code{gettext}, the return value type is @code{char *}, which
-is an anachronism.  The returned string must never be modified.
address@hidden deftypefun
-
address@hidden libintl.h
address@hidden GNU
address@hidden {char *} dcgettext (const char address@hidden, const char 
address@hidden, int @var{category})
-The @code{dcgettext} adds another argument to those that
address@hidden takes.  This argument @var{category} specifies the
-last piece of information needed to localize the message catalog---the
-domain name and the locale category specify exactly which message
-catalog has to be used (relative to a given directory, see below).
-
-The @code{dgettext} function can be expressed in terms of
address@hidden by using:
-
address@hidden
-dcgettext (domain, string, LC_MESSAGES)
address@hidden smallexample
-
address@hidden
-instead of:
-
address@hidden
-dgettext (domain, string)
address@hidden smallexample
-
-This also shows which values are expected for the third parameter.
-You have to use the available selectors for the categories available
-in @file{locale.h}.  Normally the available values are
address@hidden, @code{LC_COLLATE}, @code{LC_MESSAGES},
address@hidden, @code{LC_NUMERIC} and @code{LC_TIME}.
address@hidden must not be used, and even though the names might
-suggest this, there is no relation to the environment variables with
-the same names.
-
-The @code{dcgettext} function is only implemented for compatibility
-with other systems that have @code{gettext} functions.  There is not
-really any situation where it is necessary (or useful) to use a value
-other than @code{LC_MESSAGES} for the @var{category} parameter.  We
-are dealing with messages here, and any other choice can only be
-irritating.
-
-As for @code{gettext}, the return value type is @code{char *}, which
-is an anachronism.  The returned string must never be modified.
address@hidden deftypefun
-
-When using the three functions above in a program, it is a frequent
-case that the @var{msgid} argument is a constant string, so it is
-worthwhile to optimize this case.  As long as no new message catalog
-is loaded, the translation of a message will not change.  This
-optimization is actually implemented by the @code{gettext},
address@hidden and @code{dcgettext} functions.
-
-
address@hidden Locating gettext catalog
address@hidden How to Determine Which Catalog to Use
-
-The functions to retrieve the translations for a given message have a
-remarkably simple interface.  But to provide the user of the program
-with the opportunity to select exactly the translation she wants and
-also to provide the programmer the ability to influence the way to
-locate the search for catalog files, there is a quite complicated
-underlying control mechanism.  The code is complicated, the use is
-easy.
-
-Basically, we have two different tasks to perform that can also be
-performed by the @code{catgets} functions:
-
address@hidden
address@hidden
-Locate the set of message catalogs.  There are a number of files for
-different languages and that all belong to the package.  Usually they
-are all stored in the file system below a certain directory.
-
-There can be an arbitrary number of packages installed, and they can
-follow different guidelines for the placement of their files.
-
address@hidden
-Relative to the location specified by the package, the actual
-translation files must be searched, based on the wishes of the
-user---for each language the user selects, the program should be able
-to locate the appropriate file.
address@hidden enumerate
-
-This is the functionality required by the specifications for
address@hidden, and this is also what the @code{catgets} functions are
-able to do.  But there are some unresolved problems:
-
address@hidden @bullet
address@hidden
-The language to be used can be specified in several different ways.
-There is no generally accepted standard for this, and the user always
-expects the program to understand what he means.  For example, to
-select the German translation, one could write @code{de},
address@hidden or @code{deutsch}, and the program should always react
-the same.
-
address@hidden
-Sometimes the user's specification is too detailed.  If he for
-example, specifies @code{de_DE.ISO-8859-1}, which means German, spoken
-in Germany, coded using the @address@hidden 8859-1} character set, there
-is the possibility that an exact message catalog match is not
-available.  But there could be a catalog matching @code{de}, and if
-the character set used on the machine is always @address@hidden 8859-1},
-there is no reason why this latter message catalog should not be used
-(we call this @dfn{message inheritance}).
-
address@hidden
-If a catalog for a desired language is not available, it is not always
-the second-best choice to fall back on the language of the developer
-and simply not translate any message.  Instead, a user might be better
-able to read the messages in another language, and so the user of the
-program should be able to define a precedence order of languages.
address@hidden itemize
-
-We can divide the configuration actions into two parts: one is
-performed by the programmer and the other by the user.  We will start
-with the functions the programmer can use since the user configuration
-will be based on this.
-
-As the description of the functions in the previous sections already
-mentioned, separate sets of messages can be selected by a @dfn{domain
-name}.  This is a simple string that should be unique for each program
-part that uses a separate domain.  It is possible to use in one
-program an arbitrary number of domains at the same time.  For example,
-the @sc{gnu} C Library itself uses a domain named @code{libc} while
-the program using the C Library could use a domain named @code{foo}.
-The important point is that at any given time, exactly one domain is
-active.  This is controlled with the following function:
-
address@hidden libintl.h
address@hidden GNU
address@hidden {char *} textdomain (const char address@hidden)
-The @code{textdomain} function sets the default domain, which is used
-in all future @code{gettext} calls, to @var{domainname}.
address@hidden and @code{dcgettext} calls are not influenced if the
address@hidden parameter of these functions is not the null pointer.
-
-Before the first call to @code{textdomain}, the default domain is
address@hidden  This is the name specified in the specification of
-the @code{gettext} API.  This name is as good as any other name.  No
-program should ever really use a domain with this name, since this can
-only lead to problems.
-
-The function returns the value that is from now on taken as the
-default domain.  If the system ran out of memory, the returned value
-is @code{NULL} and the global variable @var{errno} is set to
address@hidden  Despite the return value type being @code{char *}, the
-return string must not be changed.  It is allocated internally by the
address@hidden function.
-
-If the @var{domainname} parameter is the null pointer, no new default
-domain is set.  Instead, the currently selected default domain is
-returned.
-
-If the @var{domainname} parameter is an empty string, the default
-domain is reset to its initial value---the domain with the name
address@hidden  Note, though, that the domain @code{messages} really
-never should be used.
address@hidden deftypefun
-
address@hidden libintl.h
address@hidden GNU
address@hidden {char *} bindtextdomain (const char address@hidden, const char 
address@hidden)
-The @code{bindtextdomain} function can be used to specify the
-directory that contains the message catalogs for domain
address@hidden for the different languages.  This is the directory
-where the hierarchy of directories is expected.  Details are explained
-below.
-
-For the programmer, it is important to note that the translations that
-come with the program have be placed in a directory hierarchy starting
-at, say, @file{/foo/bar}.  Then the program should make a
address@hidden call to bind the domain for the current program
-to this directory.  So it is ensured that the catalogs will be found.
-A correctly running program does not depend on the user setting an
-environment variable.
-
-The @code{bindtextdomain} function can be used several times and if
-the @var{domainname} argument is different, the previously bound
-domains will not be overwritten.
-
-If a program that wishes to use @code{bindtextdomain} at some point
-uses the @code{chdir} function to change the current working
-directory, it is important that the @var{dirname} strings be an
-absolute pathname.  Otherwise, the addressed directory might vary with
-the time.
-
-If the @var{dirname} parameter is the null pointer,
address@hidden returns the currently selected directory for the
-domain with the name @var{domainname}.
-
-The @code{bindtextdomain} function returns a pointer to a string
-containing the name of the selected directory name.  The string is
-allocated internally in the function and must not be changed by the
-user.  If the system runs out of memory during the execution of
address@hidden, the return value is @code{NULL}, and the global
-variable @var{errno} is set accordingly.
address@hidden deftypefun
-
-
address@hidden Advanced gettext functions
address@hidden Additional Functions for More Complicated Situations
-
-The functions of the @code{gettext} family described so far (and all
-the @code{catgets} functions as well) have one problem in the real
-world that has been neglected completely in all existing
-approaches---the handling of plural forms.
-
-Looking through Unix source code written before the time anybody
-thought about internationalization (and, sadly, even afterwards), you
-can often find code similar to the following:
-
address@hidden
-   printf ("%d file%s deleted", n, n == 1 ? "" : "s");
address@hidden smallexample
-
address@hidden
-After the first complaints from people internationalizing the code,
-people either completely avoided formulations like this, or used
-strings like @code{"file(s)"}.  Both look unnatural and should be
-avoided.  First attempts to solve the problem correctly looked like
-this:
-
address@hidden
-   if (n == 1)
-     printf ("%d file deleted", n);
-   else
-     printf ("%d files deleted", n);
address@hidden smallexample
-
-But this does not solve the problem.  It helps languages where the
-plural form of a noun is not simply constructed by adding an @samp{s},
-but that is all.  Once again, people fell into the trap of believing
-the rules their language is using are universal.  But the handling of
-plural forms differs widely between the language families (and even
-inside language families).  There are two things we can differentiate
-between:
-
address@hidden @bullet
address@hidden
-The form for how plural forms are built differs.  This is a problem
-with language that have many irregularities.  German, for instance, is
-a drastic case.  Though English and German are part of the same
-language family (Germanic), the almost regular forming of plural noun
-forms (appending an @samp{s}) is hardly found in German.
-
address@hidden
-The number of plural forms differ.  This is somewhat surprising for
-those who only have experiences with Romanic and Germanic languages
-since here the number is the same (there are two).
-
-Other language families have only one form or many forms.
address@hidden itemize
-
-The consequence of this is that application writers should not try to
-solve the problem in their code.  This would be localization, since it
-is only usable for certain, hard-coded language environments.
-Instead, the extended @code{gettext} interface should be used.
-
-These extra functions are taking two strings and a numerical argument
-instead of the one key string.  The idea behind this is that using the
-numerical argument and the first string as a key, the implementation
-can select, using rules specified by the translator, the right plural
-form.  The two string arguments then will be used to provide a return
-value in case no message catalog is found (similar to the normal
address@hidden behavior).  In this case, the rules for Germanic
-language are used, and it is assumed that the first string argument is
-the singular form, the second the plural form.
-
-This has the consequence that programs without language catalogs can
-display the correct strings only if the program itself is written
-using a Germanic language.  This is a limitation, but since the
address@hidden C Library (as well as the @sc{gnu} @code{gettext} package)
-are written as part of the @sc{gnu} package and the coding standards
-for the @sc{gnu} project require programs to be written in English,
-this solution nevertheless fulfills its purpose.
-
address@hidden libintl.h
address@hidden GNU
address@hidden {char *} ngettext (const char address@hidden, const char 
address@hidden, unsigned long int @var{n})
-The @code{ngettext} function is similar to the @code{gettext}
-function, since it finds the message catalogs in the same way.  But it
-takes two extra arguments.  The @var{msgid1} parameter must contain
-the singular form of the string to be converted.  It is also used as
-the key for the search in the catalog.  The @var{msgid2} parameter is
-the plural form.  The parameter @var{n} is used to determine the
-plural form.  If no message catalog is found, @var{msgid1} is returned
-if @code{n == 1}, otherwise @code{msgid2} is returned.
-
-An example for the us of this function is
-
address@hidden
-  printf (ngettext ("%d file removed", "%d files removed", n), n);
address@hidden smallexample
-
-Please note that the numeric value @var{n} has to be passed to the
address@hidden function as well.  It is not sufficient to pass it only to
address@hidden
address@hidden deftypefun
-
address@hidden libintl.h
address@hidden GNU
address@hidden {char *} dngettext (const char address@hidden, const char 
address@hidden, const char address@hidden, unsigned long int @var{n})
-The @code{dngettext} is similar to the @code{dgettext} function in the
-way the message catalog is selected.  The difference is that it takes
-two extra parameters to provide the correct plural form.  These two
-parameters are handled in the same way @code{ngettext} handles them.
address@hidden deftypefun
-
address@hidden libintl.h
address@hidden GNU
address@hidden {char *} dcngettext (const char address@hidden, const char 
address@hidden, const char address@hidden, unsigned long int @var{n}, int 
@var{category})
-The @code{dcngettext} is similar to the @code{dcgettext} function in the
-way the message catalog is selected.  The difference is that it takes
-two extra parameter to provide the correct plural form.  These two
-parameters are handled in the same way @code{ngettext} handles them.
address@hidden deftypefun
-
address@hidden The Problem of Plural Forms
-
-A description of the problem can be found at the beginning of the last
-section.  Now there is the question how to solve it.  Without the
-input of linguists (which was not available), it was not possible to
-determine whether there are only a few different ways in which plurals
-are formed or whether the number can increase with every new supported
-language.
-
-Therefore, the solution implemented is to allow the translator to
-specify the rules for how to select the plural form.  Since the
-formula varies with every language, this is the only viable solution
-except for hard-coding the information in the code (which still would
-require the possibility of extensions to not prevent the use of new
-languages).  The details are explained in the @sc{gnu} @code{gettext}
address@hidden GNU Project, @emph{GNU gettext Utilities} (Free
-Software Foundation, May 6, 2003),
address@hidden:// www.gnu.org/ software/ gettext/ manual/ gettext}.}  Here,
-only a a bit of information is provided.
-
-The information about the plural form selection has to be stored in
-the header entry (the one with the empty @code{msgid} string).  It
-looks like this:
-
address@hidden
-Plural-Forms: nplurals=2; plural=n == 1 ? 0 : 1;
address@hidden smallexample
-
-The @code{nplurals} value must be a decimal number that specifies how
-many different plural forms exist for this language.  The string
-following @code{plural} is an expression that is using the C language
-syntax.  Exceptions are that nonnegative numbers are allowed, numbers
-must be decimal and the only variable allowed is @code{n}.  This
-expression will be evaluated whenever one of the functions
address@hidden, @code{dngettext} or @code{dcngettext} is called.  The
-numeric value passed to these functions is then substituted for all
-uses of the variable @code{n} in the expression.  The resulting value
-then must be greater than or equal to zero and smaller than the value
-given as the value of @code{nplurals}.
-
address@hidden
-The following rules are known at this point.  The languages with their
-families are listed.  But this does not necessarily mean that the
-information can be generalized for the whole family (as can be easily
-seen in the table below)address@hidden are welcome.  Send
-appropriate information to @email{bug-glibc-manual@@gnu.org}.}
-
address@hidden @bullet
address@hidden @dfn{Only one form:}
-
address@hidden @minus
-
address@hidden
-Some languages require only one single form.  There is no distinction
-between the singular and plural form.  An appropriate header entry
-would look like this:
-
address@hidden
-Plural-Forms: nplurals=1; plural=0;
address@hidden smallexample
-
address@hidden
-Languages with this property include:
-
address@hidden @bullet
-
address@hidden
-Finno-Ugric family
-
address@hidden @minus
-
address@hidden 
-Hungarian
-
address@hidden itemize
-
address@hidden Asian family
-
address@hidden @minus
-
address@hidden 
-Japanese
-
address@hidden
-Korean
-
address@hidden itemize
-
address@hidden Turkic/Altaic family
-
address@hidden @minus
-
address@hidden
-Turkish
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden @dfn{Two forms, singular used for one only:}
-
address@hidden @minus
-
address@hidden
-This is the form used in most existing programs since it is what English
-is using.  A header entry would look like this:
-
address@hidden
-Plural-Forms: nplurals=2; plural=n != 1;
address@hidden smallexample
-
-(Note: this uses the feature of C expressions that Boolean expressions
-have to value zero or one.)
-
address@hidden
-Languages with this property include:
-
address@hidden @bullet
-
address@hidden Germanic family
-
address@hidden @minus
-
address@hidden
-Danish
-
address@hidden
-Dutch
-
address@hidden
-English
-
address@hidden
-German
-
address@hidden
-Norwegian
-
address@hidden
-Swedish
-
address@hidden itemize
-
address@hidden Finno-Ugric family
-
address@hidden @minus
-
address@hidden
-Estonian
-
address@hidden
-Finnish
-
address@hidden itemize
-
address@hidden Latin/Greek family
-
address@hidden @minus
-
address@hidden
-Greek
-
address@hidden itemize
-
address@hidden Semitic family
-
address@hidden @minus
-
address@hidden
-Hebrew
-
address@hidden itemize
-
address@hidden Romance family
-
address@hidden @minus
-
address@hidden
-Italian
-
address@hidden
-Portuguese
-
address@hidden
-Spanish
-
address@hidden itemize
-
address@hidden Artificial
-
address@hidden @minus
-
address@hidden
-Esperanto
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden @dfn{Two forms, singular used for zero and one:}
-
address@hidden @minus
-
address@hidden
-This is an exceptional case in the language family.  The header entry
-would be
-
address@hidden
-Plural-Forms: nplurals=2; plural=n>1;
address@hidden smallexample
-
address@hidden
-Languages with this property include:
-
address@hidden @bullet
-
address@hidden Romanic family
-
address@hidden @minus
-
address@hidden
-French
-
address@hidden
-Brazilian 
-
address@hidden
-Portuguese
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden @dfn{Three forms, special case for zero:}
-
address@hidden @minus
-
address@hidden
-The header entry would be
-
address@hidden
-Plural-Forms: nplurals=3; \
-plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;
address@hidden smallexample
-
address@hidden
-Languages with this property include:
-
address@hidden @bullet
-
address@hidden
-Baltic family
-
address@hidden @minus
-
address@hidden
-Latvian
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden @dfn{Three forms, special cases for one and two:}
-
address@hidden @minus
-
address@hidden
-The header entry would be
-
address@hidden
-Plural-Forms: nplurals=3; plural=n==1 ? 0 : n==2 ? 1 : 2;
address@hidden smallexample
-
address@hidden
-Languages with this property include:
-
address@hidden @bullet
-
address@hidden Celtic
-
address@hidden @minus
-
address@hidden
-Gaeilge (Irish)
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden @dfn{Three forms, special case for numbers ending in 1[2-9]:}
-
address@hidden @minus
-
address@hidden
-The header entry would look like this:
-
address@hidden
-Plural-Forms: nplurals=3; \
-    plural=n%10==1 && n%100!=11 ? 0 : \
-           n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2;
address@hidden smallexample
-
address@hidden
-Languages with this property include:
-
address@hidden @bullet
-
address@hidden
-Baltic family
-
address@hidden @minus
-
address@hidden
-Lithuanian
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden @dfn{Three forms, special cases for numbers ending in 1 and 2,
-3, 4, except those ending in 1[1-4]:}
-
address@hidden @minus
-
address@hidden
-The header entry would look like this:
-
address@hidden
-Plural-Forms: nplurals=3; \
-    plural=n%100/10==1 ? 2 : n%10==1 ? 0 : (n+9)%10>3 ? 2 : 1;
address@hidden smallexample
-
address@hidden
-Languages with this property include:
-
address@hidden @bullet
-
address@hidden 
-Slavic family
-
address@hidden @minus
-
address@hidden
-Croatian 
-
address@hidden
-Czech
-
address@hidden
-Russian
-
address@hidden
-Ukrainian
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden @dfn{Three forms, special cases for 1 and 2, 3, 4:}
-
address@hidden @minus
-
address@hidden
-The header entry would look like this:
-
address@hidden
-Plural-Forms: nplurals=3; \
-    plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;
address@hidden smallexample
-
address@hidden
-Languages with this property include:
-
address@hidden @bullet
-
address@hidden 
-Slavic family
-
address@hidden @minus
-
address@hidden
-Slovak
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden @dfn{Three forms, special case for one and some numbers ending
-in 2, 3, or 4:}
-
address@hidden @minus
-
address@hidden
-The header entry would look like this:
-
address@hidden
-Plural-Forms: nplurals=3; \
-  plural= n ==1 ? 0 : \
-  n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;
address@hidden smallexample
-
address@hidden
-Languages with this property include:
-
address@hidden @bullet
-
address@hidden
-Slavic family
-
address@hidden @minus
-
address@hidden
-Polish
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden @dfn{Four forms, special case for one and all numbers ending in
-02, 03, or 04:}
-
address@hidden @minus
-
address@hidden
-The header entry would look like this:
-
address@hidden
-Plural-Forms: nplurals=4; \
-  plural= n%100 == 1 ? 0 : n%100==2 ? 1 : n%100 == 3
-         || n%100 == 4 ? 2 : 3;
address@hidden smallexample
-
address@hidden
-Languages with this property include:
-
address@hidden @bullet
-
address@hidden Slavic family
-
address@hidden @minus
-
address@hidden
-Slovenian
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden itemize
-
address@hidden itemize
-
-
address@hidden Charset conversion in gettext
address@hidden How to Specify the Output Character Set That @code{gettext} Uses
-
address@hidden not only looks up a translation in a message catalog,
-it also converts the translation on the fly to the desired output
-character set.  This is useful if the user is working in a different
-character set than the translator who created the message catalog,
-because it avoids distributing variants of message catalogs that
-differ only in the character set.
-
-The output character set is, by default, the value of
address@hidden (CODESET)}, which depends on the @code{LC_CTYPE}
-part of the current locale.  But programs that store strings in a
-locale-independent way (e.g. @sc{utf}-8) can request that
address@hidden and related functions return the translations in that
-encoding, by use of the @code{bind_textdomain_codeset} function.
-
-The @var{msgid} argument to @code{gettext} is not subject to
-character-set conversion.  Also, when @code{gettext} does not find a
-translation for @var{msgid}, it returns @var{msgid}
-unchanged---independently of the current output character set.  It is
-therefore recommended that all @var{msgid}s be address@hidden strings.
-
address@hidden libintl.h
address@hidden GNU
address@hidden {char *} bind_textdomain_codeset (const char address@hidden, 
const char address@hidden)
-The @code{bind_textdomain_codeset} function can be used to specify the
-output character set for message catalogs for domain @var{domainname}.
-The @var{codeset} argument must be a valid codeset name that can be
-used for the @code{iconv_open} function, or a null pointer.
-
-If the @var{codeset} parameter is the null pointer,
address@hidden returns the currently selected codeset
-for the domain with the name @var{domainname}. It returns @code{NULL} if
-no codeset has yet been selected.
-
-The @code{bind_textdomain_codeset} function can be used several times.
-If used multiple times with the same @var{domainname} argument, the
-later call overrides the settings made by the earlier one.
-
-The @code{bind_textdomain_codeset} function returns a pointer to a
-string containing the name of the selected codeset.  The string is
-allocated internally in the function and must not be changed by the
-user.  If the system runs out of memory during the execution of
address@hidden, the return value is @code{NULL} and
-the global variable @var{errno} is set accordingly.  @end deftypefun
-
-
address@hidden GUI program problems
address@hidden How to Use @code{gettext} in @sc{gui} Programs
-
-One place where the @code{gettext} functions, if used normally, have
-big problems is within programs with graphical user interfaces (@sc{gui}s).
-The problem is that many of the strings that have to be translated are
-very short.  They have to appear in pull-down menus, which restricts
-their length.  But strings that do not contain entire sentences or at
-least large fragments of a sentence may appear in more than one
-situation in the program with different translations.  This is
-especially true for the one-word strings that are frequently used in
address@hidden programs.
-
-As a consequence, many people say that the @code{gettext} approach is
-wrong and that instead @code{catgets}, which indeed does not have this
-problem, should be used.  But there is a very simple and powerful
-method to handle this problem with the @code{gettext} functions.
-
address@hidden
-As as example, consider the following fictional situation.  A @sc{gui}
-program has a menu bar with the following entries:
-
address@hidden
-+------------+------------+--------------------------------------+
-| File       | Printer    |                                      |
-+------------+------------+--------------------------------------+
-| Open     | | Select   |
-| New      | | Open     |
-+----------+ | Connect  |
-             +----------+
address@hidden smallexample
-
-To have the strings @code{File}, @code{Printer}, @code{Open},
address@hidden, @code{Select} and @code{Connect} translated, there has to
-be at some point in the code a call to a function of the
address@hidden family.  But in two places the string passed into the
-function would be @code{Open}.  The translations might not be the same
-and therefore we are in the dilemma described above.
-
-One solution to this problem is to artificially lengthen the strings
-to make them unambiguous.  But what would the program do if no
-translation were available?  The lengthened string is not what should
-be printed.  So we should use a modified version of the functions.
-
-To lengthen the strings, a uniform method should be used.  In the
-example above, the strings could be chosen as:
-
address@hidden
-Menu|File
-Menu|Printer
-Menu|File|Open
-Menu|File|New
-Menu|Printer|Select
-Menu|Printer|Open
-Menu|Printer|Connect
address@hidden smallexample
-
-Now all the strings are different, and if now instead of
address@hidden the following little wrapper function is used,
-everything works just fine:
-
address@hidden sgettext
address@hidden
-  char *
-  sgettext (const char *msgid)
-  @{
-    char *msgval = gettext (msgid);
-    if (msgval == msgid)
-      msgval = strrchr (msgid, '|') + 1;
-    return msgval;
-  @}
address@hidden smallexample
-
-What this little function does is to recognize the case when no
-translation is available.  This can be done very efficiently by a
-pointer comparison since the return value is the input value.  If
-there is no translation, we know that the input string is in the
-format we used for the Menu entries and therefore contains a @samp{|}
-character.  We simply search for the last occurrence of this character
-and return a pointer to the character following it.  That's it!
-
-If one now consistently uses the lengthened-string form and replaces
-the @code{gettext} calls with calls to @code{sgettext} (this is
-normally limited to very few places in the @sc{gui} implementation), then
-it is possible to produce a program that can be internationalized.
-
-With advanced compilers (such as @sc{gnu} C), one can write the
address@hidden functions as an in-line function or as a macro like
-this:
-
address@hidden sgettext
address@hidden
-#define sgettext(msgid) \
-  (@{ const char *__msgid = (msgid);            \
-     char *__msgstr = gettext (__msgid);       \
-     if (__msgval == __msgid)                  \
-       __msgval = strrchr (__msgid, '|') + 1;  \
-     __msgval; @})
address@hidden smallexample
-
-The other @code{gettext} functions (@code{dgettext}, @code{dcgettext}
-and the @code{ngettext} equivalents) can and should have corresponding
-functions as well that look almost identical, except for the
-parameters and the call to the underlying function.
-
-Now, why do such functions not exist in the @sc{gnu} C Library?  There
-are two parts to the answer for this question:
-
address@hidden @bullet
address@hidden
-They are easy to write and therefore can be provided by the project
-they are used in.  This is not an answer by itself and must be seen
-together with the second part, which is
-
address@hidden
-There is no way the C library can contain a version that can work
-everywhere.  The problem is the selection of the character to separate
-the prefix from the actual string in the lenghtened string.  The
-examples above used @samp{|}, which is a good choice because it
-resembles a notation frequently used in this context and it also is a
-character not often used in message strings. But, what if the
-character @emph{is} used in message strings?  Or what if the chosen
-character is not available in the character set on the machine one
-compiles on (e.g., @samp{|} is not required to exist for @address@hidden C};
-this is why the @file{iso646.h} file exists in @address@hidden C}
-programming environments)? So, even this method is not perfect.
address@hidden itemize
-
-There is only one more comment left to make.  The wrapper function
-above requires that the translation strings themselves not be
-lengthened.  This is only logical.  There is no need to disambiguate
-the strings (since they are never used as keys for a search), and one
-also saves some memory and disk space by doing this.
-
-
address@hidden Using gettextized software
address@hidden User Influence on @code{gettext}
-
-The last sections described what the programmer can do to
-internationalize the messages of the program.  But it is up to the
-user in the end to select the message she wants to see.  She must
-understand them.
-
-The @sc{posix} locale model uses the environment variables
address@hidden, @code{LC_CTYPE}, @code{LC_MESSAGES},
address@hidden, @code{NUMERIC} and @code{LC_TIME} to select the
-locale that is to be used.  This way the user can influence lots of
-functions.  As we mentioned above, the @code{gettext} functions also
-take advantage of this.
-
-To understand how this happens, it is necessary to take a look at the
-various components of the file name that get computed to locate a
-message catalog.  It is composed as follows:
-
address@hidden
address@hidden/@var{locale}/address@hidden/@var{domain_name}.mo
address@hidden smallexample
-
-The default value for @var{dir_name} is system specific.  It is
-computed from the value given as the prefix while configuring the C
-library.  This value normally is @file{/usr} or @file{/}.  For the
-former, the complete @var{dir_name} is
-
address@hidden
-/usr/share/locale
address@hidden smallexample
-
-We can use @file{/usr/share} since the @file{.mo} files containing the
-message catalogs are system independent, so all systems can use the
-same files.  If the program executed the @code{bindtextdomain}
-function for the message domain that is currently handled, the
address@hidden component is exactly the value that was given to the
-function as the second parameter.  @code{bindtextdomain} allows
-overwriting the only system-dependent and fixed value to make it
-possible to address files anywhere in the file system.
-
-The @var{category} is the name of the locale category that was
-selected in the program code.  For @code{gettext} and @code{dgettext},
-this is always @code{LC_MESSAGES}; for @code{dcgettext}, this is
-selected by the value of the third parameter.  As said above, using a
-category other than @code{LC_MESSAGES} should be avoided.
-
-The @var{locale} component is computed based on the category used.
-Just like for the @code{setlocale} function, user selection comes into
-play.  Some environment variables are examined in a fixed order, and
-the first environment variable set determines the return value of the
-lookup process.  In detail, for the category @code{LC_xxx} the
-following variables are examined in this order:
-
address@hidden @bullet
-
address@hidden @code{LANGUAGE}
address@hidden @code{LC_ALL}
address@hidden @code{LC_xxx}
address@hidden @code{LANG}
-
address@hidden itemize
-
-This looks very familiar.  With the exception of the @code{LANGUAGE}
-environment variable, this is exactly the lookup order the
address@hidden function uses.  But why introduce the @code{LANGUAGE}
-variable?
-
-The reason is that the syntax of the values these variables can have
-is different from what is expected by the @code{setlocale} function.
-If we would set @code{LC_ALL} to a value following the extended
-syntax, that would mean the @code{setlocale} function would never be
-able to use the value of this variable.  An additional variable
-removes this problem, plus we can select the language independently of
-the locale setting, which is sometimes useful.
-
-While for the @code{LC_xxx} variables, the value should consist of
-exactly one specification of a locale, the @code{LANGUAGE} variable's
-value can consist of a colon-separated list of locale names.  This is
-the way we manage to implement one of our additional demands above, to
-be able to specify an ordered list of languages.
-
-Back to the constructed file name.  We have only one component
-missing.  The @var{domain_name} part is the name that was either
-registered using the @code{textdomain} function or that was given to
address@hidden or @code{dcgettext} as the first parameter.  Now it
-becomes obvious that a good choice for the domain name in the program
-code is a string that is closely related to the program or package
-name.  For example, the domain name for the @sc{gnu} C Library is
address@hidden
-
address@hidden
-A limited piece of example code should show how the programmer is
-supposed to work:
-
address@hidden
address@hidden
-  setlocale (LC_ALL, "");
-  textdomain ("test-package");
-  bindtextdomain ("test-package", "/usr/local/share/locale");
-  puts (gettext ("Hello, world!"));
address@hidden
address@hidden smallexample
-
-At the program start, the default domain is @code{messages}, and the
-default locale is @samp{C}.  The @code{setlocale} call sets the locale
-according to the user's environment variables; remember that correct
-functioning of @code{gettext} relies on the correct setting of the
address@hidden locale (for looking up the message catalog) and of
-the @code{LC_CTYPE} locale (for the character-set conversion).  The
address@hidden call changes the default domain to
address@hidden  The @code{bindtextdomain} call specifies that
-the message catalogs for the domain @code{test-package} can be found
-below the directory @file{/usr/local/share/locale}.
-
-If now the user set in her environment the variable @code{LANGUAGE} to
address@hidden, the @code{gettext} function will try to use the
-translations from the file:
-
address@hidden
-/usr/local/share/locale/de/LC_MESSAGES/test-package.mo
address@hidden smallexample
-
-From the above descriptions, it should be clear which component of
-this file name is determined by which source.
-
-In the above example, we assumed that the @code{LANGUAGE} environment
-variable was set to @code{de}.  This might be an appropriate
-selection, but what happens if the user wants to use @code{LC_ALL}
-because of the wider usability, and here the required value is
address@hidden  We already mentioned above that a situation
-like this is not infrequent.  For example, a person might prefer
-reading a dialect and, if this is not available, falling back on the
-standard language.
-
-The @code{gettext} functions know about situations like this and can
-handle them gracefully.  The functions recognize the format of the
-value of the environment variable.  It can split the value into
-different pieces and, by leaving out one or the other part, it can
-construct new values.  This happens of course in a predictable way.
-To understand this, one must know the format of the environment
-variable value.  There is one more or less standardized form,
-originally from the X/Open specification:
-
address@hidden@@modifier]}
-
-Less specific locale names will be stripped off in the order of the
-following list:
-
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden codeset}
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden enumerate
-
-The @code{language} field will never be dropped for obvious reasons.
-
-The only new thing is the @code{normalized codeset} entry.  This is
-another goodie, which is introduced to help reduce the chaos that
-derives from the inability of people to standardize the names of
-character sets.  Instead of @address@hidden, one can often see
address@hidden, @w{88591}, @w{iso8859-1} or @w{iso_8859-1}.  The
address@hidden codeset} value is generated from the user-provided
-character-set name by applying the following rules:
-
address@hidden
address@hidden
-Remove all characters besides numbers and letters.
address@hidden
-Fold letters to lowercase.
address@hidden
-If the name only contains digits, prepend the string @samp{iso}.
address@hidden enumerate
-
address@hidden
-So all of the above names will be normalized to @code{iso88591}.  This
-allows the program user to more freely choose the locale name.
-
-Even this extended functionality still does not help solve the problem
-that completely different names can be used to denote the same locale
-(e.g., @code{de} and @code{german}).  To be of help in this situation,
-the locale implementation and the @code{gettext} functions know about
-aliases.
-
-The file @file{/usr/share/locale/locale.alias} (replace @file{/usr}
-with whatever prefix you used for configuring the C library) contains
-a mapping of alternative names to more regular names.  The system
-manager is free to add new entries to fill his own needs.  The
-selected locale from the environment is compared with the entries in
-the first column of this file, ignoring the case.  If they match, the
-value of the second column is used instead for further handling.
-
-In the description of the format of the environment variables we
-already mentioned the character set as a factor in the selection of
-the message catalog.  In fact, only catalogs that contain text written
-using the character set of the system or program can be used
-(directly; a solution for this will come some day).  The user will
-always have to be careful about this.  Also, if in the collection of
-message catalogs there are files for the same language that are coded
-using different character sets, the user has to be careful.
-
-
address@hidden Helper programs for gettext
address@hidden Programs to Handle Message Catalogs for @code{gettext}
-
-The @sc{gnu} C Library does not contain the source code for the
-programs to handle message catalogs for the @code{gettext} functions.
-As part of the @sc{gnu} project, the @sc{gnu} gettext package contains
-everything the developer needs.  The functionality provided by the
-tools in this package by far exceeds the abilities of the
address@hidden program described above for the @code{catgets}
-functions.
-
-There is a program @code{msgfmt}, which is equivalent to the
address@hidden program.  It generates from the human-readable and
-human-editable form of the message catalog a binary file that can be
-used by the @code{gettext} functions.  But there are several more
-programs available.
-
-The @code{xgettext} program can be used to automatically extract the
-translatable messages from a source file, so the programmer need not
-be careful of the translations and the list of messages that have to
-be translated.  She will simply wrap the translatable string in calls
-to @code{gettext} and the others, and the rest will be done by
address@hidden  This program has a lot of options that help
-customize the output or help understand the input.
-
-Other programs help to manage the development cycle when new messages
-appear in the source files or when a new translation of the messages
-appear.  Here it should only be noted that using all the tools in
address@hidden gettext, it is possible to @emph{completely} automatize the
-handling of message catalogs.  Besides marking the translatable string
-in the source code and generating the translations, the developers
-themselves do not have to do anything.
-
address@hidden Searching and Sorting, Pattern Matching, Message Translation, Top
address@hidden %MENU% General searching and sorting functions
address@hidden Searching and Sorting
-
-This chapter describes functions for searching and sorting arrays of
-arbitrary objects.  You pass the appropriate comparison function to be
-applied as an argument, along with the size of the objects in the array
-and the total number of elements.
-
address@hidden Comparison Functions
address@hidden Defining the Comparison Function
address@hidden Comparison Function
-
-In order to use the sorted array library functions, you have to describe
-how to compare the elements of the array.
-
-To do this, you supply a comparison function to compare two elements
-of the array.  The library will call this function, passing as
-arguments pointers to two array elements to be compared.  Your
-comparison function should return a value the way @code{strcmp}
-(@pxref{String/Array Comparison}) does: negative if the first argument
-is ``less'' than the second, zero if they are ``equal'' and positive if
-the first argument is ``greater''.
-
-Here is an example of a comparison function that works with an array
-of numbers of type @code{double}:
-
address@hidden
-int
-compare_doubles (const void *a, const void *b)
address@hidden
-  const double *da = (const double *) a;
-  const double *db = (const double *) b;
-
-  return (*da > *db) - (*da < *db);
address@hidden
address@hidden smallexample
-
-The header file @file{stdlib.h} defines a name for the data type of
-comparison functions.  This type is a @sc{gnu} extension.
-
address@hidden stdlib.h
address@hidden GNU
address@hidden comparison_fn_t
address@hidden
-int comparison_fn_t (const void *, const void *);
address@hidden smallexample
-
address@hidden Array Search Function
address@hidden Array Search Function
address@hidden search function (for arrays)
address@hidden binary search function (for arrays)
address@hidden array search function
-
-Generally, searching for a specific element in an array means that
-potentially all elements must be checked.  The @sc{gnu} C Library
-contains functions to perform linear searches.  The prototypes for the
-following two functions can be found in @file{search.h}.
-
address@hidden search.h
address@hidden SVID
address@hidden {void *} lfind (const void address@hidden, void address@hidden, 
size_t address@hidden, size_t @var{size}, comparison_fn_t @var{compar})
-The @code{lfind} function searches in the array with
address@hidden@var{nmemb}} elements of @var{size} bytes pointed to by
address@hidden for an element that matches the one pointed to by
address@hidden  The function pointed to by @var{compar} is used to decide
-whether two elements match.
-
-The return value is a pointer to the matching element in the array
-starting at @var{base} if it is found.  If no matching element is
-available, @code{NULL} is returned.
-
-The mean run time of this function is @address@hidden/2.  This
-function should only be used if elements often get added to or deleted
-from the array, in which case it might not be useful to sort the array
-before searching.
address@hidden deftypefun
-
address@hidden search.h
address@hidden SVID
address@hidden {void *} lsearch (const void address@hidden, void 
address@hidden, size_t address@hidden, size_t @var{size}, comparison_fn_t 
@var{compar})
-The @code{lsearch} function is similar to the @code{lfind} function.
-It searches the given array for an element and returns it if found.
-The difference is that if no matching element is found, the
address@hidden function adds the object pointed to by @var{key} (with
-a size of @var{size} bytes) at the end of the array and it increments
-the value of @address@hidden to reflect this addition.
-
-This means that if the caller is not sure that the array contains the
-element you are searching for, the memory allocated for the array
-starting at @var{base} must have room for at least @var{size} more
-bytes.  If you are sure the element is in the array, it is better to
-use @code{lfind}, so having more room in the array is always necessary
-when calling @code{lsearch}.
address@hidden deftypefun
-
-To search a sorted array for an element matching the key, use the
address@hidden function.  The prototype for this function is in
-the header file @file{stdlib.h}.
address@hidden stdlib.h
-
address@hidden stdlib.h
address@hidden ISO
address@hidden {void *} bsearch (const void address@hidden, const void 
address@hidden, size_t @var{count}, size_t @var{size}, comparison_fn_t 
@var{compare})
-The @code{bsearch} function searches the sorted array @var{array} for an object
-that is equivalent to @var{key}.  The array contains @var{count} elements,
-each of which is of size @var{size} bytes.
-
-The @var{compare} function is used to perform the comparison.  This
-function is called with two pointer arguments and should return an
-integer less than, equal to or greater than zero corresponding to
-whether its first argument is considered less than, equal to or
-greater than its second argument.  The elements of the @var{array}
-must already be sorted in ascending order according to this comparison
-function.
-
-The return value is a pointer to the matching array element, or a null
-pointer if no match is found.  If the array contains more than one element
-that matches, the one that is returned is unspecified.
-
-This function derives its name from the fact that it is implemented
-using the binary search algorithm.
address@hidden deftypefun
-
address@hidden Array Sort Function
address@hidden Array Sort Function
address@hidden sort function (for arrays)
address@hidden quick sort function (for arrays)
address@hidden array sort function
-
-To sort an array using an arbitrary comparison function, use the
address@hidden function.  The prototype for this function is in
address@hidden
address@hidden stdlib.h
-
address@hidden stdlib.h
address@hidden ISO
address@hidden void qsort (void address@hidden, size_t @var{count}, size_t 
@var{size}, comparison_fn_t @var{compare})
-The @var{qsort} function sorts the array @var{array}.  The array contains
address@hidden elements, each of which is of size @var{size}.
-
-The @var{compare} function is used to perform the comparison on the
-array elements.  This function is called with two pointer arguments and
-should return an integer less than, equal to or greater than zero
-corresponding to whether its first argument is considered less than,
-equal to or greater than its second argument.
-
address@hidden stable sorting
address@hidden:} If two objects compare as equal, their order after
-sorting is unpredictable.  That is to say, the sorting is not stable.
-This can make a difference when the comparison considers only part of
-the elements.  Two elements with the same sort key may differ in other
-respects.
-
-If you want the effect of a stable sort, you can get this result by
-writing the comparison function so that, lacking other reasons to
-distinguish between two elements, it compares them by their addresses.
-Doing this may make the sorting algorithm less efficient, so do it
-only if necessary.
-
-Here is a simple example of sorting an array of doubles in numerical
-order, using the comparison function defined above (@pxref{Comparison
-Functions}):
-
address@hidden
address@hidden
-  double *array;
-  int size;
-  @dots{}
-  qsort (array, size, sizeof (double), compare_doubles);
address@hidden
address@hidden smallexample
-
-The @code{qsort} function derives its name from the fact that it was
-originally implemented using the ``quick sort'' algorithm.
-
-The implementation of @code{qsort} in this library might not be an
-in-place sort and might thereby use an extra amount of memory to store
-the array.
address@hidden deftypefun
-
address@hidden Search/Sort Example
address@hidden Searching and Sorting Example
-
-Here is an example showing the use of @code{qsort} and @code{bsearch}
-with an array of structures.  The objects in the array are sorted
-by comparing their @code{name} fields with the @code{strcmp} function.
-Then, we can look up individual objects based on their names.
-
address@hidden This example is dedicated to the memory of Jim Henson.  RIP.
address@hidden
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-/* @r{Define an array of critters to sort.} */
-
-struct critter
-  @{
-    const char *name;
-    const char *species;
-  @};
-
-struct critter muppets[] =
-  @{
-    @{"Kermit", "frog"@},
-    @{"Piggy", "pig"@},
-    @{"Gonzo", "whatever"@},
-    @{"Fozzie", "bear"@},
-    @{"Sam", "eagle"@},
-    @{"Robin", "frog"@},
-    @{"Animal", "animal"@},
-    @{"Camilla", "chicken"@},
-    @{"Sweetums", "monster"@},
-    @{"Dr. Strangepork", "pig"@},
-    @{"Link Hogthrob", "pig"@},
-    @{"Zoot", "human"@},
-    @{"Dr. Bunsen Honeydew", "human"@},
-    @{"Beaker", "human"@},
-    @{"Swedish Chef", "human"@}
-  @};
-
-int count = sizeof (muppets) / sizeof (struct critter);
-
-
-
-/* @r{This is the comparison function used for sorting and searching.} */
-
-int 
-critter_cmp (const struct critter *c1, const struct critter *c2)
address@hidden
-  return strcmp (c1->name, c2->name);
address@hidden
-
-
-/* @r{Print information about a critter.} */
-
-void 
-print_critter (const struct critter *c)
address@hidden
-  printf ("%s, the %s\n", c->name, c->species);
address@hidden
-
-
-
-/* @r{Do the lookup into the sorted array.} */
-
-void 
-find_critter (const char *name)
address@hidden
-  struct critter target, *result;
-  target.name = name;
-  result = bsearch (&target, muppets, count, sizeof (struct critter),
-                    critter_cmp);
-  if (result)
-    print_critter (result);
-  else
-    printf ("Couldn't find %s.\n", name);
address@hidden
-
-
-/* @r{Main program.} */
-
-int
-main (void)
address@hidden
-  int i;
-
-  for (i = 0; i < count; i++)
-    print_critter (&muppets[i]);
-  printf ("\n");
-
-  qsort (muppets, count, sizeof (struct critter), critter_cmp);
-
-  for (i = 0; i < count; i++)
-    print_critter (&muppets[i]);
-  printf ("\n");
-
-  find_critter ("Kermit");
-  find_critter ("Gonzo");
-  find_critter ("Janice");
-
-  return 0;
address@hidden
-
address@hidden smallexample
-
address@hidden Kermit the frog
-The output from this program looks like:
-
address@hidden
-Kermit, the frog
-Piggy, the pig
-Gonzo, the whatever
-Fozzie, the bear
-Sam, the eagle
-Robin, the frog
-Animal, the animal
-Camilla, the chicken
-Sweetums, the monster
-Dr. Strangepork, the pig
-Link Hogthrob, the pig
-Zoot, the human
-Dr. Bunsen Honeydew, the human
-Beaker, the human
-Swedish Chef, the human
-
-Animal, the animal
-Beaker, the human
-Camilla, the chicken
-Dr. Bunsen Honeydew, the human
-Dr. Strangepork, the pig
-Fozzie, the bear
-Gonzo, the whatever
-Kermit, the frog
-Link Hogthrob, the pig
-Piggy, the pig
-Robin, the frog
-Sam, the eagle
-Swedish Chef, the human
-Sweetums, the monster
-Zoot, the human
-
-Kermit, the frog
-Gonzo, the whatever
-Couldn't find Janice.
address@hidden smallexample
-
-
address@hidden Hash Search Function
address@hidden The @code{hsearch} Function
-
-The functions mentioned so far in this chapter are for searching in a
-sorted or an unsorted array.  There are functions available that can
-organize information to make searching easier.  The costs of insert,
-delete and search differ.  One possible implementation is using
-hashing tables.  The following functions are declared in the the
-header file @file{search.h}.
-
address@hidden search.h
address@hidden SVID
address@hidden int hcreate (size_t @var{nel})
-The @code{hcreate} function creates a hashing table that can contain
-at least @var{nel} elements.  There is no way to grow this table, so
-it is necessary to choose the value for @var{nel} wisely.  The methods
-used to implement this function might make it necessary to make the
-number of elements in the hashing table larger than the expected
-maximum number of elements.  Hashing tables usually work inefficiently
-if they are filled 80% or more.  The constant access time guaranteed
-by hashing can only be achieved if few collisions address@hidden
-Donald E. Knuth, @emph{The Art of Computer Programming,} vol. 3,
address@hidden and Searching}, 2nd ed. (Reading, MA: Addison-Wesley,
-April 24, 1998).}
-
-The weakest aspect of this function is that there can be at most one
-hashing table used through the whole program.  The table is allocated
-in local memory out of control of the programmer.  As an extension,
-the @sc{gnu} C Library provides an additional set of functions with a
-reentrant interface that provide a similar interface but that allow
-you to keep an arbitrary number of hashing tables.
-
-It is possible to use more than one hashing table in the program run if
-the former table is first destroyed by a call to @code{hdestroy}.
-
-The function returns a nonzero value if successful.  If it returns
-zero, something went wrong.  This could either mean there was already
-a hashing table in use, or the program has run out of memory.
address@hidden deftypefun
-
address@hidden search.h
address@hidden SVID
address@hidden void hdestroy (void)
-The @code{hdestroy} function can be used to free all the resources
-allocated in a previous call of @code{hcreate}.  After a call to this
-function, it is again possible to call @code{hcreate} and allocate a
-new table with a potentially different size.
-
-It is important to remember that the elements contained in the hashing
-table at the time @code{hdestroy} is called are @emph{not} freed by
-this function.  It is the responsibility of the program code to free
-those strings (if necessary at all).  Freeing all the element memory
-is not possible without extra, separately kept information, since
-there is no function to iterate through all available elements in the
-hashing table.  If it is really necessary to free a table and all
-elements, the programmer has to keep a list of all table elements, and
-before calling @code{hdestroy} he has to free all element data using
-this list.  This is a very unpleasant mechanism and it also shows that
-this kind of hashing table is mainly meant for tables that are created
-once and used until the end of the program run.
address@hidden deftypefun
-
-Entries of the hashing table and keys for the search are defined using
-this type:
-
address@hidden {Data type} {struct ENTRY}
-Both elements of this structure are pointers to zero-terminated
-strings.  This is a limiting restriction of the functionality of the
address@hidden functions.  They can only be used for data sets that
-use the NUL character always and solely to terminate the records.  It
-is not possible to handle general binary data.
-
address@hidden @code
address@hidden char *key
-This is a pointer to a zero-terminated string of characters describing the key 
for
-the search or the element in the hashing table.
address@hidden char *data
-This is a pointer to a zero-terminated string of characters describing
-the data.  If the functions will be called only for searching an
-existing entry, this element might stay undefined, since it is not
-used.
address@hidden table
address@hidden deftp
-
address@hidden search.h
address@hidden SVID
address@hidden {ENTRY *} hsearch (ENTRY @var{item}, ACTION @var{action})
-To search in a hashing table created using @code{hcreate}, the
address@hidden function must be used.  This function can perform a
-simple search for an element (if @var{action} has the @code{FIND}) or
-alternatively it can insert the key element into the hashing table.
-Entries are never replaced.
-
-The key is denoted by a pointer to an object of type @code{ENTRY}.
-For locating the corresponding position in the hashing table, only the
address@hidden element of the structure is used.
-
-If an entry with matching key is found, the @var{action} parameter is
-irrelevant.  The found entry is returned.  If no matching entry is
-found and the @var{action} parameter has the value @code{FIND}, the
-function returns a @code{NULL} pointer.  If no entry is found and the
address@hidden parameter has the value @code{ENTER}, a new entry is
-added to the hashing table that is initialized with the parameter
address@hidden  A pointer to the newly added entry is returned.
address@hidden deftypefun
-
-As mentioned before, the hashing table used by the functions described
-so far is global and there can be at any time at most one hashing
-table in the program.  A solution is to use the following functions,
-which are a @sc{gnu} extension.  All have in common that they operate
-on a hashing table that is described by the content of an object of
-the type @code{struct hsearch_data}.  This type should be treated as
-opaque; none of its members should be changed directly.
-
address@hidden search.h
address@hidden @sc{gnu}
address@hidden int hcreate_r (size_t @var{nel}, struct hsearch_data 
address@hidden)
-The @code{hcreate_r} function initializes the object pointed to by
address@hidden to contain a hashing table with at least @var{nel}
-elements.  This function is equivalent to the @code{hcreate} function
-except that the initialized data structure is controlled by the user.
-
-This allows having more than one hashing table at one time.  The memory
-necessary for the @code{struct hsearch_data} object can be allocated
-dynamically.  It must be initialized with zero before calling this
-function.
-
-The return value is nonzero if the operation was successful.  if the
-return value is zero, something went wrong, which probably means the
-program runs out of memory.
address@hidden deftypefun
-
address@hidden search.h
address@hidden GNU
address@hidden void hdestroy_r (struct hsearch_data address@hidden)
-The @code{hdestroy_r} function frees all resources allocated by the
address@hidden function for this very same object @var{htab}.  As
-for @code{hdestroy}, it is the program's responsibility to free the
-strings for the elements of the table.
address@hidden deftypefun
-
address@hidden search.h
address@hidden GNU
address@hidden int hsearch_r (ENTRY @var{item}, ACTION @var{action}, ENTRY 
address@hidden, struct hsearch_data address@hidden)
-The @code{hsearch_r} function is equivalent to @code{hsearch}.  The
-meaning of the first two arguments is identical.  But instead of
-operating on a single global hashing table the function works on the
-table described by the object pointed to by @var{htab} (which is
-initialized by a call to @code{hcreate_r}).
-
-Another difference with @code{hcreate} is that the pointer to the
-found entry in the table is not the return value of the functions.  It
-is returned by storing it in a pointer variable pointed to by the
address@hidden parameter.  The return value of the function is an
-integer value indicating success if it is nonzero and failure if it is
-zero.  In the latter case, the global variable @var{errno} signals the
-reason for the failure.
-
address@hidden @code
address@hidden ENOMEM
-The table is filled, @code{hsearch_r} was called with a so far unknown
-key and @var{action} was set to @code{ENTER}.
address@hidden ESRCH
-The @var{action} parameter is @code{FIND}, and no corresponding
-element is found in the table.
address@hidden table
address@hidden deftypefun
-
-
address@hidden Tree Search Function
address@hidden The @code{tsearch} Function
-
-Another common way to organize data for efficient search is to use
-trees.  The @code{tsearch} function family provides a nice interface
-to functions to organize possibly large amounts of data by providing a
-mean access time proportional to the logarithm of the number of
-elements.  The @sc{gnu} C Library implementation guarantees that this
-bound is never exceeded even for input data that cause problems for
-simple binary tree implementations.
-
-The functions described in this chapter are all described in the
address@hidden V} and X/Open specifications and are therefore quite
-portable.
-
-In contrast to the @code{hsearch} functions, the @code{tsearch}
-functions can be used with arbitrary data and not just zero-terminated
-strings.
-
-The @code{tsearch} functions have the advantage that no function to
-initialize data structures is necessary.  A simple pointer of type
address@hidden *} initialized to @code{NULL} is a valid tree and can be
-extended or searched.  The prototypes for these functions can be found
-in the header file @file{search.h}.
-
address@hidden search.h
address@hidden SVID
address@hidden {void *} tsearch (const void address@hidden, void 
address@hidden, comparison_fn_t @var{compar})
-The @code{tsearch} function searches in the tree pointed to by
address@hidden@var{rootp}} for an element matching @var{key}.  The function
-pointed to by @var{compar} is used to determine whether two elements
-match.  @xref{Comparison Functions}, for a specification of the
-functions that can be used for the @var{compar} parameter.
-
-If the tree does not contain a matching entry, the @var{key} value
-will be added to the tree.  @code{tsearch} does not make a copy of the
-object pointed to by @var{key} (how could it, since the size is
-unknown).  Instead, it adds a reference to this object, which means
-the object must be available as long as the tree data structure is
-used.
-
-The tree is represented by a pointer to a pointer, since it is
-sometimes necessary to change the root node of the tree.  It must not
-be assumed that the variable pointed to by @var{rootp} has the same
-value after the call.  This also shows that it is not safe to call the
address@hidden function more than once at the same time using the same
-tree.  It is no problem to run it more than once at a time on
-different trees.
-
-The return value is a pointer to the matching element in the tree.  If
-a new element was created, the pointer points to the new data (which
-is in fact @var{key}).  If an entry had to be created and the program
-ran out of space, @code{NULL} is returned.
address@hidden deftypefun
-
address@hidden search.h
address@hidden SVID
address@hidden {void *} tfind (const void address@hidden, void *const 
address@hidden, comparison_fn_t @var{compar})
-The @code{tfind} function is similar to the @code{tsearch} function.
-It locates an element matching the one pointed to by @var{key} and
-returns a pointer to this element.  But if no matching element is
-available, no new element is entered (note that the @var{rootp}
-parameter points to a constant pointer).  Instead the function returns
address@hidden
address@hidden deftypefun
-
-Another advantage of the @code{tsearch} function in contrast to the
address@hidden functions is that there is an easy way to remove
-elements.
-
address@hidden search.h
address@hidden SVID
address@hidden {void *} tdelete (const void address@hidden, void 
address@hidden, comparison_fn_t @var{compar})
-To remove a specific element matching @var{key} from the tree,
address@hidden can be used.  It locates the matching element using the
-same method as @code{tfind}.  The corresponding element is then
-removed and a pointer to the parent of the deleted node is returned by
-the function.  If there is no matching entry in the tree, nothing can
-be deleted and the function returns @code{NULL}.  If the root of the
-tree is deleted, @code{tdelete} returns some unspecified value not
-equal to @code{NULL}.
address@hidden deftypefun
-
address@hidden search.h
address@hidden GNU
address@hidden void tdestroy (void address@hidden, __free_fn_t @var{freefct})
-If the complete search tree has to be removed, one can use
address@hidden  It frees all resources allocated by the
address@hidden function to generate the tree pointed to by
address@hidden
-
-For the data in each tree node, the function @var{freefct} is called.
-The pointer to the data is passed as the argument to the function.  If
-no such work is necessary, @var{freefct} must point to a function
-doing nothing.  It is called in any case.
-
-This function is a @sc{gnu} extension and is not covered by the
address@hidden V} or X/Open specifications.
address@hidden deftypefun
-
-In addition to the function to create and destroy the tree data
-structure, there is another function that allows you to apply a
-function to all elements of the tree.  The function must have this
-type:
-
address@hidden
-void __action_fn_t (const void *nodep, VISIT value, int level);
address@hidden smallexample
-
-The @var{nodep} is the data value of the current node (once given as
-the @var{key} argument to @code{tsearch}).  @var{level} is a numeric
-value that corresponds to the depth of the current node in the tree.
-The root node has the depth @math{0}, its children have a depth of
address@hidden, and so on.  The @code{VISIT} type is an enumeration type.
-
address@hidden {Data Type} VISIT
-The @code{VISIT} value indicates the status of the current node in the
-tree and how the function is called.  The status of a node is either
-`leaf' or `internal node'.  For each leaf node the function is called
-exactly once; for each internal node it is called three times: before
-the first child is processed, after the first child is processed and
-after both children are processed.  This makes it possible to handle
-all three methods of tree traversal (or even a combination of them).
-
address@hidden @code
address@hidden preorder
-The current node is an internal node and the function is called before
-the first child was processed.
address@hidden postorder
-The current node is an internal node and the function is called after
-the first child was processed.
address@hidden endorder
-The current node is an internal node and the function is called after
-the second child was processed.
address@hidden leaf
-The current node is a leaf.
address@hidden table
address@hidden deftp
-
address@hidden search.h
address@hidden SVID
address@hidden void twalk (const void address@hidden, __action_fn_t 
@var{action})
-For each node in the tree with a node pointed to by @var{root}, the
address@hidden function calls the function provided by the parameter
address@hidden  For leaf nodes, the function is called exactly once
-with @var{value} set to @code{leaf}.  For internal nodes, the function
-is called three times, setting the @var{value} parameter or
address@hidden to the appropriate value.  The @var{level} argument for
-the @var{action} function is computed while descending the tree with
-increasing the value by one for the descend to a child, starting with
-the value @math{0} for the root node.
-
-Since the functions used for the @var{action} parameter to
address@hidden must not modify the tree data, it is safe to run
address@hidden in more than one thread at the same time, working on the
-same tree.  It is also safe to call @code{tfind} in parallel.
-Functions that modify the tree must not be used, otherwise the
-behavior is undefined.
address@hidden deftypefun
-
address@hidden Pattern Matching
address@hidden %MENU% Matching shell ``globs'' and regular expressions
address@hidden Pattern Matching
-
-The @sc{gnu} C Library provides pattern-matching facilities for two kinds of
-patterns: regular expressions and file-name wildcards.  The library also
-provides a facility for expanding variable and command references and
-parsing text into words in the way the shell does.
-
address@hidden Wildcard Matching
address@hidden Wildcard Matching
-
address@hidden fnmatch.h
-This section describes how to match a wildcard pattern against a
-particular string.  The result is a yes or no answer---does the string
-fit the pattern or not.  The symbols described here are all declared
-in @file{fnmatch.h}.
-
address@hidden fnmatch.h
address@hidden POSIX.2
address@hidden int fnmatch (const char address@hidden, const char 
address@hidden, int @var{flags})
-This function tests whether the string @var{string} matches the pattern
address@hidden  It returns @code{0} if they do match; otherwise, it
-returns the nonzero value @code{FNM_NOMATCH}.  The arguments
address@hidden and @var{string} are both strings.
-
-The argument @var{flags} is a combination of flag bits that alter the
-details of matching.  See below for a list of the defined flags.
-
-In the @sc{gnu} C Library, @code{fnmatch} cannot experience an ``error''---it
-always returns an answer for whether the match succeeds.  However, other
-implementations of @code{fnmatch} might sometimes report ``errors''.
-They would do so by returning nonzero values that are not equal to
address@hidden
address@hidden deftypefun
-
-These are the available flags for the @var{flags} argument:
-
address@hidden @code
address@hidden fnmatch.h
address@hidden GNU
address@hidden FNM_FILE_NAME
-Treat the @samp{/} character specially, for matching file names.  If
-this flag is set, wildcard constructs in @var{pattern} cannot match
address@hidden/} in @var{string}.  Thus, the only way to match @samp{/} is with
-an explicit @samp{/} in @var{pattern}.
-
address@hidden fnmatch.h
address@hidden POSIX.2
address@hidden FNM_PATHNAME
-This is an alias for @code{FNM_FILE_NAME}; it comes from @sc{posix}.2.  We
-don't recommend this name because we don't use the term ``pathname'' for
-file names.
-
address@hidden fnmatch.h
address@hidden POSIX.2
address@hidden FNM_PERIOD
-Treat the @samp{.} character specially if it appears at the beginning of
address@hidden  If this flag is set, wildcard constructs in @var{pattern}
-cannot match @samp{.} as the first character of @var{string}.
-
-If you set both @code{FNM_PERIOD} and @code{FNM_FILE_NAME}, then the
-special treatment applies to @samp{.} following @samp{/} as well as to
address@hidden at the beginning of @var{string}.  (The shell uses the
address@hidden and @code{FNM_FILE_NAME} flags together for matching
-file names.)
-
address@hidden fnmatch.h
address@hidden POSIX.2
address@hidden FNM_NOESCAPE
-Don't treat the @samp{\} character specially in patterns.  Normally,
address@hidden quotes the following character, turning off its special meaning
-(if any) so that it matches only itself.  When quoting is enabled, the
-pattern @samp{\?} matches only the string @samp{?}, because the question
-mark in the pattern acts like an ordinary character.
-
-If you use @code{FNM_NOESCAPE}, then @samp{\} is an ordinary character.
-
address@hidden fnmatch.h
address@hidden GNU
address@hidden FNM_LEADING_DIR
-Ignore a trailing sequence of characters starting with a @samp{/} in
address@hidden; that is to say, test whether @var{string} starts with a
-directory name that @var{pattern} matches.
-
-If this flag is set, either @samp{foo*} or @samp{foobar} as a pattern
-would match the string @samp{foobar/frobozz}.
-
address@hidden fnmatch.h
address@hidden GNU
address@hidden FNM_CASEFOLD
-Ignore case in comparing @var{string} to @var{pattern}.
-
address@hidden fnmatch.h
address@hidden GNU
address@hidden FNM_EXTMATCH
address@hidden Korn Shell
address@hidden ksh
-Recognize besides the normal patterns also the extended patterns
-introduced in @file{ksh}.  The patterns are written in the form
-explained in the following table where @var{pattern-list} is a
address@hidden|}-separated list of patterns.
-
address@hidden @code
address@hidden ?(@var{pattern-list})
-The pattern matches if zero or one occurrences of any of the patterns
-in the @var{pattern-list} allow matching the input string.
-
address@hidden *(@var{pattern-list})
-The pattern matches if zero or more occurrences of any of the patterns
-in the @var{pattern-list} allow matching the input string.
-
address@hidden +(@var{pattern-list})
-The pattern matches if one or more occurrences of any of the patterns
-in the @var{pattern-list} allow matching the input string.
-
address@hidden @@(@var{pattern-list})
-The pattern matches if exactly one occurrence of any of the patterns in
-the @var{pattern-list} allows matching the input string.
-
address@hidden !(@var{pattern-list})
-The pattern matches if the input string cannot be matched with any of
-the patterns in the @var{pattern-list}.
address@hidden table
address@hidden table
-
address@hidden Globbing
address@hidden Globbing
-
address@hidden globbing
-The archetypal use of wildcards is for matching against the files in a
-directory, and making a list of all the matches.  This is called
address@hidden
-
-You could do this using @code{fnmatch}, by reading the directory entries
-one by one and testing each one with @code{fnmatch}.  But that would be
-slow (and complex, since you would have to handle subdirectories by
-hand).
-
-The library provides a function @code{glob} to make this particular use
-of wildcards convenient.  @code{glob} and the other symbols in this
-section are declared in @file{glob.h}.
-
address@hidden Calling Glob
address@hidden Calling @code{glob}
-
-The result of globbing is a vector of file names (strings).  To return
-this vector, @code{glob} uses a special data type, @code{glob_t}, which
-is a structure.  You pass @code{glob} the address of the structure, and
-it fills in the structure's fields to tell you about the results.
-
address@hidden glob.h
address@hidden POSIX.2
address@hidden {Data Type} glob_t
-This data type holds a pointer to a word vector.  More precisely, it
-records both the address of the word vector and its size.  The
address@hidden implementation contains some more fields that are nonstandard
-extensions.
-
address@hidden @code
address@hidden gl_pathc
-The number of elements in the vector, excluding the initial null entries
-if the GLOB_DOOFFS flag is used (see @code{gl_offs} below).
-
address@hidden gl_pathv
-The address of the vector; this field has type @address@hidden **}}.
-
address@hidden gl_offs
-The offset of the first real element of the vector, from its nominal
-address in the @code{gl_pathv} field; unlike the other fields, this
-is always an input to @code{glob}, rather than an output from it.
-
-If you use a nonzero offset, then that many elements at the beginning of
-the vector are left empty (the @code{glob} function fills them with
-null pointers).
-
-The @code{gl_offs} field is meaningful only if you use the
address@hidden flag.  Otherwise, the offset is always zero
-regardless of what is in this field, and the first real element comes at
-the beginning of the vector.
-
address@hidden gl_closedir
-The address of an alternative implementation of the @code{closedir}
-function; it is used if the @code{GLOB_ALTDIRFUNC} bit is set in the
-flag parameter.  The type of this field is @address@hidden (*) (void
-*)}}.
-
-This is a @sc{gnu} extension.
-
address@hidden gl_readdir
-The address of an alternative implementation of the @code{readdir}
-function used to read the contents of a directory; it is used if the
address@hidden bit is set in the flag parameter.  The type of
-this field is @address@hidden dirent *(*) (void *)}}.
-
-This is a @sc{gnu} extension.
-
address@hidden gl_opendir
-The address of an alternative implementation of the @code{opendir}
-function; it is used if the @code{GLOB_ALTDIRFUNC} bit is set in the
-flag parameter.  The type of this field is @address@hidden *(*) (const
-char *)}}.
-
-This is a @sc{gnu} extension.
-
address@hidden gl_stat
-The address of an alternative implementation of the @code{stat}
-function to get information about an object in the file system; it is
-used if the @code{GLOB_ALTDIRFUNC} bit is set in the flag parameter.
-The type of this field is @address@hidden (*) (const char *, struct stat
-*)}}.
-
-This is a @sc{gnu} extension.
-
address@hidden gl_lstat
-The address of an alternative implementation of the @code{lstat}
-function to get information about an object in the file systems, not
-following symbolic links; it is used if the @code{GLOB_ALTDIRFUNC} bit
-is set in the flag parameter.  The type of this field is @address@hidden
-(*) (const char *,} @w{struct stat *)}}.
-
-This is a @sc{gnu} extension.
address@hidden table
address@hidden deftp
-
-For use in the @code{glob64} function, @file{glob.h} contains another
-definition for a very similar type.  @code{glob64_t} differs from
address@hidden only in the types of the members @code{gl_readdir},
address@hidden and @code{gl_lstat}.
-
address@hidden glob.h
address@hidden GNU
address@hidden {Data Type} glob64_t
-This data type holds a pointer to a word vector.  More precisely, it
-records both the address of the word vector and its size.  The
address@hidden implementation contains some more fields that are nonstandard
-extensions.
-
address@hidden @code
address@hidden gl_pathc
-The number of elements in the vector, excluding the initial null entries
-if the GLOB_DOOFFS flag is used (see @code{gl_offs} below).
-
address@hidden gl_pathv
-The address of the vector; this field has type @address@hidden **}}.
-
address@hidden gl_offs
-The offset of the first real element of the vector, from its nominal
-address in the @code{gl_pathv} field; unlike the other fields, this is
-always an input to @code{glob}, rather than an output from it.
-
-If you use a nonzero offset, then that many elements at the beginning of
-the vector are left empty.  (The @code{glob} function fills them with
-null pointers.)
-
-The @code{gl_offs} field is meaningful only if you use the
address@hidden flag.  Otherwise, the offset is always zero
-regardless of what is in this field, and the first real element comes at
-the beginning of the vector.
-
address@hidden gl_closedir
-The address of an alternative implementation of the @code{closedir}
-function; it is used if the @code{GLOB_ALTDIRFUNC} bit is set in the
-flag parameter.  The type of this field is @address@hidden (*) (void
-*)}}.
-
-This is a @sc{gnu} extension.
-
address@hidden gl_readdir
-The address of an alternative implementation of the @code{readdir64}
-function used to read the contents of a directory; it is used if the
address@hidden bit is set in the flag parameter.  The type of
-this field is @address@hidden dirent64 *(*) (void *)}}.
-
-This is a @sc{gnu} extension.
-
address@hidden gl_opendir
-The address of an alternative implementation of the @code{opendir}
-function; it is used if the @code{GLOB_ALTDIRFUNC} bit is set in
-the flag parameter.  The type of this field is
address@hidden@code{void *(*) (const char *)}}.
-
-This is a @sc{gnu} extension.
-
address@hidden gl_stat
-The address of an alternative implementation of the @code{stat64} function
-to get information about an object in the file system; it is used if the
address@hidden bit is set in the flag parameter.  The type of
-this field is @address@hidden (*) (const char *, struct stat64 *)}}.
-
-This is a @sc{gnu} extension.
-
address@hidden gl_lstat
-The address of an alternative implementation of the @code{lstat64}
-function to get information about an object in the file systems, not
-following symbolic links; it is used if the @code{GLOB_ALTDIRFUNC} bit
-is set in the flag parameter.  The type of this field is @address@hidden
-(*) (const char *,} @w{struct stat64 *)}}.
-
-This is a @sc{gnu} extension.
address@hidden table
address@hidden deftp
-
address@hidden glob.h
address@hidden POSIX.2
address@hidden int glob (const char address@hidden, int @var{flags}, int 
(address@hidden) (const char address@hidden, int @var{error-code}), glob_t 
address@hidden)
-The function @code{glob} does globbing using the pattern @var{pattern}
-in the current directory.  It puts the result in a newly allocated
-vector, and stores the size and address of this vector into
address@hidden@var{vector-ptr}}.  The argument @var{flags} is a combination
-of bit flags (@pxref{Flags for Globbing}).
-
-The result of globbing is a sequence of file names.  The function
address@hidden allocates a string for each resulting word, then
-allocates a vector of type @code{char **} to store the addresses of
-these strings.  The last element of the vector is a null pointer.
-This vector is called the @dfn{word vector}.
-
-To return this vector, @code{glob} stores both its address and its
-length (number of elements, not counting the terminating null pointer)
-into @address@hidden
-
-Normally, @code{glob} sorts the file names alphabetically before
-returning them.  You can turn this off with the flag @code{GLOB_NOSORT}
-if you want to get the information as fast as possible.  Usually it's
-a good idea to let @code{glob} sort them---if you process the files in
-alphabetical order, the users will have a feel for the rate of progress
-that your application is making.
-
-If @code{glob} succeeds, it returns 0.  Otherwise, it returns one
-of these error codes:
-
address@hidden @code
address@hidden glob.h
address@hidden POSIX.2
address@hidden GLOB_ABORTED
-There was an error opening a directory, and you used the flag
address@hidden or your specified @var{errfunc} returned a nonzero
-value.
address@hidden
-See below
address@hidden iftex
address@hidden
address@hidden for Globbing},
address@hidden ifinfo
-for an explanation of the @code{GLOB_ERR} flag and @var{errfunc}.
-
address@hidden glob.h
address@hidden POSIX.2
address@hidden GLOB_NOMATCH
-The pattern didn't match any existing files.  If you use the
address@hidden flag, then you never get this error code, because
-that flag tells @code{glob} to @emph{pretend} that the pattern matched
-at least one file.
-
address@hidden glob.h
address@hidden POSIX.2
address@hidden GLOB_NOSPACE
-It was impossible to allocate memory to hold the result.
address@hidden vtable
-
-In the event of an error, @code{glob} stores information in
address@hidden@var{vector-ptr}} about all the matches it has found so far.
-
-It is important to notice that the @code{glob} function will not fail
-if it encounters directories or files that cannot be handled without
-the @sc{lfs} interfaces.  The implementation of @code{glob} is
-supposed to use these functions internally.  This at least is the
-assumption made by the Unix standard.  The @sc{gnu} extension of
-allowing the user to provide her own directory handling and
address@hidden functions complicates things a bit.  If these callback
-functions are used and a large file or directory is encountered,
address@hidden @emph{can} fail.
address@hidden deftypefun
-
address@hidden glob.h
address@hidden GNU
address@hidden int glob64 (const char address@hidden, int @var{flags}, int 
(address@hidden) (const char address@hidden, int @var{error-code}), glob64_t 
address@hidden)
-The @code{glob64} function was added as part of the Large File Summit
-extensions but is not part of the original @sc{lfs} proposal.  The
-reason for this is simple---it is not necessary.  The necessity for a
address@hidden function is added by the extensions of the @sc{gnu}
address@hidden implementation, which allows the user to provide his own
-directory handling and @code{stat} functions.  The @code{readdir} and
address@hidden functions do depend on the choice of
address@hidden, since the definition of the types
address@hidden dirent} and @code{struct stat} will change depending on
-the choice.
-
-Besides this difference, the @code{glob64} works just like @code{glob}
-in all aspects.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden Flags for Globbing
address@hidden Flags for Globbing
-
-This section describes the flags that you can specify in the
address@hidden argument to @code{glob}.  Choose the flags you want, and
-combine them with the C bit-wise OR operator @samp{|}.
-
address@hidden @code
address@hidden glob.h
address@hidden POSIX.2
address@hidden GLOB_APPEND
-Append the words from this expansion to the vector of words produced by
-previous calls to @code{glob}.  This way you can effectively expand
-several words as if they were concatenated with spaces between them.
-
-In order for appending to work, you must not modify the contents of the
-word vector structure between calls to @code{glob}.  And, if you set
address@hidden in the first call to @code{glob}, you must also
-set it when you append to the results.
-
-Note that the pointer stored in @code{gl_pathv} may no longer be valid
-after you call @code{glob} the second time, because @code{glob} might
-have relocated the vector.  So always fetch @code{gl_pathv} from the
address@hidden structure after each @code{glob} call; @strong{never} save
-the pointer across calls.
-
address@hidden glob.h
address@hidden POSIX.2
address@hidden GLOB_DOOFFS
-Leave blank slots at the beginning of the vector of words.
-The @code{gl_offs} field says how many slots to leave.
-The blank slots contain null pointers.
-
address@hidden glob.h
address@hidden POSIX.2
address@hidden GLOB_ERR
-Give up right away and report an error if there is any difficulty
-reading the directories that must be read in order to expand @var{pattern}
-fully.  Such difficulties might include a directory in which you don't
-have the requisite access.  Normally, @code{glob} tries its best to keep
-on going despite any errors, reading whatever directories it can.
-
-You can exercise even more control than this by specifying an
-error-handler function @var{errfunc} when you call @code{glob}.  If
address@hidden is not a null pointer, then @code{glob} doesn't give up
-right away when it can't read a directory; instead, it calls
address@hidden with two arguments, like this:
-
address@hidden
-(address@hidden) (@var{filename}, @var{error-code})
address@hidden smallexample
-
address@hidden
-The argument @var{filename} is the name of the directory that
address@hidden couldn't open or couldn't read, and @var{error-code} is the
address@hidden value that was reported to @code{glob}.
-
-If the error-handler function returns nonzero, then @code{glob} gives up
-right away.  Otherwise, it continues.
-
address@hidden glob.h
address@hidden POSIX.2
address@hidden GLOB_MARK
-If the pattern matches the name of a directory, append @samp{/} to the
-directory's name when returning it.
-
address@hidden glob.h
address@hidden POSIX.2
address@hidden GLOB_NOCHECK
-If the pattern doesn't match any file names, return the pattern itself
-as if it were a file name that had been matched.  (Normally, when the
-pattern doesn't match anything, @code{glob} returns that there were no
-matches.)
-
address@hidden glob.h
address@hidden POSIX.2
address@hidden GLOB_NOSORT
-Don't sort the file names; return them in no particular order.
-(In practice, the order will depend on the order of the entries in
-the directory.)  The only reason @emph{not} to sort is to save time.
-
address@hidden glob.h
address@hidden POSIX.2
address@hidden GLOB_NOESCAPE
-Don't treat the @samp{\} character specially in patterns.  Normally,
address@hidden quotes the following character, turning off its special meaning
-(if any) so that it matches only itself.  When quoting is enabled, the
-pattern @samp{\?} matches only the string @samp{?}, because the question
-mark in the pattern acts like an ordinary character.
-
-If you use @code{GLOB_NOESCAPE}, then @samp{\} is an ordinary character.
-
address@hidden does its work by calling the function @code{fnmatch}
-repeatedly.  It handles the flag @code{GLOB_NOESCAPE} by turning on the
address@hidden flag in calls to @code{fnmatch}.
address@hidden vtable
-
address@hidden More Flags for Globbing
address@hidden More Flags for Globbing
-
-Besides the flags described in the last section, the @sc{gnu}
-implementation of @code{glob} allows a few more flags, which are also
-defined in the @file{glob.h} file.  Some of the extensions implement
-functionality that is available in modern shell implementations.
-
address@hidden @code
address@hidden glob.h
address@hidden GNU
address@hidden GLOB_PERIOD
-The @code{.} character (period) is treated special.  It cannot be
-matched by wildcards (@pxref{Wildcard Matching}, @code{FNM_PERIOD}).
-
address@hidden glob.h
address@hidden GNU
address@hidden GLOB_MAGCHAR
-The @code{GLOB_MAGCHAR} value is not to be given to @code{glob} in the
address@hidden parameter.  Instead, @code{glob} sets this bit in the
address@hidden element of the @var{glob_t} structure provided as the
-result if the pattern used for matching contains any wildcard character.
-
address@hidden glob.h
address@hidden GNU
address@hidden GLOB_ALTDIRFUNC
-Instead of using the normal functions for accessing the file system,
-the @code{glob} implementation uses the user-supplied functions
-specified in the structure pointed to by the @var{pglob}
address@hidden more information about the functions, see
-Loosemore et al., ``Accessing Directories'' and ``Reading the Attributes of a 
File''
-(see chap. 1, n. 1).}
-
address@hidden glob.h
address@hidden GNU
address@hidden GLOB_BRACE
-If this flag is given, the handling of braces in the pattern is
-changed.  It is now required that braces appear correctly
-grouped---for each opening brace there must be a closing one.  Braces
-can be used recursively.  So it is possible to define one brace
-expression in another one.  It is important to note that the range of
-each brace expression is completely contained in the outer brace
-expression (if there is one).
-
-The string between the matching braces is separated into single
-expressions by splitting at @samp{,} (comma) characters.  The commas
-themselves are discarded.  Please note what we said above about
-recursive brace expressions.  The commas used to separate the
-subexpressions must be at the same level.  Commas in brace
-subexpressions are not matched.  They are used during expansion of the
-brace expression of the deeper level.  The example below shows this:
-
address@hidden
-glob ("@{foo/@{,bar,address@hidden,address@hidden", GLOB_BRACE, NULL, &result)
address@hidden smallexample
-
address@hidden
-is equivalent to the sequence:
-
address@hidden
-glob ("foo/", GLOB_BRACE, NULL, &result)
-glob ("foo/bar", GLOB_BRACE|GLOB_APPEND, NULL, &result)
-glob ("foo/biz", GLOB_BRACE|GLOB_APPEND, NULL, &result)
-glob ("baz", GLOB_BRACE|GLOB_APPEND, NULL, &result)
address@hidden smallexample
-
address@hidden
-if we leave aside error handling.
-
address@hidden glob.h
address@hidden GNU
address@hidden GLOB_NOMAGIC
-If the pattern contains no wildcard constructs (it is a literal file name),
-return it as the sole ``matching'' word, even if no file exists by that name.
-
address@hidden glob.h
address@hidden GNU
address@hidden GLOB_TILDE
-If this flag is used, the character @samp{~} (tilde) is handled
-specially if it appears at the beginning of the pattern.  Instead of
-being taken verbatim, it is used to represent the home directory of a
-known user.
-
-If @samp{~} is the only character in the pattern or it is followed by
-a @samp{/} (slash), the home directory of the process owner is
-substituted.  Using @code{getlogin} and @code{getpwnam}, the
-information is read from the system databases.  As an example, take
-user @code{bart} with his home directory at @file{/home/bart}.  For
-him a call like:
-
address@hidden
-glob ("~/bin/*", GLOB_TILDE, NULL, &result)
address@hidden smallexample
-
address@hidden
-would return the contents of the directory @file{/home/bart/bin}.
-Instead of referring to your own home directory, it is also possible
-to name the home directory of other users.  To do so one has to append
-the user name after the tilde character.  So the contents of user
address@hidden's @file{bin} directory can be retrieved by:
-
address@hidden
-glob ("~homer/bin/*", GLOB_TILDE, NULL, &result)
address@hidden smallexample
-
-If the user name is not valid or the home directory cannot be
-determined for some reason, the pattern is left untouched and is
-itself used as the result. For example, if in the last example
address@hidden is not available, the tilde expansion yields to
address@hidden"~homer/bin/*"} and @code{glob} is not looking for a directory
-named @code{~homer}.
-
-This functionality is equivalent to what is available in C shells if
-the @code{nonomatch} flag is set.
-
address@hidden glob.h
address@hidden GNU
address@hidden GLOB_TILDE_CHECK
-If this flag is used, @code{glob} behaves as if @code{GLOB_TILDE} is
-given.  The only difference is that if the user name is not available
-or the home directory cannot be determined for other reasons, this
-leads to an error.  @code{glob} will return @code{GLOB_NOMATCH}
-instead of using the pattern itself as the name.
-
-This functionality is equivalent to what is available in C shells if
address@hidden flag is not set.
-
address@hidden glob.h
address@hidden GNU
address@hidden GLOB_ONLYDIR
-If this flag is used, the globbing function takes this as a
address@hidden that the caller is only interested in directories matching
-the pattern.  If the information about the type of the file is easily
-available, nondirectories will be rejected, but no extra work will be
-done to determine the information for each file---the caller must
-still be able to filter directories out.
-
-This functionality is only available with the @sc{gnu} @code{glob}
-implementation.  It is mainly used internally to increase performance
-but might be useful for a user as well.
address@hidden vtable
-
-Calling @code{glob} will in most cases allocate resources, which are
-used to represent the result of the function call.  If the same object
-of type @code{glob_t} is used in multiple calls to @code{glob}, the
-resources are freed or reused so that no leaks appear.  But this does
-not include the time when all @code{glob} calls are done.
-
address@hidden glob.h
address@hidden POSIX.2
address@hidden void globfree (glob_t address@hidden)
-The @code{globfree} function frees all resources allocated by previous
-calls to @code{glob} associated with the object pointed to by
address@hidden  This function should be called whenever the currently used
address@hidden typed object isn't used anymore.
address@hidden deftypefun
-
address@hidden glob.h
address@hidden GNU
address@hidden void globfree64 (glob64_t address@hidden)
-This function is equivalent to @code{globfree}, but it frees records
-of type @code{glob64_t} that were allocated by @code{glob64}.
address@hidden deftypefun
-
-
address@hidden Regular Expressions
address@hidden Regular Expression Matching
-
-The @sc{gnu} C Library supports two interfaces for matching regular
-expressions.  One is the standard @sc{posix}.2 interface, and the other is
-what the @sc{gnu} system has had for many years.
-
-Both interfaces are declared in the header file @file{regex.h}.  If
-you define @address@hidden, then only the @sc{posix}.2
-functions, structures and constants are declared.
address@hidden !!! we only document the POSIX.2 interface here!!
-
address@hidden POSIX Regexp Compilation
address@hidden @sc{posix} Regular Expression Compilation
-
-Before you can actually match a regular expression, you must
address@hidden it.  This is not true compilation---it produces a
-special data structure, not machine instructions.  But it is like
-ordinary compilation in that its purpose is to enable you to ``execute''
-the pattern quickly (@pxref{Matching POSIX Regexps}, for how to use
-the compiled regular expression for matching).
-
-There is a special data type for compiled regular expressions:
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden {Data Type} regex_t
-This type of object holds a compiled regular expression.
-It is actually a structure.  It has just one field that your programs
-should look at:
-
address@hidden @code
address@hidden re_nsub
-This field holds the number of parenthetical subexpressions in the
-regular expression that was compiled.
address@hidden table
-
-There are several other fields, but we don't describe them here, because
-only the functions in the library should use them.
address@hidden deftp
-
-After you create a @code{regex_t} object, you can compile a regular
-expression into it by calling @code{regcomp}.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden int regcomp (regex_t address@hidden, const char address@hidden, 
int @var{cflags})
-The function @code{regcomp} ``compiles'' a regular expression into a
-data structure that you can use with @code{regexec} to match against a
-string.  The compiled regular expression format is designed for
-efficient matching.  @code{regcomp} stores it into @address@hidden
-
-It's up to you to allocate an object of type @code{regex_t} and pass its
-address to @code{regcomp}.
-
-The argument @var{cflags} lets you specify various options that
-control the syntax and semantics of regular expressions (@pxref{Flags
-for POSIX Regexps}).
-
-If you use the flag @code{REG_NOSUB}, then @code{regcomp} omits from
-the compiled regular expression the information necessary to record
-how subexpressions actually match.  In this case, you might as well
-pass @code{0} for the @var{matchptr} and @var{nmatch} arguments when
-you call @code{regexec}.
-
-If you don't use @code{REG_NOSUB}, then the compiled regular
-expression does have the capacity to record how subexpressions match.
-Also, @code{regcomp} tells you how many subexpressions @var{pattern}
-has, by storing the number in @address@hidden>re_nsub}.  You can
-use that value to decide how long of an array to allocate to hold
-information about subexpression matches.
-
address@hidden returns @code{0} if it succeeds in compiling the
-regular expression; otherwise, it returns a nonzero error code (see
-the table below).  You can use @code{regerror} to produce an error
-message string describing the reason for a nonzero value
-(@pxref{Regexp Clean-Up}).
-
address@hidden deftypefun
-
-Here are the possible nonzero values that @code{regcomp} can return:
-
address@hidden @code
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_BADBR
-There was an invalid @address@hidden@address@hidden construct in the regular
-expression.  A valid @address@hidden@address@hidden construct must contain 
either
-a single number, or two numbers in increasing order separated by a
-comma.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_BADPAT
-There was a syntax error in the regular expression.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_BADRPT
-A repetition operator such as @samp{?} or @samp{*} appeared in a bad
-position (with no preceding subexpression to act on).
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_ECOLLATE
-The regular expression referred to an invalid collating element (one
-not defined in the current locale for string collation) (@pxref{Locale
-Categories}).
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_ECTYPE
-The regular expression referred to an invalid character class name.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_EESCAPE
-The regular expression ended with @samp{\}.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_ESUBREG
-There was an invalid number in the @address@hidden construct.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_EBRACK
-There were unbalanced square brackets in the regular expression.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_EPAREN
-An extended regular expression had unbalanced parentheses,
-or a basic regular expression had unbalanced @samp{\(} and @samp{\)}.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_EBRACE
-The regular expression had unbalanced @address@hidden and @address@hidden
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_ERANGE
-One of the endpoints in a range expression was invalid.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_ESPACE
address@hidden ran out of memory.
address@hidden table
-
address@hidden Flags for POSIX Regexps
address@hidden Flags for @sc{posix} Regular Expressions
-
-These are the bit flags that you can use in the @var{cflags} operand when
-compiling a regular expression with @code{regcomp}.
-
address@hidden @code
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_EXTENDED
-Treat the pattern as an extended regular expression, rather than as a
-basic regular expression.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_ICASE
-Ignore case when matching letters.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_NOSUB
-Don't bother storing the contents of the @var{matches-ptr} array.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_NEWLINE
-Treat a newline in @var{string} as dividing @var{string} into multiple
-lines, so that @samp{$} can match before the newline and @samp{^} can
-match after.  Also, don't permit @samp{.} to match a newline, and don't
-permit @address@hidden to match a newline.
-
-Otherwise, newline acts like any other ordinary character.
address@hidden table
-
address@hidden Matching POSIX Regexps
address@hidden Matching a Compiled @sc{posix} Regular Expression
-
-Once you have compiled a regular expression, as described in @ref{POSIX
-Regexp Compilation}, you can match it against strings using
address@hidden  A match anywhere inside the string counts as success,
-unless the regular expression contains anchor characters (@samp{^} or
address@hidden).
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden int regexec (regex_t address@hidden, char address@hidden, size_t 
@var{nmatch}, regmatch_t @var{matchptr} @t{[]}, int @var{eflags})
-This function tries to match the compiled regular expression
address@hidden@var{compiled}} against @var{string}.
-
address@hidden returns @code{0} if the regular expression matches;
-otherwise, it returns a nonzero value.  See the table below for what
-nonzero values mean.  You can use @code{regerror} to produce an error
-message string describing the reason for a nonzero value
-(@pxref{Regexp Clean-Up}).
-
-The argument @var{eflags} is a word of bit flags that enable various
-options.
-
-If you want to get information about what part of @var{string}
-actually matched the regular expression or its subexpressions, use the
-arguments @var{matchptr} and @var{nmatch}.  Otherwise, pass @code{0}
-for @var{nmatch}, and @code{NULL} for @var{matchptr} (@pxref{Regexp
-Subexpressions}).
address@hidden deftypefun
-
-You must match the regular expression with the same set of current
-locales that were in effect when you compiled the regular expression.
-
-The function @code{regexec} accepts the following flags in the
address@hidden argument:
-
address@hidden @code
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_NOTBOL
-Do not regard the beginning of the specified string as the beginning of
-a line; more generally, don't make any assumptions about what text might
-precede it.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_NOTEOL
-Do not regard the end of the specified string as the end of a line; more
-generally, don't make any assumptions about what text might follow it.
address@hidden table
-
-Here are the possible nonzero values that @code{regexec} can return:
-
address@hidden @code
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_NOMATCH
-The pattern didn't match the string.  This isn't really an error.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden REG_ESPACE
address@hidden ran out of memory.
address@hidden table
-
address@hidden Regexp Subexpressions
address@hidden Match Results with Subexpressions
-
-When @code{regexec} matches parenthetical subexpressions of
address@hidden, it records which parts of @var{string} they match.  It
-returns that information by storing the offsets into an array whose
-elements are structures of type @code{regmatch_t}.  The first element of
-the array (index @code{0}) records the part of the string that matched
-the entire regular expression.  Each other element of the array records
-the beginning and end of the part that matched a single parenthetical
-subexpression.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden {Data Type} regmatch_t
-This is the data type of the @var{matcharray} array that you pass to
address@hidden  It contains two structure fields, as follows:
-
address@hidden @code
address@hidden rm_so
-The offset in @var{string} of the beginning of a substring.  Add this
-value to @var{string} to get the address of that part.
-
address@hidden rm_eo
-The offset in @var{string} of the end of the substring.
address@hidden table
address@hidden deftp
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden {Data Type} regoff_t
address@hidden is an alias for another signed integer type.
-The fields of @code{regmatch_t} have type @code{regoff_t}.
address@hidden deftp
-
-The @code{regmatch_t} elements correspond to subexpressions
-positionally; the first element (index @code{1}) records where the first
-subexpression matched, the second element records the second
-subexpression, and so on.  The order of the subexpressions is the order
-in which they begin.
-
-When you call @code{regexec}, you specify how long the @var{matchptr}
-array is, with the @var{nmatch} argument.  This tells @code{regexec} how
-many elements to store.  If the actual regular expression has more than
address@hidden subexpressions, then you won't get offset information about
-the rest of them.  But this doesn't alter whether the pattern matches a
-particular string or not.
-
-If you don't want @code{regexec} to return any information about where
-the subexpressions matched, you can either supply @code{0} for
address@hidden, or use the flag @code{REG_NOSUB} when you compile the
-pattern with @code{regcomp}.
-
address@hidden Subexpression Complications
address@hidden Complications in Subexpression Matching
-
-Sometimes, a subexpression matches a substring of no characters.  This
-happens when @samp{f\(o*\)} matches the string @samp{fum} (it really
-matches just the @samp{f}).  In this case, both of the offsets
-identify the point in the string where the null substring was found.
-In this example, the offsets are both @code{1}.
-
-Sometimes, the entire regular expression can match without using some
-of its subexpressions at all---for example, when @samp{ba\(na\)*}
-matches the string @samp{ba}, the parenthetical subexpression is not
-used.  When this happens, @code{regexec} stores @code{-1} in both
-fields of the element for that subexpression.
-
-Sometimes matching the entire regular expression can match a particular
-subexpression more than once---for example, when @samp{ba\(na\)*}
-matches the string @samp{bananana}, the parenthetical subexpression
-matches three times.  When this happens, @code{regexec} usually stores
-the offsets of the last part of the string that matched the
-subexpression.  In the case of @samp{bananana}, these offsets are
address@hidden and @code{8}.
-
-But the last match is not always the one that is chosen.  It's more
-accurate to say that the last @emph{opportunity} to match is the one
-that takes precedence.  What this means is that when one subexpression
-appears within another, then the results reported for the inner
-subexpression reflect whatever happened on the last match of the outer
-subexpression.  For an example, consider @samp{\(ba\(na\)*s \)*} matching
-the string @samp{bananas bas }.  The last time the inner expression
-actually matches is near the end of the first word.  But it is
address@hidden again in the second word, and fails to match there.
address@hidden reports nonuse of the @samp{na} subexpression.
-
-Another place where this rule applies is when the regular expression:
address@hidden
-\(ba\(na\)*s \|nefer\(ti\)* \)*
address@hidden smallexample
address@hidden
-matches @samp{bananas nefertiti}.  The @samp{na} subexpression does
-match in the first word, but it doesn't match in the second word
-because the other alternative is used there.  Once again, the second
-repetition of the outer subexpression overrides the first, and within
-that second repetition, the @samp{na} subexpression is not used.  So
address@hidden reports nonuse of the @samp{na} subexpression.
-
address@hidden Regexp Clean-Up
address@hidden @sc{posix} Regexp Matching Clean-Up
-
-When you are finished using a compiled regular expression, you can
-free the storage it uses by calling @code{regfree}.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden void regfree (regex_t address@hidden)
-Calling @code{regfree} frees all the storage that @address@hidden
-points to.  This includes various internal fields of the @code{regex_t}
-structure that aren't documented in this manual.
-
address@hidden does not free the object @address@hidden itself.
address@hidden deftypefun
-
-You should always free the space in a @code{regex_t} structure with
address@hidden before using the structure to compile another regular
-expression.
-
-When @code{regcomp} or @code{regexec} reports an error, you can use
-the function @code{regerror} to turn it into an error message string.
-
address@hidden regex.h
address@hidden POSIX.2
address@hidden size_t regerror (int @var{errcode}, regex_t address@hidden, char 
address@hidden, size_t @var{length})
-This function produces an error message string for the error code
address@hidden, and stores the string in @var{length} bytes of memory
-starting at @var{buffer}.  For the @var{compiled} argument, supply the
-same compiled regular expression structure that @code{regcomp} or
address@hidden was working with when it got the error.  Alternatively,
-you can supply @code{NULL} for @var{compiled}; you will still get a
-meaningful error message, but it might not be as detailed.
-
-If the error message can't fit in @var{length} bytes (including a
-terminating null character), then @code{regerror} truncates it.
-The string that @code{regerror} stores is always null-terminated
-even if it has been truncated.
-
-The return value of @code{regerror} is the minimum length needed to
-store the entire error message.  If this is less than @var{length}, then
-the error message was not truncated, and you can use it.  Otherwise, you
-should call @code{regerror} again with a larger buffer.
-
-Here is a function that uses @code{regerror}, but always dynamically
-allocates a buffer for the error message:
-
address@hidden
-char *get_regerror (int errcode, regex_t *compiled)
address@hidden
-  size_t length = regerror (errcode, compiled, NULL, 0);
-  char *buffer = xmalloc (length);
-  (void) regerror (errcode, compiled, buffer, length);
-  return buffer;
address@hidden
address@hidden smallexample
address@hidden deftypefun
-
address@hidden Word Expansion
address@hidden Shell-Style Word Expansion
address@hidden word expansion
address@hidden expansion of shell words
-
address@hidden expansion} means the process of splitting a string into
address@hidden and substituting for variables, commands, and wildcards
-just as the shell does.
-
-For example, when you write @samp{ls -l foo.c}, this string is split
-into three separate address@hidden, @samp{-l} and @samp{foo.c}.
-This is the most basic function of word expansion.
-
-When you write @samp{ls *.c}, this can become many words, because
-the word @samp{*.c} can be replaced with any number of file names.
-This is called @dfn{wildcard expansion}, and it is also a part of
-word expansion.
-
-When you use @samp{echo $PATH} to print your path, you are taking
-advantage of @dfn{variable substitution}, which is also part of word
-expansion.
-
-Ordinary programs can perform word expansion just like the shell by
-calling the library function @code{wordexp}.
-
address@hidden Expansion Stages
address@hidden The Stages of Word Expansion
-
-When word expansion is applied to a sequence of words, it performs the
-following transformations in the order shown here:
-
address@hidden
address@hidden
address@hidden tilde expansion
address@hidden expansion} @samp{~foo} us replaced with the name of the
-home directory of @samp{foo}.
-
address@hidden
-Next, three different transformations are applied in the same step,
-from left to right:
-
address@hidden @bullet
address@hidden
address@hidden variable substitution
address@hidden substitution of variables and commands
address@hidden substitution} Environment variables are substituted for
-references such as @samp{$foo}.
-
address@hidden
address@hidden command substitution
address@hidden substitution} Constructs such as @address@hidden foo`}} and
-the equivalent @address@hidden(cat foo)}} are replaced with the output from
-the inner command.
-
address@hidden
address@hidden arithmetic expansion
address@hidden expansion} Constructs such as @samp{$(($x-1))} are
-replaced with the result of the arithmetic computation.
address@hidden itemize
-
address@hidden
address@hidden field splitting
address@hidden splitting} The text is subdivided into @dfn{words}.
-
address@hidden
address@hidden wildcard expansion
address@hidden expansion} A construct such as @samp{*.c} is replaced
-with a list of @samp{.c} file names.  Wildcard expansion applies to an
-entire word at a time, and replaces that word with 0 or more file
-names that are themselves words.
-
address@hidden
address@hidden quote removal
address@hidden removal of quotes
address@hidden removal} String-quotes are deleted, now that they have done
-their job by inhibiting the above transformations when appropriate.
address@hidden enumerate
-
-For the details of these transformations, and how to write the
-constructs that use them, see @emph{The GNU Bash Reference
address@hidden Ramey and Brian Fox, @emph{The GNU Bash
-Reference Manual} (Bristol, UK: Network Theory Ltd., January 2003),
address@hidden http:// www.gnu.org/ software/ bash/ manual/ bashref.html}.}
-
address@hidden Calling Wordexp
address@hidden Calling @code{wordexp}
-
-All the functions, constants and data types for word expansion are
-declared in the header file @file{wordexp.h}.
-
-Word expansion produces a vector of words (strings).  To return this
-vector, @code{wordexp} uses a special data type, @code{wordexp_t}, which
-is a structure.  You pass @code{wordexp} the address of the structure,
-and it fills in the structure's fields to tell you about the results.
-
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden {Data Type} {wordexp_t}
-This data type holds a pointer to a word vector.  More precisely, it
-records both the address of the word vector and its size.
-
address@hidden @code
address@hidden we_wordc
-This is the number of elements in the vector.
-
address@hidden we_wordv
-This is the address of the vector.  This field has type @address@hidden **}}.
-
address@hidden we_offs
-This is the offset of the first real element of the vector, from its
-nominal address in the @code{we_wordv} field.  Unlike the other
-fields, this is always an input to @code{wordexp}, rather than an
-output from it.
-
-If you use a nonzero offset, then that many elements at the beginning of
-the vector are left empty (the @code{wordexp} function fills them with
-null pointers).
-
-The @code{we_offs} field is meaningful only if you use the
address@hidden flag.  Otherwise, the offset is always zero
-regardless of what is in this field, and the first real element comes at
-the beginning of the vector.
address@hidden table
address@hidden deftp
-
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden int wordexp (const char address@hidden, wordexp_t 
address@hidden, int @var{flags})
-Perform word expansion on the string @var{words}, putting the result
-in a newly allocated vector, and store the size and address of this
-vector into @address@hidden  The argument @var{flags}
-is a combination of bit flags (@pxref{Flags for Wordexp}).
-
-You shouldn't use any of the characters @samp{|&;<>} in the string
address@hidden unless they are quoted; likewise for newline.  If you use
-these characters unquoted, you will get the @code{WRDE_BADCHAR} error
-code.  Don't use parentheses or braces unless they are quoted or part of
-a word expansion construct.  If you use quotation characters @samp{'"`},
-they should come in pairs that balance.
-
-The results of word expansion are a sequence of words.  The function
address@hidden allocates a string for each resulting word, then
-allocates a vector of type @code{char **} to store the addresses of
-these strings.  The last element of the vector is a null pointer.
-This vector is called the @dfn{word vector}.
-
-To return this vector, @code{wordexp} stores both its address and its
-length (number of elements, not counting the terminating null pointer)
-into @address@hidden
-
-If @code{wordexp} succeeds, it returns 0.  Otherwise, it returns one
-of these error codes:
-
address@hidden @code
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden WRDE_BADCHAR
-The input string @var{words} contains an unquoted invalid character such
-as @samp{|}.
-
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden WRDE_BADVAL
-The input string refers to an undefined shell variable, and you used the flag
address@hidden to forbid such references.
-
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden WRDE_CMDSUB
-The input string uses command substitution, and you used the flag
address@hidden to forbid command substitution.
-
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden WRDE_NOSPACE
-It was impossible to allocate memory to hold the result.  In this case,
address@hidden can store part of the results---as much as it could
-allocate room for.
-
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden WRDE_SYNTAX
-There was a syntax error in the input string.  For example, an unmatched
-quoting character is a syntax error.
address@hidden table
address@hidden deftypefun
-
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden void wordfree (wordexp_t address@hidden)
-Free the storage used for the word-strings and vector that
address@hidden@var{word-vector-ptr}} points to.  This does not free the
-structure @address@hidden itself---only the other
-data it points to.
address@hidden deftypefun
-
address@hidden Flags for Wordexp
address@hidden Flags for Word Expansion
-
-This section describes the flags that you can specify in the
address@hidden argument to @code{wordexp}.  Choose the flags you want,
-and combine them with the C operator @samp{|}.
-
address@hidden @code
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden WRDE_APPEND
-Append the words from this expansion to the vector of words produced by
-previous calls to @code{wordexp}.  This way you can effectively expand
-several words as if they were concatenated with spaces between them.
-
-In order for appending to work, you must not modify the contents of the
-word vector structure between calls to @code{wordexp}.  And, if you set
address@hidden in the first call to @code{wordexp}, you must also
-set it when you append to the results.
-
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden WRDE_DOOFFS
-Leave blank slots at the beginning of the vector of words.
-The @code{we_offs} field says how many slots to leave.
-The blank slots contain null pointers.
-
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden WRDE_NOCMD
-Don't do command substitution; if the input requests command substitution,
-report an error.
-
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden WRDE_REUSE
-Reuse a word vector made by a previous call to @code{wordexp}.
-Instead of allocating a new vector of words, this call to @code{wordexp}
-will use the vector that already exists (making it larger if necessary).
-
-The vector may move, so it is not safe to save an old pointer and use
-it again after calling @code{wordexp}.  You must fetch @code{we_pathv}
-anew after each call.
-
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden WRDE_SHOWERR
-Do show any error messages printed by commands run by command substitution.
-More precisely, allow these commands to inherit the standard error output
-stream of the current process.  By default, @code{wordexp} gives these
-commands a standard error stream that discards all output.
-
address@hidden wordexp.h
address@hidden POSIX.2
address@hidden WRDE_UNDEF
-If the input refers to a shell variable that is not defined, report an
-error.
address@hidden table
-
address@hidden Wordexp Example
address@hidden @code{wordexp} Example
-
-Here is an example of using @code{wordexp} to expand several strings
-and use the results to run a shell command.  It also shows the use of
address@hidden to concatenate the expansions and of @code{wordfree}
-to free the space allocated by @code{wordexp}.
-
address@hidden
-int
-expand_and_execute (const char *program, const char **options)
address@hidden
-  wordexp_t result;
-  pid_t pid
-  int status, i;
-
-  /* @r{Expand the string for the program to run.}  */
-  switch (wordexp (program, &result, 0))
-    @{
-    case 0:                    /* @r{Successful}.  */
-      break;
-    case WRDE_NOSPACE:
-      /* @r{If the error was @code{WRDE_NOSPACE},}
-         @r{then perhaps part of the result was allocated.}  */
-      wordfree (&result);
-    default:                    /* @r{Some other error.}  */
-      return -1;
-    @}
-
-  /* @r{Expand the strings specified for the arguments.}  */
-  for (i = 0; options[i] != NULL; i++)
-    @{
-      if (wordexp (options[i], &result, WRDE_APPEND))
-        @{
-          wordfree (&result);
-          return -1;
-        @}
-    @}
-
-  pid = fork ();
-  if (pid == 0)
-    @{
-      /* @r{This is the child process.  Execute the command.} */
-      execv (result.we_wordv[0], result.we_wordv);
-      exit (EXIT_FAILURE);
-    @}
-  else if (pid < 0)
-    /* @r{The fork failed.  Report failure.}  */
-    status = -1;
-  else
-    /* @r{This is the parent process.  Wait for the child to complete.}  */
-    if (waitpid (pid, &status, 0) != pid)
-      status = -1;
-
-  wordfree (&result);
-  return status;
address@hidden
address@hidden smallexample
-
address@hidden Tilde Expansion
address@hidden Details of Tilde Expansion
-
-It's a standard part of shell syntax that you can use @samp{~} at the
-beginning of a file name to stand for your own home directory.  You
-can use @address@hidden to stand for @var{user}'s home directory.
-
address@hidden expansion} is the process of converting these abbreviations
-to the directory names that they stand for.
-
-Tilde expansion applies to the @samp{~} plus all following characters up
-to white space or a slash.  It takes place only at the beginning of a
-word, and only if none of the characters to be transformed is quoted in
-any way.
-
-Plain @samp{~} uses the value of the environment variable @code{HOME}
-as the proper home directory name.  @samp{~} followed by a user name
-uses @code{getpwname} to look up that user in the user database, and
-uses whatever directory is recorded there.  Thus, @samp{~} followed
-by your own name can give different results from plain @samp{~}, if
-the value of @code{HOME} is not really your home directory.
-
address@hidden Variable Substitution
address@hidden Details of Variable Substitution
-
-Part of ordinary shell syntax is the use of @address@hidden to
-substitute the value of a shell variable into a command.  This is called
address@hidden substitution}, and it is one part of doing word expansion.
-
-There are two basic ways you can write a variable reference for
-substitution:
-
address@hidden @code
address@hidden address@hidden@address@hidden
-If you write braces around the variable name, then it is completely
-unambiguous where the variable name ends.  You can concatenate
-additional letters onto the end of the variable value by writing them
-immediately after the close brace.  For example, @address@hidden@}s}
-expands into @samp{tractors}.
-
address@hidden address@hidden
-If you do not put braces around the variable name, then the variable
-name consists of all the alphanumeric characters and underscores that
-follow the @samp{$}.  The next punctuation character ends the variable
-name.  Thus, @samp{$foo-bar} refers to the variable @code{foo} and expands
-into @samp{tractor-bar}.
address@hidden table
-
-When you use braces, you can also use various constructs to modify the
-value that is substituted, or test it in various ways:
-
address@hidden @code
address@hidden address@hidden@var{variable}:address@hidden@}
-Substitute the value of @var{variable}, but if that is empty or
-undefined, use @var{default} instead.
-
address@hidden address@hidden@var{variable}:address@hidden@}
-Substitute the value of @var{variable}, but if that is empty or
-undefined, use @var{default} instead and set the variable to
address@hidden
-
address@hidden address@hidden@var{variable}:address@hidden@}
-If @var{variable} is defined and not empty, substitute its value.
-
-Otherwise, print @var{message} as an error message on the standard error
-stream, and consider word expansion a failure.
-
address@hidden ??? How does wordexp report such an error?
address@hidden WRDE_BADVAL is returned.
-
address@hidden address@hidden@var{variable}:address@hidden@}
-Substitute @var{replacement}, but only if @var{variable} is defined and
-nonempty.  Otherwise, substitute nothing for this construct.
address@hidden table
-
address@hidden @code
address@hidden address@hidden@address@hidden
-Substitute a numeral that expresses in base-10 the number of
-characters in the value of @var{variable}.  @address@hidden@}} stands
-for @samp{7}, because @samp{tractor} is seven characters.
address@hidden table
-
-These variants of variable substitution let you remove part of the
-variable's value before substituting it.  The @var{prefix} and
address@hidden are not mere strings; they are wildcard patterns, just
-like the patterns that you use to match multiple file names.  But
-in this context, they match against parts of the variable value
-rather than against file names.
-
address@hidden @code
address@hidden address@hidden@address@hidden@}
-Substitute the value of @var{variable}, but first discard from that
-variable any portion at the end that matches the pattern @var{suffix}.
-
-If there is more than one alternative for how to match against
address@hidden, this construct uses the longest possible match.
-
-Thus, @address@hidden@}} substitutes @samp{t}, because the largest
-match for @samp{r*} at the end of @samp{tractor} is @samp{ractor}.
-
address@hidden address@hidden@address@hidden@}
-Substitute the value of @var{variable}, but first discard from that
-variable any portion at the end that matches the pattern @var{suffix}.
-
-If there is more than one alternative for how to match against
address@hidden, this construct uses the shortest possible alternative.
-
-Thus, @address@hidden@}} substitutes @samp{tracto}, because the shortest
-match for @samp{r*} at the end of @samp{tractor} is just @samp{r}.
-
address@hidden address@hidden@address@hidden@}
-Substitute the value of @var{variable}, but first discard from that
-variable any portion at the beginning that matches the pattern @var{prefix}.
-
-If there is more than one alternative for how to match against
address@hidden, this construct uses the longest possible match.
-
-Thus, @address@hidden@}} substitutes @samp{or}, because the largest
-match for @samp{*t} at the beginning of @samp{tractor} is @samp{tract}.
-
address@hidden address@hidden@address@hidden@}
-Substitute the value of @var{variable}, but first discard from that
-variable any portion at the beginning that matches the pattern @var{prefix}.
-
-If there is more than one alternative for how to match against
address@hidden, this construct uses the shortest possible alternative.
-
-Thus, @address@hidden@}} substitutes @samp{ractor}, because the shortest
-match for @samp{*t} at the beginning of @samp{tractor} is just @samp{t}.
-
address@hidden table
-
address@hidden Program Basics, Processes, Signal Handling, Top
address@hidden %MENU% Writing the beginning and end of your program
address@hidden The Basic Program/System Interface
-
address@hidden process
address@hidden program
address@hidden address space
address@hidden thread of control
address@hidden are the primitive units for allocation of system
-resources.  Each process has its own address space and (usually) one
-thread of control.  A process executes a program; you can have multiple
-processes executing the same program, but each process has its own copy
-of the program within its own address space and executes it
-independently of the other copies.  Though it may have multiple threads
-of control within the same program and a program may be composed of
-multiple logically separate modules, a process always executes exactly
-one program.
-
-We are using a specific definition of @dfn{program} for the purposes
-of this manual, which corresponds to a common definition in the
-context of Unix system.  In popular usage, @dfn{program} enjoys a much
-broader definition; it can refer for example to a system's kernel, an
-editor macro, a complex package of software, or a discrete section of
-code executing within a process.
-
-Writing the program is what this manual is all about.  This chapter
-explains the most basic interface between your program and the system
-that runs, or calls, it.  This includes passing of parameters (arguments
-and environment) from the system, requesting basic services from the
-system, and telling the system the program is done.
-
-A program starts another program with the @code{exec} family of system
-calls.  This chapter looks at program start-up from the execee's point
-of address@hidden Loosemore et al., ``Executing a File'' (see
-chap. 1, n. 1), to see the event from the execor's point of view.}
-
address@hidden Program Arguments
address@hidden Program Arguments
address@hidden program arguments
address@hidden command-line arguments
address@hidden arguments, to program
-
address@hidden program start-up
address@hidden start-up of program
address@hidden invocation of program
address@hidden @code{main} function
address@hidden main
-The system starts a C program by calling the function @code{main}.  It
-is up to you to write a function named @code{main}---otherwise, you
-won't even be able to link your program without errors.
-
-In @address@hidden C} you can define @code{main} either to take no
-arguments, or to take two arguments that represent the command-line
-arguments to the program, like this:
-
address@hidden
-int main (int @var{argc}, char address@hidden)
address@hidden smallexample
-
address@hidden argc (program argument count)
address@hidden argv (program argument vector)
-The command-line arguments are the white-space-separated tokens given
-in the shell command used to invoke the program; thus, in @samp{cat
-foo bar}, the arguments are @samp{foo} and @samp{bar}.  The only way a
-program can look at its command-line arguments is via the arguments of
address@hidden  If @code{main} doesn't take arguments, then you cannot
-get at the command line.
-
-The value of the @var{argc} argument is the number of command-line
-arguments.  The @var{argv} argument is a vector of C strings; its
-elements are the individual command-line argument strings.  The file
-name of the program being run is also included in the vector as the
-first element; the value of @var{argc} counts this element.  A null
-pointer always follows the last element: @address@hidden@var{argc}]}
-is this null pointer.
-
-For the command @samp{cat foo bar}, @var{argc} is 3 and @var{argv} has
-three elements, @samp{cat}, @samp{foo} and @samp{bar}.
-
-In Unix systems you can define @code{main} a third way, using three arguments:
-
address@hidden
-int main (int @var{argc}, char address@hidden, char address@hidden)
address@hidden smallexample
-
-The first two arguments are just the same.  The third argument
address@hidden gives the program's environment; it is the same as the
-value of @code{environ} (@pxref{Environment Variables}).  @sc{posix}.1
-does not allow this three-argument form, so to be portable it is best
-to write @code{main} to take two arguments, and use the value of
address@hidden
-
address@hidden Argument Syntax, Parsing Program Arguments, , Program Arguments
address@hidden Program Argument Syntax Conventions
address@hidden program argument syntax
address@hidden syntax, for program arguments
address@hidden command argument syntax
-
address@hidden recommends these conventions for command-line arguments.
address@hidden (@pxref{Getopt}) and @code{argp_parse} (@pxref{Argp}) make
-it easy to implement them.
-
address@hidden @bullet
address@hidden
-Arguments are options if they begin with a hyphen delimiter (@samp{-}).
-
address@hidden
-Multiple options may follow a hyphen delimiter in a single token if
-the options do not take arguments.  Thus, @samp{-abc} is equivalent to
address@hidden -b -c}.
-
address@hidden
-Option names are single alphanumeric characters (as for @code{isalnum};
address@hidden of Characters}).
-
address@hidden
-Certain options require an argument.  For example, the @samp{-o} command
-of the @code{ld} command requires an argument---an output file name.
-
address@hidden
-An option and its argument may or may not appear as separate tokens.  (In
-other words, the white space separating them is optional.)  Thus,
address@hidden@samp{-o foo}} and @samp{-ofoo} are equivalent.
-
address@hidden
-Options typically precede other non-option arguments.
-
-The implementations of @code{getopt} and @code{argp_parse} in the
address@hidden C Library normally make it appear as if all the option
-arguments were specified before all the non-option arguments for the
-purposes of parsing, even if the user of your program intermixed
-option and non-option arguments.  They do this by reordering the
-elements of the @var{argv} array.  This behavior is nonstandard; if
-you want to suppress it, define the @code{_POSIX_OPTION_ORDER}
-environment variable (@pxref{Standard Environment}).
-
address@hidden
-The argument @samp{--} terminates all options; any following arguments
-are treated as non-option arguments, even if they begin with a hyphen.
-
address@hidden
-A token consisting of a single hyphen character is interpreted as an
-ordinary non-option argument.  By convention, it is used to specify
-input from or output to the standard input and output streams.
-
address@hidden
-Options may be supplied in any order, or appear multiple times.  The
-interpretation is left up to the particular application program.
address@hidden itemize
-
address@hidden long-named options
address@hidden adds @dfn{long options} to these conventions.  Long options 
consist
-of @samp{--} followed by a name made of alphanumeric characters and
-dashes.  Option names are typically one to three words long, with
-hyphens to separate words.  Users can abbreviate the option names as
-long as the abbreviations are unique.
-
-To specify an argument for a long option, write
address@hidden@address@hidden  This syntax enables a long option to
-accept an argument that is itself optional.
-
-Eventually, the @sc{gnu} system will provide completion for long option names
-in the shell.
-
address@hidden Parsing Program Arguments, , Argument Syntax, Program Arguments
address@hidden Parsing Program Arguments
-
address@hidden program arguments, parsing
address@hidden command arguments, parsing
address@hidden parsing program arguments
-If the syntax for the command-line arguments to your program is simple
-enough, you can pick the arguments off from @var{argv} by hand.  But
-unless your program takes a fixed number of arguments, or all of the
-arguments are interpreted in the same way (as file names, for
-example), you are usually better off using @code{getopt}
-(@pxref{Getopt}) or @code{argp_parse} (@pxref{Argp}) to do the
-parsing.
-
address@hidden is more standard (the short-option-only version of it is
-a part of the @sc{posix} standard), but using @code{argp_parse} is
-often easier, both for very simple and very complex option structures,
-because it does more of the dirty work for you.
-
address@hidden Getopt and argp start at the @section level so that there's
address@hidden enough room for their internal hierarchy (mostly a problem with
address@hidden argp).         -Miles
-
address@hidden Getopt, Argp, , Parsing Program Arguments
address@hidden Parsing Program Options Using @code{getopt}
-
-The @code{getopt} and @code{getopt_long} functions automate some of the
-chore involved in parsing typical Unix command-line options.
-
address@hidden Using Getopt, Example of Getopt, , Getopt
address@hidden Using the @code{getopt} Function
-
-Here are the details about how to call the @code{getopt} function.  To
-use this facility, your program must include the header file
address@hidden
address@hidden unistd.h
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden int opterr
-If the value of this variable is nonzero, then @code{getopt} prints an
-error message to the standard error stream if it encounters an unknown
-option character or an option with a missing required argument.  This
-is the default behavior.  If you set this variable to zero,
address@hidden does not print any messages, but it still returns the
-character @samp{?}  to indicate an error.
address@hidden deftypevar
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden int optopt
-When @code{getopt} encounters an unknown option character or an option
-with a missing required argument, it stores that option character in
-this variable.  You can use this for providing your own diagnostic
-messages.
address@hidden deftypevar
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden int optind
-This variable is set by @code{getopt} to the index of the next element
-of the @var{argv} array to be processed.  Once @code{getopt} has found
-all of the option arguments, you can use this variable to determine
-where the remaining non-option arguments begin.  The initial value of
-this variable is @code{1}.
address@hidden deftypevar
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden {char *} optarg
-This variable is set by @code{getopt} to point at the value of the
-option argument, for those options that accept arguments.
address@hidden deftypevar
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden int getopt (int @var{argc}, char address@hidden, const char 
address@hidden)
-The @code{getopt} function gets the next option argument from the
-argument list specified by the @var{argv} and @var{argc} arguments.
-Normally these values come directly from the arguments received by
address@hidden
-
-The @var{options} argument is a string that specifies the option
-characters that are valid for this program.  An option character in this
-string can be followed by a colon (@samp{:}) to indicate that it takes a
-required argument.  If an option character is followed by two colons
-(@samp{::}), its argument is optional; this is a @sc{gnu} extension.
-
address@hidden has three ways to deal with options that follow
-non-options @var{argv} elements.  The special argument @samp{--} forces
-in all cases the end of option scanning.
-
address@hidden @bullet
address@hidden
-The default is to permute the contents of @var{argv} while scanning it
-so that eventually all the non-options are at the end.  This allows
-options to be given in any order, even with programs that were not
-written to expect this.
-
address@hidden
-If the @var{options} argument string begins with a hyphen (@samp{-}), this
-is treated specially.  It permits arguments that are not options to be
-returned as if they were associated with option character @samp{\1}.
-
address@hidden
address@hidden demands the following behavior: The first non-option stops option
-processing.  This mode is selected by either setting the environment
-variable @code{POSIXLY_CORRECT} or beginning the @var{options} argument
-string with a plus sign (@samp{+}).
address@hidden itemize
-
-The @code{getopt} function returns the option character for the next
-command-line option.  When no more option arguments are available, it
-returns @code{-1}.  There may still be more non-option arguments; you
-must compare the external variable @code{optind} against the @var{argc}
-parameter to check this.
-
-If the option has an argument, @code{getopt} returns the argument by
-storing it in the variable @var{optarg}.  You don't ordinarily need to
-copy the @code{optarg} string, since it is a pointer into the original
address@hidden array, not into a static area that might be overwritten.
-
-If @code{getopt} finds an option character in @var{argv} that was not
-included in @var{options}, or a missing option argument, it returns
address@hidden and sets the external variable @code{optopt} to the actual
-option character.  If the first character of @var{options} is a colon
-(@samp{:}), then @code{getopt} returns @samp{:} instead of @samp{?} to
-indicate a missing option argument.  In addition, if the external
-variable @code{opterr} is nonzero (which is the default), @code{getopt}
-prints an error message.
address@hidden deftypefun
-
address@hidden Example of Getopt
address@hidden Example of Parsing Arguments with @code{getopt}
-
-Here is an example showing how @code{getopt} is typically used.  The
-key points to notice are
-
address@hidden @bullet
address@hidden
-Normally, @code{getopt} is called in a loop.  When @code{getopt} returns
address@hidden, indicating no more options are present, the loop terminates.
-
address@hidden
-A @code{switch} statement is used to dispatch on the return value from
address@hidden  In typical use, each case just sets a variable that
-is used later in the program.
-
address@hidden
-A second loop is used to process the remaining non-option arguments.
address@hidden itemize
-
address@hidden
-
-#include <unistd.h>
-#include <stdio.h>
-
-int 
-main (int argc, char **argv)
address@hidden
-  int aflag = 0;
-  int bflag = 0;
-  char *cvalue = NULL;
-  int index;
-  int c;
-
-  opterr = 0;
-
-
-
-  while ((c = getopt (argc, argv, "abc:")) != -1)
-    switch (c)
-      @{
-      case 'a':
-        aflag = 1;
-        break;
-      case 'b':
-        bflag = 1;
-        break;
-      case 'c':
-        cvalue = optarg;
-        break;
-      case '?':
-        if (isprint (optopt))
-          fprintf (stderr, "Unknown option `-%c'.\n", optopt);
-        else
-          fprintf (stderr,
-                   "Unknown option character `\\x%x'.\n",
-                   optopt);
-        return 1;
-      default:
-        abort ();
-      @}
-
-
-
-  printf ("aflag = %d, bflag = %d, cvalue = %s\n",
-          aflag, bflag, cvalue);
-
-  for (index = optind; index < argc; index++)
-    printf ("Non-option argument %s\n", argv[index]);
-  return 0;
address@hidden
-
-
address@hidden smallexample
-
-Here are some examples showing what this program prints with different
-combinations of arguments:
-
address@hidden
-% testopt
-aflag = 0, bflag = 0, cvalue = (null)
-
-% testopt -a -b
-aflag = 1, bflag = 1, cvalue = (null)
-
-% testopt -ab
-aflag = 1, bflag = 1, cvalue = (null)
-
-% testopt -c foo
-aflag = 0, bflag = 0, cvalue = foo
-
-% testopt -cfoo
-aflag = 0, bflag = 0, cvalue = foo
-
-% testopt arg1
-aflag = 0, bflag = 0, cvalue = (null)
-Non-option argument arg1
-
-% testopt -a arg1
-aflag = 1, bflag = 0, cvalue = (null)
-Non-option argument arg1
-
-% testopt -c foo arg1
-aflag = 0, bflag = 0, cvalue = foo
-Non-option argument arg1
-
-% testopt -a -- -b
-aflag = 1, bflag = 0, cvalue = (null)
-Non-option argument -b
-
-% testopt -a -
-aflag = 1, bflag = 0, cvalue = (null)
-Non-option argument -
address@hidden smallexample
-
address@hidden Getopt Long Options
address@hidden Parsing Long Options with @code{getopt_long}
-
-To accept @sc{gnu}-style long options as well as single-character
-options, use @code{getopt_long} instead of @code{getopt}.  This
-function is declared in @file{getopt.h}, not @file{unistd.h}.  You
-should make every program accept long options if it uses any options,
-because this takes little extra work and helps beginners remember how
-to use the program.
-
address@hidden getopt.h
address@hidden GNU
address@hidden {Data Type} {struct option}
-This structure describes a single long option name for the sake of
address@hidden  The argument @var{longopts} must be an array of
-these structures, one for each long option.  Terminate the array with an
-element containing all zeros.
-
-The @code{struct option} structure has these fields:
-
address@hidden @code
address@hidden const char *name
-This field is the name of the option.  It is a string.
-
address@hidden int has_arg
-This field says whether the option takes an argument.  It is an integer,
-and there are three legitimate values: @address@hidden,
address@hidden and @code{optional_argument}.
-
address@hidden int *flag
address@hidden int val
-These fields control how to report or act on the option when it occurs.
-
-If @code{flag} is a null pointer, then the @code{val} is a value that
-identifies this option.  Often these values are chosen to uniquely
-identify particular long options.
-
-If @code{flag} is not a null pointer, it should be the address of an
address@hidden variable that is the flag for this option.  The value in
address@hidden is the value to store in the flag to indicate that the
-option was seen.
address@hidden table
address@hidden deftp
-
address@hidden getopt.h
address@hidden GNU
address@hidden int getopt_long (int @var{argc}, char *const address@hidden, 
const char address@hidden, const struct option address@hidden, int 
address@hidden)
-Decode options from the vector @var{argv} (whose length is @var{argc}).
-The argument @var{shortopts} describes the short options to accept, just as
-it does in @code{getopt}.  The argument @var{longopts} describes the long
-options to accept (see above).
-
-When @code{getopt_long} encounters a short option, it does the same
-thing that @code{getopt} would do---it returns the character code for
-the option, and stores the options argument (if it has one) in
address@hidden
-
-When @code{getopt_long} encounters a long option, it takes actions based
-on the @code{flag} and @code{val} fields of the definition of that
-option.
-
-If @code{flag} is a null pointer, then @code{getopt_long} returns the
-contents of @code{val} to indicate which option it found.  You should
-arrange distinct values in the @code{val} field for options with
-different meanings, so you can decode these values after
address@hidden returns.  If the long option is equivalent to a short
-option, you can use the short option's character code in @code{val}.
-
-If @code{flag} is not a null pointer, that means this option should just
-set a flag in the program.  The flag is a variable of type @code{int}
-that you define.  Put the address of the flag in the @code{flag} field.
-Put in the @code{val} field the value you would like this option to
-store in the flag.  In this case, @code{getopt_long} returns @code{0}.
-
-For any long option, @code{getopt_long} tells you the index in the array
address@hidden of the options definition, by storing it into
address@hidden@var{indexptr}}.  You can get the name of the option with
address@hidden@address@hidden  So you can distinguish among
-long options either by the values in their @code{val} fields or by their
-indices.  You can also distinguish in this way among long options that
-set flags.
-
-When a long option has an argument, @code{getopt_long} puts the argument
-value in the variable @code{optarg} before returning.  When the option
-has no argument, the value in @code{optarg} is a null pointer.  This is
-how you can tell whether an optional argument was supplied.
-
-When @code{getopt_long} has no more options to handle, it returns
address@hidden and leaves, in the variable @code{optind}, the index in
address@hidden of the next remaining argument.
address@hidden deftypefun
-
-Since long option names were used before before the @code{getopt_long}
-options were invented, there are program interfaces that require
-programs to recognize options like @address@hidden value}} instead of
address@hidden@samp{--option value}}.  To enable these programs to use the
address@hidden getopt functionality, there is one more function available.
-
address@hidden getopt.h
address@hidden GNU
address@hidden int getopt_long_only (int @var{argc}, char *const 
address@hidden, const char address@hidden, const struct option address@hidden, 
int address@hidden)
-
-The @code{getopt_long_only} function is equivalent to the
address@hidden function, but it allows the user of the application
-to specify passing long options with only @samp{-} instead of
address@hidden  The @samp{--} prefix is still recognized, but instead of
-looking through the short options if a @samp{-} is seen, it first
-determines whether this parameter names a long option.  If not, it is
-parsed as a short option.
-
-Assuming @code{getopt_long_only} is used starting an application with:
-
address@hidden
-  app -foo
address@hidden smallexample
-
address@hidden
-the @code{getopt_long_only} will first look for a long option named
address@hidden  If this is not found, the short options @samp{f}, @samp{o},
-and again @samp{o} are recognized.
address@hidden deftypefun
-
address@hidden Getopt Long Option Example
address@hidden Example of Parsing Long Options with @code{getopt_long}
-
address@hidden
-#include <stdio.h>
-#include <stdlib.h>
-#include <getopt.h>
-
-/* @r{Flag set by @samp{--verbose}.} */
-static int verbose_flag;
-
-int
-main (argc, argv)
-     int argc;
-     char **argv;
address@hidden
-  int c;
-
-  while (1)
-    @{
-      static struct option long_options[] =
-        @{
-          /* @r{These options set a flag.} */
-          @{"verbose", no_argument,       &verbose_flag, address@hidden,
-          @{"brief",   no_argument,       &verbose_flag, address@hidden,
-          /* @r{These options don't set a flag.
-             We distinguish them by their indices.} */
-          @{"add",     no_argument,       0, 'a'@},
-          @{"append",  no_argument,       0, 'b'@},
-          @{"delete",  required_argument, 0, 'd'@},
-          @{"create",  required_argument, 0, 'c'@},
-          @{"file",    required_argument, 0, 'f'@},
-          @{0, 0, 0, address@hidden
-        @};
-      /* @address@hidden stores the option index here.} */
-      int option_index = 0;
-
-      c = getopt_long (argc, argv, "abc:d:f:",
-                       long_options, &option_index);
-
-      /* @r{Detect the end of the options.} */
-      if (c == -1)
-        break;
-
-      switch (c)
-        @{
-        case 0:
-          /* @r{If this option set a flag, do nothing else now.} */
-          if (long_options[option_index].flag != 0)
-            break;
-          printf ("option %s", long_options[option_index].name);
-          if (optarg)
-            printf (" with arg %s", optarg);
-          printf ("\n");
-          break;
-
-        case 'a':
-          puts ("option -a\n");
-          break;
-
-        case 'b':
-          puts ("option -b\n");
-          break;
-
-        case 'c':
-          printf ("option -c with value `%s'\n", optarg);
-          break;
-
-        case 'd':
-          printf ("option -d with value `%s'\n", optarg);
-          break;
-
-        case 'f':
-          printf ("option -f with value `%s'\n", optarg);
-          break;
-
-        case '?':
-          /* @address@hidden already printed an error message.} */
-          break;
-
-        default:
-          abort ();
-        @}
-    @}
-
-  /* @r{Instead of reporting @samp{--verbose}
-     and @samp{--brief} as they are encountered,
-     we report the final status resulting from them.} */
-  if (verbose_flag)
-    puts ("verbose flag is set");
-
-  /* @r{Print any remaining command-line arguments (not options).} */
-  if (optind < argc)
-    @{
-      printf ("non-option ARGV-elements: ");
-      while (optind < argc)
-        printf ("%s ", argv[optind++]);
-      putchar ('\n');
-    @}
-
-  exit (0);
address@hidden
-
address@hidden smallexample
-
address@hidden Argp, Suboptions, Getopt, Parsing Program Arguments
address@hidden 5000
address@hidden Parsing Program Options with Argp
address@hidden argp (program argument parser)
address@hidden argument parsing with argp
address@hidden option parsing with argp
-
address@hidden is an interface for parsing Unix-style argument vectors
-(@pxref{Program Arguments}).
-
-Argp provides features unavailable in the more commonly used
address@hidden interface.  These features include automatically producing
-output in response to the @samp{--help} and @samp{--version} options, as
-described in the @sc{gnu} coding standards.  Using argp makes it less likely
-that programmers will neglect to implement these additional options or
-keep them up to date.
-
-Argp also provides the ability to merge several independently defined
-option parsers into one, mediating conflicts between them and making the
-result appear seamless.  A library can export an argp option parser that
-user programs might employ in conjunction with their own option parsers,
-resulting in less work for the user programs.  Some programs may use only
-argument parsers exported by libraries, thereby achieving consistent and
-efficient option-parsing for abstractions implemented by the libraries.
-
address@hidden argp.h
-The header file @file{<argp.h>} should be included to use argp.
-
address@hidden The @code{argp_parse} Function
-
-The main interface to argp is the @code{argp_parse} function.  In many
-cases, calling @code{argp_parse} is the only argument-parsing code
-needed in @code{main} (@pxref{Program Arguments}).
-
address@hidden argp.h
address@hidden GNU
address@hidden {error_t} argp_parse (const struct argp address@hidden, int 
@var{argc}, char address@hidden, unsigned @var{flags}, int address@hidden, void 
address@hidden)
-The @code{argp_parse} function parses the arguments in @var{argv}, of
-length @var{argc}, using the argp parser @var{argp} (@pxref{Argp
-Parsers}).
-
-A value of zero is the same as a @code{struct argp} containing all
-zeros.  @var{flags} is a set of flag bits that modify the parsing
-behavior (@pxref{Argp Flags}).  @var{input} is passed through to the
-argp parser @var{argp}, and has meaning defined by @var{argp}.  A
-typical usage is to pass a pointer to a structure that is used for
-specifying parameters to the parser and passing back the results.
-
-Unless the @code{ARGP_NO_EXIT} or @code{ARGP_NO_HELP} flags are
-included in @var{flags}, calling @code{argp_parse} may result in the
-program exiting.  This behavior is true if an error is detected, or
-when an unknown option is encountered (@pxref{Program Termination}).
-
-If @var{arg_index} is nonnull, the index of the first unparsed option
-in @var{argv} is returned as a value.
-
-The return value is zero for successful parsing, or an error code
-(@pxref{Error Codes}) if an error is detected.  Different argp parsers
-may return arbitrary error codes, but the standard error codes are:
address@hidden if a memory allocation error occurred, or @code{EINVAL} if
-an unknown option or option argument is encountered.
address@hidden deftypefun
-
address@hidden Argp Global Variables, Argp Parsers, , Argp
address@hidden Argp Global Variables
-
-These variables make it easy for user programs to implement the
address@hidden option and provide a bug-reporting address in the
address@hidden output.  These are implemented in argp by default.
-
address@hidden argp.h
address@hidden GNU
address@hidden {const char *} argp_program_version
-If defined or set by the user program to a nonzero value, then a
address@hidden option is added when parsing with @code{argp_parse},
-which will print the @samp{--version} string followed by a newline and
-exit.  The exception to this is if the @code{ARGP_NO_EXIT} flag is used.
address@hidden deftypevar
-
address@hidden argp.h
address@hidden GNU
address@hidden {const char *} argp_program_bug_address
-If defined or set by the user program to a nonzero value,
address@hidden should point to a string that will be
-printed at the end of the standard output for the @samp{--help} option,
-embedded in a sentence that says @samp{Report bugs to @var{address}.}.
address@hidden deftypevar
-
address@hidden 1500
address@hidden argp.h
address@hidden GNU
address@hidden argp_program_version_hook
-If defined or set by the user program to a nonzero value, a
address@hidden option is added when parsing with @code{arg_parse},
-which prints the program version and exits with a status of zero.  This
-is not the case if the @code{ARGP_NO_HELP} flag is used.  If the
address@hidden flag is set, the exit behavior of the program is
-suppressed or modified, as when the argp parser is going to be used by
-other programs.
-
-It should point to a function with this type of signature:
-
address@hidden
-void @var{print-version} (FILE address@hidden, struct argp_state 
address@hidden)
address@hidden smallexample
-
address@hidden
address@hidden Parsing State}, for an explanation of @var{state}.
-
-This variable takes precedence over @code{argp_program_version}, and is
-useful if a program has version information not easily expressed in a
-simple string.
address@hidden defvar
-
address@hidden argp.h
address@hidden GNU
address@hidden error_t argp_err_exit_status
-This is the exit status used when argp exits due to a parsing error.
-If not defined or set by the user program, this defaults to
address@hidden from @file{<sysexits.h>}.
address@hidden deftypevar
-
address@hidden Argp Parsers, Argp Flags, Argp Global Variables, Argp
address@hidden Specifying Argp Parsers
-
-The first argument to the @code{argp_parse} function is a pointer to a
address@hidden argp}, which is known as an @dfn{argp parser}:
-
address@hidden argp.h
address@hidden GNU
address@hidden {Data Type} {struct argp}
-This structure specifies how to parse a given set of options and
-arguments, perhaps in conjunction with other argp parsers.  It has the
-following fields:
-
address@hidden @code
address@hidden const struct argp_option *options
-This is a pointer to a vector of @code{argp_option} structures
-specifying which options this argp parser understands; it may be zero
-if there are no options at all (@pxref{Argp Option Vectors}).
-
address@hidden argp_parser_t parser
-This is a pointer to a function that defines actions for this parser;
-it is called for each option parsed, and at other well-defined points
-in the parsing process.  A value of zero is the same as a pointer to a
-function that always returns @code{ARGP_ERR_UNKNOWN} (@pxref{Argp
-Parser Functions}).
-
address@hidden const char *args_doc
-If nonzero, this is a string describing what non-option arguments are
-called by this parser.  This is only used to print the @samp{Usage:}
-message.  If it contains newlines, the strings separated by them are
-considered alternative usage patterns and printed on separate lines.
-Lines after the first are prefixed by @samp{ or: } instead of
address@hidden:}.
-
address@hidden const char *doc
-If nonzero, this is a string containing extra text to be printed
-before and after the options in a long help message, with the two
-sections separated by a vertical tab (@code{'\v'}, @code{'\013'})
-character.  By convention, the documentation before the options is
-just a short string explaining what the program does.  Documentation
-printed after the options describe behavior in more detail.
-
address@hidden const struct argp_child *children
-This is a pointer to a vector of @code{argp_children} structures.
-This pointer specifies which additional argp parsers should be
-combined with this one (@pxref{Argp Children}).
-
address@hidden char *(*help_filter)(int @var{key}, const char address@hidden, 
void address@hidden)
-If nonzero, this is a pointer to a function that filters the output of
-help messages (@pxref{Argp Help Filtering}).
-
address@hidden const char *argp_domain
-If nonzero, the strings used in the argp library are translated using
-the domain described by this string.  If zero, the current default
-domain is used.
-
address@hidden table
address@hidden deftp
-
-Of the above group, @code{options}, @code{parser}, @code{args_doc} and
-the @code{doc} fields are usually all that are needed.  If an argp
-parser is defined as an initialized C variable, only the fields used
-need be specified in the initializer.  The rest will default to zero
-due to the way C structure initialization works.  This design is
-exploited in most argp structures; the most-used fields are grouped
-near the beginning and the unused fields are left unspecified.
-
address@hidden Argp Option Vectors, Argp Parser Functions, Argp Parsers, Argp 
Parsers
address@hidden Specifying Options in an Argp Parser
-
-The @code{options} field in a @code{struct argp} points to a vector of
address@hidden argp_option} structures, each of which specifies an option
-that the argp parser supports.  Multiple entries may be used for a single
-option provided it has multiple names.  This should be terminated by an
-entry with zero in all fields.  Note that when using an initialized C
-array for options, writing @address@hidden 0 @}} is enough to achieve this.
-
address@hidden argp.h
address@hidden GNU
address@hidden {Data Type} {struct argp_option}
-This structure specifies a single option that an argp parser
-understands, as well as how to parse and document that option.  It has
-the following fields:
-
address@hidden @code
address@hidden const char *name
-The long name for this option, corresponding to the long option
address@hidden@var{name}}; this field may be zero if this option @emph{only}
-has a short name.  To specify multiple names for an option, additional
-entries may follow this one, with the @code{OPTION_ALIAS} flag
-set.  @xref{Argp Option Flags}.
-
address@hidden int key
-The integer key provided by the current option to the option parser.  If
address@hidden has a value that is a printable @sc{ascii} character (i.e.,
address@hidden (@var{key})} is true), it @emph{also} specifies a short
-option @address@hidden, where @var{char} is the @sc{ascii} character
-with the code @var{key}.
-
address@hidden const char *arg
-If non-zero, this is the name of an argument associated with this
-option, which must be provided (e.g., with the
address@hidden@address@hidden or @address@hidden @var{value}}
-syntaxes), unless the @code{OPTION_ARG_OPTIONAL} flag (@pxref{Argp
-Option Flags}) is set, in which case it @emph{may} be provided.
-
address@hidden int flags
-Flags associated with this option, some of which are referred to above.
address@hidden Option Flags}.
-
address@hidden const char *doc
-A documentation string for this option, for printing in help messages.
-
-If both the @code{name} and @code{key} fields are zero, this string
-will be printed tabbed left from the normal option column, making it
-useful as a group header.  This will be the first thing printed in its
-group.  In this usage, it's conventional to end the string with a
address@hidden:} character.
-
address@hidden int group
-Group identity for this option.
-
-In a long help message, options are sorted alphabetically within each
-group, and the groups presented in the order 0, 1, 2, @dots{}, @var{n},
address@hidden@var{m}, @dots{}, @minus{}2, @minus{}1.
-
-Every entry in an options array with this field 0 will inherit the group
-number of the previous entry, or zero if it's the first one.  If it's a
-group header with @code{name} and @code{key} fields both zero, the
-previous entry + 1 is the default.  Automagic options such as
address@hidden are put into group @minus{}1.
-
-Note that because of C structure initialization rules, this field often
-need not be specified, because 0 is the correct value.
address@hidden table
address@hidden deftp
-
address@hidden Argp Option Flags, , , Argp Option Vectors
address@hidden Flags for Argp Options
-
-The following flags may be @sc{or}ed together in the @code{flags} field of a
address@hidden argp_option}.  These flags control various aspects of how
-that option is parsed or displayed in help messages:
-
-
address@hidden @code
address@hidden argp.h
address@hidden GNU
address@hidden OPTION_ARG_OPTIONAL
-The argument associated with this option is optional.
-
address@hidden argp.h
address@hidden GNU
address@hidden OPTION_HIDDEN
-This option isn't displayed in any help messages.
-
address@hidden argp.h
address@hidden GNU
address@hidden OPTION_ALIAS
-This option is an alias for the closest previous non-alias option.
-This means that it will be displayed in the same help entry and will
-inherit fields other than @code{name} and @code{key} from the option
-being aliased.
-
-
address@hidden argp.h
address@hidden GNU
address@hidden OPTION_DOC
-This option isn't actually an option and should be ignored by the actual
-option parser.  It is an arbitrary section of documentation that should
-be displayed in much the same manner as the options.  This is known as a
address@hidden option}.
-
-If this flag is set, then the option @code{name} field is displayed
-unmodified (e.g., no @samp{--} prefix is added) at the left margin
-where a @emph{short} option would normally be displayed, and this
-documentation string is left in its usual place.  For purposes of
-sorting, any leading white space and punctuation is ignored, unless
-the first non-white-space character is @samp{-}.  This entry is
-displayed after all options, after @code{OPTION_DOC} entries with a
-leading @samp{-}, in the same group.
-
address@hidden argp.h
address@hidden GNU
address@hidden OPTION_NO_USAGE
-This option shouldn't be included in long usage messages, but should
-still be included in other help messages.  This is intended for
-options that are completely documented in an argp's @code{args_doc}
-field (@pxref{Argp Parsers}).  Including this option in the generic
-usage list would be redundant, and should be avoided.
-
-For instance, if @code{args_doc} is @samp{FOO BAR\n-x BLAH}, and the
address@hidden option's purpose is to distinguish these two cases,
address@hidden should probably be marked @code{OPTION_NO_USAGE}.
address@hidden vtable
-
address@hidden Argp Parser Functions, Argp Children, Argp Option Vectors, Argp 
Parsers
address@hidden Argp Parser Functions
-
-The function pointed to by the @code{parser} field in a @code{struct
-argp} (@pxref{Argp Parsers}) defines what actions take place in response
-to each option or argument parsed.  It is also used as a hook, allowing a
-parser to perform tasks at certain other points during parsing.
-
address@hidden 2000
-Argp parser functions have the following type signature:
-
address@hidden argp parser functions
address@hidden
-error_t @var{parser} (int @var{key}, char address@hidden, struct argp_state 
address@hidden)
address@hidden smallexample
-
address@hidden
-where the arguments are as follows:
-
address@hidden @var
address@hidden key
-For each option that is parsed, @var{parser} is called with a value of
address@hidden from that option's @code{key} field in the option vector
-(@pxref{Argp Option Vectors}).  @var{parser} is also called at other
-times with special reserved keys, such as @code{ARGP_KEY_ARG} for
-non-option arguments (@pxref{Argp Special Keys}).
-
address@hidden arg
-If @var{key} is an option, @var{arg} is its given value.  This defaults
-to zero if no value is specified.  Only options that have a nonzero
address@hidden field can ever have a value.  These must @emph{always} have a
-value unless the @code{OPTION_ARG_OPTIONAL} flag is specified.  If the
-input being parsed specifies a value for an option that doesn't allow
-one, an error results before @var{parser} ever gets called.
-
-If @var{key} is @code{ARGP_KEY_ARG}, @var{arg} is a non-option
-argument.  Other special keys always have a zero @var{arg}.
-
address@hidden state
address@hidden points to a @code{struct argp_state}, containing useful
-information about the current parsing state for use by @var{parser}
-(@pxref{Argp Parsing State}).
address@hidden table
-
-When @var{parser} is called, it should perform whatever action is
-appropriate for @var{key}, and return @code{0} for success,
address@hidden if the value of @var{key} is not handled by
-this parser function, or a Unix error code if a real error occurred
-(@pxref{Error Codes}).
-
address@hidden argp.h
address@hidden GNU
address@hidden Macro int ARGP_ERR_UNKNOWN
-Argp parser functions should return @code{ARGP_ERR_UNKNOWN} for any
address@hidden value they do not recognize, or for non-option arguments
-(@address@hidden == ARGP_KEY_ARG}) that they are not equipped to handle.
address@hidden deftypevr
-
address@hidden 3000
-A typical parser function uses a switch statement on @var{key}:
-
address@hidden
-error_t
-parse_opt (int key, char *arg, struct argp_state *state)
address@hidden
-  switch (key)
-    @{
-    case @var{option_key}:
-      @var{action}
-      break;
-    @dots{}
-    default:
-      return ARGP_ERR_UNKNOWN;
-    @}
-  return 0;
address@hidden
address@hidden smallexample
-
address@hidden Argp Special Keys, Argp Parsing State, , Argp Parser Functions
address@hidden Special Keys for Argp Parser Functions
-
-In addition to key values corresponding to user options, the @var{key}
-argument to argp parser functions may have a number of other special
-values.  In the following example, @var{arg} and @var{state} refer to
-parser function arguments (@pxref{Argp Parser Functions}).
-
address@hidden @code
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_ARG
-This is not an option at all, but rather a command-line argument, whose
-value is pointed to by @var{arg}.
-
-When there are multiple parser functions in play due to argp parsers
-being combined, it's impossible to know which one will handle a specific
-argument.  Each is called until one returns 0 or an error other than
address@hidden; if an argument is not handled,
address@hidden immediately returns success, without parsing any more
-arguments.
-
-Once a parser function returns success for this key, that fact is
-recorded, and the @code{ARGP_KEY_NO_ARGS} case won't be
-used.  @emph{However}, if while processing the argument a parser function
-decrements the @code{next} field of its @var{state} argument, the option
-won't be considered processed; this is to allow you to actually modify
-the argument, perhaps into an option, and have it processed again.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_ARGS
-If a parser function returns @code{ARGP_ERR_UNKNOWN} for
address@hidden, it is immediately called again with the key
address@hidden, which has a similar meaning, but is slightly
-more convenient for consuming all remaining arguments.  @var{arg} is
-0, and the tail of the argument vector may be found at
address@hidden@var{state}->argv + @var{state}->next}.  If success is returned
-for this key, and @address@hidden>next} is unchanged, all remaining
-arguments are considered to have been consumed.  Otherwise, the amount
-by which @address@hidden>next} has been adjusted indicates how many
-were used.  Here is an example that uses both, for different args:
-
-
address@hidden
address@hidden
-case ARGP_KEY_ARG:
-  if (@var{state}->arg_num == 0)
-    /* First argument */
-    first_arg = @var{arg};
-  else
-    /* Let the next case parse it.  */
-    return ARGP_KEY_UNKNOWN;
-  break;
-case ARGP_KEY_ARGS:
-  remaining_args = @var{state}->argv + @var{state}->next;
-  num_remaining_args = @var{state}->argc - @var{state}->next;
-  break;
address@hidden smallexample
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_END
-This indicates that there are no more command-line arguments.  Parser
-functions are called in a different order, children first.  This allows
-each parser to clean up its state for the parent.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_NO_ARGS
-Because it's common to do some special processing if there aren't any
-non-option args, parser functions are called with this key if they
-didn't successfully process any non-option arguments.  This is called
-just before @code{ARGP_KEY_END}, where more general validity checks on
-previously parsed arguments take place.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_INIT
-This is passed in before any parsing is done.  Afterwards, the values of
-each element of the @code{child_input} field of @var{state}, if any, are
-copied to each child's state to be the initial value of the @code{input}
-when @emph{their} parsers are called.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_SUCCESS
-This is passed in when parsing has successfully been completed, even
-if arguments remain.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_ERROR
-This is passed in if an error has occurred and parsing is terminated.
-In this case, a call with a key of @code{ARGP_KEY_SUCCESS} is never
-made.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_FINI
-This is the final key ever seen by any parser, even after
address@hidden and @code{ARGP_KEY_ERROR}.  Any resources
-allocated by @code{ARGP_KEY_INIT} may be freed here.  At times,
-certain resources allocated are to be returned to the caller after a
-successful parse.  In that case, those particular resources can be
-freed in the @code{ARGP_KEY_ERROR} case.
address@hidden vtable
-
-In all cases, @code{ARGP_KEY_INIT} is the first key seen by parser
-functions, and @code{ARGP_KEY_FINI} the last, unless an error was
-returned by the parser for @code{ARGP_KEY_INIT}.  Other keys can occur
-in one the following orders.  @var{opt} refers to an arbitrary option
-key:
-
address@hidden @asis
address@hidden @address@hidden @code{ARGP_KEY_NO_ARGS} @code{ARGP_KEY_END} 
@code{ARGP_KEY_SUCCESS}
-The arguments being parsed did not contain any non-option arguments.
-
address@hidden ( @var{opt} | @code{ARGP_KEY_ARG} )@dots{} @code{ARGP_KEY_END} 
@code{ARGP_KEY_SUCCESS}
-All non-option arguments were successfully handled by a parser
-function.  There may be multiple parser functions if multiple argp
-parsers were combined.
-
address@hidden ( @var{opt} | @code{ARGP_KEY_ARG} )@dots{} 
@code{ARGP_KEY_SUCCESS}
-Some non-option argument went unrecognized.
-
-This occurs when every parser function returns @code{ARGP_KEY_UNKNOWN}
-for an argument, in which case parsing stops at that argument if
address@hidden is a null pointer.  Otherwise an error occurs.
address@hidden table
-
-In all cases, if a nonnull value for @var{arg_index} gets passed to
address@hidden, the index of the first unparsed command-line argument
-is passed back in that value.
-
-If an error occurs and is either detected by argp or because a parser
-function returned an error value, each parser is called with
address@hidden  No further calls are made, except the final call
-with @code{ARGP_KEY_FINI}.
-
address@hidden Argp Helper Functions, , Argp Parsing State, Argp Parser 
Functions
address@hidden Functions for Use in Argp Parsers
-
-Argp provides a number of functions available to the user of argp
-(@pxref{Argp Parser Functions}), mostly for producing error messages.
-These take as their first argument the @var{state} argument to the
-parser function (@pxref{Argp Parsing State}).
-
-
address@hidden usage messages, in argp
address@hidden argp.h
address@hidden GNU
address@hidden void argp_usage (const struct argp_state address@hidden)
-This outputs the standard usage message for the argp parser referred
-to by @var{state} to @address@hidden>err_stream} and terminates the
-program with @code{exit (argp_err_exit_status)} (@pxref{Argp Global
-Variables}).
address@hidden deftypefun
-
address@hidden syntax error messages, in argp
address@hidden argp.h
address@hidden GNU
address@hidden void argp_error (const struct argp_state address@hidden, const 
char address@hidden, @dots{})
-This prints the printf format string @var{fmt} and following args,
-preceded by the program name and @samp{:}, and followed by a
address@hidden@samp{Try @dots{} --help}} message, and terminates the program 
with
-an exit status of @code{argp_err_exit_status} (@pxref{Argp Global
-Variables}).
address@hidden deftypefun
-
address@hidden error messages, in argp
address@hidden argp.h
address@hidden GNU
address@hidden void argp_failure (const struct argp_state address@hidden, int 
@var{status}, int @var{errnum}, const char address@hidden, @dots{})
-Similar to the standard @sc{gnu} error-reporting function
address@hidden, this prints the program name and @samp{:}, the printf
-format string @var{fmt}, and the appropriate following args.  If it is
-nonzero, the standard Unix error text for @var{errnum} is printed.  If
address@hidden is nonzero, it terminates the program with that value as
-its exit status.
-
-The difference between @code{argp_failure} and @code{argp_error} is that
address@hidden is for @emph{parsing errors}, whereas
address@hidden is for other problems that occur during parsing but
-don't reflect a syntactic problem with the input, such as illegal values
-for options, bad phase of the moon, etc.
address@hidden deftypefun
-
address@hidden argp.h
address@hidden GNU
address@hidden void argp_state_help (const struct argp_state address@hidden, 
FILE address@hidden, unsigned @var{flags})
-This outputs a help message to @var{stream} for the argp parser
-referred to by @var{state}.  The @var{flags} argument determines what
-sort of help message is produced (@pxref{Argp Help Flags}).
address@hidden deftypefun
-
-Error output is sent to @address@hidden>err_stream}, and the program
-name printed is @address@hidden>name}.
-
-The output or program termination behavior of these functions may be
-suppressed if the @code{ARGP_NO_EXIT} or @code{ARGP_NO_ERRS} flags are
-passed to @code{argp_parse} (@pxref{Argp Flags}).
-
-This behavior is useful if an argp parser is exported for use by other
-programs (e.g., by a library), and may be used in a context where it is
-not desirable to terminate the program in response to parsing errors.  In
-argp parsers intended for such general use, and for the case where the
-program @emph{doesn't} terminate, calls to any of these functions should
-be followed by code that returns the appropriate error code:
-
address@hidden
-if (@var{bad argument syntax})
-  @{
-     argp_usage (@var{state});
-     return EINVAL;
-  @}
address@hidden smallexample
-
address@hidden
-If a parser function will @emph{only} be used when @code{ARGP_NO_EXIT}
-is not set, the return may be omitted.
-
address@hidden Argp Parsing State, Argp Helper Functions, Argp Special Keys, 
Argp Parser Functions
address@hidden Argp Parsing State
-
-The third argument to argp parser functions (@pxref{Argp Parser
-Functions}) is a pointer to a @code{struct argp_state}, which contains
-information about the state of the option parsing.
-
address@hidden argp.h
address@hidden GNU
address@hidden {Data Type} {struct argp_state}
-This structure has the following fields, which may be modified as noted:
-
address@hidden @code
address@hidden const struct argp *const root_argp
-This is the top-level argp parser being parsed.  This is often
address@hidden the same @code{struct argp} passed into @code{argp_parse}
-by the invoking program (@pxref{Argp}).  It is an internal argp parser
-that contains options implemented by @code{argp_parse} itself, such as
address@hidden
-
address@hidden int argc
address@hidden char **argv
-This is the argument vector being parsed.  This may be modified.
-
address@hidden int next
-This is the index in @code{argv} of the next argument to be parsed.
-This may be modified.
-
-One way to consume all remaining arguments in the input is to set
address@hidden@var{state}->next = @var{state}->argc}, perhaps after recording
-the value of the @code{next} field to find the consumed arguments.
-The current option can be reparsed immediately by decrementing this
-field, then modifying @address@hidden>address@hidden>next]} to
-reflect the option that should be reexamined.
-
address@hidden unsigned flags
-The flags supplied to @code{argp_parse}.  These may be modified,
-although some flags may only take effect when @code{argp_parse} is
-first invoked (@pxref{Argp Flags}).
-
address@hidden unsigned arg_num
-While calling a parsing function with the @var{key} argument
address@hidden, this represents the number of the current arg,
-starting at 0.  It is incremented after each @code{ARGP_KEY_ARG} call
-returns.  At all other times, this is the number of @code{ARGP_KEY_ARG}
-arguments that have been processed.
-
address@hidden int quoted
-If nonzero, this is the index in @code{argv} of the first argument
-following a special @samp{--} argument.  This prevents anything that
-follows from being interpreted as an option.  It is only set after
-argument parsing has proceeded past this point.
-
address@hidden void *input
-This is an arbitrary pointer passed in from the caller of
address@hidden, in the @var{input} argument.
-
address@hidden void **child_inputs
-These are values that will be passed to child parsers.  This vector
-will be the same length as the number of children in the current
-parser.  Each child parser will be given the value of
address@hidden@var{state}->address@hidden as @emph{its}
address@hidden@var{state}->input} field, where @var{i} is the index of the
-child in the this parser's @code{children} field (@pxref{Argp
-Children}).
-
address@hidden void *hook
-This is for the parser function's use.  It is initialized to 0, but
-otherwise ignored by argp.
-
address@hidden char *name
-This is the name used when printing messages.  This is initialized to
address@hidden, or @code{program_invocation_name} if @code{argv[0]} is
-unavailable.
-
address@hidden FILE *err_stream
address@hidden FILE *out_stream
-These are the stdio streams used when argp prints.  Error messages are
-printed to @code{err_stream} and all other output, such as
address@hidden, is printed to @code{out_stream}.  These are initialized
-to @code{stderr} and @code{stdout}, respectively (@pxref{Standard
-Streams}).
-
address@hidden void *pstate
-This is private, for use by the argp implementation.
address@hidden table
address@hidden deftp
-
address@hidden Argp Children, Argp Help Filtering, Argp Parser Functions, Argp 
Parsers
address@hidden Combining Multiple Argp Parsers
-
-The @code{children} field in a @code{struct argp} enables other argp
-parsers to be combined with the referencing one for the parsing of a
-single set of arguments.  This field should point to a vector of
address@hidden argp_child}, which is terminated by an entry having a value
-of zero in the @code{argp} field.
-
-Where conflicts between combined parsers arise, as when two specify an
-option with the same name, the parser conflicts are resolved in favor of
-the parent argp parser(s), or the earlier of the argp parsers in the
-list of children.
-
address@hidden argp.h
address@hidden GNU
address@hidden {Data Type} {struct argp_child}
-An entry in the list of subsidiary argp parsers pointed to by the
address@hidden field in a @code{struct argp}.  The fields are as
-follows:
-
address@hidden @code
address@hidden const struct argp *argp
-This is the child argp parser, or zero to end of the list.
-
address@hidden int flags
-These are flags for this child.
-
address@hidden const char *header
-If nonzero, this is an optional header to be printed within help
-output before the child options.  As a side effect, a nonzero value
-forces the child options to be grouped together.  To achieve this
-effect without actually printing a header string, use a value of
address@hidden""}.  As with header strings specified in an option entry, the
-conventional value of the last character is @samp{:} (@pxref{Argp
-Option Vectors}).
-
address@hidden int group
-This is where the child options are grouped relative to the other
-`consolidated' options in the parent argp parser.  The values are the
-same as the @code{group} field in @code{struct argp_option}
-(@pxref{Argp Option Vectors}).  All child-groupings follow parent
-options at a particular group level.  If both this field and
address@hidden are zero, then the child's options aren't grouped
-together; they are merged with parent options at the parent option
-group level.
-
address@hidden table
address@hidden deftp
-
address@hidden Argp Flags, Argp Help, Argp Parsers, Argp
address@hidden Flags for @code{argp_parse}
-
-The default behavior of @code{argp_parse} is designed to be convenient
-for the most common case of parsing program command-line arguments.
-To modify these defaults, the following flags may be or'd together in
-the @var{flags} argument to @code{argp_parse}:
-
address@hidden @code
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_PARSE_ARGV0
-Do not ignore the first element of the @var{argv} argument to
address@hidden  Unless @code{ARGP_NO_ERRS} is set, the first
-element of the argument vector is skipped for option-parsing purposes,
-as it corresponds to the program name in a command line.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_NO_ERRS
-Do not print error messages for unknown options to @code{stderr}; unless
-this flag is set, @code{ARGP_PARSE_ARGV0} is ignored, as @code{argv[0]}
-is used as the program name in the error messages.  This flag implies
address@hidden  This is based on the assumption that silent exiting
-upon errors is bad behavior.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_NO_ARGS
-Do not parse any non-option args.  Normally, these are parsed by
-calling the parse functions with a key of @code{ARGP_KEY_ARG}, the
-actual argument being the value.  This flag needn't normally be set,
-as the default behavior is to stop parsing as soon as an argument
-fails to be parsed (@pxref{Argp Parser Functions}).
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_IN_ORDER
-Parse options and arguments in the same order they occur on the
-command line.  Normally, they are rearranged so that all options come
-first.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_NO_HELP
-Do not provide the standard long option @samp{--help}, which ordinarily
-causes usage and option help information to be output to @code{stdout}
-and @code{exit (0)}.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_NO_EXIT
-Do not exit on errors, although they may still result in error messages.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_LONG_ONLY
-Use the @sc{gnu} getopt `long-only' rules for parsing arguments.  This
-allows long options to be recognized with only a single @samp{-} (i.e.
address@hidden).  This results in a less useful interface, and its use
-is discouraged as it conflicts with the way most @sc{gnu} programs
-work as well as the @sc{gnu} coding standards.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_SILENT
-Turns off any message-printing/exiting options, specifically
address@hidden, @code{ARGP_NO_ERRS}, and @code{ARGP_NO_HELP}.
address@hidden vtable
-
address@hidden Argp Help Filtering, , Argp Children, Argp Parsers
address@hidden 2000
address@hidden Customizing Argp Help Output
-
-The @code{help_filter} field in a @code{struct argp} is a pointer to a
-function that filters the text of help messages before displaying
-them.  They have a function signature like:
-
address@hidden
-char address@hidden (int @var{key}, const char address@hidden, void 
address@hidden)
address@hidden smallexample
-
-
address@hidden
-Where @var{key} is either a key from an option, in which case
address@hidden is that option's help text (@pxref{Argp Option Vectors}).
-Alternately, one of the special keys with names beginning with
address@hidden might be used, describing which other help text
address@hidden will contain (@pxref{Argp Help Filter Keys}).
-
-The function should return either @var{text} if it remains as-is, or a
-replacement string allocated using @code{malloc}.  This will either be
-freed by argp or be zero, which prints nothing.  The value of
address@hidden is supplied @emph{after} any translation has been done, so
-if any of the replacement text needs translation, it will be done by
-the filter function.  @var{input} is either the input supplied to
address@hidden or it is zero, if @code{argp_help} was called
-directly by the user.
-
address@hidden Argp Help Filter Keys, , , Argp Help Filtering
address@hidden Special Keys for Argp Help Filter Functions
-
-The following special values may be passed to an argp help filter
-function as the first argument in addition to key values for user
-options.  They specify which help text the @var{text} argument contains:
-
address@hidden @code
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_HELP_PRE_DOC
-This is the help text preceding options.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_HELP_POST_DOC
-This is the help text following options.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_HELP_HEADER
-This is the option header string.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_HELP_EXTRA
-This is used after all other documentation; @var{text} is zero for this key.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_HELP_DUP_ARGS_NOTE
-This is the explanatory note printed when duplicate option arguments have been 
suppressed.
-
address@hidden argp.h
address@hidden GNU
address@hidden ARGP_KEY_HELP_ARGS_DOC
-This is the argument doc string; formally the @code{args_doc} field
-from the argp parser (@pxref{Argp Parsers}).
address@hidden vtable
-
address@hidden Argp Help, Argp Examples, Argp Flags, Argp
address@hidden The @code{argp_help} Function
-
-Normally programs using argp need not be written with particular
-printing argument-usage-type help messages in mind, as the standard
address@hidden option is handled automatically by argp.  Typical error
-cases can be handled using @code{argp_usage} and @code{argp_error}
-(@pxref{Argp Helper Functions}).  However, if it's desirable to print
-a help message in some context other than parsing the program options,
-argp offers the @code{argp_help} interface.
-
address@hidden argp.h
address@hidden GNU
address@hidden void argp_help (const struct argp address@hidden, FILE 
address@hidden, unsigned @var{flags}, char address@hidden)
-This outputs a help message for the argp parser @var{argp} to
address@hidden  The type of messages printed will be determined by
address@hidden
-
-Any options such as @samp{--help} that are implemented automatically
-by argp itself will @emph{not} be present in the help output; for this
-reason it is best to use @code{argp_state_help} if calling from within
-an argp parser function (@pxref{Argp Helper Functions}).
address@hidden deftypefun
-
address@hidden Argp Help Flags, , , Argp Help
address@hidden Flags for the @code{argp_help} Function
-
-When calling @code{argp_help} (@pxref{Argp Help}) or
address@hidden (@pxref{Argp Helper Functions}) the exact output
-is determined by the @var{flags} argument.  This should consist of any of
-the following flags, or'd together:
-
address@hidden @code
address@hidden ARGP_HELP_USAGE
-This is a Unix @samp{Usage:} message that explicitly lists all
-options.
-
address@hidden ARGP_HELP_SHORT_USAGE
-This is a Unix @samp{Usage:} message that displays an appropriate
-placeholder to indicate where the options go; useful for showing the
-non-option argument syntax.
-
address@hidden ARGP_HELP_SEE
-This is a @samp{Try @dots{} for more help} message; @address@hidden contains 
the
-program name and @samp{--help}.
-
address@hidden ARGP_HELP_LONG
-This is a verbose option help message that gives each option available along
-with its documentation string.
-
address@hidden ARGP_HELP_PRE_DOC
-This is the part of the argp parser doc string preceding the verbose option 
help.
-
address@hidden ARGP_HELP_POST_DOC
-This is the part of the argp parser doc string following the verbose
-option help.
-
address@hidden ARGP_HELP_DOC
address@hidden(ARGP_HELP_PRE_DOC | ARGP_HELP_POST_DOC)}
-
address@hidden ARGP_HELP_BUG_ADDR
-This is a message that prints where to report bugs for this program, if the
address@hidden variable contains this information.
-
address@hidden ARGP_HELP_LONG_ONLY
-This will modify any output to reflect the @code{ARGP_LONG_ONLY} mode.
address@hidden vtable
-
-The following flags are only understood when used with
address@hidden  They control whether the function returns after
-printing its output, or terminates the program:
-
address@hidden @code
address@hidden ARGP_HELP_EXIT_ERR
-This will terminate the program with @code{exit (argp_err_exit_status)}.
-
address@hidden ARGP_HELP_EXIT_OK
-This will terminate the program with @code{exit (0)}.
address@hidden vtable
-
-The following flags are combinations of the basic flags for printing
-standard messages:
-
address@hidden @code
address@hidden ARGP_HELP_STD_ERR
-Assuming that an error message for a parsing error has printed, this
-prints a message on how to get help, and terminates the program with an
-error.
-
address@hidden ARGP_HELP_STD_USAGE
-This prints a standard usage message and terminates the program with an
-error.  This is used when no other specific error messages are
-appropriate or available.
-
address@hidden ARGP_HELP_STD_HELP
-This prints the standard response for a @samp{--help} option, and
-terminates the program successfully.
address@hidden vtable
-
address@hidden Argp Examples, Argp User Customization, Argp Help, Argp
address@hidden Argp Examples
-
-These example programs demonstrate the basic usage of argp.
-
address@hidden Argp Example 1, Argp Example 2, , Argp Examples
address@hidden A Minimal Program Using Argp
-
-This is perhaps the smallest program possible that uses argp.  It won't
-do much except give an error messages and exit when there are any
-arguments, and prints a rather pointless message for @samp{--help}.
-
address@hidden
-/* @r{Argp Example 1---a minimal program using argp} */
-
-/* @r{This is (probably) the smallest possible program that
-   uses argp.  It won't do much except give an error
-   message and exit when there are any arguments, and print
-   a (rather pointless) message for --help.} */
-
-#include <argp.h>
-
-int main (int argc, char **argv)
address@hidden
-  argp_parse (0, argc, argv, 0, 0, 0);
-  exit (0);
address@hidden
-
address@hidden smallexample
-
address@hidden Argp Example 2, Argp Example 3, Argp Example 1, Argp Examples
address@hidden A Program Using Argp with Only Default Options
-
-This program doesn't use any options or arguments; it uses argp to be
-compliant with the @sc{gnu} standard command-line format.
-
-In addition to giving no arguments and implementing a @samp{--help}
-option, this example has a @samp{--version} option, which will put the
-given documentation string and bug address in the @samp{--help} output,
-as per @sc{gnu} standards.
-
-The variable @code{argp} contains the argument parser
-specification.  Adding fields to this structure is the way most
-parameters are passed to @code{argp_parse}.  The first three fields are
-normally used, but they are not in this small program.  There are also
-two global variables that argp can use defined here,
address@hidden and @code{argp_program_bug_address}.  They
-are considered global variables because they will almost always be
-constant for a given program, even if they use different argument
-parsers for various tasks.
-
address@hidden
-/* @r{Argp Example 2---a pretty minimal program using argp} */
-
-/* @r{This program doesn't use any options or arguments, but uses
-   argp to be compliant with the GNU standard command-line
-   format.
-
-   In addition to making sure no arguments are given, and
-   implementing a --help option, this example will have a
-   --version option, and will put the given documentation string
-   and bug address in the --help output, as per GNU standards.
-
-   The variable ARGP contains the argument parser specification;
-   adding fields to this structure is the way most parameters are
-   passed to argp_parse (the first three fields are usually used,
-   but not in this small program).  There are also two global
-   variables that argp knows about defined here,
-   ARGP_PROGRAM_VERSION and ARGP_PROGRAM_BUG_ADDRESS (they are
-   global variables because they will almost always be constant
-   for a given program, even if it uses different argument
-   parsers for various tasks).} */
-
-#include <argp.h>
-
-const char *argp_program_version =
-  "argp-ex2 1.0";
-const char *argp_program_bug_address =
-  "<bug-gnu-utils@@gnu.org>";
-
-/* @r{Program documentation} */
-static char doc[] =
-  "Argp Example 2---a pretty minimal program using argp";
-
-/* @r{This is our argument parser.  The @code{options}, @code{parser}, and
-   @code{args_doc} fields are zero because we have neither options nor
-   arguments; @code{doc} and @code{argp_program_bug_address} will be
-   used in the output for @samp{--help}, and the @samp{--version}
-   option will print out @code{argp_program_version}.} */
-static struct argp argp = @{ 0, 0, 0, doc @};
-
-int main (int argc, char **argv)
address@hidden
-  argp_parse (&argp, argc, argv, 0, 0, 0);
-  exit (0);
address@hidden
-
address@hidden smallexample
-
address@hidden Argp Example 3, Argp Example 4, Argp Example 2, Argp Examples
address@hidden A Program Using Argp with User Options
-
-This program uses the same features as Example 2, adding user options
-and arguments.
-
-We now use the first four fields in @code{argp} (@pxref{Argp Parsers})
-and specify @code{parse_opt} as the parser function (@pxref{Argp
-Parser Functions}).
-
-In this example, @code{main} uses a structure to communicate with the
address@hidden function, a pointer to which it passes in the
address@hidden argument to @code{argp_parse} (@pxref{Argp}).  It is
-retrieved by @code{parse_opt} through the @code{input} field in its
address@hidden argument (@pxref{Argp Parsing State}).  Of course, it's
-also possible to use global variables instead, but using a structure
-like this is somewhat more flexible and clean.
-
address@hidden
-/* @r{Argp Example 3---a program with options and arguments using argp} */
-
-/* @r{This program uses the same features as Example 2, and uses options and
-   arguments.
-
-   We now use the first four fields in ARGP, so here's a description of them:
-     OPTIONS: A pointer to a vector of struct argp_option (see below)
-     PARSER: A function to parse a single option, called by argp
-     ARGS_DOC: A string describing how the non-option arguments should look
-     DOC: A descriptive string about this program; if it contains a
-                 vertical tab character (\v), the part after it will be
-                 printed *following* the options.
-
-   The function PARSER takes the following arguments:
-     KEY: An integer specifying which option this is (taken
-          from the KEY field in each struct argp_option), or
-          a special key specifying something else; the only
-          special keys we use here are ARGP_KEY_ARG, meaning
-          a non-option argument, and ARGP_KEY_END, meaning
-          that all arguments have been parsed
-     ARG: For an option KEY, the string value of its
-          argument, or NULL if it has none
-     STATE: A pointer to a struct argp_state, containing
-            various useful information about the parsing state; used here
-            are the INPUT field, which reflects the INPUT argument to
-            argp_parse, and the ARG_NUM field, which is the number of the
-            current non-option argument being parsed
-   It should return either 0, meaning success, ARGP_ERR_UNKNOWN, meaning the
-   given KEY wasn't recognized, or an errno value indicating some other
-   error.
-   
-   The OPTIONS field contains a pointer to a vector of struct argp_option's;
-   that structure has the following fields (if you assign your option
-   structures using array initialization like this example, unspecified
-   fields will be defaulted to 0, and need not be specified):
-     NAME: The name of this option's long option (may be zero)
-     KEY: The KEY to pass to the PARSER function when parsing this option,
-          *and* the name of this option's short option, if it is a
-          printable ASCII character
-     ARG: The name of this option's argument, if any
-     FLAGS: Flags describing this option; some of them are:
-                 OPTION_ARG_OPTIONAL: The argument to this option is optional
-                 OPTION_ALIAS: This option is an alias for the
-                               previous option
-                 OPTION_HIDDEN: Don't show this option in --help output
-     DOC: A documentation string for this option, shown in --help output
-
-   An options vector should be terminated by an option with all fields zero.} 
*/
-
-#include <argp.h>
-
-const char *argp_program_version =
-  "argp-ex3 1.0";
-const char *argp_program_bug_address =
-  "<bug-gnu-utils@@gnu.org>";
-
-/* @r{Program documentation} */
-static char doc[] =
-  "Argp Example 3---a program with options and arguments using argp";
-
-/* @r{A description of the arguments we accept} */
-static char args_doc[] = "ARG1 ARG2";
-
-/* @r{The options we understand} */
-static struct argp_option options[] = @{
-  @{"verbose",  'v', 0,      0,  "Produce verbose output" @},
-  @{"quiet",    'q', 0,      0,  "Don't produce any output" @},
-  @{"silent",   's', 0,      OPTION_ALIAS @},
-  @{"output",   'o', "FILE", 0,
-   "Output to FILE instead of standard output" @},
-  @{ 0 @}
address@hidden;
-
-/* @r{Used by @code{main} to communicate with @code{parse_opt}} */
-struct arguments
address@hidden
-  char *args[2];                /* @address@hidden & @var{arg2}} */
-  int silent, verbose;
-  char *output_file;
address@hidden;
-
-/* @r{Parse a single option.} */
-static error_t
-parse_opt (int key, char *arg, struct argp_state *state)
address@hidden
-  /* @r{Get the @var{input} argument from @code{argp_parse}, which we
-     know is a pointer to our arguments structure.} */
-  struct arguments *arguments = state->input;
-
-  switch (key)
-    @{
-    case 'q': case 's':
-      arguments->silent = 1;
-      break;
-    case 'v':
-      arguments->verbose = 1;
-      break;
-    case 'o':
-      arguments->output_file = arg;
-      break;
-
-    case ARGP_KEY_ARG:
-      if (state->arg_num >= 2)
-        /* @r{Too many arguments} */
-        argp_usage (state);
-
-      arguments->args[state->arg_num] = arg;
-
-      break;
-
-    case ARGP_KEY_END:
-      if (state->arg_num < 2)
-        /* @r{Not enough arguments} */
-        argp_usage (state);
-      break;
-
-    default:
-      return ARGP_ERR_UNKNOWN;
-    @}
-  return 0;
address@hidden
-
-/* @r{Our argp parser} */
-static struct argp argp = @{ options, parse_opt, args_doc, doc @};
-
-int main (int argc, char **argv)
address@hidden
-  struct arguments arguments;
-
-  /* @r{Default values} */
-  arguments.silent = 0;
-  arguments.verbose = 0;
-  arguments.output_file = "-";
-
-  /* @r{Parse our arguments; every option seen by @code{parse_opt} will
-     be reflected in @code{arguments}.} */
-  argp_parse (&argp, argc, argv, 0, 0, &arguments);
-
-  printf ("ARG1 = %s\nARG2 = %s\nOUTPUT_FILE = %s\n"
-          "VERBOSE = %s\nSILENT = %s\n",
-          arguments.args[0], arguments.args[1],
-          arguments.output_file,
-          arguments.verbose ? "yes" : "no",
-          arguments.silent ? "yes" : "no");
-
-  exit (0);
address@hidden
-
address@hidden smallexample
-
address@hidden Argp Example 4, , Argp Example 3, Argp Examples
address@hidden A Program Using Multiple Combined Argp Parsers
-
-This program uses the same features as Example 3, but it has more
-options and presents more structure in the @samp{--help} output.  It
-also illustrates how you can ``steal'' the remainder of the input
-arguments past a certain point for programs that accept a list of
-items.  It also illustrates the @var{key} value
address@hidden, which is only given if no non-option
-arguments were supplied to the program (@pxref{Argp Special Keys}).
-
-For structuring help output, two features are used: @dfn{headers} and
-a two-part option string.  The @dfn{headers} are entries in the
-options vector (@pxref{Argp Option Vectors}).  The first four fields
-are zero.  The two-part documentation string is in the variable
address@hidden, which allows documentation both before and after the
-options (@pxref{Argp Parsers}).  The two parts of @code{doc} are
-separated by a vertical-tab character (@code{'\v'}, or @code{'\013'}).
-By convention, the documentation before the options is a short string
-stating what the program does.  After any options, it is longer,
-describing the behavior in more detail.  All documentation strings are
-automatically filled for output, although newlines may be included to
-force a line break at a particular point.  In addition, documentation
-strings are passed to the @code{gettext} function, for possible
-translation into the current locale.
-
address@hidden
-/* @r{Argp Example 4---a program with somewhat more complicated options} */
-
-/* @r{This program uses the same features as Example 3, but it has more
-   options and somewhat more structure in the --help output.  It
-   also shows how you can ``steal'' the remainder of the input
-   arguments past a certain point, for programs that accept a
-   list of items.  It also shows the special argp KEY value
-   ARGP_KEY_NO_ARGS, which is only given if no non-option
-   arguments were supplied to the program.
-
-   For structuring the help output, two features are used:
-   *headers*, which are entries in the options vector with the
-   first four fields being zero, and a two-part documentation
-   string (in the variable DOC), which allows documentation both
-   before and after the options; the two parts of DOC are
-   separated by a vertical-tab character ('\v', or '\013').  By
-   convention, the documentation before the options is just a
-   short string saying what the program does, and afterwards it
-   is longer, describing the behavior in more detail.  All
-   documentation strings are automatically filled for output,
-   although newlines may be included to force a line break at a
-   particular point.  All documentation strings are also passed to
-   the `gettext' function, for possible translation into the
-   current locale.} */
-
-#include <stdlib.h>
-#include <error.h>
-#include <argp.h>
-
-const char *argp_program_version =
-  "argp-ex4 1.0";
-const char *argp_program_bug_address =
-  "<bug-gnu-utils@@prep.ai.mit.edu>";
-
-/* @r{Program documentation} */
-static char doc[] =
-  "Argp Example 4---a program with somewhat more complicated\
-options\
-\vThis part of the documentation comes *after* the options;\
- note that the text is automatically filled, but it's possible\
- to force a line-break, e.g.\n<-- here.";
-
-/* @r{A description of the arguments we accept} */
-static char args_doc[] = "ARG1 [STRING...]";
-
-/* @r{Keys for options without short options} */
-#define OPT_ABORT  1            /* @r{--abort} */
-
-/* @r{The options we understand} */
-static struct argp_option options[] = @{
-  @{"verbose",  'v', 0,       0, "Produce verbose output" @},
-  @{"quiet",    'q', 0,       0, "Don't produce any output" @},
-  @{"silent",   's', 0,       OPTION_ALIAS @},
-  @{"output",   'o', "FILE",  0,
-   "Output to FILE instead of standard output" @},
-
-  @{0,0,0,0, "The following options should be grouped together:" @},
-  @{"repeat",   'r', "COUNT", OPTION_ARG_OPTIONAL,
-   "Repeat the output COUNT (default 10) times"@},
-  @{"abort",    OPT_ABORT, 0, 0, "Abort before showing any output"@},
-
-  @{ 0 @}
address@hidden;
-
-/* @r{Used by @code{main} to communicate with @code{parse_opt}.} */
-struct arguments
address@hidden
-  char *arg1;                   /* @address@hidden */
-  char **strings;               /* @address@hidden@dots{}]} */
-  int silent, verbose, abort;   /* @address@hidden, @samp{-v}, @samp{--abort}} 
*/
-  char *output_file;            /* @address@hidden arg to @samp{--output}} */
-  int repeat_count;             /* @address@hidden arg to @samp{--repeat}} */
address@hidden;
-
-/* @r{Parse a single option.} */
-static error_t
-parse_opt (int key, char *arg, struct argp_state *state)
address@hidden
-  /* @r{Get the @code{input} argument from @code{argp_parse}, which we
-     know is a pointer to our arguments structure.} */
-  struct arguments *arguments = state->input;
-
-  switch (key)
-    @{
-    case 'q': case 's':
-      arguments->silent = 1;
-      break;
-    case 'v':
-      arguments->verbose = 1;
-      break;
-    case 'o':
-      arguments->output_file = arg;
-      break;
-    case 'r':
-      arguments->repeat_count = arg ? atoi (arg) : 10;
-      break;
-    case OPT_ABORT:
-      arguments->abort = 1;
-      break;
-
-    case ARGP_KEY_NO_ARGS:
-      argp_usage (state);
-
-    case ARGP_KEY_ARG:
-      /* @r{Here we know that @code{state->arg_num == 0}, since we
-         force argument parsing to end before any more arguments can
-         get here.} */
-      arguments->arg1 = arg;
-
-      /* @r{Now we consume all the rest of the arguments.
-         @code{state->next} is the index in @code{state->argv} of the
-         next argument to be parsed, which is the first @var{string}
-         we're interested in, so we can just use
-         @code{&state->argv[state->next]} as the value for
-         arguments->strings.
-
-         @emph{In addition}, by setting @code{state->next} to the end
-         of the arguments, we can force argp to stop parsing here and
-         return.} */
-      arguments->strings = &state->argv[state->next];
-      state->next = state->argc;
-
-      break;
-
-    default:
-      return ARGP_ERR_UNKNOWN;
-    @}
-  return 0;
address@hidden
-
-/* @r{Our argp parser} */
-static struct argp argp = @{ options, parse_opt, args_doc, doc @};
-
-int main (int argc, char **argv)
address@hidden
-  int i, j;
-  struct arguments arguments;
-
-  /* @r{Default values} */
-  arguments.silent = 0;
-  arguments.verbose = 0;
-  arguments.output_file = "-";
-  arguments.repeat_count = 1;
-  arguments.abort = 0;
-
-  /* @r{Parse our arguments; every option seen by @code{parse_opt} will be
-     reflected in @code{arguments}.} */
-  argp_parse (&argp, argc, argv, 0, 0, &arguments);
-
-  if (arguments.abort)
-    error (10, 0, "ABORTED");
-
-  for (i = 0; i < arguments.repeat_count; i++)
-    @{
-      printf ("ARG1 = %s\n", arguments.arg1);
-      printf ("STRINGS = ");
-      for (j = 0; arguments.strings[j]; j++)
-        printf (j == 0 ? "%s" : ", %s", arguments.strings[j]);
-      printf ("\n");
-      printf ("OUTPUT_FILE = %s\nVERBOSE = %s\nSILENT = %s\n",
-              arguments.output_file,
-              arguments.verbose ? "yes" : "no",
-              arguments.silent ? "yes" : "no");
-    @}
-
-  exit (0);
address@hidden
-
address@hidden smallexample
-
address@hidden Argp User Customization, , Argp Examples, Argp
address@hidden Argp User Customization
-
address@hidden ARGP_HELP_FMT environment variable
-The formatting of argp @samp{--help} output may be controlled to some
-extent by a program's users, by setting the @code{ARGP_HELP_FMT}
-environment variable to a comma-separated list of tokens.  White space is
-ignored:
-
address@hidden @samp
address@hidden dup-args
address@hidden no-dup-args
-These turn @dfn{duplicate-argument-mode} on or off.  In duplicate
-argument mode, if an option that accepts an argument has multiple names,
-the argument is shown for each name.  Otherwise, it is only shown for the
-first long option.  A note is subsequently printed so the user knows that
-it applies to other names as well.  The default is @samp{no-dup-args},
-which is less consistent, but prettier.
-
address@hidden dup-args-note
address@hidden no-dup-args-note
-These will enable or disable the note informing the user of suppressed
-option argument duplication.  The default is @samp{dup-args-note}.
-
address@hidden address@hidden
-This prints the first short option in column @var{n}.  The default is 2.
-
address@hidden address@hidden
-This prints the first long option in column @var{n}.  The default is 6.
-
address@hidden address@hidden
-This prints `documentation options' (@pxref{Argp Option Flags}) in
-column @var{n}.  The default is 2.
-
address@hidden address@hidden
-This prints the documentation for options starting in column
address@hidden  The default is 29.
-
address@hidden address@hidden
-This will indent the group headers that document groups of options to
-column @var{n}.  The default is 1.
-
address@hidden address@hidden
-This will indent continuation lines in @samp{Usage:} messages to column
address@hidden  The default is 12.
-
address@hidden address@hidden
-This will word wrap help output at or before column @var{n}.  The default
-is 79.
address@hidden table
-
-
address@hidden Suboptions, Suboptions Example, Argp, Parsing Program Arguments
address@hidden This is a @section so that it's at the same level as getopt and 
argp
address@hidden Parsing of Suboptions
-
-Having a single level of options is sometimes not enough.  There might
-be too many options that have to be available or a set of options that
-are closely related.
-
-For these cases, some programs use suboptions.  One of the most
-prominent programs is certainly @code{mount}(8).  The @code{-o} option
-takes one argument, which itself is a comma-separated list of options.
-To ease the programming of code like this, the function
address@hidden is available.
-
address@hidden stdlib.h
address@hidden int getsubopt (char address@hidden, const char* const 
address@hidden, char address@hidden)
-
-The @var{optionp} parameter must be a pointer to a variable containing
-the address of the string to process.  When the function returns, the
-reference is updated to point to the next suboption or to the
-terminating @samp{\0} character if there are no more suboptions
-available.
-
-The @var{tokens} parameter references an array of strings containing
-the known suboptions.  All strings must be @samp{\0} terminated and,
-to mark the end, a null pointer must be stored.  When @code{getsubopt}
-finds a possible legal suboption, it compares it with all strings
-available in the @var{tokens} array and returns the index in the
-string as the indicator.
-
-In case the suboption has an associated value introduced by an
address@hidden character, a pointer to the value is returned in
address@hidden  The string is @samp{\0} terminated.  If no argument is
-available, @var{valuep} is set to the null pointer.  By doing this,
-the caller can check whether a necessary value is given or whether no
-unexpected value is present.
-
-In case the next suboption in the string is not mentioned in the
address@hidden array, the starting address of the suboption including a
-possible value is returned in @var{valuep}, and the return value of
-the function is @samp{-1}.
address@hidden deftypefun
-
address@hidden Suboptions Example, , Suboptions, Parsing Program Arguments
address@hidden Parsing of Suboptions Example
-
-The code that might appear in the @code{mount}(8) program is a perfect
-example of the use of @code{getsubopt}:
-
address@hidden
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-int do_all;
-const char *type;
-int read_size;
-int write_size;
-int read_only;
-
-enum
address@hidden
-  RO_OPTION = 0,
-  RW_OPTION,
-  READ_SIZE_OPTION,
-  WRITE_SIZE_OPTION,
-  THE_END
address@hidden;
-
-const char *mount_opts[] =
address@hidden
-  [RO_OPTION] = "ro",
-  [RW_OPTION] = "rw",
-  [READ_SIZE_OPTION] = "rsize",
-  [WRITE_SIZE_OPTION] = "wsize",
-  [THE_END] = NULL
address@hidden;
-
-int
-main (int argc, char *argv[])
address@hidden
-  char *subopts, *value;
-  int opt;
-
-  while ((opt = getopt (argc, argv, "at:o:")) != -1)
-    switch (opt)
-      @{
-      case 'a':
-        do_all = 1;
-        break;
-      case 't':
-        type = optarg;
-        break;
-      case 'o':
-        subopts = optarg;
-        while (*subopts != '\0')
-          switch (getsubopt (&subopts, mount_opts, &value))
-            @{
-            case RO_OPTION:
-              read_only = 1;
-              break;
-            case RW_OPTION:
-              read_only = 0;
-              break;
-            case READ_SIZE_OPTION:
-              if (value == NULL)
-                abort ();
-              read_size = atoi (value);
-              break;
-            case WRITE_SIZE_OPTION:
-              if (value == NULL)
-                abort ();
-              write_size = atoi (value);
-              break;
-            default:
-              /* @r{Unknown suboption} */
-              printf ("Unknown suboption `%s'\n", value);
-              break;
-            @}
-        break;
-      default:
-        abort ();
-      @}
-
-  /* @r{Do the real work.} */
-
-  return 0;
address@hidden
-
address@hidden smallexample
-
-
address@hidden Environment Variables
address@hidden Environment Variables
-
address@hidden environment variable
-When a program is executed, it receives information about the context in
-which it was invoked in two ways.  The first mechanism uses the
address@hidden and @var{argc} arguments to its @code{main} function, and is
-discussed in @ref{Program Arguments}.  The second mechanism uses
address@hidden variables} and is discussed in this section.
-
-The @var{argv} mechanism is typically used to pass command-line
-arguments specific to the particular program being invoked.  The
-environment, on the other hand, keeps track of information that is
-shared by many programs, changes infrequently and is less frequently
-used.
-
-The environment variables discussed in this section are the same
-environment variables that you set using assignments and the
address@hidden command in the shell.  Programs executed from the shell
-inherit all of the environment variables from the shell.
address@hidden !!! xref to right part of bash manual when it exists
-
address@hidden environment
-Standard environment variables are used for information about the
-user's home directory, terminal type, current locale and so on; you
-can define additional variables for other purposes.  The set of all
-environment variables that have values is collectively known as the
address@hidden
-
-Names of environment variables are case-sensitive and must not contain
-the character @samp{=}.  System-defined environment variables are
-invariably uppercase.
-
-The values of environment variables can be anything that can be
-represented as a string.  A value must not contain an embedded null
-character, since this is assumed to terminate the string.
-
address@hidden Environment Access
address@hidden Environment Access
address@hidden environment access
address@hidden environment representation
-
-The value of an environment variable can be accessed with the
address@hidden function.  This is declared in the header file
address@hidden  All of the following functions can be safely used in
-multithreaded programs.  It is ensured that concurrent modifications
-to the environment do not lead to errors.
address@hidden stdlib.h
-
address@hidden stdlib.h
address@hidden ISO
address@hidden {char *} getenv (const char address@hidden)
-This function returns a string that is the value of the environment
-variable @var{name}.  You must not modify this string.  In some non-Unix
-systems not using the @sc{gnu} library, it might be overwritten by subsequent
-calls to @code{getenv} (but not by any other library function).  If the
-environment variable @var{name} is not defined, the value is a null
-pointer.
address@hidden deftypefun
-
-
address@hidden stdlib.h
address@hidden SVID
address@hidden int putenv (char address@hidden)
-The @code{putenv} function adds or removes definitions from the environment.
-If the @var{string} is of the form @address@hidden@var{value}}, the
-definition is added to the environment.  Otherwise, the @var{string} is
-interpreted as the name of an environment variable, and any definition
-for this variable in the environment is removed.
-
-The difference to the @code{setenv} function is that the exact string
-given as the parameter @var{string} is put into the environment.  If
-the user should change the string after the @code{putenv} call, this
-will reflect automatically in the environment.  This also requires
-that @var{string} not be an automatic variable that could be deleted
-or could fall out of scope before the variable is removed from the
-environment.  The same applies to dynamically allocated variables that
-are freed later.
-
-This function is part of the extended Unix interface.  Since it was
-also available in old @sc{svid} libraries, you should define either
address@hidden or @var{_SVID_SOURCE} before including any header.
address@hidden deftypefun
-
-
address@hidden stdlib.h
address@hidden BSD
address@hidden int setenv (const char address@hidden, const char 
address@hidden, int @var{replace})
-The @code{setenv} function can be used to add a new definition to the
-environment.  The entry with the name @var{name} is replaced by the
-value @address@hidden@var{value}}.  This is also true if @var{value}
-is the empty string.  To do this, a new string is created and the
-string's @var{name} and @var{value} are copied.  A null pointer for
-the @var{value} parameter is illegal.  If the environment already
-contains an entry with key @var{name}, then the @var{replace}
-parameter controls the action.  If replace is zero, nothing happens.
-Otherwise, the old entry is replaced by the new one.
-
-You cannot remove an entry completely using this function.
-
-This function was originally part of the @sc{bsd} library, but is now
-part of the Unix standard.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden BSD
address@hidden int unsetenv (const char address@hidden)
-Using this function, you can remove an entry completely from the
-environment.  If the environment contains an entry with the key
address@hidden, this whole entry is removed.  A call to this function is
-equivalent to a call to @code{putenv} when the @var{value} part of the
-string is empty.
-
-The function returns @code{-1} if @var{name} is a null pointer, points
-to an empty string, or points to a string containing an @samp{=}
-character.  It returns @code{0} if the call succeeded.
-
-This function was originally part of the @sc{bsd} library but is now part of
-the Unix standard.  The @sc{bsd} version had no return value, though.
address@hidden deftypefun
-
-There is one more function to modify the whole environment.  This
-function is said to be used in the @sc{posix}.9 (@sc{posix} bindings
-for Fortran 77) and so one would expect it to have made it to
address@hidden  But this never happened.  We still provide this
-function as a @sc{gnu} extension to enable writing standard compliant
-Fortran environments.
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int clearenv (void)
-The @code{clearenv} function removes all entries from the environment.
-Using @code{putenv} and @code{setenv}, new entries can be added again
-later.
-
-If the function is successful, it returns @code{0}.  Otherwise, the
-return value is nonzero.
address@hidden deftypefun
-
-
-You can deal directly with the underlying representation of
-environment objects to add more variables to the environment (for
-example, to communicate with another program you are about to
-execute)address@hidden, ``Executing a File''.}
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden {char **} environ
-The environment is represented as an array of strings.  Each string is
-of the format @address@hidden@var{value}}.  The order in which
-strings appear in the environment is not significant, but the same
address@hidden must not appear more than once.  The last element of the
-array is a null pointer.
-
-This variable is declared in the header file @file{unistd.h}.
-
-If you just want to get the value of an environment variable, use
address@hidden
address@hidden deftypevar
-
-Unix systems and the @sc{gnu} system pass the initial value of
address@hidden as the third argument to @code{main} (@pxref{Program
-Arguments}).
-
address@hidden Standard Environment
address@hidden Standard Environment Variables
address@hidden standard environment variables
-
-These environment variables have standard meanings.  This doesn't mean
-that they are always present in the environment; but if these variables
address@hidden present, they have these meanings.  You shouldn't try to use
-these environment variable names for some other purpose.
-
address@hidden Extra blank lines make it look better.
address@hidden @code
address@hidden HOME
address@hidden @code{HOME} environment variable
address@hidden home directory
-
-This is a string representing the user's @dfn{home directory} or
-initial default working directory.
-
-The user can set @code{HOME} to any value.
-If you need to make sure to obtain the proper home directory
-for a particular user, you should not use @code{HOME}; instead,
-look up the user's name in the user address@hidden, ``User Database''.}
-
-For most purposes, it is better to use @code{HOME}, precisely because
-this lets the user specify the value.
-
address@hidden !!! also USER
address@hidden LOGNAME
address@hidden @code{LOGNAME} environment variable
-
-This is the name that the user used to log in.  Since the value in the
-environment can be tweaked arbitrarily, this is not a reliable way to
-identify the user who is running a program; a function like
address@hidden is better for that address@hidden, ``Identifying Who
-Logged In''.}
-
-For most purposes, it is better to use @code{LOGNAME}, precisely because
-this lets the user specify the value.
-
address@hidden PATH
address@hidden @code{PATH} environment variable
-
-A @dfn{path} is a sequence of directory names that is used for
-searching for a file.  The variable @code{PATH} holds a path used for
-searching for programs to be run.
-
-The @code{execlp} and @code{execvp} address@hidden,
-``Executing a File''.} use this environment variable, as do many
-shells and other utilities that are implemented in terms of those
-functions.
-
-The syntax of a path is a sequence of directory names separated by
-colons.  An empty string instead of a directory name stands for the
-current address@hidden, ``Working Directory''.}
-
-A typical value for this environment variable might be a string like:
-
address@hidden
-:/bin:/etc:/usr/bin:/usr/new/X11:/usr/new:/usr/local/bin
address@hidden smallexample
-
-This means that if the user tries to execute a program named
address@hidden, the system will look for files named @file{foo},
address@hidden/bin/foo}, @file{/etc/foo} and so on.  The first of these files
-that exists is the one that is executed.
-
address@hidden !!! also TERMCAP
address@hidden TERM
address@hidden @code{TERM} environment variable
-
-This specifies the kind of terminal that is receiving program output.
-Some programs can make use of this information to take advantage of
-special escape sequences or terminal modes supported by particular
-kinds of terminals.  Many programs that use the termcap
address@hidden Richard M. Stallman, ``Finding a Terminal
-Description: tgetent'' in @emph{The Termcap Manual: The Termcap
-Library and Data Base}, 2nd ed. (Boston, MA: GNU Press, December
-1992), @uref{http:// www.gnu.org/ software/ termutils/ manual/
-termcap-1.3/ termcap.html}.}  use the @code{TERM} environment
-variable, for example.
-
address@hidden TZ
address@hidden @code{TZ} environment variable
-
-This specifies the time zone.  @xref{TZ Variable}, for information about
-the format of this string and how it is used.
-
address@hidden LANG
address@hidden @code{LANG} environment variable
-
-This specifies the default locale to use for attribute categories where
-neither @code{LC_ALL} nor the specific environment variable for that
-category is set.  @xref{Locales}, for more information about
-locales.
-
address@hidden
address@hidden I doubt this really exists
address@hidden LC_ALL
address@hidden @code{LC_ALL} environment variable
-
-This is similar to the @code{LANG} environment variable.  However, its
-value takes precedence over any values provided for the individual
-attribute category environment variables, or for the @code{LANG}
-environment variable.
address@hidden ignore
-
address@hidden LC_ALL
address@hidden @code{LC_ALL} environment variable
-
-If this environment variable is set, it overrides the selection for
-all the locales done using the other @code{LC_*} environment
-variables.  The value of the other @code{LC_*} environment variables
-is simply ignored in this case.
-
address@hidden LC_COLLATE
address@hidden @code{LC_COLLATE} environment variable
-
-This specifies what locale to use for string sorting.
-
address@hidden LC_CTYPE
address@hidden @code{LC_CTYPE} environment variable
-
-This specifies what locale to use for character sets and character
-classification.
-
address@hidden LC_MESSAGES
address@hidden @code{LC_MESSAGES} environment variable
-
-This specifies what locale to use for printing messages and parsing
-responses.
-
address@hidden LC_MONETARY
address@hidden @code{LC_MONETARY} environment variable
-
-This specifies what locale to use for formatting monetary values.
-
address@hidden LC_NUMERIC
address@hidden @code{LC_NUMERIC} environment variable
-
-This specifies what locale to use for formatting numbers.
-
address@hidden LC_TIME
address@hidden @code{LC_TIME} environment variable
-
-This specifies what locale to use for formatting date and time values.
-
address@hidden NLSPATH
address@hidden @code{NLSPATH} environment variable
-
-This specifies the directories in which the @code{catopen} function
-looks for message translation catalogs.
-
address@hidden _POSIX_OPTION_ORDER
address@hidden @code{_POSIX_OPTION_ORDER} environment variable.
-
-If this environment variable is defined, it suppresses the usual
-reordering of command-line arguments by @code{getopt} and
address@hidden (@pxref{Argument Syntax}).
-
address@hidden !!! GNU also has COREFILE, CORESERVER, EXECSERVERS
address@hidden table
-
address@hidden System Calls
address@hidden System Calls
-
address@hidden system call
-A system call is a request for service that a program makes of the
-kernel.  The service is generally something that only the kernel has
-the privilege to do, such as doing I/O.  Programmers don't normally
-need to be concerned with system calls because there are functions in
-the @sc{gnu} C Library to do virtually everything that system calls do.
-These functions work by making system calls themselves.  For example,
-there is a system call that changes the permissions of a file, but
-you don't need to know about it because you can just use the @sc{gnu} C
-Library's @code{chmod} function.
-
address@hidden kernel call
-System calls are sometimes called kernel calls.
-
-However, there are times when you want to make a system call explicitly,
-and for that, the @sc{gnu} C Library provides the @code{syscall} function.
address@hidden is harder to use and less portable than functions like
address@hidden, but easier and more portable than coding the system call
-in assembler instructions.
-
address@hidden is most useful when you are working with a system call
-that is special to your system or is newer than the @sc{gnu} C Library
-you are using.  @code{syscall} is implemented in an entirely generic
-way; the function does not know anything about what a particular
-system call does or even if it is valid.
-
-The description of @code{syscall} in this section assumes a certain
-protocol for system calls on the various platforms on which the
address@hidden C Library runs.  That protocol is not defined by any strong
-authority, but we won't describe it here either, because anyone who is
-coding @code{syscall} probably won't accept anything less than kernel
-and C library source code as a specification of the interface between
-them anyway.
-
-
address@hidden is declared in @file{unistd.h}.
-
address@hidden unistd.h
address@hidden ???
address@hidden {long int} syscall (long int @var{sysno}, ...)
-
address@hidden performs a generic system call.
-
address@hidden system call number
address@hidden is the system call number.  Each kind of system call is
-identified by a number.  Macros for all the possible system call numbers
-are defined in @file{sys/syscall.h}
-
-The remaining arguments are the arguments for the system call, in
-order, and their meanings depend on the kind of system call.  Each kind
-of system call has a definite number of arguments, from zero to five.
-If you code more arguments than the system call takes, the extra ones to
-the right are ignored.
-
-The return value is the return value from the system call, unless the
-system call failed.  In that case, @code{syscall} returns @code{-1}
-and sets @code{errno} to an error code that the system call returned.
-System calls do not return @code{-1} when they succeed.
address@hidden errno
-
-If you specify an invalid @var{sysno}, @code{syscall} returns @code{-1}
-with @code{errno} = @code{ENOSYS}.
-
-Here is an example:
-
address@hidden
-
-#include <unistd.h>
-#include <sys/syscall.h>
-#include <errno.h>
-
address@hidden
-
-int rc;
-
-rc = syscall(SYS_chmod, "/etc/passwd", 0444);
-
-if (rc == -1)
-   fprintf(stderr, "chmod failed, errno = %d\n", errno);
-
address@hidden smallexample
-
-This, if all of the compatibility stars are aligned, is equivalent to
-the following preferable code:
-
address@hidden
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h>
-
address@hidden
-
-int rc;
-
-rc = chmod("/etc/passwd", 0444);
-if (rc == -1)
-   fprintf(stderr, "chmod failed, errno = %d\n", errno);
-
address@hidden smallexample
-
address@hidden deftypefun
-
-
address@hidden Program Termination
address@hidden Program Termination
address@hidden program termination
address@hidden process termination
-
address@hidden exit status value
-The usual way for a program to terminate is simply for its @code{main}
-function to return.  The @dfn{exit status value} returned from the
address@hidden function is used to report information back to the process's
-parent process or shell.
-
-A program can also terminate normally by calling the @code{exit}
-function.
-
-In addition, programs can be terminated by address@hidden,
-``Signal Handling''.}  The @code{abort} function causes a signal that
-kills the program.
-
address@hidden Normal Termination
address@hidden Normal Termination
-
-A process terminates normally when its program signals it is done by
-calling @code{exit}.  Returning from @code{main} is equivalent to
-calling @code{exit}, and the value that @code{main} returns is used as
-the argument to @code{exit}.
-
address@hidden stdlib.h
address@hidden ISO
address@hidden void exit (int @var{status})
-The @code{exit} function tells the system that the program is done, which
-causes it to terminate the process.
-
address@hidden is the program's exit status, which becomes part of the
-process's termination status.  This function does not return.
address@hidden deftypefun
-
-Normal termination causes the following actions:
-
address@hidden
address@hidden
-Functions that were registered with the @code{atexit} or @code{on_exit}
-functions are called in the reverse order of their registration.  This
-mechanism allows your application to specify its own ``clean-up'' actions
-to be performed at program termination.  Typically, this is used to do
-things like saving program state information in a file, or unlocking
-locks in shared data bases.
-
address@hidden
-All open streams are closed, writing out any buffered output data
-(@pxref{Closing Streams}).  In addition, temporary files opened with
-the @code{tmpfile} function are address@hidden, ``Temporary
-Files''.}
-
address@hidden
address@hidden is called, terminating the program (@pxref{Termination
-Internals}).
address@hidden enumerate
-
address@hidden Exit Status
address@hidden Exit Status
address@hidden exit status
-
-When a program exits, it can return to the parent process a small
-amount of information about the cause of termination, using the
address@hidden status}.  This is a value between 0 and 255 that the exiting
-process passes as an argument to @code{exit}.
-
-Normally, you should use the exit status to report very broad
-information about success or failure.  You can't provide a lot of
-detail about the reasons for the failure, and most parent processes
-would not want much detail anyway.
-
-There are conventions for what sorts of status values certain programs
-should return.  The most common convention is simply 0 for success and 1
-for failure.  Programs that perform comparison use a different
-convention: they use status 1 to indicate a mismatch, and status 2 to
-indicate an inability to compare.  Your program should follow an
-existing convention if an existing convention makes sense for it.
-
-A general convention reserves status values 128 and up for special
-purposes.  In particular, the value 128 is used to indicate failure to
-execute another program in a subprocess.  This convention is not
-universally obeyed, but it is a good idea to follow it in your programs.
-
address@hidden:} Don't try to use the number of errors as the exit
-status.  This is actually not very useful; a parent process would
-generally not care how many errors occurred.  Worse than that, it does
-not work, because the status value is truncated to 8 bits.  Thus, if
-the program tried to report 256 errors, the parent would receive a
-report of 0 errors---that is, success.
-
-For the same reason, it does not work to use the value of @code{errno}
-as the exit status---these can exceed 255.
-
address@hidden Note:} Some address@hidden systems use different
-conventions for exit status values.  For greater portability, you can
-use the macros @code{EXIT_SUCCESS} and @code{EXIT_FAILURE} for the
-conventional status value for success and failure, respectively.  They
-are declared in the file @file{stdlib.h}.
address@hidden stdlib.h
-
address@hidden stdlib.h
address@hidden ISO
address@hidden Macro int EXIT_SUCCESS
-This macro can be used with the @code{exit} function to indicate
-successful program completion.
-
-On @sc{posix} systems, the value of this macro is @code{0}.  On other
-systems, the value might be some other (possibly nonconstant) integer
-expression.
address@hidden deftypevr
-
address@hidden stdlib.h
address@hidden ISO
address@hidden Macro int EXIT_FAILURE
-This macro can be used with the @code{exit} function to indicate
-unsuccessful program completion in a general sense.
-
-On @sc{posix} systems, the value of this macro is @code{1}.  On other
-systems, the value might be some other (possibly nonconstant) integer
-expression.  Other nonzero status values also indicate failures.  Certain
-programs use different nonzero status values to indicate particular
-kinds of ``nonsuccess''.  For example, @code{diff} uses status value
address@hidden to mean that the files are different, and @code{2} or more to
-mean that there was difficulty in opening the files.
address@hidden deftypevr
-
-Don't confuse a program's exit status with a process's termination
-status.  There are lots of ways a process can terminate besides having
-its program finish.  In the event that the process termination
address@hidden caused by program termination (i.e., @code{exit}), though,
-the program's exit status becomes part of the process's termination
-status.
-
address@hidden Clean-Ups on Exit
address@hidden Clean-Ups on Exit
-
-Your program can arrange to run its own clean-up functions if normal
-termination happens.  If you are writing a library for use in various
-application programs, then it is unreliable to insist that all
-applications call the library's clean-up functions explicitly before
-exiting.  It is much more robust to make the clean-up invisible to the
-application, by setting up a clean-up function in the library itself
-using @code{atexit} or @code{on_exit}.
-
address@hidden stdlib.h
address@hidden ISO
address@hidden int atexit (void (address@hidden) (void))
-The @code{atexit} function registers the function @var{function} to be
-called at normal program termination.  The @var{function} is called with
-no arguments.
-
-The return value from @code{atexit} is zero on success and nonzero if
-the function cannot be registered.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden SunOS
address@hidden int on_exit (void (address@hidden)(int @var{status}, void 
address@hidden), void address@hidden)
-This function is a somewhat more powerful variant of @code{atexit}.
-It accepts two arguments: a function @var{function} and an arbitrary
-pointer @var{arg}.  At normal program termination, the @var{function}
-is called with two arguments: the @var{status} value passed to
address@hidden, and the @var{arg}.
-
-This function is included in the @sc{gnu} C Library only for compatibility
-for address@hidden, and may not be supported by other implementations.
address@hidden deftypefun
-
-Here's a trivial program that illustrates the use of @code{exit} and
address@hidden:
-
address@hidden
-#include <stdio.h>
-#include <stdlib.h>
-
-void 
-bye (void)
address@hidden
-  puts ("Goodbye, cruel world....");
address@hidden
-
-int
-main (void)
address@hidden
-  atexit (bye);
-  exit (EXIT_SUCCESS);
address@hidden
-
address@hidden smallexample
-
address@hidden
-When this program is executed, it just prints the message and exits.
-
address@hidden Aborting a Program
address@hidden Aborting a Program
address@hidden aborting a program
-
-You can abort your program using the @code{abort} function.  The prototype
-for this function is in @file{stdlib.h}.
address@hidden stdlib.h
-
address@hidden stdlib.h
address@hidden ISO
address@hidden void abort (void)
-The @code{abort} function causes abnormal program termination.  This
-does not execute clean-up functions registered with @code{atexit} or
address@hidden
-
-This function actually terminates the process by raising a
address@hidden signal, and your program can include a handler to
-intercept this address@hidden, ``Signal Handling''.}
address@hidden deftypefun
-
address@hidden Termination Internals
address@hidden Termination Internals
-
-The @code{_exit} function is the primitive used for process termination
-by @code{exit}.  It is declared in the header file @file{unistd.h}.
address@hidden unistd.h
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden void _exit (int @var{status})
-The @code{_exit} function is the primitive for causing a process to
-terminate with status @var{status}.  Calling this function does not
-execute clean-up functions registered with @code{atexit} or
address@hidden
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden ISO
address@hidden void _Exit (int @var{status})
-The @code{_Exit} function is the @address@hidden C} equivalent to
address@hidden  The @address@hidden C} committee members were not sure
-whether the definitions of @code{_exit} and @code{_Exit} were
-compatible, so they have not used the @sc{posix} name.
-
-This function was introduced in @address@hidden C99} and is declared in
address@hidden
address@hidden deftypefun
-
-When a process terminates for any reason---either because the program
-terminates, or as a result of a signal---the
-following things happen:
-
address@hidden @bullet
address@hidden
-All open file descriptors in the process are address@hidden,
-``Low-Level Input/Output''.}  Streams are not flushed automatically when the
-process terminates (@pxref{I/O on Streams}).
-
address@hidden
-A process exit status is saved to be reported back to the parent
-process via @code{wait} or @address@hidden, ``Process
-Completion''.}  If the program exited, this status includes the
-program exit status as its low-order 8 bits.
-
-
address@hidden
-Any child processes of the process being terminated are assigned a new
-parent process.  On most systems, including @sc{gnu}, this is the
address@hidden process, with process @sc{id} 1.
-
address@hidden
-A @code{SIGCHLD} signal is sent to the parent process.
-
address@hidden
-If the process is a session leader that has a controlling terminal,
-then a @code{SIGHUP} signal is sent to each process in the foreground
-job, and the controlling terminal is disassociated from that
address@hidden, ``Job Control''.}
-
address@hidden
-If termination of a process causes a process group to become orphaned,
-and any member of that process group is stopped, then a @code{SIGHUP}
-signal and a @code{SIGCONT} signal are sent to each process in the
address@hidden, ``Job Control''.}
address@hidden itemize
-
address@hidden I/O Overview, I/O on Streams, Pattern Matching, Top
address@hidden %MENU% Introduction to the I/O facilities
address@hidden Input/Output Overview
-
-Most programs need to do either input (reading data) or output (writing
-data), or most frequently both, in order to do anything useful.  The @sc{gnu}
-C Library provides such a large selection of input and output functions
-that the hardest part is often deciding which function is most
-appropriate!
-
-This chapter introduces concepts and terminology relating to input
-and output.  Other chapters relating to the @sc{gnu} I/O facilities are
-
address@hidden @bullet
address@hidden
address@hidden/O on Streams}, covers the high-level functions that operate on
-streams, including formatted input and output.
-
address@hidden
-Loosemore et al., ``Low-Level I/O'' (see chap. 1, n. 1), covers the
-basic I/O and control functions on file descriptors.
-
address@hidden
-Loosemore et al., ``File-System Interface'', covers functions for operating on
-directories and for manipulating file attributes such as access modes
-and ownership.
-
address@hidden
-Loosemore et al., ``Pipes and FIFOs'', includes information on the basic
-interprocess communication facilities.
-
address@hidden
-Loosemore et al., ``Sockets'', covers a more complicated interprocess
-communication facility with support for networking.
-
address@hidden
-Loosemore et al., ``Low-Level Terminal Interface'', covers functions
-for changing how input and output to terminals or other serial devices
-are processed.
address@hidden itemize
-
address@hidden I/O Concepts, File Names,  , I/O Overview
address@hidden Input/Output Concepts
-
-Before you can read or write the contents of a file, you must establish
-a connection or communications channel to the file.  This process is
-called @dfn{opening} the file.  You can open a file for reading, writing,
-or both.
address@hidden opening a file
-
-The connection to an open file is represented either as a stream or as a
-file descriptor.  You pass this as an argument to the functions that do
-the actual read or write operations, to tell them which file to operate
-on.  Certain functions expect streams, and others are designed to
-operate on file descriptors.
-
-When you have finished reading to or writing from the file, you can
-terminate the connection by @dfn{closing} the file.  Once you have
-closed a stream or file descriptor, you cannot do any more input or
-output operations on it.
-
address@hidden Streams and File Descriptors, File Position,  , I/O Concepts
address@hidden Streams and File Descriptors
-
-When you want to do input or output to a file, you have a choice of two
-basic mechanisms for representing the connection between your program
-and the file: file descriptors and streams.  File descriptors are
-represented as objects of type @code{int}, while streams are represented
-as @code{FILE *} objects.
-
-File descriptors provide a primitive, low-level interface to input and
-output operations.  Both file descriptors and streams can represent a
-connection to a device (such as a terminal), or a pipe or socket for
-communicating with another process, as well as a normal file.  But, if
-you want to do control operations that are specific to a particular kind
-of device, you must use a file descriptor; there are no facilities to
-use streams in this way.  You must also use file descriptors if your
-program needs to do input or output in special modes, such as
-nonblocking (or polled) address@hidden et al., ``File
-Status Flags'' (see chap. 1, n. 1).}
-
-Streams provide a higher-level interface, layered on top of the
-primitive file descriptor facilities.  The stream interface treats all
-kinds of files pretty much alike---the sole exception being the three
-styles of buffering that you can choose (@pxref{Stream Buffering}).
-
-The main advantage of using the stream interface is that the set of
-functions for performing actual input and output operations (as opposed
-to control operations) on streams is much richer and more powerful than
-the corresponding facilities for file descriptors.  The file descriptor
-interface provides only simple functions for transferring blocks of
-characters, but the stream interface also provides powerful formatted
-input and output functions (@code{printf} and @code{scanf}) as well as
-functions for character- and line-oriented input and output.
address@hidden !!! glibc has dprintf, which lets you do printf on an fd.
-
-Since streams are implemented in terms of file descriptors, you can
-extract the file descriptor from a stream and perform low-level
-operations directly on the file descriptor.  You can also initially open
-a connection as a file descriptor and then make a stream associated with
-that file descriptor.
-
-In general, you should stick with using streams rather than file
-descriptors, unless there is some specific operation you want to do that
-can only be done on a file descriptor.  If you are a beginning
-programmer and aren't sure what functions to use, we suggest that you
-concentrate on the formatted input functions (@pxref{Formatted Input})
-and formatted output functions (@pxref{Formatted Output}).
-
-If you are concerned about portability of your programs to systems other
-than @sc{gnu}, you should also be aware that file descriptors are not as
-portable as streams.  You can expect any system running @address@hidden C} to
-support streams, but address@hidden systems may not support file descriptors at
-all, or may only implement a subset of the @sc{gnu} functions that operate on
-file descriptors.  Most of the file descriptor functions in the @sc{gnu}
-library are included in the @sc{posix}.1 standard, however.
-
address@hidden File Position,  , Streams and File Descriptors, I/O Concepts
address@hidden File Position
-
-One of the attributes of an open file is its @dfn{file position} that
-keeps track of where in the file the next character is to be read or
-written.  In the @sc{gnu} system, and all @sc{posix}.1 systems, the file 
position
-is simply an integer representing the number of bytes from the beginning
-of the file.
-
-The file position is normally set to the beginning of the file when it
-is opened, and each time a character is read or written, the file
-position is incremented.  In other words, access to the file is normally
address@hidden
address@hidden file position
address@hidden sequential-access files
-
-Ordinary files permit read or write operations at any position within
-the file.  Some other kinds of files may also permit this.  Files
-which do permit this are sometimes referred to as @dfn{random-access}
-files.  You can change the file position using the @code{fseek}
-function on a stream (@pxref{File Positioning}) or the @code{lseek}
-function on a file address@hidden, ``Input and Output Primitives''.}
-If you try to change the file position on a file that doesn't support
-random access, you get the @code{ESPIPE} error.
address@hidden random-access files
-
-Streams and descriptors that are opened for @dfn{append access} are
-treated specially for output; output to such files is @emph{always}
-appended sequentially to the @emph{end} of the file, regardless of the
-file position.  However, the file position is still used to control
-where in the file reading is done.
address@hidden append-access files
-
-If you think about it, you'll realize that several programs can read a
-given file at the same time.  In order for each program to be able to
-read the file at its own pace, each program must have its own file
-pointer, which is not affected by anything the other programs do.
-
-In fact, each opening of a file creates a separate file position.
-Thus, if you open a file twice even in the same program, you get two
-streams or descriptors with independent file positions.
-
-By contrast, if you open a descriptor and then duplicate it to get
-another descriptor, these two descriptors share the same file position:
-changing the file position of one descriptor will affect the other.
-
address@hidden File Names,  , I/O Concepts, I/O Overview
address@hidden File Names
-
-In order to open a connection to a file, or to perform other
-operations such as deleting a file, you need some way to refer to the
-file.  Nearly all files have names that are strings---even files that
-are actually devices such as tape drives or terminals.  These strings
-are called @dfn{file names}.  You specify the file name to say which
-file you want to open or operate on.
-
-This section describes the conventions for file names and how the
-operating system works with them.
address@hidden file name
-
address@hidden Directories, File-Name Resolution,  , File Names
address@hidden Directories
-
-In order to understand the syntax of file names, you need to understand
-how the file system is organized into a hierarchy of directories.
-
address@hidden directory
address@hidden link
address@hidden directory entry
-A @dfn{directory} is a file that contains information to associate
-other files with names; these associations are called @dfn{links} or
address@hidden entries}.  Sometimes, people speak of ``files in a
-directory'', but in reality, a directory only contains pointers to
-files, not the files themselves.
-
address@hidden file-name component
-The name of a file contained in a directory entry is called a
address@hidden component}.  In general, a file name consists of a
-sequence of one or more such components, separated by the slash
-character (@samp{/}).  A file name that is just one component names a
-file with respect to its directory.  A file name with multiple
-components names a directory, and then a file in that directory, and
-so on.
-
-Some other documents, such as the @sc{posix} standard, use the term
address@hidden for what we call a file name, and either @dfn{filename}
-or @dfn{pathname component} for what this manual calls a file-name
-component.  We don't use this terminology because a @dfn{path} is
-something completely different (a list of directories to search), and
-we think that @dfn{pathname} used for something else will confuse
-users.  We always use @dfn{file name} and @dfn{file-name component}
-(or sometimes just @dfn{component}, where the context is obvious) in
address@hidden documentation.  Some macros use the @sc{posix} terminology in
-their names, such as @code{PATH_MAX}.  These macros are defined by the
address@hidden standard, so we cannot change their names.
-
-You can find more detailed information about operations on directories
-in Loosemore et al., ``File-System Interface'' (see chap. 1, n. 1).
-
address@hidden File-Name Resolution, File-Name Errors, Directories, File Names
address@hidden File-Name Resolution
-
-A file name consists of file-name components separated by slash
-(@samp{/}) characters.  On the systems that the @sc{gnu} C Library
-supports, multiple successive @samp{/} characters are equivalent to a
-single @samp{/} character.
-
address@hidden file-name resolution
-The process of determining what file a file name refers to is called
address@hidden resolution}.  This is performed by examining the
-components that make up a file name in left-to-right order, and
-locating each successive component in the directory named by the
-previous component.  Of course, each of the files that are referenced
-as directories must actually exist, be directories instead of regular
-files, and have the appropriate permissions to be accessible by the
-process; otherwise the file-name resolution fails.
-
address@hidden root directory
address@hidden absolute file-name
-If a file name begins with a @samp{/}, the first component in the file
-name is located in the @dfn{root directory} of the process (usually all
-processes on the system have the same root directory).  Such a file name
-is called an @dfn{absolute file name}.
address@hidden !!! xref here to chroot, if we ever document chroot. -rm
-
address@hidden relative file name
-Otherwise, the first component in the file name is located in the
-current working address@hidden, ``Working Directory''.} This
-kind of file name is called a @dfn{relative file name}.
-
address@hidden parent directory
-The file-name components @file{.} (@dfn{dot}) and @file{..}
-(@dfn{dot-dot}) have special meanings.  Every directory has entries
-for these file-name components.  The file-name component @file{.}
-refers to the directory itself, while the file-name component
address@hidden refers to its @dfn{parent directory} (the directory that
-contains the link for the directory in question).  As a special case,
address@hidden in the root directory refers to the root directory itself,
-since it has no parent; thus @file{/..} is the same as @file{/}.
-
-Here are some examples of file names:
-
address@hidden @file
address@hidden /a
-The file named @file{a}, in the root directory
-
address@hidden /a/b
-The file named @file{b}, in the directory named @file{a} in the root directory
-
address@hidden a
-The file named @file{a}, in the current working directory
-
address@hidden /a/./b
-The same as @file{/a/b}
-
address@hidden ./a
-The file named @file{a}, in the current working directory
-
address@hidden ../a
-The file named @file{a}, in the parent directory of the current working
-directory
address@hidden table
-
address@hidden An empty string may "work", but I think it's confusing to
address@hidden try to describe it.  It's not a useful thing for users to 
use--rms.
-A file name that names a directory may optionally end in a @samp{/}.
-You can specify a file name of @file{/} to refer to the root directory,
-but the empty string is not a meaningful file name.  If you want to
-refer to the current working directory, use a file name of @file{.} or
address@hidden/}.
-
-Unlike some other operating systems, the @sc{gnu} system doesn't have any
-built-in support for file types (or extensions) or file versions as part
-of its file-name syntax.  Many programs and utilities use conventions
-for file names---for example, files containing C source code usually
-have names suffixed with @samp{.c}---but there is nothing in the file
-system itself that enforces this kind of convention.
-
address@hidden File-Name Errors, File-Name Portability, File-Name Resolution, 
File Names
address@hidden File-Name Errors
-
address@hidden file-name errors
address@hidden usual file-name errors
-
-Functions that accept file-name arguments usually detect these
address@hidden error conditions relating to the file-name syntax or
-trouble finding the named file.  These errors are referred to throughout
-this manual as the @dfn{usual file-name errors}.
-
address@hidden @code
address@hidden EACCES
-The process does not have search permission for a directory component
-of the file name.
-
address@hidden ENAMETOOLONG
-This error is used when either the total length of a file name is
-greater than @code{PATH_MAX}, or when an individual file-name
-component has a length greater than @address@hidden,
-``Limits on File-System Capacity''.}
-
-In the @sc{gnu} system, there is no imposed limit on overall file-name
-length, but some file systems may place limits on the length of a
-component.
-
address@hidden ENOENT
-This error is reported when a file referenced as a directory component
-in the file name doesn't exist, or when a component is a symbolic link
-whose target file does not address@hidden, ``Symbolic Links''.}
-
address@hidden ENOTDIR
-A file that is referenced as a directory component in the file name
-exists, but it isn't a directory.
-
address@hidden ELOOP
-Too many symbolic links were resolved while trying to look up the file
-name.  The system has an arbitrary limit on the number of symbolic
-links that may be resolved in looking up a single file name, as a
-primitive way to detect address@hidden, ``Symbolic Links''.}
address@hidden table
-
-
address@hidden File-Name Portability,  , File-Name Errors, File Names
address@hidden Portability of File Names
-
-The rules for the syntax of file names discussed in @ref{File Names},
-are the rules normally used by the @sc{gnu} system and by other @sc{posix}
-systems.  However, other operating systems may use other conventions.
-
-There are two reasons why it can be important for you to be aware of
-file-name portability issues:
-
address@hidden @bullet
address@hidden
-If your program makes assumptions about file-name syntax, or contains
-embedded literal file-name strings, it is more difficult to get it to
-run under other operating systems that use different syntax conventions.
-
address@hidden
-Even if you are not concerned about running your program on machines
-that run other operating systems, it may still be possible to access
-files that use different naming conventions.  For example, you may be
-able to access file systems on another computer running a different
-operating system over a network, or read and write disks in formats used
-by other operating systems.
address@hidden itemize
-
-The @address@hidden C} standard says very little about file-name syntax,
-only that file names are strings.  In addition to varying restrictions
-on the length of file names and what characters can validly appear in
-a file name, different operating systems use different conventions and
-syntax for concepts such as structured directories and file types or
-extensions.  Some concepts, such as file versions, might be supported
-in some operating systems and not in others.
-
-The @sc{posix}.1 standard allows implementations to put additional
-restrictions on file-name syntax, concerning what characters are
-permitted in file names and on the length of file name and file-name
-component strings.  However, in the @sc{gnu} system, you do not need to worry
-about these restrictions; any character except the null character is
-permitted in a file-name string, and there are no limits on the length
-of file-name strings.
-
address@hidden Debugging Support
address@hidden @node Debugging Support, , Cryptographic Functions, Top
address@hidden %MENU% Functions to help debugging applications
address@hidden Debugging Support
-
-Applications are usually debugged using dedicated debugger programs.
-But sometimes this is not possible and, in any case, it is useful to
-provide the developer with as much information as possible at the time
-the problems are experienced.  For this reason, a few functions are
-provided that a program can use to help the developer more easily
-locate the problem.
-
address@hidden Backtraces, , , Debugging Support
address@hidden Backtraces
-
address@hidden backtrace
address@hidden backtrace_symbols
address@hidden backtrace_fd
-A @dfn{backtrace} is a list of the function calls that are currently
-active in a thread.  The usual way to inspect a backtrace of a program
-is to use an external debugger such as gdb.  However, sometimes it is
-useful to obtain a backtrace programmatically from within a program,
-e.g., for the purposes of logging or diagnostics.
-
-The header file @file{execinfo.h} declares three functions that obtain
-and manipulate backtraces of the current thread.
address@hidden execinfo.h
-
address@hidden execinfo.h
address@hidden GNU
address@hidden int backtrace (void address@hidden, int @var{size})
-The @code{backtrace} function obtains a backtrace for the current
-thread, as a list of pointers, and places the information into
address@hidden  The argument @var{size} should be the number of
address@hidden@code{void *}} elements that will fit into @var{buffer}.  The 
return
-value is the actual number of entries of @var{buffer} that are obtained,
-and is at most @var{size}.
-
-The pointers placed in @var{buffer} are actually return addresses
-obtained by inspecting the stack, one return address per stack frame.
-
-Certain compiler optimizations may interfere with obtaining a valid
-backtrace.  Function in-lining causes the in-lined function to not
-have a stack frame; tail-call optimization replaces one stack frame
-with another; frame pointer elimination will stop @code{backtrace}
-from interpreting the stack contents correctly.
address@hidden deftypefun
-
address@hidden execinfo.h
address@hidden GNU
address@hidden {char **} backtrace_symbols (void *const address@hidden, int 
@var{size})
-The @code{backtrace_symbols} function translates the information
-obtained from the @code{backtrace} function into an array of strings.
-The argument @var{buffer} should be a pointer to an array of addresses
-obtained via the @code{backtrace} function, and @var{size} is the number
-of entries in that array (the return value of @code{backtrace}).
-
-The return value is a pointer to an array of strings, which has
address@hidden entries just like the array @var{buffer}.  Each string
-contains a printable representation of the corresponding element of
address@hidden  It includes the function name (if this can be
-determined), an offset into the function, and the actual return address
-(in hexadecimal).
-
-Currently, the function name and offset can only be obtained on
-systems that use the ELF binary format for programs and libraries.  On
-other systems, only the hexadecimal return address will be present.
-Also, you may need to pass additional flags to the linker to make the
-function names available to the program; for example, on systems
-using @sc{gnu} ld, you must pass @code{-rdynamic}.
-
-The return value of @code{backtrace_symbols} is a pointer obtained via
-the @code{malloc} function, and it is the responsibility of the caller
-to @code{free} that pointer.  Only the return value need be freed, not
-the individual strings.
-
-The return value is @code{NULL} if sufficient memory for the strings
-cannot be obtained.
address@hidden deftypefun
-
address@hidden execinfo.h
address@hidden GNU
address@hidden void backtrace_symbols_fd (void *const address@hidden, int 
@var{size}, int @var{fd})
-The @code{backtrace_symbols_fd} function performs the same translation
-as the function @code{backtrace_symbols} function.  Instead of returning
-the strings to the caller, it writes the strings to the file descriptor
address@hidden, one per line.  It does not use the @code{malloc} function, and
-can therefore be used in situations where that function might fail.
address@hidden deftypefun
-
-The following program illustrates the use of these functions.  Note
-that the array to contain the return addresses returned by
address@hidden is allocated on the stack.  Therefore, code like this
-can be used in situations where the memory handling via @code{malloc}
-does not work anymore (in which case the @code{backtrace_symbols} has
-to be replaced by a @code{backtrace_symbols_fd} call as well).  The
-number of return addresses is normally not very large.  Even
-complicated programs rather seldom have a nesting level of more than
-fifty, and with two hundred possible entries, probably all programs
-should be covered.
-
address@hidden
-#include <execinfo.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-/* @r{Obtain a backtrace and print it to @code{stdout}.} */
-void
-print_trace (void)
address@hidden
-  void *array[10];
-  size_t size;
-  char **strings;
-  size_t i;
-
-  size = backtrace (array, 10);
-  strings = backtrace_symbols (array, size);
-
-  printf ("Obtained %zd stack frames.\n", size);
-
-  for (i = 0; i < size; i++)
-     printf ("%s\n", strings[i]);
-
-  free (strings);
address@hidden
-
-/* @r{A dummy function to make the backtrace more interesting} */
-void
-dummy_function (void)
address@hidden
-  print_trace ();
address@hidden
-
-int
-main (void)
address@hidden
-  dummy_function ();
-  return 0;
address@hidden
-
address@hidden smallexample
-
address@hidden I/O on Streams, Low-Level I/O, I/O Overview, Top
address@hidden %MENU% High-level, portable I/O facilities
address@hidden Input/Output on Streams
-
-This chapter describes the functions for creating streams and performing
-input and output operations on them.  As discussed in @ref{I/O
-Overview}, a stream is a fairly abstract, high-level concept
-representing a communications channel to a file, device, or process.
-
address@hidden Streams
address@hidden Streams
-
-For historical reasons, the type of the C data structure that
-represents a stream is called @code{FILE} rather than @dfn{stream}.
-Since most of the library functions deal with objects of type
address@hidden *}, sometimes the term @dfn{file pointer} is also used to
-mean @dfn{stream}.  This leads to unfortunate confusion over
-terminology in many books on C.  This manual, however, is careful to
-use the terms @dfn{file} and @dfn{stream} only in the technical sense.
address@hidden file pointer
-
address@hidden stdio.h
-The @code{FILE} type is declared in the header file @file{stdio.h}.
-
address@hidden stdio.h
address@hidden ISO
address@hidden {Data Type} FILE
-This is the data type used to represent stream objects.  A @code{FILE}
-object holds all of the internal state information about the
-connection to the associated file, including such things as the file
-position indicator and buffering information.  Each stream also has
-error and end-of-file status indicators that can be tested with the
address@hidden and @code{feof} functions (@pxref{EOF and Errors}).
address@hidden deftp
-
address@hidden objects are allocated and managed internally by the
-input/output library functions.  Don't try to create your own objects of
-type @code{FILE}; let the library do it.  Your programs should
-deal only with pointers to these objects (that is, @code{FILE *} values)
-rather than the objects themselves.
address@hidden !!! should say that FILE's have "No user-serviceable parts 
inside."
-
address@hidden Standard Streams
address@hidden Standard Streams
address@hidden standard streams
address@hidden streams, standard
-
-When the @code{main} function of your program is invoked, it already has
-three predefined streams open and available for use.  These represent
-the ``standard'' input and output channels that have been established
-for the process.
-
-These streams are declared in the header file @file{stdio.h}.
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden ISO
address@hidden {FILE *} stdin
-The @dfn{standard input} stream, which is the normal source of input for the
-program
address@hidden deftypevar
address@hidden standard input stream
-
address@hidden stdio.h
address@hidden ISO
address@hidden {FILE *} stdout
-The @dfn{standard output} stream, which is used for normal output from
-the program
address@hidden deftypevar
address@hidden standard output stream
-
address@hidden stdio.h
address@hidden ISO
address@hidden {FILE *} stderr
-The @dfn{standard error} stream, which is used for error messages and
-diagnostics issued by the program
address@hidden deftypevar
address@hidden standard error stream
-
-In the @sc{gnu} system, you can specify what files or processes
-correspond to these streams using the pipe and redirection facilities
-provided by the address@hidden primitives shells use to implement
-these facilities are described in Loosemore et al., ``File-System
-Interface'' (see chap. 1, n. 1).}  Most other operating systems provide
-similar mechanisms, but the details of how to use them can vary.
-
-In the @sc{gnu} C Library, @code{stdin}, @code{stdout}, and
address@hidden are normal variables that you can set just like any
-others.  For example, to redirect the standard output to a file, you
-could do:
-
address@hidden
-fclose (stdout);
-stdout = fopen ("standard-output-file", "w");
address@hidden smallexample
-
-However, in other systems, @code{stdin}, @code{stdout} and
address@hidden are macros that you cannot assign to in the normal way.
-But you can use @code{freopen} to get the effect of closing one and
-reopening it (@pxref{Opening Streams}).
-
-The three streams @code{stdin}, @code{stdout} and @code{stderr} are
-not unoriented at program start (@pxref{Streams and I18N}).
-
address@hidden Opening Streams
address@hidden Opening Streams
-
address@hidden opening a stream
-Opening a file with the @code{fopen} function creates a new stream and
-establishes a connection between the stream and a file.  This may
-involve creating a new file.
-
address@hidden stdio.h
-Everything described in this section is declared in the header file
address@hidden
-
address@hidden stdio.h
address@hidden ISO
address@hidden {FILE *} fopen (const char address@hidden, const char 
address@hidden)
-The @code{fopen} function opens a stream for I/O to the file
address@hidden, and returns a pointer to the stream.
-
-The @var{opentype} argument is a string that controls how the file is
-opened and specifies attributes of the resulting stream.  It must begin
-with one of the following sequences of characters:
-
address@hidden @samp
address@hidden r
-Open an existing file for reading only.
-
address@hidden w
-Open the file for writing only.  If the file already exists, it is
-truncated to zero length.  Otherwise, a new file is created.
-
address@hidden a
-Open a file for append access; that is, writing at the end of file only.
-If the file already exists, its initial contents are unchanged and
-output to the stream is appended to the end of the file.
-Otherwise, a new, empty file is created.
-
address@hidden r+
-Open an existing file for both reading and writing.  The initial contents
-of the file are unchanged and the initial file position is at the
-beginning of the file.
-
address@hidden w+
-Open a file for both reading and writing.  If the file already exists, it
-is truncated to zero length.  Otherwise, a new file is created.
-
address@hidden a+
-Open or create file for both reading and appending.  If the file exists,
-its initial contents are unchanged.  Otherwise, a new file is created.
-The initial file position for reading is at the beginning of the file,
-but output is always appended to the end of the file.
address@hidden table
-
-As you can see, @samp{+} requests a stream that can do both input and
-output.  The @sc{iso} standard says that when using such a stream, you
-must call @code{fflush} (@pxref{Stream Buffering}) or a file
-positioning function such as @code{fseek} (@pxref{File Positioning})
-when switching from reading to writing or vice versa.  Otherwise,
-internal buffers might not be emptied properly.  The @sc{gnu} C
-Library does not have this limitation; you can do arbitrary reading
-and writing operations on a stream in any order.
-
-Additional characters may appear after these to specify flags for the
-call.  Always put the mode (@samp{r}, @samp{w+}, etc.) first; that is
-the only part guaranteed to be understood by all systems.
-
-The @sc{gnu} C Library defines one additional character for use in
address@hidden: the character @samp{x} insists on creating a new
-file---if a file @var{filename} already exists, @code{fopen} fails
-rather than opening it.  If you use @samp{x}, it is guaranteed that
-you will not clobber an existing file.  This is equivalent to the
address@hidden option to the @code{open} address@hidden,
-``Opening and Closing Files''.}
-
-The character @samp{b} in @var{opentype} has a standard meaning; it
-requests a binary stream rather than a text stream.  But this makes no
-difference in @sc{posix} systems (including the @sc{gnu} system).  If
-both @samp{+} and @samp{b} are specified, they can appear in either
-order (@pxref{Binary Streams}).
-
address@hidden stream orientation
address@hidden orientation, stream
-If the @var{opentype} string contains the sequence
address@hidden@var{STRING}}, then @var{STRING} is taken as the name of a
-coded character set and @code{fopen} will mark the stream as
-wide-oriented with appropriate conversion functions in place to
-convert from and to the character set @var{STRING}.  Any other stream
-is opened initially unoriented, and the orientation is decided with
-the first file operation.  If the first operation is a wide-character
-operation, the stream is not only marked as wide-oriented---the
-conversion functions to convert to the coded character set used for
-the current locale are also loaded.  This will not change anymore from
-this point on, even if the locale selected for the @code{LC_CTYPE}
-category is changed.
-
-Any other characters in @var{opentype} are simply ignored.  They may be
-meaningful in other systems.
-
-If the open fails, @code{fopen} returns a null pointer.
-
-When the sources are compiling with @code{_FILE_OFFSET_BITS == 64} on
-a 32-bit machine, this function is in fact @code{fopen64}, since the
address@hidden interface transparently replaces the old interface.
address@hidden deftypefun
-
-You can have multiple streams (or file descriptors) pointing to the
-same file open at the same time.  If you do only input, this will be
-straightforward, but you must be careful if any output streams are
address@hidden, ``Dangers of Mixing Streams and Descriptors''.}  This is 
equally true whether the streams are in one program (not usual) or in
-several programs (which can easily happen).  It may be advantageous to
-use the file-locking facilities to avoid simultaneous
address@hidden, ``File Locks''.}
-
address@hidden stdio.h
address@hidden Unix98
address@hidden {FILE *} fopen64 (const char address@hidden, const char 
address@hidden)
-This function is similar to @code{fopen}, but the stream it returns a
-pointer for is opened using @code{open64}.  Therefore, this stream can
-be used even on files larger then @math{2^31} bytes on 32-bit
-machines.
-
-The return type is still @code{FILE *}.  There is no special
address@hidden type for the @sc{lfs} interface.
-
-If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit machine, this function is available under the name @code{fopen}
-and so transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden Macro int FOPEN_MAX
-The value of this macro is an integer constant expression that
-represents the minimum number of streams that the implementation
-guarantees can be open simultaneously.  You might be able to open more
-than this many streams, but that is not guaranteed.  The value of this
-constant is at least eight, which includes the three standard streams
address@hidden, @code{stdout} and @code{stderr}.  In @sc{posix}.1
-systems, this value is determined by the @code{OPEN_MAX}
address@hidden, ``General Capacity-Limits''.}  In @sc{bsd} and
address@hidden, it is controlled by the @code{RLIMIT_NOFILE} resource
address@hidden, ``Limiting Resource Usage''.}
address@hidden deftypevr
-
address@hidden stdio.h
address@hidden ISO
address@hidden {FILE *} freopen (const char address@hidden, const char 
address@hidden, FILE address@hidden)
-This function is like a combination of @code{fclose} and @code{fopen}.
-It first closes the stream referred to by @var{stream}, ignoring any
-errors that are detected in the process.  Because errors are ignored,
-you should not use @code{freopen} on an output stream if you have
-actually done any output using the stream.  Then the file named by
address@hidden is opened with mode @var{opentype} as for @code{fopen},
-and associated with the same stream object @var{stream}.
-
-If the operation fails, a null pointer is returned; otherwise,
address@hidden returns @var{stream}.
-
address@hidden has traditionally been used to connect a standard stream
-such as @code{stdin} with a file of your own choice.  This is useful in
-programs in which use of a standard stream for certain purposes is
-hard-coded.  In the @sc{gnu} C Library, you can simply close the standard
-streams and open new ones with @code{fopen}.  But other systems lack
-this ability, so using @code{freopen} is more portable.
-
-When the sources are compiling with @code{_FILE_OFFSET_BITS == 64} on
-a 32-bit machine, this function is in fact @code{freopen64}, since the
address@hidden interface transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden Unix98
address@hidden {FILE *} freopen64 (const char address@hidden, const char 
address@hidden, FILE address@hidden)
-This function is similar to @code{freopen}.  The only difference is
-that on 32-bit machines, the stream returned is able to read beyond
-the @math{2^31}-bytes limits imposed by the normal interface.  The
-stream pointed to by @var{stream} need not be opened using
address@hidden or @code{freopen64}, since its mode is not important
-for this function.
-
-If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit machine, this function is available under the name
address@hidden and so transparently replaces the old interface.
address@hidden deftypefun
-
-In some situations, it is useful to know whether a given stream is
-available for reading or writing.  This information is normally not
-available and would have to be remembered separately.  Solaris
-introduced a few functions to get this information from the stream
-descriptor and these functions are also available in the @sc{gnu} C
-Library.
-
address@hidden stdio_ext.h
address@hidden GNU
address@hidden int __freadable (FILE address@hidden)
-The @code{__freadable} function determines whether the stream
address@hidden was opened to allow reading.  In this case, the return
-value is nonzero.  For write-only streams, the function returns zero.
-
-This function is declared in @file{stdio_ext.h}.
address@hidden deftypefun
-
address@hidden stdio_ext.h
address@hidden GNU
address@hidden int __fwritable (FILE address@hidden)
-The @code{__fwritable} function determines whether the stream
address@hidden was opened to allow writing.  In this case, the return
-value is nonzero.  For read-only streams, the function returns zero.
-
-This function is declared in @file{stdio_ext.h}.
address@hidden deftypefun
-
-For slightly different kinds of problems, there are two more
-functions.  They provide even finer-grained information.
-
address@hidden stdio_ext.h
address@hidden GNU
address@hidden int __freading (FILE address@hidden)
-The @code{__freading} function determines whether the stream
address@hidden was last read from or whether it is opened read-only.  In
-this case, the return value is nonzero. Otherwise, it is zero.
-Determining whether a stream opened for reading and writing was last
-used for writing allows you to draw conclusions about the content of
-the buffer, among other things.
-
-This function is declared in @file{stdio_ext.h}.
address@hidden deftypefun
-
address@hidden stdio_ext.h
address@hidden GNU
address@hidden int __fwriting (FILE address@hidden)
-The @code{__fwriting} function determines whether the stream
address@hidden was last written to or whether it is opened write-only.
-In this case, the return value is nonzero. Otherwise, it is zero.
-
-This function is declared in @file{stdio_ext.h}.
address@hidden deftypefun
-
-
address@hidden Closing Streams
address@hidden Closing Streams
-
address@hidden closing a stream
-When a stream is closed with @code{fclose}, the connection between the
-stream and the file is canceled.  After you have closed a stream, you
-cannot perform any additional operations on it.
-
address@hidden stdio.h
address@hidden ISO
address@hidden int fclose (FILE address@hidden)
-This function causes @var{stream} to be closed and the connection to
-the corresponding file to be broken.  Any buffered output is written,
-and any buffered input is discarded.  The @code{fclose} function
-returns a value of @code{0} if the file was closed successfully, and
address@hidden if an error was detected.
-
-It is important to check for errors when you call @code{fclose} to close
-an output stream, because real, everyday errors can be detected at this
-time.  For example, when @code{fclose} writes the remaining buffered
-output, it might get an error because the disk is full.  Even if you
-know the buffer is empty, errors can still occur when closing a file if
-you are using NFS.
-
-The function @code{fclose} is declared in @file{stdio.h}.
address@hidden deftypefun
-
-To close all streams currently available, the @sc{gnu} C Library
-provides another function.
-
address@hidden stdio.h
address@hidden GNU
address@hidden int fcloseall (void)
-This function causes all open streams of the process to be closed and
-the connection to corresponding files to be broken.  All buffered data
-is written, and any buffered input is discarded.  The @code{fcloseall}
-function returns a value of @code{0} if all the files were closed
-successfully, and @code{EOF} if an error was detected.
-
-This function should be used only in special situations, such as when
-an error occurred and the program must be aborted.  Normally, each
-single stream should be closed separately so that problems with
-individual streams can be identified.  It is also problematic since
-the standard streams (@pxref{Standard Streams}) will also be closed.
-
-The function @code{fcloseall} is declared in @file{stdio.h}.
address@hidden deftypefun
-
-If the @code{main} function to your program returns, or if you call
-the @code{exit} function (@pxref{Normal Termination}), all open
-streams are automatically closed properly.  If your program terminates
-in any other manner, such as by calling the @code{abort} function
-(@pxref{Aborting a Program}), or from a fatal address@hidden,
-``Signal Handling''.}, open streams might not be closed properly.
-Buffered output might not be flushed, and files may be incomplete.
-For more information on buffering of streams, see @ref{Stream
-Buffering}.
-
address@hidden Streams and Threads
address@hidden Streams and Threads
-
address@hidden threads
address@hidden multithreaded application
-Streams can be used in multithreaded applications in the same way they
-are used in single-threaded applications.  But the programmer must be
-aware of the possible complications.  It is also important to know
-about these if the program one writes never use threads, since the
-design and implementation of many stream functions is heavily
-influenced by the requirements added by multithreaded programming.
-
-The @sc{posix} standard requires that, by default, the stream
-operations are atomic---issuing two stream operations for the same
-stream in two threads at the same time will cause the operations to be
-executed as if they were issued sequentially.  The buffer operations
-performed while reading or writing are protected from other uses of
-the same stream.  To do this, each stream has an internal lock object
-that has to be (implicitly) acquired before any work can be done.
-
-But there are situations where this is not enough, and there are also
-situations where this is not wanted.  The implicit locking is not
-enough if the program requires more than one stream function call to
-happen atomically.  One example would be if an output line a program
-wants to generate is created by several function calls.  The functions
-by themselves would ensure only atomicity of their own operation, but
-not atomicity over all the function calls.  For this, it is necessary
-to perform the stream locking in the application code.
-
address@hidden stdio.h
address@hidden POSIX
address@hidden void flockfile (FILE address@hidden)
-The @code{flockfile} function acquires the internal locking object
-associated with the stream @var{stream}.  This ensures that no other
-thread can explicitly through @code{flockfile}/@code{ftrylockfile} or
-implicitly through a call of a stream function lock the stream.  The
-thread will block until the lock is acquired.  An explicit call to
address@hidden has to be used to release the lock.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden POSIX
address@hidden int ftrylockfile (FILE address@hidden)
-The @code{ftrylockfile} function tries to acquire the internal locking
-object associated with the stream @var{stream} just like
address@hidden  But unlike @code{flockfile}, this function does not
-block if the lock is not available.  @code{ftrylockfile} returns zero
-if the lock was successfully acquired.  Otherwise, the stream is
-locked by another thread.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden POSIX
address@hidden void funlockfile (FILE address@hidden)
-The @code{funlockfile} function releases the internal locking object
-of the stream @var{stream}. The stream must have been locked before by
-a call to @code{flockfile} or a successful call of
address@hidden  The implicit locking performed by the stream
-operations do not count.  The @code{funlockfile} function does not
-return an error status, and the behavior of a call for a stream that
-is not locked by the current thread is undefined.
address@hidden deftypefun
-
-The following example shows how the functions above can be used to
-generate an output line atomically even in multithreaded applications
-(yes, the same job could be done with one @code{fprintf} call, but
-that is sometimes not possible):
-
address@hidden
-FILE *fp;
address@hidden
-   @dots{}
-   flockfile (fp);
-   fputs ("This is test number ", fp);
-   fprintf (fp, "%d\n", test);
-   funlockfile (fp)
address@hidden
address@hidden smallexample
-
-Without the explicit locking, it would be possible for another thread
-to use the stream @var{fp} after the @code{fputs} call return and
-before @code{fprintf} was called, with the result that the number does
-not follow the word @samp{number}.
-
-From this description, it might already be clear that the locking
-objects in streams are no simple mutexes.  Since locking the same
-stream twice in the same thread is allowed, the locking objects must
-be equivalent to recursive mutexes.  These mutexes keep track of the
-owner and the number of times the lock is acquired.  The same number
-of @code{funlockfile} calls by the same threads is necessary to unlock
-the stream completely.  For instance:
-
address@hidden
-void
-foo (FILE *fp)
address@hidden
-  ftrylockfile (fp);
-  fputs ("in foo\n", fp);
-  /* @r{This is very wrong!!!}  */
-  funlockfile (fp);
address@hidden
address@hidden smallexample
-
-It is important here that the @code{funlockfile} function is only
-called if the @code{ftrylockfile} function succeeded in locking the
-stream.  It is therefore always wrong to ignore the result of
address@hidden  And it makes no sense, since otherwise one would
-use @code{flockfile}.  The result of code like that above is that
-either @code{funlockfile} tries to free a stream that hasn't been
-locked by the current thread, or it frees the stream prematurely.  The
-code should look like this:
-
address@hidden
-void
-foo (FILE *fp)
address@hidden
-  if (ftrylockfile (fp) == 0)
-    @{
-      fputs ("in foo\n", fp);
-      funlockfile (fp);
-    @}
address@hidden
address@hidden smallexample
-
-Now that we covered why it is necessary to have locking, it is
-necessary to talk about situations when locking is unwanted and what
-can be done.  The locking operations (explicit or implicit) don't come
-for free.  Even if a lock is not taken, the cost is not zero.  The
-operations that have to be performed require memory operations that
-are safe in multiprocessor environments.  With the many local caches
-involved in such systems, this is quite costly.  So it is best to
-avoid the locking completely if it is not needed---because the code in
-question is never used in a context where two or more threads may use
-a stream at a time.  This can be determined most of the time for
-application code; for library code that can be used in many contexts,
-one should default to be conservative and use locking.
-
-There are two basic mechanisms to avoid locking.  The first is to use
-the @code{_unlocked} variants of the stream operations.  The
address@hidden standard defines quite a few of those, and the @sc{gnu}
-library adds a few more.  These variants of the functions behave just
-like the functions with the name without the suffix, except that they
-do not lock the stream.  Using these functions is very desirable,
-since they are potentially much faster.  This is not only because the
-locking operation itself is avoided.  More importantly, functions like
address@hidden and @code{getc} are very simple and traditionally (before
-the introduction of threads) were implemented as macros that are very
-fast if the buffer is not empty.  With the addition of locking
-requirements, these functions are no longer implemented as macros,
-since they would would expand to too much code.  But these macros are
-still available with the same functionality under the new names
address@hidden and @code{getc_unlocked}.  This potentially huge
-difference in speed also suggests the use of the @code{_unlocked}
-functions even if locking is required.  The difference is that the
-locking then has to be performed in the program:
-
address@hidden
-void
-foo (FILE *fp, char *buf)
address@hidden
-  flockfile (fp);
-  while (*buf != '/')
-    putc_unlocked (*buf++, fp);
-  funlockfile (fp);
address@hidden
address@hidden smallexample
-
-If in this example, the @code{putc} function would be used and the
-explicit locking would be missing, the @code{putc} function would have
-to acquire the lock in every call, potentially many times depending on
-when the loop terminates.  Writing it the way illustrated above allows
-the @code{putc_unlocked} macro to be used, which means no locking and
-direct manipulation of the buffer of the stream.
-
-A second way to avoid locking is by using a nonstandard function that
-was introduced in Solaris and is available in the @sc{gnu} C Library
-as well.
-
address@hidden stdio_ext.h
address@hidden GNU
address@hidden int __fsetlocking (FILE address@hidden, int @var{type})
-
-The @code{__fsetlocking} function can be used to select whether the
-stream operations will implicitly acquire the locking object of the
-stream @var{stream}.  By default, this is done, but it can be disabled
-and reinstated using this function.  There are three values defined
-for the @var{type} parameter:
-
address@hidden @code
address@hidden FSETLOCKING_INTERNAL
-The stream @code{stream} will from now on use the default internal
-locking.  Every stream operation with the exception of the
address@hidden variants will implicitly lock the stream.
-
address@hidden FSETLOCKING_BYCALLER
-After the @code{__fsetlocking} function returns, the user is
-responsible for locking the stream.  None of the stream operations
-will implicitly do this anymore until the state is set back to
address@hidden
-
address@hidden FSETLOCKING_QUERY
address@hidden only queries the current locking state of the
-stream.  The return value will be @code{FSETLOCKING_INTERNAL} or
address@hidden depending on the state.
address@hidden vtable
-
-The return value of @code{__fsetlocking} is either
address@hidden or @code{FSETLOCKING_BYCALLER} depending on
-the state of the stream before the call.
-
-This function and the values for the @var{type} parameter are declared
-in @file{stdio_ext.h}.
address@hidden deftypefun
-
-This function is especially useful when program code has to be used
-that is written without knowledge of the @code{_unlocked} functions
-(or if the programmer was too lazy to use them).
-
address@hidden Streams and I18N
address@hidden Streams in Internationalized Applications
-
address@hidden@sc{iso} C90} introduced the new type @code{wchar_t} to allow
-handling larger character sets.  What was missing was the ability to
-output strings of @code{wchar_t} directly.  One had to convert them
-into multibyte strings using @code{mbstowcs} (there was no
address@hidden yet) and then use the normal stream functions.  While
-this is doable, it is very cumbersome, since performing the
-conversions is not trivial and greatly increases program complexity
-and size.
-
-The Unix standard (@sc{xpg}4.2 and later) includes two additional
-format specifiers for the @code{printf} and @code{scanf} families of
-functions.  Printing and reading of single wide characters was made
-possible using the @code{%C} specifier, and wide-character strings can
-be handled with @code{%S}.  These modifiers behave just like @code{%c}
-and @code{%s}, only they expect the corresponding argument to have the
-wide-character type and that the wide character and string are
-transformed into/from multibyte strings before being used.
-
-This was a beginning, but it is still not good enough.  It is not
-always desirable to use @code{printf} and @code{scanf}.  The other,
-smaller and faster functions cannot handle wide characters.  Second,
-it is not possible to have a format string for @code{printf} and
address@hidden consisting of wide characters.  The result is that format
-strings would have to be generated if they have to contain nonbasic
-characters.
-
address@hidden C++ streams
address@hidden streams, C++
-In the @w{Amendment 1} to @address@hidden C90}, a whole new set of
-functions was added to solve the problem.  Most of the stream
-functions got counterparts that take a wide character or
-wide-character string instead of a character or string respectively.
-The new functions operate on the same streams (like @code{stdout}).
-This is different from the model of the C++ run-time library where
-separate streams for wide and normal I/O are used.
-
address@hidden orientation, stream
address@hidden stream orientation
-Being able to use the same stream for wide and normal operations comes
-with a restriction: a stream can be used either for wide operations or
-for normal operations.  Once it is decided, there is no way back.
-Only a call to @code{freopen} or @code{freopen64} can reset the
address@hidden  The orientation can be decided in three ways:
-
address@hidden @bullet
address@hidden
-If any of the normal character functions is used (this includes the
address@hidden and @code{fwrite} functions), the stream is marked as not
-wide oriented.
-
address@hidden
-If any of the wide-character functions is used, the stream is marked
-as wide oriented.
-
address@hidden
-The @code{fwide} function can be used to set the orientation either way.
address@hidden itemize
-
-It is important to never mix the use of wide and not-wide operations
-on a stream.  There are no diagnostics issued.  The application
-behavior will simply be strange or the application will simply crash.
-The @code{fwide} function can help avoid this.
-
address@hidden wchar.h
address@hidden ISO
address@hidden int fwide (FILE address@hidden, int @var{mode})
-
-The @code{fwide} function can be used to set and query the state of
-the orientation of the stream @var{stream}.  If the @var{mode}
-parameter has a positive value, the streams get wide oriented, and for
-negative values they get narrow oriented.  It is not possible to
-overwrite previous orientations with @code{fwide}---if the stream
address@hidden was already oriented before the call, nothing is done.
-
-If @var{mode} is zero, the current orientation state is queried, and
-nothing is changed.
-
-The @code{fwide} function returns a negative value, zero, or a
-positive value if the stream is narrow, not at all, or wide oriented,
-respectively.
-
-This function was introduced in @w{Amendment 1} to @address@hidden C90} and is
-declared in @file{wchar.h}.
address@hidden deftypefun
-
-It is generally a good idea to orient a stream as early as possible.
-This can prevent surprise especially for the standard streams
address@hidden, @code{stdout}, and @code{stderr}.  If some library
-function in some situations uses one of these streams and this use
-orients the stream in a different way than the rest of the application
-expects, one might end up with hard-to-reproduce errors.  Remember
-that no errors are signalled if the streams are used incorrectly.
-Leaving a stream unoriented after creation is normally only necessary
-for library functions that create streams that can be used in
-different contexts.
-
-When writing code that uses streams and that can be used in different
-contexts, it is important to query the orientation of the stream
-before using it (unless the rules of the library interface demand a
-specific orientation).  The following little, silly function
-illustrates this:
-
address@hidden
-void
-print_f (FILE *fp)
address@hidden
-  if (fwide (fp, 0) > 0)
-    /* @r{Positive return value means wide orientation.}  */
-    fputwc (L'f', fp);
-  else
-    fputc ('f', fp);
address@hidden
address@hidden smallexample
-
-In this case, the function @code{print_f} decides about the
-orientation of the stream if it was unoriented before (this will not
-happen if the advice above is followed).
-
-The encoding used for the @code{wchar_t} values is unspecified, and
-the user must not make any assumptions about it.  For I/O of
address@hidden values, this means that it is impossible to write these
-values directly to the stream.  This is not what follows from the
address@hidden@sc{iso} C} locale model either.  What happens instead is that the
-bytes read from or written to the underlying media are first converted
-into the internal encoding chosen by the implementation for
address@hidden  The external encoding is determined by the
address@hidden category of the current locale, or by the @samp{ccs}
-part of the mode specification given to @code{fopen}, @code{fopen64},
address@hidden or @code{freopen64}.  How and when the conversion
-happens is unspecified, and it happens invisibly to the user.
-
-Since a stream is created in the unoriented state, it has at that
-point no conversion associated with it.  The conversion that will be
-used is determined by the @code{LC_CTYPE} category selected at the
-time the stream is oriented.  If the locales are changed at the run
-time, this might produce surprising results unless you pay attention.
-This is just another good reason to orient the stream explicitly as
-soon as possible, perhaps with a call to @code{fwide}.
-
address@hidden Simple Output
address@hidden Simple Output by Characters or Lines
-
address@hidden writing to a stream, by characters
-This section describes functions for performing character- and
-line-oriented output.
-
-These narrow stream functions are declared in the header file
address@hidden and the wide stream functions in @file{wchar.h}.
address@hidden stdio.h
address@hidden wchar.h
-
address@hidden stdio.h
address@hidden ISO
address@hidden int fputc (int @var{c}, FILE address@hidden)
-The @code{fputc} function converts the character @var{c} to type
address@hidden char}, and writes it to the stream @var{stream}.
address@hidden is returned if a write error occurs. Otherwise, the
-character @var{c} is returned.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden wint_t fputwc (wchar_t @var{wc}, FILE address@hidden)
-The @code{fputwc} function writes the wide character @var{wc} to the
-stream @var{stream}.  @code{WEOF} is returned if a write error
-occurs. Otherwise, the character @var{wc} is returned.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden POSIX
address@hidden int fputc_unlocked (int @var{c}, FILE address@hidden)
-The @code{fputc_unlocked} function is equivalent to the @code{fputc}
-function, except that it does not implicitly lock the stream.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden POSIX
address@hidden wint_t fputwc_unlocked (wint_t @var{wc}, FILE address@hidden)
-The @code{fputwc_unlocked} function is equivalent to the @code{fputwc}
-function, except that it does not implicitly lock the stream.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int putc (int @var{c}, FILE address@hidden)
-This is just like @code{fputc}, except that most systems implement it as
-a macro, making it faster.  One consequence is that it may evaluate the
address@hidden argument more than once, which is an exception to the
-general rule for macros.  @code{putc} is usually the best function to
-use for writing a single character.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden wint_t putwc (wchar_t @var{wc}, FILE address@hidden)
-This is just like @code{fputwc}, except that it can be implemented as
-a macro, making it faster.  One consequence is that it may evaluate
-the @var{stream} argument more than once, which is an exception to the
-general rule for macros.  @code{putwc} is usually the best function to
-use for writing a single wide character.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden POSIX
address@hidden int putc_unlocked (int @var{c}, FILE address@hidden)
-The @code{putc_unlocked} function is equivalent to the @code{putc}
-function, except that it does not implicitly lock the stream.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden wint_t putwc_unlocked (wchar_t @var{wc}, FILE address@hidden)
-The @code{putwc_unlocked} function is equivalent to the @code{putwc}
-function, except that it does not implicitly lock the stream.
-
-This function is a GNU extension.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int putchar (int @var{c})
-The @code{putchar} function is equivalent to @code{putc} with
address@hidden as the value of the @var{stream} argument.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden wint_t putwchar (wchar_t @var{wc})
-The @code{putwchar} function is equivalent to @code{putwc} with
address@hidden as the value of the @var{stream} argument.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden POSIX
address@hidden int putchar_unlocked (int @var{c})
-The @code{putchar_unlocked} function is equivalent to the
address@hidden function, except that it does not implicitly lock the
-stream.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden @sc{gnu}
address@hidden wint_t putwchar_unlocked (wchar_t @var{wc})
-The @code{putwchar_unlocked} function is equivalent to the
address@hidden function, except that it does not implicitly lock the
-stream.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int fputs (const char address@hidden, FILE address@hidden)
-The function @code{fputs} writes the string @var{s} to the stream
address@hidden  The terminating null character is not written.
-This function does @emph{not} add a newline character, either.
-It outputs only the characters in the string.
-
-This function returns @code{EOF} if a write error occurs, and otherwise
-a nonnegative value.
-
-For example:
-
address@hidden
-fputs ("Are ", stdout);
-fputs ("you ", stdout);
-fputs ("hungry?\n", stdout);
address@hidden smallexample
-
address@hidden
-outputs the text, @samp{Are you hungry?}, followed by a newline.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int fputws (const wchar_t address@hidden, FILE address@hidden)
-The function @code{fputws} writes the wide-character string @var{ws} to
-the stream @var{stream}.  The terminating null character is not written.
-This function does @emph{not} add a newline character, either.  It
-outputs only the characters in the string.
-
-This function returns @code{WEOF} if a write error occurs, and otherwise
-a nonnegative value.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden int fputs_unlocked (const char address@hidden, FILE 
address@hidden)
-The @code{fputs_unlocked} function is equivalent to the @code{fputs}
-function, except that it does not implicitly lock the stream.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden int fputws_unlocked (const wchar_t address@hidden, FILE 
address@hidden)
-The @code{fputws_unlocked} function is equivalent to the @code{fputws}
-function, except that it does not implicitly lock the stream.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int puts (const char address@hidden)
-The @code{puts} function writes the string @var{s} to the stream
address@hidden followed by a newline.  The terminating null character of
-the string is not written.  (Note that @code{fputs} does @emph{not}
-write a newline as this function does.)
-
address@hidden is the most convenient function for printing simple
-messages.  For example:
-
address@hidden
-puts ("This is a message.");
address@hidden smallexample
-
address@hidden
-outputs the text, @samp{This is a message.}, followed by a newline.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden SVID
address@hidden int putw (int @var{w}, FILE address@hidden)
-This function writes the word @var{w} (that is, an @code{int}) to
address@hidden  It is provided for compatibility with @sc{svid}, but we
-recommend you use @code{fwrite} instead (@pxref{Block Input/Output}).
address@hidden deftypefun
-
address@hidden Character Input
address@hidden Character Input
-
address@hidden reading from a stream, by characters
-This section describes functions for performing character-oriented
-input.  These narrow stream functions are declared in the header file
address@hidden, and the wide-character functions are declared in
address@hidden
address@hidden stdio.h
address@hidden wchar.h
-
-These functions return an @code{int} or @code{wint_t} value (for
-narrow and wide stream functions respectively) that is either a
-character of input, or the special value @code{EOF}/@code{WEOF}
-(usually -1).  For the narrow stream functions, it is important to
-store the result of these functions in a variable of type @code{int}
-instead of @code{char}, even when you plan to use it only as a
-character.  Storing @code{EOF} in a @code{char} variable truncates its
-value to the size of a character, so that it is no longer
-distinguishable from the valid character @samp{(char) -1}.  So always
-use an @code{int} for the result of @code{getc} and friends, and check
-for @code{EOF} after the call; once you have verified that the result
-is not @code{EOF}, you can be sure that it will fit in a @samp{char}
-variable without loss of information.
-
address@hidden stdio.h
address@hidden ISO
address@hidden int fgetc (FILE address@hidden)
-This function reads the next character as an @code{unsigned char} from
-the stream @var{stream} and returns its value, converted to an
address@hidden  If an end-of-file condition or read error occurs,
address@hidden is returned instead.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden wint_t fgetwc (FILE address@hidden)
-This function reads the next wide character from the stream @var{stream}
-and returns its value.  If an end-of-file condition or read error
-occurs, @code{WEOF} is returned instead.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden POSIX
address@hidden int fgetc_unlocked (FILE address@hidden)
-The @code{fgetc_unlocked} function is equivalent to the @code{fgetc}
-function, except that it does not implicitly lock the stream.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden wint_t fgetwc_unlocked (FILE address@hidden)
-The @code{fgetwc_unlocked} function is equivalent to the @code{fgetwc}
-function, except that it does not implicitly lock the stream.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int getc (FILE address@hidden)
-This is just like @code{fgetc}, except that it is permissible (and
-typical) for it to be implemented as a macro that evaluates the
address@hidden argument more than once.  @code{getc} is often highly
-optimized, so it is usually the best function to use to read a single
-character.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden wint_t getwc (FILE address@hidden)
-This is just like @code{fgetwc}, except that it is permissible for it to
-be implemented as a macro that evaluates the @var{stream} argument more
-than once.  @code{getwc} can be highly optimized, so it is usually the
-best function to use to read a single wide character.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden POSIX
address@hidden int getc_unlocked (FILE address@hidden)
-The @code{getc_unlocked} function is equivalent to the @code{getc}
-function, except that it does not implicitly lock the stream.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden wint_t getwc_unlocked (FILE address@hidden)
-The @code{getwc_unlocked} function is equivalent to the @code{getwc}
-function, except that it does not implicitly lock the stream.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int getchar (void)
-The @code{getchar} function is equivalent to @code{getc} with @code{stdin}
-as the value of the @var{stream} argument.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden wint_t getwchar (void)
-The @code{getwchar} function is equivalent to @code{getwc} with @code{stdin}
-as the value of the @var{stream} argument.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden POSIX
address@hidden int getchar_unlocked (void)
-The @code{getchar_unlocked} function is equivalent to the
address@hidden function, except that it does not implicitly lock the
-stream.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden wint_t getwchar_unlocked (void)
-The @code{getwchar_unlocked} function is equivalent to the
address@hidden function, except that it does not implicitly lock the
-stream.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
-Here is an example of a function that does input using @code{fgetc}.  It
-would work just as well using @code{getc} instead, or using
address@hidden ()} instead of @address@hidden (stdin)}}.  The code would
-also work the same for the wide-character stream functions.
-
address@hidden
-int
-y_or_n_p (const char *question)
address@hidden
-  fputs (question, stdout);
-  while (1)
-    @{
-      int c, answer;
-      /* @r{Write a space to separate answer from question.} */
-      fputc (' ', stdout);
-      /* @r{Read the first character of the line.}
-         @r{This should be the answer character, but might not be.} */
-      c = tolower (fgetc (stdin));
-      answer = c;
-      /* @r{Discard rest of input line.} */
-      while (c != '\n' && c != EOF)
-        c = fgetc (stdin);
-      /* @r{Obey the answer if it was valid.} */
-      if (answer == 'y')
-        return 1;
-      if (answer == 'n')
-        return 0;
-      /* @r{Answer was invalid. Ask for valid answer.} */
-      fputs ("Please answer y or n:", stdout);
-    @}
address@hidden
address@hidden smallexample
-
address@hidden stdio.h
address@hidden SVID
address@hidden int getw (FILE address@hidden)
-This function reads a word (that is, an @code{int}) from @var{stream}.
-It's provided for compatibility with @sc{svid}.  We recommend you use
address@hidden instead (@pxref{Block Input/Output}).  Unlike @code{getc},
-any @code{int} value could be a valid result.  @code{getw} returns
address@hidden when it encounters end-of-file or an error, but there is no
-way to distinguish this from an input word with value -1.
address@hidden deftypefun
-
address@hidden Line Input
address@hidden Line-Oriented Input
-
-Since many programs interpret input on the basis of lines, it is
-convenient to have functions to read a line of text from a stream.
-
-Standard C has functions to do this, but they aren't very safe: null
-characters and even (for @code{gets}) long lines can confuse them.  So
-the @sc{gnu} library provides the nonstandard @code{getline} function that
-makes it easy to read lines reliably.
-
-Another @sc{gnu} extension, @code{getdelim}, generalizes @code{getline}.  It
-reads a delimited record, defined as everything through the next
-occurrence of a specified delimiter character.
-
-All these functions are declared in @file{stdio.h}.
-
address@hidden stdio.h
address@hidden GNU
address@hidden ssize_t getline (char address@hidden, size_t address@hidden, 
FILE address@hidden)
-This function reads an entire line from @var{stream}, storing the text
-(including the newline and a terminating null character) in a buffer
-and storing the buffer address in @address@hidden
-
-Before calling @code{getline}, you should place in
address@hidden@var{lineptr}} the address of a buffer @address@hidden bytes
-long, allocated with @code{malloc}.  If this buffer is long enough to
-hold the line, @code{getline} stores the line in this buffer.
-Otherwise, @code{getline} makes the buffer bigger using
address@hidden, storing the new buffer address back in
address@hidden@var{lineptr}} and the increased size back in @address@hidden
-(@pxref{Unconstrained Allocation}).
-
-If you set @address@hidden to a null pointer, and @address@hidden
-to zero, before the call, then @code{getline} allocates the initial
-buffer for you by calling @code{malloc}.
-
-In either case, when @code{getline} returns, @address@hidden is
-a @code{char *} that points to the text of the line.
-
-When @code{getline} is successful, it returns the number of characters
-read (including the newline, but not including the terminating null).
-This value enables you to distinguish null characters that are part of
-the line from the null character inserted as a terminator.
-
-This function is a @sc{gnu} extension, but it is the recommended way to read
-lines from a stream.  The alternative standard functions are unreliable.
-
-If an error occurs or end of file is reached without any bytes read,
address@hidden returns @code{-1}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden ssize_t getdelim (char address@hidden, size_t address@hidden, 
int @var{delimiter}, FILE address@hidden)
-This function is like @code{getline}, except that the character that
-tells it to stop reading is not necessarily newline.  The argument
address@hidden specifies the delimiter character; @code{getdelim}
-keeps reading until it sees that character (or end of file).
-
-The text is stored in @var{lineptr}, including the delimiter character
-and a terminating null.  Like @code{getline}, @code{getdelim} makes
address@hidden bigger if it isn't big enough.
-
address@hidden is in fact implemented in terms of @code{getdelim}, just
-like this:
-
address@hidden
-ssize_t
-getline (char **lineptr, size_t *n, FILE *stream)
address@hidden
-  return getdelim (lineptr, n, '\n', stream);
address@hidden
address@hidden smallexample
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden {char *} fgets (char address@hidden, int @var{count}, FILE 
address@hidden)
-The @code{fgets} function reads characters from the stream @var{stream}
-up to and including a newline character and stores them in the string
address@hidden, adding a null character to mark the end of the string.  You
-must supply @var{count} characters worth of space in @var{s}, but the
-number of characters read is at most @var{count} @minus{} 1.  The extra
-character space is used to hold the null character at the end of the
-string.
-
-If the system is already at end of file when you call @code{fgets}, then
-the contents of the array @var{s} are unchanged and a null pointer is
-returned.  A null pointer is also returned if a read error occurs.
-Otherwise, the return value is the pointer @var{s}.
-
address@hidden:}  If the input data has a null character, you can't tell.
-So don't use @code{fgets} unless you know the data cannot contain a null.
-Don't use it to read files edited by the user because, if the user inserts
-a null character, you should either handle it properly or print a clear
-error message.  We recommend using @code{getline} instead of @code{fgets}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden {wchar_t *} fgetws (wchar_t address@hidden, int @var{count}, 
FILE address@hidden)
-The @code{fgetws} function reads wide characters from the stream
address@hidden up to and including a newline character and stores them in
-the string @var{ws}, adding a null wide character to mark the end of the
-string.  You must supply @var{count} wide-characters worth of space in
address@hidden, but the number of characters read is at most @var{count}
address@hidden 1.  The extra character space is used to hold the null wide
-character at the end of the string.
-
-If the system is already at end of file when you call @code{fgetws}, then
-the contents of the array @var{ws} are unchanged and a null pointer is
-returned.  A null pointer is also returned if a read error occurs.
-Otherwise, the return value is the pointer @var{ws}.
-
address@hidden:} If the input data has a null wide character (which are
-null bytes in the input stream), you can't tell.  So don't use
address@hidden unless you know the data cannot contain a null.  Don't use
-it to read files edited by the user because, if the user inserts a null
-character, you should either handle it properly or print a clear error
-message.
address@hidden XXX We need getwline!!!
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden {char *} fgets_unlocked (char address@hidden, int @var{count}, 
FILE address@hidden)
-The @code{fgets_unlocked} function is equivalent to the @code{fgets}
-function, except that it does not implicitly lock the stream.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden {wchar_t *} fgetws_unlocked (wchar_t address@hidden, int 
@var{count}, FILE address@hidden)
-The @code{fgetws_unlocked} function is equivalent to the @code{fgetws}
-function, except that it does not implicitly lock the stream.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden {Deprecated function} {char *} gets (char address@hidden)
-The function @code{gets} reads characters from the stream @code{stdin}
-up to the next newline character, and stores them in the string
address@hidden  The newline character is discarded (note that this differs
-from the behavior of @code{fgets}, which copies the newline character
-into the string).  If @code{gets} encounters a read error or end of
-file, it returns a null pointer. Otherwise, it returns @var{s}.
-
address@hidden:} The @code{gets} function is @emph{very dangerous}
-because it provides no protection against overflowing the string
address@hidden  The @sc{gnu} library includes it for compatibility only.
-You should @emph{always} use @code{fgets} or @code{getline} instead.
-To remind you of this, the linker (if using @sc{gnu} @code{ld}) will
-issue a warning whenever you use @code{gets}.
address@hidden deftypefn
-
address@hidden Unreading
address@hidden Unreading
address@hidden peeking at input
address@hidden unreading characters
address@hidden pushing input back
-
-In parser programs, it is often useful to examine the next character
-in the input stream without removing it from the stream.  This is
-called @dfn{peeking ahead} at the input because your program gets a
-glimpse of the input it will read next.
-
-Using stream I/O, you can peek ahead at input by first reading it and
-then @dfn{unreading} it (also called  @dfn{pushing it back} on the stream).
-Unreading a character makes it available to be input again from the stream,
-by  the next call to @code{fgetc} or other input function on that stream.
-
address@hidden Unreading Idea
address@hidden What Unreading Means
-
-Here is a pictorial explanation of unreading.  Suppose you have a
-stream reading a file that contains just six characters, the letters
address@hidden  Suppose you have read three characters so far.  The
-situation looks like this:
-
address@hidden
-f  o  o  b  a  r
-         ^
address@hidden smallexample
-
address@hidden
-so the next input character will be @samp{b}.
-
address@hidden @group   Invalid outside @smallexample
-If instead of reading @samp{b}, you unread the letter @samp{o}, you
-get a situation like this:
-
address@hidden
-f  o  o  b  a  r
-         |
-      o--
-      ^
address@hidden smallexample
-
address@hidden
-so that the next input characters will be @samp{o} and @samp{b}.
address@hidden @end group
-
address@hidden @group
-If you unread @samp{9} instead of @samp{o}, you get this situation:
-
address@hidden
-f  o  o  b  a  r
-         |
-      9--
-      ^
address@hidden smallexample
-
address@hidden
-so that the next input characters will be @samp{9} and @samp{b}.
address@hidden @end group
-
address@hidden How Unread
address@hidden Using @code{ungetc} to Do Unreading
-
-The function to unread a character is called @code{ungetc}, because it
-reverses the action of @code{getc}.
-
address@hidden stdio.h
address@hidden ISO
address@hidden int ungetc (int @var{c}, FILE address@hidden)
-The @code{ungetc} function pushes back the character @var{c} onto the
-input stream @var{stream}.  So the next input from @var{stream} will
-read @var{c} before anything else.
-
-If @var{c} is @code{EOF}, @code{ungetc} does nothing and just returns
address@hidden  This lets you call @code{ungetc} with the return value of
address@hidden without needing to check for an error from @code{getc}.
-
-The character that you push back doesn't have to be the same as the last
-character that was actually read from the stream.  In fact, it isn't
-necessary to actually read any characters from the stream before
-unreading them with @code{ungetc}!  But that is a strange way to write a
-program; usually @code{ungetc} is used only to unread a character that
-was just read from the same stream.  The @sc{gnu} C Library supports this
-even on files opened in binary mode, but other systems might not.
-
-The @sc{gnu} C Library only supports one character of push back---in
-other words, it does not work to call @code{ungetc} twice without
-doing input in between.  Other systems might let you push back
-multiple characters; then reading from the stream retrieves the
-characters in the reverse order that they were pushed.
-
-Pushing back characters doesn't alter the file; only the internal
-buffering for the stream is affected.  If a file-positioning function
-(such as @code{fseek}, @code{fseeko} or @code{rewind}) is called, any pending 
pushed-back characters are discarded (@pxref{File Positioning}).
-
-Unreading a character on a stream that is at end of file clears the
-end-of-file indicator for the stream, because it makes the character of
-input available.  After you read that character, trying to read again
-will encounter end of file.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden wint_t ungetwc (wint_t @var{wc}, FILE address@hidden)
-The @code{ungetwc} function behaves just like @code{ungetc} just that it
-pushes back a wide character.
address@hidden deftypefun
-
-Here is an example showing the use of @code{getc} and @code{ungetc} to
-skip over white-space characters.  When this function reaches a
-non-white-space character, it unreads that character to be seen again on
-the next read operation on the stream:
-
address@hidden
-#include <stdio.h>
-#include <ctype.h>
-
-void
-skip_whitespace (FILE *stream)
address@hidden
-  int c;
-  do
-    /* @r{No need to check for @code{EOF} because it is not}
-       @address@hidden, and @code{ungetc} ignores @code{EOF}.}  */
-    c = getc (stream);
-  while (isspace (c));
-  ungetc (c, stream);
address@hidden
address@hidden smallexample
-
address@hidden Block Input/Output
address@hidden Block Input/Output
-
-This section describes how to do input and output operations on blocks
-of data.  You can use these functions to read and write binary data, as
-well as to read and write text in fixed-size blocks instead of by
-characters or lines.
address@hidden binary I/O to a stream
address@hidden block I/O to a stream
address@hidden reading from a stream, by blocks
address@hidden writing to a stream, by blocks
-
-Binary files are typically used to read and write blocks of data in the
-same format as is used to represent the data in a running program.  In
-other words, arbitrary blocks of memory---not just character or string
-objects---can be written to a binary file, and meaningfully read in
-again by the same program.
-
-Storing data in binary form is often considerably more efficient than
-using the formatted I/O functions.  Also, for floating-point numbers,
-the binary form avoids possible loss of precision in the conversion
-process.  On the other hand, binary files can't be examined or modified
-easily using many standard file utilities (such as text editors), and
-are not portable between different implementations of the language, or
-different kinds of computers.
-
-These functions are declared in @file{stdio.h}.
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden ISO
address@hidden size_t fread (void address@hidden, size_t @var{size}, size_t 
@var{count}, FILE address@hidden)
-This function reads up to @var{count} objects of size @var{size} into
-the array @var{data}, from the stream @var{stream}.  It returns the
-number of objects actually read, which might be less than @var{count} if
-a read error occurs or the end of the file is reached.  This function
-returns a value of zero (and doesn't read anything) if either @var{size}
-or @var{count} is zero.
-
-If @code{fread} encounters end of file in the middle of an object, it
-returns the number of complete objects read, and discards the partial
-object.  Therefore, the stream remains at the actual end of the file.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden size_t fread_unlocked (void address@hidden, size_t @var{size}, 
size_t @var{count}, FILE address@hidden)
-The @code{fread_unlocked} function is equivalent to the @code{fread}
-function, except that it does not implicitly lock the stream.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden size_t fwrite (const void address@hidden, size_t @var{size}, 
size_t @var{count}, FILE address@hidden)
-This function writes up to @var{count} objects of size @var{size} from
-the array @var{data}, to the stream @var{stream}.  The return value is
-normally @var{count}, if the call succeeds.  Any other value indicates
-some sort of error, such as running out of space.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden size_t fwrite_unlocked (const void address@hidden, size_t 
@var{size}, size_t @var{count}, FILE address@hidden)
-The @code{fwrite_unlocked} function is equivalent to the @code{fwrite}
-function, except that it does not implicitly lock the stream.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
address@hidden Formatted Output
address@hidden Formatted Output
-
address@hidden format string, for @code{printf}
address@hidden template, for @code{printf}
address@hidden formatted output to a stream
address@hidden writing to a stream, formatted
-The functions described in this section (@code{printf} and related
-functions) provide a convenient way to perform formatted output.  You
-call @code{printf} with a @dfn{format string} or @dfn{template string}
-that specifies how to format the values of the remaining arguments.
-
-Unless your program is a filter that specifically performs line- or
-character-oriented processing, using @code{printf} or one of the other
-related functions described in this section is usually the easiest and
-most concise way to perform output.  These functions are especially
-useful for printing error messages, tables of data, and the like.
-
address@hidden Formatted Output Basics
address@hidden Formatted Output Basics
-
-The @code{printf} function can be used to print any number of arguments.
-The template string argument you supply in a call provides
-information not only about the number of additional arguments, but also
-about their types and what style should be used for printing them.
-
-Ordinary characters in the template string are simply written to the
-output stream as-is, while @dfn{conversion specifications} introduced
-by a @samp{%} character in the template cause subsequent arguments to
-be formatted and written to the output stream.  For example:
address@hidden conversion specifications (@code{printf})
-
address@hidden
-int pct = 37;
-char filename[] = "foo.txt";
-printf ("Processing of `%s' is %d%% finished.\nPlease be patient.\n",
-        filename, pct);
address@hidden smallexample
-
address@hidden
-produces output like:
-
address@hidden
-Processing of `foo.txt' is 37% finished.
-Please be patient.
address@hidden smallexample
-
-This example shows the use of the @samp{%d} conversion to specify that
-an @code{int} argument should be printed in decimal notation, the
address@hidden conversion to specify printing of a string argument, and
-the @samp{%%} conversion to print a literal @samp{%} character.
-
-There are also conversions for printing an integer argument as an
-unsigned value in octal, decimal, or hexadecimal radix (@samp{%o},
address@hidden, or @samp{%x}, respectively); or as a character value
-(@samp{%c}).
-
-Floating-point numbers can be printed in normal, fixed-point notation
-using the @samp{%f} conversion or in exponential notation using the
address@hidden conversion.  The @samp{%g} conversion uses either @samp{%e}
-or @samp{%f} format, depending on what is more appropriate for the
-magnitude of the particular number.
-
-You can control formatting more precisely by writing @dfn{modifiers}
-between the @samp{%} and the character that indicates which conversion
-to apply.  These slightly alter the ordinary behavior of the conversion.
-For example, most conversion specifications permit you to specify a
-minimum field width and a flag indicating whether you want the result
-left- or right-justified within the field.
-
-The specific flags and modifiers that are permitted and their
-interpretation vary depending on the particular conversion.  They're all
-described in more detail in the following sections.  Don't worry if this
-all seems excessively complicated at first; you can almost always get
-reasonable free-format output without using any of the modifiers at all.
-The modifiers are mostly used to make the output look ``prettier'' in
-tables.
-
address@hidden Output Conversion Syntax
address@hidden Output Conversion Syntax
-
-This section provides details about the precise syntax of conversion
-specifications that can appear in a @code{printf} template
-string.
-
-Characters in the template string that are not part of a conversion
-specification are printed as-is to the output stream.
-Multibyte-character sequences (@pxref{Character-Set Handling}) are
-permitted in a template string.
-
-The conversion specifications in a @code{printf} template string have
-the general form:
-
address@hidden
-% @r{[} @var{param-no} @r{$]} @var{flags} @var{width} @r{[} . @var{precision} 
@r{]} @var{type} @var{conversion}
address@hidden smallexample
-
address@hidden
-or
-
address@hidden
-% @r{[} @var{param-no} @r{$]} @var{flags} @var{width} . @r{*} @r{[} 
@var{param-no} @r{$]} @var{type} @var{conversion}
address@hidden smallexample
-
-For example, in the conversion specifier @samp{%-10.8ld}, the @samp{-}
-is a flag, @samp{10} specifies the field width, the precision is
address@hidden, the letter @samp{l} is a type modifier, and @samp{d}
-specifies the conversion style.  (This particular type specifier says
-to print a @code{long int} argument in decimal notation, with a
-minimum of eight digits left-justified in a field at least ten
-characters wide.)
-
-In more detail, output conversion specifications consist of an
-initial @samp{%} character followed in sequence by:
-
address@hidden @bullet
address@hidden
-An optional specification of the parameter used for this format.
-Normally, the parameters to the @code{printf} function are assigned to
-the formats in the order of appearance in the format string.  But in
-some situations (such as message translation), this is not desirable,
-and this extension allows an explicit parameter to be specified.
-
-The @var{param-no} parts of the format must be integers in the range of
-1 to the maximum number of arguments present to the function call.  Some
-implementations limit this number to a certainly upper bound.  The exact
-limit can be retrieved by the following constant.
-
address@hidden Macro NL_ARGMAX
-The value of @code{NL_ARGMAX} is the maximum value allowed for the
-specification of a positional parameter in a @code{printf} call.  The
-actual value in effect at run time can be retrieved by using
address@hidden using the @code{_SC_NL_ARGMAX}
address@hidden, ``Definition of @code{sysconf}''.}
-
-Some systems have quite a low limit, such as @math{9} for @w{System V}
-systems.  The @sc{gnu} C Library has no real limit.
address@hidden defvr
-
-If any of the formats has a specification for the parameter position,
-all of them in the format string shall have one.  Otherwise, the
-behavior is undefined.
-
address@hidden
-Zero or more @dfn{flag characters} that modify the normal behavior of
-the conversion specification
address@hidden flag character (@code{printf})
-
address@hidden
-An optional decimal integer specifying the @dfn{minimum field width};
-if the normal conversion produces fewer characters than this, the
-field is padded with spaces to the specified width.  This is a
address@hidden value; if the normal conversion produces more
-characters than this, the field is @emph{not} truncated.  Normally,
-the output is right-justified within the field.
address@hidden minimum field width (@code{printf})
-
-You can also specify a field width of @samp{*}.  This means that the
-next argument in the argument list (before the actual value to be
-printed) is used as the field width.  The value must be an @code{int}.
-If the value is negative, this means to set the @samp{-} flag (see
-below), and to use the absolute value as the field width.
-
address@hidden
-An optional @dfn{precision} to specify the number of digits to be
-written for the numeric conversions; if the precision is specified, it
-consists of a period (@samp{.}) followed optionally by a decimal
-integer (which defaults to zero if omitted).
address@hidden precision (@code{printf})
-
-You can also specify a precision of @samp{*}.  This means that the next
-argument in the argument list (before the actual value to be printed) is
-used as the precision.  The value must be an @code{int}, and is ignored
-if it is negative.  If you specify @samp{*} for both the field width and
-precision, the field width argument precedes the precision argument.
-Other C library versions may not recognize this syntax.
-
address@hidden
-An optional @dfn{type modifier character}, which is used to specify
-the data type of the corresponding argument if it differs from the
-default type; for example, the integer conversions assume a type of
address@hidden, but you can specify @samp{h}, @samp{l}, or @samp{L} for
-other integer types.
address@hidden type modifier character (@code{printf})
-
address@hidden
-A character that specifies the conversion to be applied
address@hidden itemize
-
-The exact options that are permitted and how they are interpreted vary
-between the different conversion specifiers.  See the descriptions of the
-individual conversions for information about the particular options that
-they use.
-
-With the @samp{-Wformat} option, the @sc{gnu} C Compiler checks calls
-to @code{printf} and related functions.  It examines the format string
-and verifies that the correct number and types of arguments are
-supplied.  There is also a @sc{gnu} C syntax to tell the compiler that
-a function you write uses a @code{printf}-style format
address@hidden Richard M. Stallman and the GCC Developer
-Community, ``Decaring Attributes of Functions'' in @emph{Using GCC:
-The GNU Compiler Collection Reference Manual} (Boston, MA: GNU Press,
-October 2003), @uref{http:// gcc.gnu.org/ onlinedocs/ gcc-3.3.2/ gcc/}.}
-
address@hidden Table of Output Conversions
address@hidden Table of Output Conversions
address@hidden output conversions, for @code{printf}
-
-Here is a table summarizing what all the different conversions do:
-
address@hidden @asis
address@hidden @samp{%d}, @samp{%i}
-Print an integer as a signed decimal number (@pxref{Integer
-Conversions}).  @samp{%d} and @samp{%i} are synonymous for output, but
-are different when used with @code{scanf} for input (@pxref{Table of
-Input Conversions}).
-
address@hidden @samp{%o}
-Print an integer as an unsigned octal number (@pxref{Integer
-Conversions}).
-
address@hidden @samp{%u}
-Print an integer as an unsigned decimal number (@pxref{Integer
-Conversions}).
-
address@hidden @samp{%x}, @samp{%X}
-Print an integer as an unsigned hexadecimal number.  @samp{%x} uses
-lowercase letters and @samp{%X} uses uppercase (@pxref{Integer
-Conversions}).
-
address@hidden @samp{%f}
-Print a floating-point number in normal (fixed-point) notation
-(@pxref{Floating-Point Conversions}).
-
address@hidden @samp{%e}, @samp{%E}
-Print a floating-point number in exponential notation.  @samp{%e} uses
-lowercase letters and @samp{%E} uses uppercase (@pxref{Floating-Point
-Conversions}).
-
address@hidden @samp{%g}, @samp{%G}
-Print a floating-point number in either normal or exponential
-notation, whichever is more appropriate for its magnitude.  @samp{%g}
-uses lowercase letters and @samp{%G} uses uppercase
-(@pxref{Floating-Point Conversions}).
-
address@hidden @samp{%a}, @samp{%A}
-Print a floating-point number in a hexadecimal fractional notation which
-the exponent to base 2 represented in decimal digits.  @samp{%a} uses
-lowercase letters and @samp{%A} uses uppercase (@pxref{Floating-Point
-Conversions}).
-
address@hidden @samp{%c}
-Print a single character (@pxref{Other Output Conversions}).
-
address@hidden @samp{%C}
-This is an alias for @samp{%lc} that is supported for compatibility
-with the Unix standard.
-
address@hidden @samp{%s}
-Print a string (@pxref{Other Output Conversions}).
-
address@hidden @samp{%S}
-This is an alias for @samp{%ls} that is supported for compatibility
-with the Unix standard.
-
address@hidden @samp{%p}
-Print the value of a pointer (@pxref{Other Output Conversions}).
-
address@hidden @samp{%n}
-Get the number of characters printed so far (@pxref{Other Output
-Conversions}).  This conversion specification never produces any
-output.
-
address@hidden @samp{%m}
-Print the string corresponding to the value of @code{errno}
-(@pxref{Other Output Conversions}).  This is a @sc{gnu} extension.
-
address@hidden @samp{%%}
-Print a literal @samp{%} character (@pxref{Other Output Conversions}).
address@hidden table
-
-If the syntax of a conversion specification is invalid, unpredictable
-things will happen, so don't do this.  If there aren't enough function
-arguments provided to supply values for all of the conversion
-specifications in the template string, or if the arguments are not of
-the correct types, the results are unpredictable.  If you supply more
-arguments than conversion specifications, the extra argument values
-are simply ignored; this is sometimes useful.
-
address@hidden Integer Conversions
address@hidden Integer Conversions
-
-This section describes the options for the @samp{%d}, @samp{%i},
address@hidden, @samp{%u}, @samp{%x} and @samp{%X} conversion
-specifications.  These conversions print integers in various formats.
-
-The @samp{%d} and @samp{%i} conversion specifications both print an
address@hidden argument as a signed decimal number; while @samp{%o},
address@hidden and @samp{%x} print the argument as an unsigned octal,
-decimal, or hexadecimal number, respectively.  The @samp{%X}
-conversion specification is just like @samp{%x}, except that it uses
-the characters @samp{ABCDEF} as digits instead of @samp{abcdef}.
-
-The following flags are meaningful:
-
address@hidden @asis
address@hidden @samp{-}
-Left-justify the result in the field (instead of the normal
-right-justification).
-
address@hidden @samp{+}
-For the signed @samp{%d} and @samp{%i} conversions, print a
-plus sign if the value is positive.
-
address@hidden @samp{ }
-For the signed @samp{%d} and @samp{%i} conversions, if the result
-doesn't start with a plus or minus sign, prefix it with a space
-character instead.  Since the @samp{+} flag ensures that the result
-includes a sign, this flag is ignored if you supply both of them.
-
address@hidden @samp{#}
-For the @samp{%o} conversion, this forces the leading digit to be
address@hidden, as if by increasing the precision.  For @samp{%x} or
address@hidden, this prefixes a leading @samp{0x} or @samp{0X},
-respectively, to the result.  This doesn't do anything useful for the
address@hidden, @samp{%i}, or @samp{%u} conversions.  Using this flag
-produces output that can be parsed by the @code{strtoul} function
-(@pxref{Parsing of Integers}) and @code{scanf} with the @samp{%i}
-conversion (@pxref{Numeric Input Conversions}).
-
address@hidden @samp{'}
-Separate the digits into groups as specified by the locale specified
-for the @code{LC_NUMERIC} category (@pxref{General Numeric}).  This
-flag is a @sc{gnu} extension.
-
address@hidden @samp{0}
-Pad the field with zeros instead of spaces.  The zeros are placed after
-any indication of sign or base.  This flag is ignored if the @samp{-}
-flag is also specified, or if a precision is specified.
address@hidden table
-
-If a precision is supplied, it specifies the minimum number of digits to
-appear; leading zeros are produced if necessary.  If you don't specify a
-precision, the number is printed with as many digits as it needs.  If
-you convert a value of zero with an explicit precision of zero, then no
-characters at all are produced.
-
-Without a type modifier, the corresponding argument is treated as an
address@hidden (for the signed conversions @samp{%i} and @samp{%d}) or
address@hidden int} (for the unsigned conversions @samp{%o},
address@hidden, @samp{%x} and @samp{%X}).  Recall that since @code{printf}
-and friends are variadic, any @code{char} and @code{short} arguments
-are automatically converted to @code{int} by the default argument
-promotions.  For arguments of other integer types, you can use these
-modifiers:
-
address@hidden @samp
address@hidden hh
-This modifier specifies that the argument is a @code{signed char} or
address@hidden char}, as appropriate.  A @code{char} argument is
-converted to an @code{int} or @code{unsigned int} by the default
-argument promotions anyway, but the @samp{h} modifier says to convert
-it back to a @code{char} again.
-
-This modifier was introduced in @address@hidden C99}.
-
address@hidden h
-This modifier specifies that the argument is a @code{short int} or 
@code{unsigned
-short int}, as appropriate.  A @code{short} argument is converted to an
address@hidden or @code{unsigned int} by the default argument promotions
-anyway, but the @samp{h} modifier says to convert it back to a
address@hidden again.
-
address@hidden j
-This modifier specifies that the argument is an @code{intmax_t} or
address@hidden, as appropriate.
-
-It was introduced in @address@hidden C99}.
-
address@hidden l
-This modifier specifies that the argument is a @code{long int} or 
@code{unsigned long
-int}, as appropriate.  Two @samp{l} characters is like the @samp{L}
-modifier, below.
-
-If used with @samp{%c} or @samp{%s}, the corresponding parameter is
-considered as a wide character or wide-character string respectively.
-This use of @samp{l} was introduced in @w{Amendment 1} to @address@hidden C90}.
-
address@hidden L
address@hidden ll
address@hidden q
-This modifier specifies that the argument is a @code{long long int}.  (This 
type is
-an extension supported by the @sc{gnu} C Compiler.  On systems that don't
-support extra-long integers, this is the same as @code{long int}.)
-
-The @samp{q} modifier is another name for the same thing, which comes
-from 4.4 @sc{bsd}; a @address@hidden long int}} is sometimes called a
address@hidden @code{int}.
-
address@hidden t
-This modifier specifies that the argument is a @code{ptrdiff_t}.
-
-It was introduced in @address@hidden C99}.
-
address@hidden z
address@hidden Z
-This modifier specifies that the argument is a @code{size_t}.
-
address@hidden was introduced in @address@hidden C99}.  @samp{Z} is a @sc{gnu}
-extension pre-dating this addition and should not be used in new code.
address@hidden table
-
-Here is an example.  Using the template string:
-
address@hidden
-"|%5d|%-5d|%+5d|%+-5d|% 5d|%05d|%5.0d|%5.2d|%d|\n"
address@hidden smallexample
-
address@hidden
-to print numbers using the different options for the @samp{%d}
-conversion gives results like:
-
address@hidden
-|    0|0    |   +0|+0   |    0|00000|     |   00|0|
-|    1|1    |   +1|+1   |    1|00001|    1|   01|1|
-|   -1|-1   |   -1|-1   |   -1|-0001|   -1|  -01|-1|
-|100000|100000|+100000|+100000| 100000|100000|100000|100000|100000|
address@hidden smallexample
-
-In particular, notice what happens in the last case where the number
-is too large to fit in the minimum field width specified.
-
-Here are some more examples showing how unsigned integers print under
-various format options, using the template string:
-
address@hidden
-"|%5u|%5o|%5x|%5X|%#5o|%#5x|%#5X|%#10.8x|\n"
address@hidden smallexample
-
address@hidden
-|    0|    0|    0|    0|    0|    0|    0|  00000000|
-|    1|    1|    1|    1|   01|  0x1|  0X1|0x00000001|
-|100000|303240|186a0|186A0|0303240|0x186a0|0X186A0|0x000186a0|
address@hidden smallexample
-
-
address@hidden Floating-Point Conversions
address@hidden Floating-Point Conversions
-
-This section discusses the conversion specifications for
-floating-point numbers: the @samp{%f}, @samp{%e}, @samp{%E}, @samp{%g}
-and @samp{%G} conversions.
-
-The @samp{%f} conversion prints its argument in fixed-point notation,
-producing output of the form
address@hidden@address@hidden@address@hidden,
-where the number of digits following the decimal point is controlled
-by the precision you specify.
-
-The @samp{%e} conversion prints its argument in exponential notation,
-producing output of the form
address@hidden@address@hidden@address@hidden@address@hidden|@address@hidden
-Again, the number of digits following the decimal point is controlled
-by the precision.  The exponent always contains at least two digits.
-The @samp{%E} conversion is similar, but the exponent is marked with
-the letter @samp{E} instead of @samp{e}.
-
-The @samp{%g} and @samp{%G} conversions print the argument in the
-style of @samp{%e} or @samp{%E}, respectively, if the exponent would
-be less than -4 or greater than or equal to the precision. Otherwise,
-they use the @samp{%f} style.  A precision of @code{0}, is taken as
-1. is Trailing zeros are removed from the fractional portion of the
-result, and a decimal-point character appears only if it is followed
-by a digit.
-
-The @samp{%a} and @samp{%A} conversions are meant for representing
-floating-point numbers exactly in textual form so that they can be
-exchanged as texts between different programs and/or machines.  The
-numbers are represented in the form
address@hidden@address@hidden@address@hidden@address@hidden@code{+}|@address@hidden
-At the left of the decimal-point character exactly one digit is
-printed.  This character is only @code{0} if the number is
-de-normalized.  Otherwise, the value is unspecified; it is
-implementation dependent how many bits are used.  The number of
-hexadecimal digits on the right side of the decimal-point character is
-equal to the precision.  If the precision is zero, it is determined to
-be large enough to provide an exact representation of the number or it
-is large enough to distinguish two adjacent values if the
address@hidden is not a power of address@hidden, ``Floating-Point
-Parameters''.}  For the @samp{%a} conversion, lowercase characters are
-used to represent the hexadecimal number, and the prefix and exponent
-sign are printed as @code{0x} and @code{p} respectively.  Otherwise,
-uppercase characters are used, and @code{0X} and @code{P} are used for
-the representation of prefix and exponent string.  The exponent to the
-base of two is printed as a decimal number using at least one digit
-but at most as many digits as necessary to represent the value
-exactly.
-
-If the value to be printed represents infinity or a NaN, the output is
address@hidden@address@hidden or @code{nan}, respectively, if the
-conversion specifier is @samp{%a}, @samp{%e}, @samp{%f} or @samp{%g}.
-The output is @address@hidden@code{INF}} or @code{NAN}, respectively, if
-the conversion is @samp{%A}, @samp{%E} or @samp{%G}.
-
-The following flags can be used to modify the behavior:
-
address@hidden We use @asis instead of @samp so we can have ` ' as an item.
address@hidden @asis
address@hidden @samp{-}
-Left-justify the result in the field.  Normally the result is
-right-justified.
-
address@hidden @samp{+}
-Always include a plus or minus sign in the result.
-
address@hidden @samp{ }
-If the result doesn't start with a plus or minus sign, prefix it with a
-space instead.  Since the @samp{+} flag ensures that the result includes
-a sign, this flag is ignored if you supply both of them.
-
address@hidden @samp{#}
-Specify that the result should always include a decimal point, even if
-no digits follow it.  For the @samp{%g} and @samp{%G} conversions,
-this also forces trailing zeros after the decimal point to be left in
-place where they would otherwise be removed.
-
address@hidden @samp{'}
-Separate the digits of the integer part of the result into groups as
-specified by the locale specified for the @code{LC_NUMERIC} category
-(@pxref{General Numeric}).  This flag is a @sc{gnu} extension.
-
address@hidden @samp{0}
-Pad the field with zeros instead of spaces; the zeros are placed
-after any sign.  This flag is ignored if the @samp{-} flag is also
-specified.
address@hidden table
-
-The precision specifies how many digits follow the decimal-point
-character for the @samp{%f}, @samp{%e} and @samp{%E} conversions.  For
-these conversions, the default precision is @code{6}.  If the
-precision is explicitly @code{0}, this suppresses the decimal-point
-character entirely.  For the @samp{%g} and @samp{%G} conversions, the
-precision specifies how many significant digits to print.  Significant
-digits are the first digit before the decimal point and all the digits
-after it.  If the precision is @code{0} or not specified for @samp{%g}
-or @samp{%G}, it is treated like a value of @code{1}.  If the value
-being printed cannot be expressed accurately in the specified number
-of digits, the value is rounded to the nearest number that fits.
-
-Without a type modifier, the floating-point conversions use an argument
-of type @code{double}.  (By the default argument promotions, any
address@hidden arguments are automatically converted to @code{double}.)
-The following type modifier is supported:
-
address@hidden @samp
address@hidden L
-An uppercase @samp{L} specifies that the argument is a @code{long
-double}.
address@hidden table
-
-Here are some examples showing how numbers print using the various
-floating-point conversions.  All of the numbers were printed using
-this template string:
-
address@hidden
-"|%13.4a|%13.4f|%13.4e|%13.4g|\n"
address@hidden smallexample
-
-Here is the output:
-
address@hidden
-|  0x0.0000p+0|       0.0000|   0.0000e+00|            0|
-|  0x1.0000p-1|       0.5000|   5.0000e-01|          0.5|
-|  0x1.0000p+0|       1.0000|   1.0000e+00|            1|
-| -0x1.0000p+0|      -1.0000|  -1.0000e+00|           -1|
-|  0x1.9000p+6|     100.0000|   1.0000e+02|          100|
-|  0x1.f400p+9|    1000.0000|   1.0000e+03|         1000|
-| 0x1.3880p+13|   10000.0000|   1.0000e+04|        1e+04|
-| 0x1.81c8p+13|   12345.0000|   1.2345e+04|    1.234e+04|
-| 0x1.86a0p+16|  100000.0000|   1.0000e+05|        1e+05|
-| 0x1.e240p+16|  123456.0000|   1.2346e+05|    1.235e+05|
address@hidden smallexample
-
-Notice how the @samp{%g} conversion drops trailing zeros.
-
address@hidden Other Output Conversions
address@hidden Other Output Conversions
-
-This section describes miscellaneous conversions for @code{printf}.
-
-The @samp{%c} conversion prints a single character.  In case there is
-no @samp{l} modifier, the @code{int} argument is first converted to an
address@hidden char}.  Then, if used in a wide stream function, the
-character is converted into the corresponding wide character.  The
address@hidden flag can be used to specify left-justification in the field,
-but no other flags are defined, and no precision or type modifier can
-be given.  For example:
-
address@hidden
-printf ("%c%c%c%c%c", 'h', 'e', 'l', 'l', 'o');
address@hidden smallexample
-
address@hidden
-prints @samp{hello}.
-
-If there is a @samp{l} modifier present, the argument is expected to
-be of type @code{wint_t}.  If used in a multibyte function, the wide
-character is converted into a multibyte character before being added
-to the output.  In this case, more than 1 output byte can be produced.
-
-The @samp{%s} conversion prints a string.  If no @samp{l} modifier is
-present, the corresponding argument must be of type @code{char *} (or
address@hidden char *}).  If used in a wide stream function the string is
-first converted in a wide-character string.  A precision can be
-specified to indicate the maximum number of characters to write.
-Otherwise, characters in the string up to but not including the
-terminating null character are written to the output stream.  The
address@hidden flag can be used to specify left-justification in the field,
-but no other flags or type modifiers are defined for this conversion.
-For example:
-
address@hidden
-printf ("%3s%-6s", "no", "where");
address@hidden smallexample
-
address@hidden
-prints @samp{ nowhere }.
-
-If there is a @samp{l} modifier present, the argument is expected to
-be of type @code{wchar_t} (or @code{const wchar_t *}).
-
-If you accidentally pass a null pointer as the argument for a @samp{%s}
-conversion, the @sc{gnu} library prints it as @samp{(null)}.  We think this
-is more useful than crashing.  But it's not good practice to pass a null
-argument intentionally.
-
-The @samp{%m} conversion prints the string corresponding to the error
-code in @code{errno} (@pxref{Error Messages}).  Thus:
-
address@hidden
-fprintf (stderr, "can't open `%s': %m\n", filename);
address@hidden smallexample
-
address@hidden
-is equivalent to:
-
address@hidden
-fprintf (stderr, "can't open `%s': %s\n", filename, strerror (errno));
address@hidden smallexample
-
address@hidden
-The @samp{%m} conversion is a @sc{gnu} C Library extension.
-
-The @samp{%p} conversion prints a pointer value.  The corresponding
-argument must be of type @code{void *}.  In practice, you can use any
-type of pointer.
-
-In the @sc{gnu} system, nonnull pointers are printed as unsigned integers,
-as if a @samp{%#x} conversion were used.  Null pointers print as
address@hidden(nil)}.  (Pointers might print differently in other systems.)
-
-For example:
-
address@hidden
-printf ("%p", "testing");
address@hidden smallexample
-
address@hidden
-prints @samp{0x} followed by a hexadecimal number---the address of the
-string constant @code{"testing"}.  It does not print the word
address@hidden
-
-You can supply the @samp{-} flag with the @samp{%p} conversion to
-specify left-justification, but no other flags, precision, or type
-modifiers are defined.
-
-The @samp{%n} conversion is unlike any of the other output
-conversions.  It uses an argument that must be a pointer to an
address@hidden, but instead of printing anything, it stores the number of
-characters printed so far by this call at that location.  The @samp{h}
-and @samp{l} type modifiers are permitted to specify that the argument
-is of type @code{short int *} or @code{long int *} instead of
address@hidden *}, but no flags, field width, or precision are permitted.
-
-For example:
-
address@hidden
-int nchar;
-printf ("%d %s%n\n", 3, "bears", &nchar);
address@hidden smallexample
-
address@hidden
-prints:
-
address@hidden
-3 bears
address@hidden smallexample
-
address@hidden
-and sets @code{nchar} to @code{7}, because @samp{3 bears} is seven
-characters.
-
-
-The @samp{%%} conversion prints a literal @samp{%} character.  This
-conversion doesn't use an argument, and no flags, field width,
-precision, or type modifiers are permitted.
-
-
address@hidden Formatted Output Functions
address@hidden Formatted Output Functions
-
-This section describes how to call @code{printf} and related functions.
-Prototypes for these functions are in the header file @file{stdio.h}.
-Because these functions take a variable number of arguments, you
address@hidden declare prototypes for them before using them.  Of course,
-the easiest way to make sure you have all the right prototypes is to
-just include @file{stdio.h}.
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden ISO
address@hidden int printf (const char address@hidden, @dots{})
-The @code{printf} function prints the optional arguments under the
-control of the template string @var{template} to the stream
address@hidden  It returns the number of characters printed, or a
-negative value if there was an output error.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int wprintf (const wchar_t address@hidden, @dots{})
-The @code{wprintf} function prints the optional arguments under the
-control of the wide template string @var{template} to the stream
address@hidden  It returns the number of wide characters printed, or a
-negative value if there was an output error.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int fprintf (FILE address@hidden, const char address@hidden, 
@dots{})
-This function is just like @code{printf}, except that the output is
-written to the stream @var{stream} instead of @code{stdout}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int fwprintf (FILE address@hidden, const wchar_t address@hidden, 
@dots{})
-This function is just like @code{wprintf}, except that the output is
-written to the stream @var{stream} instead of @code{stdout}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int sprintf (char address@hidden, const char address@hidden, 
@dots{})
-This is like @code{printf}, except that the output is stored in the character
-array @var{s} instead of written to a stream.  A null character is written
-to mark the end of the string.
-
-The @code{sprintf} function returns the number of characters stored in
-the array @var{s}, not including the terminating null character.
-
-The behavior of this function is undefined if copying takes place
-between objects that overlap---for example, if @var{s} is also given
-as an argument to be printed under control of the @samp{%s} conversion
-(@pxref{Copying and Concatenation}).
-
address@hidden:} The @code{sprintf} function can be @emph{dangerous}
-because it can potentially output more characters than can fit in the
-allocation size of the string @var{s}.  Remember that the field width
-given in a conversion specification is only a @emph{minimum} value.
-
-To avoid this problem, you can use @code{snprintf} or @code{asprintf},
-described below.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden int swprintf (wchar_t address@hidden, size_t @var{size}, const 
wchar_t address@hidden, @dots{})
-This is like @code{wprintf}, except that the output is stored in the
-wide-character array @var{ws} instead of written to a stream.  A null
-wide character is written to mark the end of the string.  The
address@hidden argument specifies the maximum number of characters to
-produce.  The trailing null character is counted toward this limit,
-so you should allocate at least @var{size} wide characters for the
-string @var{ws}.
-
-The return value is the number of characters generated for the given
-input, excluding the trailing null.  If not all output fits into the
-provided buffer, a negative value is returned.  You should try again
-with a bigger output string.  This is different from how
address@hidden handles this situation.
-
-The corresponding narrow stream function takes fewer parameters.
address@hidden in fact corresponds to the @code{snprintf} function.
-Since the @code{sprintf} function can be dangerous and should be
-avoided, the @address@hidden C} committee refused to make the same mistake
-again and decided to not define a function exactly corresponding to
address@hidden
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden int snprintf (char address@hidden, size_t @var{size}, const char 
address@hidden, @dots{})
-The @code{snprintf} function is similar to @code{sprintf}, except that
-the @var{size} argument specifies the maximum number of characters to
-produce.  The trailing null character is counted toward this limit, so
-you should allocate at least @var{size} characters for the string @var{s}.
-
-The return value is the number of characters that would be generated
-for the given input, excluding the trailing null.  If this value is
-greater or equal to @var{size}, not all characters from the result
-have been stored in @var{s}.  You should try again with a bigger
-output string.  Here is an example of doing this:
-
address@hidden
-
-/* @r{Construct a message describing the value of a variable}
-   @r{whose name is @var{name} and whose value is @var{value}.} */
-char *
-make_message (char *name, char *value)
address@hidden
-  /* @r{Guess we need no more than 100 chars of space.} */
-  int size = 100;
-  char *buffer = (char *) xmalloc (size);
-  int nchars;
-
-
-  if (buffer == NULL)
-    return NULL;
-
- /* @r{Try to print in the allocated space.} */
-  nchars = snprintf (buffer, size, "value of %s is %s",
-                     name, value);
-
-
-  if (nchars >= size)
-    @{
-      /* @r{Reallocate buffer now that we know
-         how much space is needed.} */
-      buffer = (char *) xrealloc (buffer, nchars + 1);
-
-      if (buffer != NULL)
-        /* @r{Try again.} */
-        snprintf (buffer, size, "value of %s is %s",
-                  name, value);
-    @}
-  /* @r{The last call worked, return the string.} */
-  return buffer;
address@hidden
-
address@hidden smallexample
-
-In practice, it is often easier just to use @code{asprintf}
-(@pxref{Dynamic Output}).
-
address@hidden:} In versions of the @sc{gnu} C Library prior to
-2.1, the return value is the number of characters stored, not
-including the terminating null; unless there was not enough space in
address@hidden to store the result, in which case @code{-1} is returned.
-This was changed in order to comply with the @address@hidden C99}
-standard.
address@hidden deftypefun
-
address@hidden Dynamic Output
address@hidden Dynamically Allocating Formatted Output
-
-The functions in this section do formatted output and place the results
-in dynamically allocated memory.
-
address@hidden stdio.h
address@hidden GNU
address@hidden int asprintf (char address@hidden, const char address@hidden, 
@dots{})
-This function is similar to @code{sprintf}, except that it dynamically
-allocates a string (as with @code{malloc}; @pxref{Unconstrained
-Allocation}) to hold the output, instead of putting the output in a
-buffer you allocate in advance.  The @var{ptr} argument should be the
-address of a @code{char *} object, and @code{asprintf} stores a pointer
-to the newly allocated string at that location.
-
-The return value is the number of characters allocated for the buffer, or
-less than zero if an error occurred. Usually this means that the buffer
-could not be allocated.
-
-Here is how to use @code{asprintf} to get the same result as the
address@hidden example, but more easily:
-
address@hidden
-/* @r{Construct a message describing the value of a variable}
-   @r{whose name is @var{name} and whose value is @var{value}.} */
-char *
-make_message (char *name, char *value)
address@hidden
-  char *result;
-  if (asprintf (&result, "value of %s is %s", name, value) < 0)
-    return NULL;
-  return result;
address@hidden
address@hidden smallexample
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden int obstack_printf (struct obstack address@hidden, const char 
address@hidden, @dots{})
-This function is similar to @code{asprintf}, except that it uses the
-obstack @var{obstack} to allocate the space (@pxref{Obstacks}).
-
-The characters are written onto the end of the current object.
-To get at them, you must finish the object with @code{obstack_finish}
-(@pxref{Growing Objects})address@hidden
address@hidden deftypefun
-
address@hidden Variable Arguments Output
address@hidden Variable Arguments Output Functions
-
-The functions @code{vprintf} and friends are provided so that you can
-define your own variadic @code{printf}-like functions that make use of
-the same internals as the built-in formatted output functions.
-
-The most natural way to define such functions would be to use a
-language construct to say, ``Call @code{printf} and pass this template
-plus all of my arguments after the first five.''  But there is no way
-to do this in C, and it would be hard to provide a way, since at the C
-language level, there is no way to tell how many arguments your
-function received.
-
-Since that method is impossible, we provide alternative functions, the
address@hidden series, which lets you pass a @code{va_list} to describe
-``all of my arguments after the first five.''
-
-When it is sufficient to define a macro rather than a real function,
-the @sc{gnu} C Compiler provides a way to do this much more easily
-with address@hidden Richard M. Stallman and the GCC Developer
-Community, ``Macros with a Variable Number of Arguments'' in
address@hidden GCC: The GNU Compiler Collection Reference Manual}
-(Boston, MA: GNU Press, October 2003),
address@hidden:// gcc.gnu.org/ onlinedocs/ gcc-3.3.2/ gcc/}.}
-
-For example:
-
address@hidden
-#define myprintf(a, b, c, d, e, rest...) \
-            printf (mytemplate , ## rest)
address@hidden smallexample
-
address@hidden
address@hidden Varargs, , Macros with Variable Numbers of Arguments,
-gcc.info, Using GNU CC}, for details.  But this is limited to macros,
-and does not apply to real functions at all.
-
-Before calling @code{vprintf} or the other functions listed in this
-section, you @emph{must} call @code{va_start} to initialize a pointer
-to the variable address@hidden, ``Variadic Functions''.}
-Then you can call @code{va_arg} to fetch the arguments that you want
-to handle yourself.  This advances the pointer past those arguments.
-
-Once your @code{va_list} pointer is pointing at the argument of your
-choice, you are ready to call @code{vprintf}.  That argument and all
-subsequent arguments that were passed to your function are used by
address@hidden along with the template that you specified separately.
-
-In some other systems, the @code{va_list} pointer may become invalid
-after the call to @code{vprintf}, so you must not use @code{va_arg}
-after you call @code{vprintf}.  Instead, you should call @code{va_end}
-to retire the pointer from service.  However, you can safely call
address@hidden on another pointer variable and begin fetching the
-arguments again through that pointer.  Calling @code{vprintf} does not
-destroy the argument list of your function, merely the particular
-pointer that you passed to it.
-
address@hidden C does not have such restrictions.  You can safely continue
-to fetch arguments from a @code{va_list} pointer after passing it to
address@hidden, and @code{va_end} is a no-op.  Note, however, that
-subsequent @code{va_arg} calls will fetch the same arguments that
address@hidden previously used.
-
-Prototypes for these functions are declared in @file{stdio.h}.
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden ISO
address@hidden int vprintf (const char address@hidden, va_list @var{ap})
-This function is similar to @code{printf} except that, instead of taking
-a variable number of arguments directly, it takes an argument list
-pointer @var{ap}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int vwprintf (const wchar_t address@hidden, va_list @var{ap})
-This function is similar to @code{wprintf} except that, instead of taking
-a variable number of arguments directly, it takes an argument list
-pointer @var{ap}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int vfprintf (FILE address@hidden, const char address@hidden, 
va_list @var{ap})
-This is the equivalent of @code{fprintf} with the variable argument list
-specified directly as for @code{vprintf}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int vfwprintf (FILE address@hidden, const wchar_t 
address@hidden, va_list @var{ap})
-This is the equivalent of @code{fwprintf} with the variable argument list
-specified directly as for @code{vwprintf}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int vsprintf (char address@hidden, const char address@hidden, 
va_list @var{ap})
-This is the equivalent of @code{sprintf} with the variable argument list
-specified directly as for @code{vprintf}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden GNU
address@hidden int vswprintf (wchar_t address@hidden, size_t @var{size}, const 
wchar_t address@hidden, va_list @var{ap})
-This is the equivalent of @code{swprintf} with the variable argument list
-specified directly as for @code{vwprintf}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden int vsnprintf (char address@hidden, size_t @var{size}, const 
char address@hidden, va_list @var{ap})
-This is the equivalent of @code{snprintf} with the variable argument list
-specified directly as for @code{vprintf}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden int vasprintf (char address@hidden, const char address@hidden, 
va_list @var{ap})
-The @code{vasprintf} function is the equivalent of @code{asprintf} with the
-variable argument list specified directly as for @code{vprintf}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden int obstack_vprintf (struct obstack address@hidden, const char 
address@hidden, va_list @var{ap})
-The @code{obstack_vprintf} function is the equivalent of
address@hidden with the variable argument list specified directly
-as for @address@hidden
address@hidden deftypefun
-
-Here is an example showing how you might use @code{vfprintf}.  This is
-a function that prints error messages to the stream @code{stderr},
-along with a prefix indicating the name of the program (@pxref{Error
-Messages}, for a description of @code{program_invocation_short_name}).
-
address@hidden
-
-#include <stdio.h>
-#include <stdarg.h>
-
-void
-eprintf (const char *template, ...)
address@hidden
-  va_list ap;
-  extern char *program_invocation_short_name;
-
-  fprintf (stderr, "%s: ", program_invocation_short_name);
-  va_start (ap, template);
-  vfprintf (stderr, template, ap);
-  va_end (ap);
address@hidden
-
address@hidden smallexample
-
address@hidden
-You could call @code{eprintf} like this:
-
address@hidden
-eprintf ("file `%s' does not exist\n", filename);
address@hidden smallexample
-
-In @sc{gnu} C, there is a special construct you can use to let the compiler
-know that a function uses a @code{printf}-style format string.  Then it
-can check the number and types of arguments in each call to the
-function, and warn you when they do not match the format string.
-For example, take this declaration of @code{eprintf}:
-
address@hidden
-void eprintf (const char *template, ...)
-        __attribute__ ((format (printf, 1, 2)));
address@hidden smallexample
-
address@hidden
-This tells the compiler that @code{eprintf} uses a format string like
address@hidden (as opposed to @code{scanf}; @pxref{Formatted Input});
-the format string appears as the first argument and the arguments to
-satisfy the format begin with the address@hidden Richard
-M. Stallman and the GCC Developer Community, ``Declaring Attributes of
-Functions'' in @emph{Using GCC: The GNU Compiler Collection
-Reference Manual} (Boston, MA: GNU Press, October 2003),
address@hidden:// gcc.gnu.org/ onlinedocs/ gcc-3.3.2/ gcc/}.}
-
address@hidden Parsing a Template String
address@hidden Parsing a Template String
address@hidden parsing a template string
-
-You can use the function @code{parse_printf_format} to obtain
-information about the number and types of arguments that are expected by
-a given template string.  This function permits interpreters that
-provide interfaces to @code{printf} to avoid passing along invalid
-arguments from the user's program, which could cause a crash.
-
-All the symbols described in this section are declared in the header
-file @file{printf.h}.
-
address@hidden printf.h
address@hidden GNU
address@hidden size_t parse_printf_format (const char address@hidden, size_t 
@var{n}, int address@hidden)
-This function returns information about the number and types of
-arguments expected by the @code{printf} template string @var{template}.
-The information is stored in the array @var{argtypes}; each element of
-this array describes one argument.  This information is encoded using
-the various @samp{PA_} macros, listed below.
-
-The argument @var{n} specifies the number of elements in the array
address@hidden  This is the maximum number of elements that
address@hidden will try to write.
-
address@hidden returns the total number of arguments required
-by @var{template}.  If this number is greater than @var{n}, then the
-information returned describes only the first @var{n} arguments.  If you
-want information about additional arguments, allocate a bigger
-array and call @code{parse_printf_format} again.
address@hidden deftypefun
-
-The argument types are encoded as a combination of a basic type and
-modifier flag bits.
-
address@hidden printf.h
address@hidden GNU
address@hidden Macro int PA_FLAG_MASK
-This macro is a bitmask for the type modifier flag bits.  You can write
-the expression @code{(argtypes[i] & PA_FLAG_MASK)} to extract just the
-flag bits for an argument, or @code{(argtypes[i] & ~PA_FLAG_MASK)} to
-extract just the basic type code.
address@hidden deftypevr
-
-Here are symbolic constants that represent the basic types; they stand
-for integer values:
-
address@hidden @code
address@hidden printf.h
address@hidden GNU
address@hidden PA_INT
-This specifies that the base type is @code{int}.
-
address@hidden printf.h
address@hidden GNU
address@hidden PA_CHAR
-This specifies that the base type is @code{int}, cast to @code{char}.
-
address@hidden printf.h
address@hidden GNU
address@hidden PA_STRING
-This specifies that the base type is @code{char *}, a null-terminated string.
-
address@hidden printf.h
address@hidden GNU
address@hidden PA_POINTER
-This specifies that the base type is @code{void *}, an arbitrary pointer.
-
address@hidden printf.h
address@hidden GNU
address@hidden PA_FLOAT
-This specifies that the base type is @code{float}.
-
address@hidden printf.h
address@hidden GNU
address@hidden PA_DOUBLE
-This specifies that the base type is @code{double}.
-
address@hidden printf.h
address@hidden GNU
address@hidden PA_LAST
-You can define additional base types for your own programs as offsets
-from @code{PA_LAST}.  For example, if you have data types @samp{foo}
-and @samp{bar} with their own specialized @code{printf} conversions,
-you could define encodings for these types as:
-
address@hidden
-#define PA_FOO  PA_LAST
-#define PA_BAR  (PA_LAST + 1)
address@hidden smallexample
address@hidden vtable
-
-Here are the flag bits that modify a basic type.  They are combined with
-the code for the basic type using inclusive-or.
-
address@hidden @code
address@hidden printf.h
address@hidden GNU
address@hidden PA_FLAG_PTR
-If this bit is set, it indicates that the encoded type is a pointer to
-the base type, rather than an immediate value.
-For example, @samp{PA_INT|PA_FLAG_PTR} represents the type @samp{int *}.
-
address@hidden printf.h
address@hidden GNU
address@hidden PA_FLAG_SHORT
-If this bit is set, it indicates that the base type is modified with
address@hidden  This corresponds to the @samp{h} type modifier.
-
address@hidden printf.h
address@hidden GNU
address@hidden PA_FLAG_LONG
-If this bit is set, it indicates that the base type is modified with
address@hidden  This corresponds to the @samp{l} type modifier.
-
address@hidden printf.h
address@hidden GNU
address@hidden PA_FLAG_LONG_LONG
-If this bit is set, it indicates that the base type is modified with
address@hidden long}.  This corresponds to the @samp{L} type modifier.
-
address@hidden printf.h
address@hidden GNU
address@hidden PA_FLAG_LONG_DOUBLE
-This is a synonym for @code{PA_FLAG_LONG_LONG}, used by convention with
-a base type of @code{PA_DOUBLE} to indicate a type of @code{long double}.
address@hidden vtable
-
address@hidden
-For an example of using these facilities, see @ref{Example of Parsing}.
address@hidden ifinfo
-
address@hidden Example of Parsing
address@hidden Example of Parsing a Template String
-
-Here is an example of decoding argument types for a format string.  We
-assume this is part of an interpreter that contains arguments of type
address@hidden, @code{CHAR}, @code{STRING} and @code{STRUCTURE} (and
-perhaps others that are not valid here).
-
address@hidden
-/* @r{Test whether the @var{nargs} specified objects}
-   @r{in the vector @var{args} are valid}
-   @r{for the format string @var{format};}
-   @r{if so, return 1.}
-   @r{If not, return 0 after printing an error message.}  */
-
-int
-validate_args (char *format, int nargs, OBJECT *args)
address@hidden
-  int *argtypes;
-  int nwanted;
-
-  /* @r{Get the information about the arguments.}
-     @r{Each conversion specification must be at least two characters}
-     @r{long, so there cannot be more specifications than half the}
-     @r{length of the string.}  */
-
-  argtypes = (int *) alloca (strlen (format) / 2 * sizeof (int));
-  nwanted = parse_printf_format (string, nelts, argtypes);
-
-  /* @r{Check the number of arguments.}  */
-  if (nwanted > nargs)
-    @{
-      error ("too few arguments (at least %d required)", nwanted);
-      return 0;
-    @}
-
-  /* @r{Check the C type wanted for each argument}
-     @r{and see if the object given is suitable.}  */
-  for (i = 0; i < nwanted; i++)
-    @{
-      int wanted;
-
-      if (argtypes[i] & PA_FLAG_PTR)
-        wanted = STRUCTURE;
-      else
-        switch (argtypes[i] & ~PA_FLAG_MASK)
-          @{
-          case PA_INT:
-          case PA_FLOAT:
-          case PA_DOUBLE:
-            wanted = NUMBER;
-            break;
-          case PA_CHAR:
-            wanted = CHAR;
-            break;
-          case PA_STRING:
-            wanted = STRING;
-            break;
-          case PA_POINTER:
-            wanted = STRUCTURE;
-            break;
-          @}
-      if (TYPE (args[i]) != wanted)
-        @{
-          error ("type mismatch for arg number %d", i);
-          return 0;
-        @}
-    @}
-  return 1;
address@hidden
address@hidden smallexample
-
address@hidden Customizing Printf
address@hidden Customizing @code{printf}
address@hidden customizing @code{printf}
address@hidden defining new @code{printf} conversions
address@hidden extending @code{printf}
-
-The @sc{gnu} C Library lets you define your own custom conversion specifiers
-for @code{printf} template strings, to teach @code{printf} clever ways
-to print the important data structures of your program.
-
-The way you do this is by registering the conversion with the function
address@hidden (@pxref{Registering New Conversions}).
-One of the arguments you pass to this function is a pointer to a
-handler function that produces the actual output (@pxref{Defining the
-Output Handler}, for information on how to write this function).
-
-You can also install a function that just returns information about
-the number and type of arguments expected by the conversion specifier
-(@pxref{Parsing a Template String}).
-
-The facilities of this section are declared in the header file
address@hidden
-
address@hidden Note:} The ability to extend the syntax of
address@hidden template strings is a @sc{gnu} extension.  @sc{iso} standard C 
has
-nothing similar.
-
address@hidden Registering New Conversions
address@hidden Registering New Conversions
-
-The function to register a new output conversion is
address@hidden, declared in @file{printf.h}.
address@hidden printf.h
-
address@hidden printf.h
address@hidden GNU
address@hidden int register_printf_function (int @var{spec}, printf_function 
@var{handler-function}, printf_arginfo_function @var{arginfo-function})
-This function defines the conversion specifier character @var{spec}.
-Thus, if @var{spec} is @code{'Y'}, it defines the conversion @samp{%Y}.
-You can redefine the built-in conversions like @samp{%s}, but flag
-characters like @samp{#} and type modifiers like @samp{l} can never be
-used as conversions; calling @code{register_printf_function} for those
-characters has no effect.  It is advisable not to use lowercase letters,
-since the @sc{iso} C standard warns that additional lowercase letters may be
-standardized in future editions of the standard.
-
-The @var{handler-function} is the function called by @code{printf} and
-friends when this conversion appears in a template string
-(@pxref{Defining the Output Handler}, for information about how to
-define a function to pass as this argument).  If you specify a null
-pointer, any existing handler function for @var{spec} is removed.
-
-The @var{arginfo-function} is the function called by
address@hidden when this conversion appears in a template
-string (@pxref{Parsing a Template String}).
-
address@hidden The following is not true anymore.  The `parse_printf_format' 
function
address@hidden is now also called from `vfprintf' via `parse_one_spec'.
address@hidden address@hidden, 1996/11/14
address@hidden
address@hidden Normally, you install both functions for a conversion at the 
same time,
address@hidden but if you are never going to call @code{parse_printf_format}, 
you do
address@hidden not need to define an arginfo function.
-
address@hidden:} In the @sc{gnu} C Library versions before 2.0, the
address@hidden function did not need to be installed unless
-the user used the @code{parse_printf_format} function.  This has
-changed.  Now a call to any of the @code{printf} functions will call
-this function when this format specifier appears in the format string.
-
-The return value is @code{0} on success, and @code{-1} on failure
-(which occurs if @var{spec} is out of range).
-
-You can redefine the standard output conversions, but this is probably
-not a good idea because of the potential for confusion.  Library routines
-written by other people could break if you do this.
address@hidden deftypefun
-
address@hidden Conversion Specifier Options
address@hidden Conversion Specifier Options
-
-If you define a meaning for @samp{%A}, what if the template contains
address@hidden or @samp{%-#A}?  To implement a sensible meaning for
-these, the handler, when called, needs to be able to get the options
-specified in the template.
-
-Both the @var{handler-function} and @var{arginfo-function} accept an
-argument that points to a @code{struct printf_info}, which contains
-information about the options appearing in an instance of the conversion
-specifier.  This data type is declared in the header file
address@hidden
address@hidden printf.h
-
address@hidden printf.h
address@hidden GNU
address@hidden {Type} {struct printf_info}
-This structure is used to pass information about the options appearing
-in an instance of a conversion specifier in a @code{printf} template
-string to the handler and arginfo functions for that specifier.  It
-contains the following members:
-
address@hidden @code
address@hidden int prec
-This is the precision specified.  The value is @code{-1} if no precision
-was specified.  If the precision was given as @samp{*}, the
address@hidden structure passed to the handler function contains the
-actual value retrieved from the argument list.  But the structure passed
-to the arginfo function contains a value of @code{INT_MIN}, since the
-actual value is not known.
-
address@hidden int width
-This is the minimum field width specified.  The value is @code{0} if no
-width was specified.  If the field width was given as @samp{*}, the
address@hidden structure passed to the handler function contains the
-actual value retrieved from the argument list.  But the structure passed
-to the arginfo function contains a value of @code{INT_MIN}, since the
-actual value is not known.
-
address@hidden wchar_t spec
-This is the conversion specifier character specified.  It's stored in
-the structure so that you can register the same handler function for
-multiple characters, but still have a way to tell them apart when the
-handler function is called.
-
address@hidden unsigned int is_long_double
-This is a Boolean that is true if the @samp{L}, @samp{ll}, or @samp{q}
-type modifier was specified.  For integer conversions, this indicates
address@hidden long int}, as opposed to @code{long double} for
-floating-point conversions.
-
address@hidden unsigned int is_char
-This is a Boolean that is true if the @samp{hh} type modifier was specified.
-
address@hidden unsigned int is_short
-This is a Boolean that is true if the @samp{h} type modifier was specified.
-
address@hidden unsigned int is_long
-This is a Boolean that is true if the @samp{l} type modifier was specified.
-
address@hidden unsigned int alt
-This is a Boolean that is true if the @samp{#} flag was specified.
-
address@hidden unsigned int space
-This is a Boolean that is true if the @samp{ } flag was specified.
-
address@hidden unsigned int left
-This is a Boolean that is true if the @samp{-} flag was specified.
-
address@hidden unsigned int showsign
-This is a Boolean that is true if the @samp{+} flag was specified.
-
address@hidden unsigned int group
-This is a Boolean that is true if the @samp{'} flag was specified.
-
address@hidden unsigned int extra
-This flag has a special meaning depending on the context.  It could be
-used freely by the user-defined handlers, but when called from the
address@hidden function, this variable always contains the value
address@hidden
-
address@hidden unsigned int wide
-This flag is set if the stream is wide oriented.
-
address@hidden wchar_t pad
-This is the character to use for padding the output to the minimum field
-width.  The value is @code{'0'} if the @samp{0} flag was specified, and
address@hidden' '} otherwise.
address@hidden table
address@hidden deftp
-
-
address@hidden Defining the Output Handler
address@hidden Defining the Output Handler
-
-Now let's look at how to define the handler and arginfo functions that
-are passed as arguments to @code{register_printf_function}.
-
address@hidden Note:} The interface changed in @sc{gnu} libc
-version 2.0.  Previously, the third argument was of type @code{va_list
-*}.
-
-You should define your handler functions with a prototype like:
-
address@hidden
-int @var{function} (FILE *stream, const struct printf_info *info,
-                    const void *const *args)
address@hidden smallexample
-
-The @var{stream} argument passed to the handler function is the stream to
-which it should write output.
-
-The @var{info} argument is a pointer to a structure that contains
-information about the various options that were included with the
-conversion in the template string.  You should not modify this
-structure inside your handler function (@pxref{Conversion Specifier
-Options}, for a description of this data structure).
-
address@hidden The following changes some time back.  address@hidden, 1996/11/14
address@hidden
address@hidden The @code{ap_pointer} argument is used to pass the tail of the 
variable
address@hidden argument list containing the values to be printed to your 
handler.
address@hidden Unlike most other functions that can be passed an explicit 
variable
address@hidden argument list, this is a @emph{pointer} to a @code{va_list}, 
rather than
address@hidden the @code{va_list} itself.  Thus, you should fetch arguments by
address@hidden means of @code{va_arg (*ap_pointer, @var{type})}.
address@hidden
address@hidden (Passing a pointer here allows the function that calls your 
handler
address@hidden function to update its own @code{va_list} variable to account 
for the
address@hidden arguments that your handler processes.  See @cite{Variadic 
Functions, book2}.)
-
-The @var{args} is a vector of pointers to the arguments data.
-The number of arguments was determined by calling the argument
-information function provided by the user.
-
-Your handler function should return a value just like @code{printf}
-does---it should return the number of characters it has written, or a
-negative value to indicate an error.
-
address@hidden printf.h
address@hidden GNU
address@hidden {Data Type} printf_function
-This is the data type that a handler function should have.
address@hidden deftp
-
-If you are going to use @address@hidden in your
-application, you must also define a function to pass as the
address@hidden argument for each new conversion you install with
address@hidden
-
-You have to define these functions with a prototype like:
-
address@hidden
-int @var{function} (const struct printf_info *info,
-                    size_t n, int *argtypes)
address@hidden smallexample
-
-The return value from the function should be the number of arguments
-the conversion expects.  The function should also fill in no more than
address@hidden elements of the @var{argtypes} array with information about
-the types of each of these arguments.  This information is encoded
-using the various @samp{PA_} macros.  (This is the same calling
-convention that @code{parse_printf_format} itself uses.)
-
address@hidden printf.h
address@hidden GNU
address@hidden {Data Type} printf_arginfo_function
-This type is used to describe functions that return information about
-the number and type of arguments used by a conversion specifier.
address@hidden deftp
-
address@hidden Printf Extension Example
address@hidden @code{printf} Extension Example
-
-Here is an example showing how to define a @code{printf} handler function.
-This program defines a data structure called a @code{Widget} and
-defines the @samp{%W} conversion to print information about @address@hidden *}}
-arguments, including the pointer value and the name stored in the data
-structure.  The @samp{%W} conversion supports the minimum field width and
-left-justification options, but ignores everything else.
-
address@hidden
-#include <stdio.h>
-#include <stdlib.h>
-#include <printf.h>
-
-
-typedef struct
address@hidden
-  char *name;
address@hidden
-Widget;
-
-
-int
-print_widget (FILE *stream,
-              const struct printf_info *info,
-              const void *const *args)
address@hidden
-  const Widget *w;
-  char *buffer;
-  int len;
-
-  /* @r{Format the output into a string.} */
-  w = *((const Widget **) (args[0]));
-  len = asprintf (&buffer, "<Widget %p: %s>", w, w->name);
-  if (len == -1)
-    return -1;
-
-  /* @r{Pad to the minimum field width and print to the stream.} */
-  len = fprintf (stream, "%*s",
-                 (info->left ? -info->width : info->width),
-                 buffer);
-
-  /* @r{Clean up and return.} */
-  free (buffer);
-  return len;
address@hidden
-
-
-int
-print_widget_arginfo (const struct printf_info *info, size_t n,
-                      int *argtypes)
address@hidden
-  /* @r{We always take exactly one argument and this is a pointer to the
-     structure.} */
-  if (n > 0)
-    argtypes[0] = PA_POINTER;
-  return 1;
address@hidden
-
-
-int
-main (void)
address@hidden
-  /* @r{Make a widget to print.} */
-  Widget mywidget;
-  mywidget.name = "mywidget";
-
-  /* @r{Register the print function for widgets.} */
-  register_printf_function ('W', print_widget, print_widget_arginfo);
-
-  /* @r{Now print the widget.} */
-  printf ("|%W|\n", &mywidget);
-  printf ("|%35W|\n", &mywidget);
-  printf ("|%-35W|\n", &mywidget);
-
-  return 0;
address@hidden
-
address@hidden smallexample
-
-The output produced by this program looks like:
-
address@hidden
-|<Widget 0xffeffb7c: mywidget>|
-|      <Widget 0xffeffb7c: mywidget>|
-|<Widget 0xffeffb7c: mywidget>      |
address@hidden smallexample
-
address@hidden Predefined Printf Handlers
address@hidden Predefined @code{printf} Handlers
-
-The @sc{gnu} libc also contains a concrete and useful application of
-the @code{printf} handler extension.  There are two functions
-available that implement a special way to print floating-point
-numbers.
-
address@hidden printf.h
address@hidden GNU
address@hidden int printf_size (FILE address@hidden, const struct printf_info 
address@hidden, const void *const address@hidden)
-Print a given floating-point number as for the format @code{%f},
-except that there is a postfix character indicating the divisor for
-the number to make this less than 1000.  There are two possible
-divisors: powers of 1024 or powers of 1000.  Which one is used depends
-on the format character specified while registering this handler.  If
-the character is lowercase, 1024 is used.  For uppercase
-characters, 1000 is used.
-
-The postfix tag corresponds to bytes, kilobytes, megabytes, gigabytes,
-etc.  The full table is
-
address@hidden
address@hidden @hsep @vsep {' '} {2^10 (1024)} {zetta} {Upper} {10^24 (1000)}
address@hidden low @tab Multiplier  @tab From  @tab Upper @tab Multiplier
address@hidden ' ' @tab 1           @tab       @tab ' '   @tab 1
address@hidden k   @tab 2^10 (1024) @tab kilo  @tab K     @tab 10^3 (1000)
address@hidden m   @tab 2^20        @tab mega  @tab M     @tab 10^6
address@hidden g   @tab 2^30        @tab giga  @tab G     @tab 10^9
address@hidden t   @tab 2^40        @tab tera  @tab T     @tab 10^12
address@hidden p   @tab 2^50        @tab peta  @tab P     @tab 10^15
address@hidden e   @tab 2^60        @tab exa   @tab E     @tab 10^18
address@hidden z   @tab 2^70        @tab zetta @tab Z     @tab 10^21
address@hidden y   @tab 2^80        @tab yotta @tab Y     @tab 10^24
address@hidden multitable
address@hidden ifinfo
address@hidden
address@hidden
-\hbox to\hsize{\hfil\vbox{\offinterlineskip
-\hrule
-\halign{\strut#& \vrule#\tabskip=1em plus2em& {\tt#}\hfil& \vrule#& #\hfil& 
\vrule#& #\hfil& \vrule#& {\tt#}\hfil& \vrule#& #\hfil& \vrule#\tabskip=0pt\cr
-\noalign{\hrule}
-\omit&height2pt&\omit&&\omit&&\omit&&\omit&&\omit&\cr
-&& \omit low && Multiplier && From && \omit Upper && Multiplier &\cr
-\omit&height2pt&\omit&&\omit&&\omit&&\omit&&\omit&\cr
-\noalign{\hrule}
-&& {\tt\char32} &&  1 && && {\tt\char32} && 1 &\cr
-&& k && $2^{10} = 1024$ && kilo && K && $10^3 = 1000$ &\cr
-&& m && $2^{20}$ && mega && M && $10^6$ &\cr
-&& g && $2^{30}$ && giga && G && $10^9$ &\cr
-&& t && $2^{40}$ && tera && T && $10^{12}$ &\cr
-&& p && $2^{50}$ && peta && P && $10^{15}$ &\cr
-&& e && $2^{60}$ && exa && E && $10^{18}$ &\cr
-&& z && $2^{70}$ && zetta && Z && $10^{21}$ &\cr
-&& y && $2^{80}$ && yotta && Y && $10^{24}$ &\cr
-\noalign{\hrule}}}\hfil}
address@hidden tex
address@hidden iftex
-
-The default precision is 3, i.e., 1024 is printed with a lowercase
-format character as if it were @code{%.3fk} and will yield @code{1.000k}.
address@hidden deftypefun
-
-Due to the requirements of @code{register_printf_function}, we must
-also provide the function that returns information about the
-arguments.
-
address@hidden printf.h
address@hidden GNU
address@hidden int printf_size_info (const struct printf_info address@hidden, 
size_t @var{n}, int address@hidden)
-This function will return in @var{argtypes} the information about the
-used parameters in the way the @code{vfprintf} implementation expects
-it.  The format always takes one argument.
address@hidden deftypefun
-
-To use these functions, both functions must be registered with a call
-like:
-
address@hidden
-register_printf_function ('B', printf_size, printf_size_info);
address@hidden smallexample
-
-Here we register the functions to print numbers as powers of 1000,
-since the format character @code{'B'} is an uppercase character.  If
-we would additionally use @code{'b'} in a line like:
-
address@hidden
-register_printf_function ('b', printf_size, printf_size_info);
address@hidden smallexample
-
address@hidden
-we could also print using a power of 1024.  All that is different in
-these two lines is the format specifier.  The @code{printf_size}
-function knows about the difference between lowercase and uppercase
-format specifiers.
-
-The use of @code{'B'} and @code{'b'} is no coincidence.  It is the
-preferred way to use this functionality, since it is available on some
-other systems that also use format specifiers.
-
address@hidden Formatted Input
address@hidden Formatted Input
-
address@hidden formatted input from a stream
address@hidden reading from a stream, formatted
address@hidden format string, for @code{scanf}
address@hidden template, for @code{scanf}
-The functions described in this section (@code{scanf} and related
-functions) provide facilities for formatted input analogous to the
-formatted output facilities.  These functions provide a mechanism for
-reading arbitrary values under the control of a @dfn{format string} or
address@hidden string}.
-
address@hidden Formatted Input Basics
address@hidden Formatted Input Basics
-
-Calls to @code{scanf} are superficially similar to calls to
address@hidden, in that arbitrary arguments are read under the control
-of a template string.  While the syntax of the conversion
-specifications in the template is very similar to that for
address@hidden, the interpretation of the template is oriented more
-toward free-format input and simple pattern matching, rather than
-fixed-field formatting.  For example, most @code{scanf} conversions
-skip over any amount of white space (including spaces, tabs and
-newlines) in the input file, and there is no concept of precision for
-the numeric input conversions as there is for the corresponding output
-conversions.  Ordinarily, non-white-space characters in the template
-are expected to match characters in the input stream exactly, but a
-matching failure is distinct from an input error on the stream.
address@hidden conversion specifications (@code{scanf})
-
-Another area of difference between @code{scanf} and @code{printf} is
-that you must remember to supply pointers rather than immediate values
-as the optional arguments to @code{scanf}; the values that are read are
-stored in the objects that the pointers point to.  Even experienced
-programmers tend to forget this occasionally, so if your program is
-getting strange errors that seem to be related to @code{scanf}, you
-might want to double-check this.
-
-When a @dfn{matching failure} occurs, @code{scanf} returns immediately,
-leaving the first nonmatching character as the next character to be
-read from the stream.  The normal return value from @code{scanf} is the
-number of values that were assigned, so you can use this to determine if
-a matching error happened before all the expected values were read.
address@hidden matching failure, in @code{scanf}
-
-The @code{scanf} function is typically used for things like reading in
-the contents of tables.  For example, here is a function that uses
address@hidden to initialize an array of @code{double}:
-
address@hidden
-void
-readarray (double *array, int n)
address@hidden
-  int i;
-  for (i=0; i<n; i++)
-    if (scanf (" %lf", &(array[i])) != 1)
-      invalid_input_error ();
address@hidden
address@hidden smallexample
-
-The formatted input functions are not used as frequently as the
-formatted output functions.  Partly, this is because it takes some care
-to use them properly.  Another reason is that it is difficult to recover
-from a matching error.
-
-If you are trying to read input that doesn't match a single, fixed
-pattern, you may be better off using a tool such as Flex to generate a
-lexical scanner,@footnote{See G.T. Nicol, @emph{Flex: The Lexical
-Scanner Generator} (Boston, MA: GNU Press, February 1993),
address@hidden:// www.gnu.org/ software/ flex/ manual/}.} or Bison to generate
-a parser,@footnote{See Charles Donnelly and Richard M. Stallman,
address@hidden Bison Manual} (Boston, MA: GNU Press, September 2003),
address@hidden:// www.gnu.org/ software/ bison/ manual/}.} rather than using
address@hidden
-
address@hidden Input Conversion Syntax
address@hidden Input Conversion Syntax
-
-A @code{scanf} template string is a string that contains ordinary
-multibyte characters interspersed with conversion specifications that
-start with @samp{%}.
-
-Any white-space character (as defined by the @code{isspace} function;
address@hidden of Characters}) in the template causes any number
-of white-space characters in the input stream to be read and discarded.
-The white-space characters that are matched need not be exactly the same
-white-space characters that appear in the template string.  For example,
-write @samp{ , } in the template to recognize a comma with optional
-white space before and after.
-
-Other characters in the template string that are not part of conversion
-specifications must match characters in the input stream exactly; if
-this is not the case, a matching failure occurs.
-
-The conversion specifications in a @code{scanf} template string
-have the general form:
-
address@hidden
-% @var{flags} @var{width} @var{type} @var{conversion}
address@hidden smallexample
-
-In more detail, an input conversion specification consists of an initial
address@hidden character followed in sequence by:
-
address@hidden @bullet
address@hidden
-An optional @dfn{flag character} @samp{*}, which says to ignore the
-text read for this specification; when @code{scanf} finds a conversion
-specification that uses this flag, it reads input as directed by the
-rest of the conversion specification, but it discards this input, does
-not use a pointer argument, and does not increment the count of
-successful assignments.
address@hidden flag character (@code{scanf})
-
address@hidden
-An optional flag character @samp{a} (valid with string conversions
-only), which requests allocation of a buffer long enough to store the
-string in (@pxref{Dynamic String Input}).  This is a @sc{gnu}
-extension.
-
address@hidden
-An optional decimal integer that specifies the @dfn{maximum field
-width}; reading of characters from the input stream stops either when
-this maximum is reached or when a nonmatching character is found,
-whichever happens first.  Most conversions discard initial white-space
-characters (those that don't are explicitly documented), and these
-discarded characters don't count toward the maximum field width.
-String input conversions store a null character to mark the end of the
-input; the maximum field width does not include this terminator.
address@hidden maximum field width (@code{scanf})
-
address@hidden
-An optional @dfn{type modifier character}; for example, you can
-specify a type modifier of @samp{l} with integer conversions such as
address@hidden to specify that the argument is a pointer to a @code{long
-int} rather than a pointer to an @code{int}.
address@hidden type modifier character (@code{scanf})
-
address@hidden
-A character that specifies the conversion to be applied
address@hidden itemize
-
-The exact options that are permitted and how they are interpreted vary
-between the different conversion specifiers.  See the descriptions of the
-individual conversions for information about the particular options that
-they allow.
-
-With the @samp{-Wformat} option, the @sc{gnu} C Compiler checks calls
-to @code{scanf} and related functions.  It examines the format string
-and verifies that the correct number and types of arguments are
-supplied.  There is also a @sc{gnu} C syntax to tell the compiler that
-a function you write uses a @code{scanf}-style format
address@hidden Richard M. Stallman and the GCC Developer
-Community, ``Declaring Attributes of Functions'' in @emph{Using GCC:
-The GNU Compiler Collection Reference Manual} (Boston, MA: GNU Press,
-October 2003), @uref{http:// gcc.gnu.org/ onlinedocs/ gcc-3.3.2/ gcc/}.}
-
address@hidden Table of Input Conversions
address@hidden Table of Input Conversions
address@hidden input conversions, for @code{scanf}
-
-Here is a table that summarizes the various conversion specifications:
-
address@hidden @asis
address@hidden @samp{%d}
-Match an optionally signed integer written in decimal (@pxref{Numeric
-Input Conversions}).
-
address@hidden @samp{%i}
-Match an optionally signed integer in any of the formats that the C
-language defines for specifying an integer constant (@pxref{Numeric
-Input Conversions}).
-
address@hidden @samp{%o}
-Match an unsigned integer written in octal radix (@pxref{Numeric Input
-Conversions}).
-
address@hidden @samp{%u}
-Match an unsigned integer written in decimal radix (@pxref{Numeric
-Input Conversions}).
-
address@hidden @samp{%x}, @samp{%X}
-Match an unsigned integer written in hexadecimal radix (@pxref{Numeric
-Input Conversions}).
-
address@hidden @samp{%e}, @samp{%f}, @samp{%g}, @samp{%E}, @samp{%G}
-Match an optionally signed floating-point number (@pxref{Numeric Input
-Conversions}).
-
address@hidden @samp{%s}
-
-Match a string containing only non-white-space characters
-(@pxref{String Input Conversions}).  The presence of the @samp{l}
-modifier determines whether the output is stored as a wide-character
-string or a multibyte string.  If @samp{%s} is used in a
-wide-character function, the string is converted as with multiple
-calls to @code{wcrtomb} into a multibyte string.  This means that the
-buffer must provide room for @code{MB_CUR_MAX} bytes for each wide
-character read.  In case @samp{%ls} is used in a multibyte function,
-the result is converted into wide characters, as with multiple calls
-of @code{mbrtowc}, before being stored in the user-provided buffer.
-
address@hidden @samp{%S}
-This is an alias for @samp{%ls} that is supported for compatibility
-with the Unix standard.
-
address@hidden @samp{%[}
-Match a string of characters that belong to a specified set
-(@pxref{String Input Conversions}).  The presence of the @samp{l}
-modifier determines whether the output is stored as a wide-character
-string or a multibyte string.  If @samp{%[} is used in a
-wide-character function, the string is converted as with multiple
-calls to @code{wcrtomb} into a multibyte string.  This means that the
-buffer must provide room for @code{MB_CUR_MAX} bytes for each wide
-character read.  In case @samp{%l[} is used in a multibyte function,
-the result is converted into wide characters, as with multiple calls
-of @code{mbrtowc}, before being stored in the user-provided buffer.
-
address@hidden @samp{%c}
-Match a string of one or more characters; the number of characters
-read is controlled by the maximum field width given for the conversion
-(@pxref{String Input Conversions}).
-
-If the @samp{%c} is used in a wide stream function, the read value is
-converted from a wide character to the corresponding multibyte
-character before storing it.  This conversion can produce more than 1
-byte of output, and therefore the provided buffer must be large enough
-for up to @code{MB_CUR_MAX} bytes for each character.  If @samp{%lc}
-is used in a multibyte function, the input is treated as a multibyte
-sequence (and not bytes), and the result is converted as with calls to
address@hidden
-
address@hidden @samp{%C}
-This is an alias for @samp{%lc} that is supported for compatibility
-with the Unix standard.
-
address@hidden @samp{%p}
-Match a pointer value in the same implementation-defined format used
-by the @samp{%p} output conversion for @code{printf} (@pxref{Other
-Input Conversions}).
-
address@hidden @samp{%n}
-This conversion doesn't read any characters; it records the number of
-characters read so far by this call (@pxref{Other Input Conversions}).
-
address@hidden @samp{%%}
-This matches a literal @samp{%} character in the input stream.  No
-corresponding argument is used (@pxref{Other Input Conversions}).
address@hidden table
-
-If the syntax of a conversion specification is invalid, the behavior is
-undefined.  If there aren't enough function arguments provided to supply
-addresses for all the conversion specifications in the template strings
-that perform assignments, or if the arguments are not of the correct
-types, the behavior is also undefined.  On the other hand, extra
-arguments are simply ignored.
-
address@hidden Numeric Input Conversions
address@hidden Numeric Input Conversions
-
-This section describes the @code{scanf} conversions for reading numeric
-values.
-
-The @samp{%d} conversion matches an optionally signed integer in decimal
-radix.  The syntax that is recognized is the same as that for the
address@hidden function (@pxref{Parsing of Integers}) with the value
address@hidden for the @var{base} argument.
-
-The @samp{%i} conversion matches an optionally signed integer in any
-of the formats that the C language defines for specifying an integer
-constant.  The syntax that is recognized is the same as that for the
address@hidden function (@pxref{Parsing of Integers}) with the value
address@hidden for the @var{base} argument.  You can print integers in this
-syntax with @code{printf} by using the @samp{#} flag character with
-the @samp{%x}, @samp{%o}, or @samp{%d} conversion (@pxref{Integer
-Conversions}).
-
-For example, any of the strings @samp{10}, @samp{0xa} or @samp{012}
-could be read in as integers under the @samp{%i} conversion.  Each of
-these specifies a number with decimal value @code{10}.
-
-The @samp{%o}, @samp{%u} and @samp{%x} conversions match unsigned
-integers in octal, decimal and hexadecimal radices, respectively.  The
-syntax that is recognized is the same as that for the @code{strtoul}
-function (@pxref{Parsing of Integers}) with the appropriate value
-(@code{8}, @code{10}, or @code{16}) for the @var{base} argument.
-
-The @samp{%X} conversion is identical to the @samp{%x} conversion.  They
-both permit either uppercase or lowercase letters to be used as digits.
-
-The default type of the corresponding argument for the @code{%d} and
address@hidden conversions is @code{int *}, and @code{unsigned int *} for the
-other integer conversions.  You can use the following type modifiers to
-specify other sizes of integer:
-
address@hidden @samp
address@hidden hh
-Specify that the argument is a @code{signed char *} or @code{unsigned
-char *}.
-
-This modifier was introduced in @address@hidden C99}.
-
address@hidden h
-Specify that the argument is a @code{short int *} or @code{unsigned
-short int *}.
-
address@hidden j
-Specify that the argument is a @code{intmax_t *} or @code{uintmax_t *}.
-
-This modifier was introduced in @address@hidden C99}.
-
address@hidden l
-Specify that the argument is a @code{long int *} or @code{unsigned
-long int *}.  Two @samp{l} characters is like the @samp{L} modifier, below.
-
-If used with @samp{%c} or @samp{%s}, the corresponding parameter is
-considered as a pointer to a wide character or wide-character string
-respectively.  This use of @samp{l} was introduced in @w{Amendment 1}
-to @address@hidden C90}.
-
address@hidden 100
address@hidden ll
address@hidden L
address@hidden q
-Specify that the argument is a @code{long long int *} or
address@hidden long long int *} (the @code{long long} type is an
-extension supported by the @sc{gnu} C Compiler.  For systems that
-don't provide extra-long integers, this is the same as @code{long
-int}).
-
-The @samp{q} modifier is another name for the same thing, which comes
-from 4.4 @sc{bsd}; a @address@hidden long int}} is sometimes called a
address@hidden @code{int}.
-
address@hidden t
-Specify that the argument is a @code{ptrdiff_t *}.
-
-This modifier was introduced in @address@hidden C99}.
-
address@hidden z
-Specify that the argument is a @code{size_t *}.
-
-This modifier was introduced in @address@hidden C99}.
address@hidden table
-
-All of the @samp{%e}, @samp{%f}, @samp{%g}, @samp{%E} and @samp{%G}
-input conversions are interchangeable.  They all match an optionally
-signed floating-point number, in the same syntax as for the
address@hidden function (@pxref{Parsing of Floats}).
-
-For the floating-point input conversions, the default argument type is
address@hidden *}.  This is different from the corresponding output
-conversions, where the default type is @code{double}; remember that
address@hidden arguments to @code{printf} are converted to @code{double}
-by the default argument promotions, but @code{float *} arguments are
-not promoted to @code{double *}.  You can specify other sizes of float
-using these type modifiers:
-
address@hidden @samp
address@hidden l
-Specify that the argument is of type @code{double *}.
-
address@hidden L
-Specify that the argument is of type @code{long double *}.
address@hidden table
-
-For all of the above number-parsing formats, there is an additional
-optional flag @samp{'}.  When this flag is given, the @code{scanf}
-function expects the number represented in the input string to be
-formatted according to the grouping rules of the currently selected
-locale (@pxref{General Numeric}).
-
-If the @samp{C} or @samp{POSIX} locale is selected, there is no
-difference.  But for a locale that specifies values for the
-appropriate fields in the locale, the input must have the correct form
-in the input.  Otherwise, the longest prefix with a correct form is
-processed.
-
address@hidden String Input Conversions
address@hidden String Input Conversions
-
-This section describes the @code{scanf} input conversions for reading
-string and character values: @samp{%s}, @samp{%S}, @samp{%[},
address@hidden and @samp{%C}.
-
-You have two options for how to receive the input from these
-conversions:
-
address@hidden @bullet
address@hidden
-Provide a buffer to store it in.  This is the default.  You should
-provide an argument of type @code{char *} or @code{wchar_t *} (the
-latter if the @samp{l} modifier is present).
-
address@hidden:} To make a robust program, you must make sure that
-the input (plus its terminating null) cannot possibly exceed the size
-of the buffer you provide.  In general, the only way to do this is to
-specify a maximum field width one less than the buffer size.  @emph{If
-you provide the buffer, always specify a maximum field width to
-prevent overflow.}
-
address@hidden
-Ask @code{scanf} to allocate a big enough buffer, by specifying the
address@hidden flag character.  This is a @sc{gnu} extension.  You should
-provide an argument of type @code{char **} for the buffer address to
-be stored in (@pxref{Dynamic String Input}).
address@hidden itemize
-
-The @samp{%c} conversion is the simplest---it matches a fixed number
-of characters, always.  The maximum field width says how many
-characters to read; if you don't specify the maximum, the default is
-1.  This conversion doesn't append a null character to the end of the
-text it reads.  It also does not skip over initial white-space
-characters.  It reads precisely the next @var{n} characters, and fails
-if it cannot get that many.  Since there is always a maximum field
-width with @samp{%c} (whether specified, or 1 by default), you can
-always prevent overflow by making the buffer long enough.
address@hidden Is character == byte here???  --drepper
-
-If the format is @samp{%lc} or @samp{%C}, the function stores wide
-characters that are converted using the conversion determined at the
-time the stream was opened from the external byte stream.  The number
-of bytes read from the medium is limited by @code{MB_CUR_LEN *
address@hidden, but at most @var{n} wide characters get stored in the output
-string.
-
-The @samp{%s} conversion matches a string of non-white-space characters.
-It skips and discards initial white space, but stops when it encounters
-more white space after having read something.  It stores a null character
-at the end of the text that it reads.
-
-For example, reading the input:
-
address@hidden
- hello, world
address@hidden smallexample
-
address@hidden
-with the conversion @samp{%10c} produces @code{" hello, wo"}, but
-reading the same input with the conversion @samp{%10s} produces
address@hidden"hello,"}.
-
address@hidden:} If you do not specify a field width for @samp{%s},
-then the number of characters read is limited only by where the next
-white-space character appears.  This almost certainly means that invalid
-input can make your program crash---which is a bug.
-
-The @samp{%ls} and @samp{%S} format are handled just like @samp{%s},
-except that the external byte-sequence is converted using the
-conversion associated with the stream to wide characters with their
-own encoding.  A width or precision specified with the format do not
-directly determine how many bytes are read from the stream since they
-measure wide characters.  But an upper limit can be computed by
-multiplying the value of the width or precision by @code{MB_CUR_MAX}.
-
-To read in characters that belong to an arbitrary set of your choice,
-use the @samp{%[} conversion.  You specify the set between the @samp{[}
-character and a following @samp{]} character, using the same syntax used
-in regular expressions.  As special cases:
-
address@hidden @bullet
address@hidden
-A literal @samp{]} character can be specified as the first character
-of the set.
-
address@hidden
-An embedded @samp{-} character (that is, one that is not the first or
-last character of the set) is used to specify a range of characters.
-
address@hidden
-If a caret character @samp{^} immediately follows the initial @samp{[},
-then the set of allowed input characters is the everything @emph{except}
-the characters listed.
address@hidden itemize
-
-The @samp{%[} conversion does not skip over initial white-space
-characters.
-
-Here are some examples of @samp{%[} conversions and what they mean:
-
address@hidden @samp
address@hidden %25[1234567890]
-Match a string of up to twenty-five digits.
-
address@hidden %25[][]
-Match a string of up to twenty-five square brackets.
-
address@hidden %25[^ \f\n\r\t\v]
-Match a string up to twenty-five characters long that doesn't contain
-any of the standard white-space characters.  This is slightly
-different from @samp{%s}, because if the input begins with a
-white-space character, @samp{%[} reports a matching failure while
address@hidden simply discards the initial white space.
-
address@hidden %25[a-z]
-Match up to twenty-five lowercase characters.
address@hidden table
-
-As for @samp{%c} and @samp{%s}, the @samp{%[} format is also modified
-to produce wide characters if the @samp{l} modifier is present.  All
-that was said about @samp{%ls} above is true for @samp{%l[}.
-
-The @samp{%s} and @samp{%[} conversions are @emph{dangerous} if you
-don't specify a maximum width or use the @samp{a} flag, because input
-too long would overflow whatever buffer you have provided for it.  No
-matter how long your buffer is, a user could supply input that is
-longer.  A well-written program reports invalid input with a
-comprehensible error message, not with a crash.
-
address@hidden Dynamic String Input
address@hidden Dynamically Allocating String Conversions
-
-A @sc{gnu} extension to formatted input lets you safely read a string with no
-maximum size.  Using this feature, you don't supply a buffer; instead,
address@hidden allocates a buffer big enough to hold the data and gives
-you its address.  To use this feature, write @samp{a} as a flag
-character, as in @samp{%as} or @samp{%a[0-9a-z]}.
-
-The pointer argument you supply for where to store the input should have
-type @code{char **}.  The @code{scanf} function allocates a buffer and
-stores its address in the word that the argument points to.  You should
-free the buffer with @code{free} when you no longer need it.
-
-Here is an example of using the @samp{a} flag with the @address@hidden
-conversion specification to read a @dfn{variable assignment} of the form
address@hidden@var{variable} = @var{value}}.
-
address@hidden
address@hidden
-  char *variable, *value;
-
-  if (2 > scanf ("%a[a-zA-Z0-9] = %a[^\n]\n",
-                 &variable, &value))
-    @{
-      invalid_input_error ();
-      return 0;
-    @}
-
-  @dots{}
address@hidden
address@hidden smallexample
-
address@hidden Other Input Conversions
address@hidden Other Input Conversions
-
-This section describes the miscellaneous input conversions.
-
-The @samp{%p} conversion is used to read a pointer value.  It
-recognizes the same syntax used by the @samp{%p} output conversion for
address@hidden (@pxref{Other Output Conversions}); that is, a
-hexadecimal number, just as the @samp{%x} conversion accepts.  The
-corresponding argument should be of type @code{void **}; that is, the
-address of a place to store a pointer.
-
-The resulting pointer value is not guaranteed to be valid if it was not
-originally written during the same program execution that reads it in.
-
-The @samp{%n} conversion produces the number of characters read so far
-by this call.  The corresponding argument should be of type @code{int
-*}.  This conversion works in the same way as the @samp{%n} conversion
-for @code{printf} (@pxref{Other Output Conversions}, for an example).
-
-The @samp{%n} conversion is the only mechanism for determining the
-success of literal matches or conversions with suppressed assignments.
-If the @samp{%n} follows the locus of a matching failure, then no value
-is stored for it since @code{scanf} returns before processing the
address@hidden  If you store @code{-1} in that argument slot before calling
address@hidden, the presence of @code{-1} after @code{scanf} indicates an
-error occurred before the @samp{%n} was reached.
-
-Finally, the @samp{%%} conversion matches a literal @samp{%} character
-in the input stream, without using an argument.  This conversion does
-not permit any flags, field width, or type modifier to be specified.
-
address@hidden Formatted Input Functions
address@hidden Formatted Input Functions
-
-Here are the descriptions of the functions for performing formatted
-input.
-Prototypes for these functions are in the header file @file{stdio.h}.
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden ISO
address@hidden int scanf (const char address@hidden, @dots{})
-The @code{scanf} function reads formatted input from the stream
address@hidden under the control of the template string @var{template}.
-The optional arguments are pointers to the places that receive the
-resulting values.
-
-The return value is normally the number of successful assignments.  If
-an end-of-file condition is detected before any matches are performed,
-including matches against white-space and literal characters in the
-template, then @code{EOF} is returned.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int wscanf (const wchar_t address@hidden, @dots{})
-The @code{wscanf} function reads formatted input from the stream
address@hidden under the control of the template string @var{template}.
-The optional arguments are pointers to the places which receive the
-resulting values.
-
-The return value is normally the number of successful assignments.  If
-an end-of-file condition is detected before any matches are performed,
-including matches against white-space and literal characters in the
-template, then @code{WEOF} is returned.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int fscanf (FILE address@hidden, const char address@hidden, 
@dots{})
-This function is just like @code{scanf}, except that the input is read
-from the stream @var{stream} instead of @code{stdin}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int fwscanf (FILE address@hidden, const wchar_t address@hidden, 
@dots{})
-This function is just like @code{wscanf}, except that the input is read
-from the stream @var{stream} instead of @code{stdin}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int sscanf (const char address@hidden, const char 
address@hidden, @dots{})
-This is like @code{scanf}, except that the characters are taken from the
-null-terminated string @var{s} instead of from a stream.  Reaching the
-end of the string is treated as an end-of-file condition.
-
-The behavior of this function is undefined if copying takes place
-between objects that overlap---for example, if @var{s} is also given
-as an argument to receive a string read under control of the @samp{%s},
address@hidden, or @samp{%[} conversion.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int swscanf (const wchar_t address@hidden, const char 
address@hidden, @dots{})
-This is like @code{wscanf}, except that the characters are taken from the
-null-terminated string @var{ws} instead of from a stream.  Reaching the
-end of the string is treated as an end-of-file condition.
-
-The behavior of this function is undefined if copying takes place
-between objects that overlap---for example, if @var{ws} is also given as
-an argument to receive a string read under control of the @samp{%s},
address@hidden, or @samp{%[} conversion.
address@hidden deftypefun
-
address@hidden Variable Arguments Input
address@hidden Variable Arguments Input Functions
-
-The functions @code{vscanf} and friends are provided so that you can
-define your own variadic @code{scanf}-like functions that make use of
-the same internals as the built-in formatted output functions.  These
-functions are analogous to the @code{vprintf} series of output
-functions (@pxref{Variable Arguments Output}, for important
-information on how to use them).
-
address@hidden Note:} The functions listed in this section were
-introduced in @address@hidden C99} and were previously available as
address@hidden extensions.
-
address@hidden stdio.h
address@hidden ISO
address@hidden int vscanf (const char address@hidden, va_list @var{ap})
-This function is similar to @code{scanf}, but instead of taking
-a variable number of arguments directly, it takes an argument list
-pointer @var{ap} of type @address@hidden, ``Variadic Functions''.}
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int vwscanf (const wchar_t address@hidden, va_list @var{ap})
-This function is similar to @code{wscanf}, but instead of taking a
-variable number of arguments directly, it takes an argument list
-pointer @var{ap} of type @address@hidden, ``Variadic
-Functions''.}
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int vfscanf (FILE address@hidden, const char address@hidden, 
va_list @var{ap})
-This is the equivalent of @code{fscanf} with the variable argument list
-specified directly as for @code{vscanf}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int vfwscanf (FILE address@hidden, const wchar_t address@hidden, 
va_list @var{ap})
-This is the equivalent of @code{fwscanf} with the variable argument list
-specified directly as for @code{vwscanf}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int vsscanf (const char address@hidden, const char 
address@hidden, va_list @var{ap})
-This is the equivalent of @code{sscanf} with the variable argument list
-specified directly as for @code{vscanf}.
address@hidden deftypefun
-
address@hidden wchar.h
address@hidden ISO
address@hidden int vswscanf (const wchar_t address@hidden, const wchar_t 
address@hidden, va_list @var{ap})
-This is the equivalent of @code{swscanf} with the variable argument list
-specified directly as for @code{vwscanf}.
address@hidden deftypefun
-
-In @sc{gnu} C, there is a special construct you can use to let the
-compiler know that a function uses a @code{scanf}-style format string.
-Then it can check the number and types of arguments in each call to
-the function, and warn you when they do not match the format
address@hidden Richard M. Stallman and the GCC Developer
-Community, ``Declaring Attributes of Functions'' in @emph{Using GCC:
-The GNU Compiler Collection Reference Manual} (Boston, MA: GNU Press,
-October 2003), @uref{http:// gcc.gnu.org/ onlinedocs/ gcc-3.3.2/ gcc/}.}
-
address@hidden EOF and Errors
address@hidden End-of-File and Errors
-
address@hidden end of file, on a stream
-Many of the functions described in this chapter return the value of
-the macro @code{EOF} to indicate unsuccessful completion of the
-operation.  Since @code{EOF} is used to report both end-of-file and
-random errors, it's often better to use the @code{feof} function to
-check explicitly for end of file and @code{ferror} to check for
-errors.  These functions check indicators that are part of the
-internal state of the stream object, indicators set if the appropriate
-condition was detected by a previous I/O operation on that stream.
-
address@hidden stdio.h
address@hidden ISO
address@hidden Macro int EOF
-This macro is an integer value that is returned by a number of narrow
-stream functions to indicate an end-of-file condition, or some other
-error situation.  With the GNU library, @code{EOF} is @code{-1}.  In
-other libraries, its value may be some other negative number.
-
-This symbol is declared in @file{stdio.h}.
address@hidden deftypevr
-
address@hidden wchar.h
address@hidden ISO
address@hidden Macro int WEOF
-This macro is an integer value that is returned by a number of wide
-stream functions to indicate an end-of-file condition, or some other
-error situation.  With the @sc{gnu} library, @code{WEOF} is @code{-1}.  In
-other libraries, its value may be some other negative number.
-
-This symbol is declared in @file{wchar.h}.
address@hidden deftypevr
-
address@hidden stdio.h
address@hidden ISO
address@hidden int feof (FILE address@hidden)
-The @code{feof} function returns nonzero if and only if the end-of-file
-indicator for the stream @var{stream} is set.
-
-This symbol is declared in @file{stdio.h}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden int feof_unlocked (FILE address@hidden)
-The @code{feof_unlocked} function is equivalent to the @code{feof}
-function, except that it does not implicitly lock the stream.
-
-This function is a @sc{gnu} extension.
-
-This symbol is declared in @file{stdio.h}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int ferror (FILE address@hidden)
-The @code{ferror} function returns nonzero if and only if the error
-indicator for the stream @var{stream} is set, indicating that an error
-has occurred on a previous operation on the stream.
-
-This symbol is declared in @file{stdio.h}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden int ferror_unlocked (FILE address@hidden)
-The @code{ferror_unlocked} function is equivalent to the @code{ferror}
-function, except that it does not implicitly lock the stream.
-
-This function is a @sc{gnu} extension.
-
-This symbol is declared in @file{stdio.h}.
address@hidden deftypefun
-
-In addition to setting the error indicator associated with the stream,
-the functions that operate on streams also set @code{errno} in the
-same way as the corresponding low-level functions that operate on file
-descriptors.  For example, all of the functions that perform output to
-a stream---such as @code{fputc}, @code{printf} and @code{fflush}---are
-implemented in terms of @code{write}, and all of the @code{errno}
-error conditions defined for @code{write} are meaningful for these
address@hidden more information about the descriptor-level I/O
-functions, see Loosemore et al., ``Low-Level Input/Output''.}
-
address@hidden Error Recovery
address@hidden Recovering from Errors
-
-You may explicitly clear the error and EOF flags with the @code{clearerr}
-function.
-
address@hidden stdio.h
address@hidden ISO
address@hidden void clearerr (FILE address@hidden)
-This function clears the end-of-file and error indicators for the
-stream @var{stream}.
-
-The file-positioning functions (@pxref{File Positioning}) also clear the
-end-of-file indicator for the stream.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden void clearerr_unlocked (FILE address@hidden)
-The @code{clearerr_unlocked} function is equivalent to the
address@hidden function, except that it does not implicitly lock the
-stream.
-
-This function is a @sc{gnu} extension.
address@hidden deftypefun
-
-It is @emph{not} correct to just clear the error flag and retry a
-failed stream operation.  After a failed write, any number of
-characters since the last buffer flush may have been committed to the
-file, while some buffered data may have been discarded.  Merely
-retrying can thus cause lost or repeated data.
-
-A failed read may leave the file pointer in an inappropriate position for
-a second try.  In both cases, you should seek to a known position before
-retrying.
-
-Most errors that can happen are not recoverable---a second try will
-always fail again in the same way.  So usually it is best to give up
-and report the error to the user, rather than install complicated
-recovery logic.
-
-One important exception is @address@hidden, ``Primitives Interrupted by 
Signals''.}
-Many stream I/O implementations will treat it as an ordinary error, which
-can be quite inconvenient.  You can avoid this hassle by installing all
-signals with the @code{SA_RESTART} flag.
-
-For similar reasons, setting nonblocking I/O on a stream's file
-descriptor is not usually advisable.
-
address@hidden Binary Streams
address@hidden Text and Binary Streams
-
-The @sc{gnu} system and other @sc{posix}-compatible operating systems organize 
all
-files as uniform sequences of characters.  However, some other systems
-make a distinction between files containing text and files containing
-binary data, and the input and output facilities of @address@hidden C} provide 
for
-this distinction.  This section tells you how to write programs portable
-to such systems.
-
address@hidden text stream
address@hidden binary stream
-When you open a stream, you can specify either a @dfn{text stream} or
-a @dfn{binary stream}.  You indicate that you want a binary stream by
-specifying the @samp{b} modifier in the @var{opentype} argument to
address@hidden (@pxref{Opening Streams}).  Without this option,
address@hidden opens the file as a text stream.
-
-Text and binary streams differ in several ways:
-
address@hidden @bullet
address@hidden
-The data read from a text stream is divided into @dfn{lines} that are
-terminated by newline (@code{'\n'}) characters, while a binary stream
-is simply a long series of characters.  A text stream might on some
-systems fail to handle lines more than 254 characters long (including
-the terminating newline character).
address@hidden lines (in a text file)
-
address@hidden
-On some systems, text files can contain only printing characters,
-horizontal tab characters, and newlines, and so text streams may not
-support other characters.  However, binary streams can handle any
-character value.
-
address@hidden
-Space characters that are written immediately preceding a newline
-character in a text stream may disappear when the file is read in again.
-
address@hidden
-More generally, there need not be a one-to-one mapping between
-characters that are read from or written to a text stream, and the
-characters in the actual file.
address@hidden itemize
-
-Since a binary stream is always more capable and more predictable than a
-text stream, you might wonder what purpose text streams serve.  Why not
-simply always use binary streams?  The answer is that on these operating
-systems, text and binary streams use different file formats, and the
-only way to read or write ``an ordinary file of text'' that can work
-with other text-oriented programs is through a text stream.
-
-In the @sc{gnu} library, and on all @sc{posix} systems, there is no difference
-between text streams and binary streams.  When you open a stream, you
-get the same kind of stream regardless of whether you ask for binary.
-This stream can handle any file content, and has none of the
-restrictions that text streams sometimes have.
-
address@hidden File Positioning
address@hidden File Positioning
address@hidden file positioning on a stream
address@hidden positioning a stream
address@hidden seeking on a stream
-
-The @dfn{file position} of a stream describes where in the file the
-stream is currently reading or writing.  I/O on the stream advances
-the file position through the file.  In the @sc{gnu} system, the file
-position is represented as an integer, which counts the number of
-bytes from the beginning of the file (@pxref{File Position}).
-
-During I/O to an ordinary disk file, you can change the file position
-whenever you wish, so as to read or write any portion of the file.  Some
-other kinds of files may also permit this.  Files that support changing
-the file position are sometimes referred to as @dfn{random-access}
-files.
-
-You can use the functions in this section to examine or modify the file
-position indicator associated with a stream.  The symbols listed below
-are declared in the header file @file{stdio.h}.
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden ISO
address@hidden {long int} ftell (FILE address@hidden)
-This function returns the current file position of the stream
address@hidden
-
-This function can fail if the stream doesn't support file positioning,
-or if the file position can't be represented in a @code{long int}, and
-possibly for other reasons as well.  If a failure occurs, a value of
address@hidden is returned.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden Unix98
address@hidden off_t ftello (FILE address@hidden)
-The @code{ftello} function is similar to @code{ftell}, except that it
-returns a value of type @code{off_t}.  Systems that support this type
-use it to describe all file positions, unlike the @sc{posix}
-specification, which uses a long int.  The two are not necessarily the
-same size.  Therefore, using @code{ftell} can lead to problems if the
-implementation is written on top of a @sc{posix} compliant low-level
-I/O implementation, and using @code{ftello} is preferable whenever it
-is available.
-
-If this function fails, it returns @code{(off_t) -1}.  This can happen
-due to missing support for file positioning or internal errors.
-Otherwise, the return value is the current file position.
-
-The function is an extension defined in the Unix Single Specification
-version 2.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit system, this function is in fact @code{ftello64}---the @sc{lfs}
-interface transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden Unix98
address@hidden off64_t ftello64 (FILE address@hidden)
-This function is similar to @code{ftello} except that the return value
-is of type @code{off64_t}.  This also requires that the stream
address@hidden was opened using either @code{fopen64}, @code{freopen64}
-or @code{tmpfile64}, since otherwise the underlying file operations to
-position the file pointer beyond the @math{2^31} bytes limit might
-fail.
-
-If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit machine, this function is available under the name
address@hidden and so transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int fseek (FILE address@hidden, long int @var{offset}, int 
@var{whence})
-The @code{fseek} function is used to change the file position of the
-stream @var{stream}.  The value of @var{whence} must be one of the
-constants @code{SEEK_SET}, @code{SEEK_CUR}, or @code{SEEK_END}, to
-indicate whether the @var{offset} is relative to the beginning of the
-file, the current file position, or the end of the file, respectively.
-
-This function returns a value of zero if the operation was successful,
-and a nonzero value to indicate failure.  A successful call also
-clears the end-of-file indicator of @var{stream} and discards any
-characters that were pushed back by the use of @code{ungetc}.
-
address@hidden either flushes any buffered output before setting the
-file position, or else remembers it so it will be written later in its
-proper place in the file.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden Unix98
address@hidden int fseeko (FILE address@hidden, off_t @var{offset}, int 
@var{whence})
-This function is similar to @code{fseek}, but it corrects a problem
-with @code{fseek} in a system with @sc{posix} types.  Using a value of
-type @code{long int} for the offset is not compatible with @sc{posix}.
address@hidden uses the correct type @code{off_t} for the @var{offset}
-parameter.
-
-For this reason, it is a good idea to prefer @code{ftello} whenever it
-is available, since its functionality is (if different at all) closer
-the underlying definition.
-
-The functionality and return value are the same as for @code{fseek}.
-
-The function is an extension defined in the Unix Single Specification
-version 2.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit system, this function is in fact @code{fseeko64}---the @sc{lfs}
-interface transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden Unix98
address@hidden int fseeko64 (FILE address@hidden, off64_t @var{offset}, int 
@var{whence})
-This function is similar to @code{fseeko} except that the @var{offset}
-parameter is of type @code{off64_t}.  This also requires that the
-stream @var{stream} was opened using either @code{fopen64},
address@hidden or @code{tmpfile64}, since otherwise the underlying
-file operations to position the file pointer beyond the @math{2^31}
-bytes limit might fail.
-
-If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit machine, this function is available under the name
address@hidden and so transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden Note:} In address@hidden systems, @code{ftell},
address@hidden, @code{fseek} and @code{fseeko} might work reliably only
-on binary streams (@pxref{Binary Streams}).
-
-The following symbolic constants are defined for use as the @var{whence}
-argument to @code{fseek}.  They are also used with the @code{lseek}
address@hidden, ``Input and Output Primitives''.} and to specify offsets
-for file address@hidden, ``Control Operations on Files''.}
-
address@hidden stdio.h
address@hidden ISO
address@hidden Macro int SEEK_SET
-This is an integer constant which, when used as the @var{whence}
-argument to the @code{fseek} or @code{fseeko} function, specifies that
-the offset provided is relative to the beginning of the file.
address@hidden deftypevr
-
address@hidden stdio.h
address@hidden ISO
address@hidden Macro int SEEK_CUR
-This is an integer constant which, when used as the @var{whence}
-argument to the @code{fseek} or @code{fseeko} function, specifies that
-the offset provided is relative to the current file position.
address@hidden deftypevr
-
address@hidden stdio.h
address@hidden ISO
address@hidden Macro int SEEK_END
-This is an integer constant which, when used as the @var{whence}
-argument to the @code{fseek} or @code{fseeko} function, specifies that
-the offset provided is relative to the end of the file.
address@hidden deftypevr
-
address@hidden stdio.h
address@hidden ISO
address@hidden void rewind (FILE address@hidden)
-The @code{rewind} function positions the stream @var{stream} at the
-beginning of the file.  It is equivalent to calling @code{fseek} or
address@hidden on the @var{stream} with an @var{offset} argument of
address@hidden and a @var{whence} argument of @code{SEEK_SET}, except that
-the return value is discarded and the error indicator for the stream is
-reset.
address@hidden deftypefun
-
-These three aliases for the @address@hidden constants exist for the
-sake of compatibility with older @sc{bsd} systems.  They are defined in two
-different header files: @file{fcntl.h} and @file{sys/file.h}.
-
address@hidden @code
address@hidden sys/file.h
address@hidden BSD
address@hidden L_SET
address@hidden L_SET
-An alias for @code{SEEK_SET}
-
address@hidden sys/file.h
address@hidden BSD
address@hidden L_INCR
address@hidden L_INCR
-An alias for @code{SEEK_CUR}
-
address@hidden sys/file.h
address@hidden BSD
address@hidden L_XTND
address@hidden L_XTND
-An alias for @code{SEEK_END}
address@hidden table
-
address@hidden Portable Positioning
address@hidden Portable File-Position Functions
-
-On the @sc{gnu} system, the file position is truly a character count.
-You can specify any character count value as an argument to
address@hidden or @code{fseeko} and get reliable results for any
-random-access file.  However, some @address@hidden C} systems do not
-represent file positions in this way.
-
-On some systems where text streams truly differ from binary streams, it
-is impossible to represent the file position of a text stream as a count
-of characters from the beginning of the file.  For example, the file
-position on some systems must encode both a record offset within the
-file, and a character offset within the record.
-
-As a consequence, if you want your programs to be portable to these
-systems, you must observe certain rules:
-
address@hidden @bullet
address@hidden
-The value returned from @code{ftell} on a text stream has no predictable
-relationship to the number of characters you have read so far.  The only
-thing you can rely on is that you can use it subsequently as the
address@hidden argument to @code{fseek} or @code{fseeko} to move back to
-the same file position.
-
address@hidden
-In a call to @code{fseek} or @code{fseeko} on a text stream, either
-the @var{offset} must be zero, or @var{whence} must be @code{SEEK_SET}
-and the @var{offset} must be the result of an earlier call to
address@hidden on the same stream.
-
address@hidden
-The value of the file-position indicator of a text stream is undefined
-while there are characters that have been pushed back with
address@hidden that haven't been read or discarded (@pxref{Unreading}).
address@hidden itemize
-
-But even if you observe these rules, you may still have trouble with
-long files, because @code{ftell} and @code{fseek} use a @code{long
-int} value to represent the file position.  This type may not have
-room to encode all the file positions in a large file.  Using the
address@hidden and @code{fseeko} functions might help here, since the
address@hidden type is expected to be able to hold all file-position
-values but this still does not help to handle additional information
-that must be associated with a file position.
-
-So if you do want to support systems with peculiar encodings for the
-file positions, it is better to use the functions @code{fgetpos} and
address@hidden instead.  These functions represent the file position
-using the data type @code{fpos_t}, whose internal representation varies
-from system to system.
-
-These symbols are declared in the header file @file{stdio.h}.
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden ISO
address@hidden {Data Type} fpos_t
-This is the type of an object that can encode information about the
-file position of a stream, for use by the functions @code{fgetpos} and
address@hidden
-
-In the @sc{gnu} system, @code{fpos_t} is an opaque data structure that
-contains internal data to represent file-offset and conversion-state
-information.  In other systems, it might have a different internal
-representation.
-
-When compiling with @code{_FILE_OFFSET_BITS == 64} on a 32-bit
-machine, this type is in fact equivalent to @code{fpos64_t}, since the
address@hidden interface transparently replaces the old interface.
address@hidden deftp
-
address@hidden stdio.h
address@hidden Unix98
address@hidden {Data Type} fpos64_t
-This is the type of an object that can encode information about the
-file position of a stream, for use by the functions @code{fgetpos64} and
address@hidden
-
-In the @sc{gnu} system, @code{fpos64_t} is an opaque data structure
-that contains internal data to represent file-offset and
-conversion-state information.  In other systems, it might have a
-different internal representation.
address@hidden deftp
-
address@hidden stdio.h
address@hidden ISO
address@hidden int fgetpos (FILE address@hidden, fpos_t address@hidden)
-This function stores the value of the file-position indicator for the
-stream @var{stream} in the @code{fpos_t} object pointed to by
address@hidden  If successful, @code{fgetpos} returns
-zero. Otherwise, it returns a nonzero value and stores an
-implementation-defined positive value in @code{errno}.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit system, the function is in fact @code{fgetpos64}---the @sc{lfs}
-interface transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden Unix98
address@hidden int fgetpos64 (FILE address@hidden, fpos64_t address@hidden)
-This function is similar to @code{fgetpos}, but the file position is
-returned in a variable of type @code{fpos64_t} to which @var{position}
-points.
-
-If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit machine, this function is available under the name
address@hidden, and so transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int fsetpos (FILE address@hidden, const fpos_t address@hidden)
-This function sets the file-position indicator for the stream
address@hidden to the position @var{position}, which must have been set
-by a previous call to @code{fgetpos} on the same stream.  If
-successful, @code{fsetpos} clears the end-of-file indicator on the
-stream, discards any characters that were pushed back by the use of
address@hidden, and returns a value of zero.  Otherwise, @code{fsetpos}
-returns a nonzero value and stores an implementation-defined positive
-value in @code{errno}.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit system, the function is in fact @code{fsetpos64}---the @sc{lfs}
-interface transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden Unix98
address@hidden int fsetpos64 (FILE address@hidden, const fpos64_t 
address@hidden)
-This function is similar to @code{fsetpos}, but the file position used
-for positioning is provided in a variable of type @code{fpos64_t} to
-which @var{position} points.
-
-If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit machine, this function is available under the name
address@hidden, and so transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden Stream Buffering
address@hidden Stream Buffering
-
address@hidden buffering of streams
-Characters that are written to a stream are normally accumulated and
-transmitted asynchronously to the file in a block, instead of appearing
-as soon as they are output by the application program.  Similarly,
-streams often retrieve input from the host environment in blocks rather
-than on a character-by-character basis.  This is called @dfn{buffering}.
-
-If you are writing programs that do interactive input and output using
-streams, you need to understand how buffering works when you design the
-user interface to your program.  Otherwise, you might find that output
-(such as progress or prompt messages) doesn't appear when you intended
-it to, or displays some other unexpected behavior.
-
-This section deals only with controlling when characters are
-transmitted between the stream and the file or device, and @emph{not}
-with how things like echoing, flow control and the like are handled on
-specific classes of address@hidden information on common control
-operations on terminal devices, see Loosemore et al., ``Low-Level
-Terminal Interface''.}
-
-You can bypass the stream buffering facilities altogether by using the
-low-level input and output functions that operate on file descriptors
address@hidden, ``Low-Level Input/Output''.}
-
address@hidden Buffering Concepts
address@hidden Buffering Concepts
-
-There are three different kinds of buffering strategies:
-
address@hidden @bullet
address@hidden
-Characters written to or read from an @dfn{unbuffered} stream are
-transmitted individually to or from the file as soon as possible.
address@hidden unbuffered stream
-
address@hidden
-Characters written to a @dfn{line buffered} stream are transmitted to
-the file in blocks when a newline character is encountered.
address@hidden line buffered stream
-
address@hidden
-Characters written to or read from a @dfn{fully buffered} stream are
-transmitted to or from the file in blocks of arbitrary size.
address@hidden fully buffered stream
address@hidden itemize
-
-Newly opened streams are normally fully buffered, with one exception:
-a stream connected to an interactive device such as a terminal is
-initially line buffered (@pxref{Controlling Buffering}, for
-information on how to select a different kind of buffering).  Usually,
-the automatic selection gives you the most convenient kind of
-buffering for the file or device you open.
-
-The use of line buffering for interactive devices implies that output
-messages ending in a newline will appear immediately---which is usually
-what you want.  Output that doesn't end in a newline might or might not
-show up immediately, so if you want them to appear immediately, you
-should flush buffered output explicitly with @code{fflush}, as described
-in @ref{Flushing Buffers}.
-
address@hidden Flushing Buffers
address@hidden Flushing Buffers
-
address@hidden flushing a stream
address@hidden output on a buffered stream means transmitting all
-accumulated characters to the file.  There are many circumstances when
-buffered output on a stream is flushed automatically:
-
address@hidden @bullet
address@hidden
-When you try to do output and the output buffer is full
-
address@hidden
-When the stream is closed (@pxref{Closing Streams})
-
address@hidden
-When the program terminates by calling @code{exit} (@pxref{Normal
-Termination})
-
address@hidden
-When a newline is written, if the stream is line buffered
-
address@hidden
-Whenever an input operation on @emph{any} stream actually reads data
-from its file
address@hidden itemize
-
-If you want to flush the buffered output at another time, call
address@hidden, which is declared in the header file @file{stdio.h}.
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden ISO
address@hidden int fflush (FILE address@hidden)
-This function causes any buffered output on @var{stream} to be delivered
-to the file.  If @var{stream} is a null pointer, then
address@hidden causes buffered output on @emph{all} open output streams
-to be flushed.
-
-This function returns @code{EOF} if a write error occurs, or zero
-otherwise.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden POSIX
address@hidden int fflush_unlocked (FILE address@hidden)
-The @code{fflush_unlocked} function is equivalent to the @code{fflush}
-function, except that it does not implicitly lock the stream.
address@hidden deftypefun
-
-The @code{fflush} function can be used to flush all streams currently
-opened. While this is useful in some situations, it often does more
-than necessary.  It could be used when terminal input is required and
-the programmer wants to be sure that all output is visible on the
-terminal. But this means that only line-buffered streams have to be
-flushed.  Solaris introduced a function especially for this.  It was
-always available in the @sc{gnu} C Library in some form but never
-officially exported.
-
address@hidden stdio_ext.h
address@hidden GNU
address@hidden void _flushlbf (void)
-The @code{_flushlbf} function flushes all line buffered streams
-currently opened.
-
-This function is declared in the @file{stdio_ext.h} header.
address@hidden deftypefun
-
address@hidden Note:} Some operating systems have been known to
-be so thoroughly fixated on line-oriented input and output that
-flushing a line buffered stream causes a newline to be written!
-Fortunately, this ``feature'' seems to be becoming less common.  You
-do not need to worry about this in the @sc{gnu} system.
-
-In some situations, it might be useful to not flush the output pending
-for a stream but instead simply forget it.  If transmission is costly
-and the output is not needed anymore, this is valid reasoning.  In
-this situation, a nonstandard function introduced in Solaris and
-available in the @sc{gnu} C Library can be used.
-
address@hidden stdio_ext.h
address@hidden GNU
address@hidden void __fpurge (FILE address@hidden)
-The @code{__fpurge} function causes the buffer of the stream
address@hidden to be emptied.  If the stream is currently in read mode,
-all input in the buffer is lost.  If the stream is in output mode, the
-buffered output is not written to the device (or whatever other
-underlying storage), and the buffer is cleared.
-
-This function is declared in @file{stdio_ext.h}.
address@hidden deftypefun
-
address@hidden Controlling Buffering
address@hidden Controlling Which Kind of Buffering
-
-After opening a stream (but before any other operations have been
-performed on it), you can explicitly specify what kind of buffering you
-want it to have using the @code{setvbuf} function.
address@hidden buffering, controlling
-
-The facilities listed in this section are declared in the header
-file @file{stdio.h}.
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden ISO
address@hidden int setvbuf (FILE address@hidden, char address@hidden, int 
@var{mode}, size_t @var{size})
-This function is used to specify that the stream @var{stream} should
-have the buffering mode @var{mode}, which can be either @code{_IOFBF}
-(for full buffering), @code{_IOLBF} (for line buffering), or
address@hidden (for unbuffered input/output).
-
-If you specify a null pointer as the @var{buf} argument, then @code{setvbuf}
-allocates a buffer itself using @code{malloc}.  This buffer will be freed
-when you close the stream.
-
-Otherwise, @var{buf} should be a character array that can hold at least
address@hidden characters.  You should not free the space for this array as
-long as the stream remains open and this array remains its buffer.  You
-should usually either allocate it statically, or @code{malloc}
-(@pxref{Unconstrained Allocation}) the buffer.  Using an automatic array
-is not a good idea unless you close the file before exiting the block
-that declares the array.
-
-While the array remains a stream buffer, the stream I/O functions will
-use the buffer for their internal purposes.  You shouldn't try to access
-the values in the array directly while the stream is using it for
-buffering.
-
-The @code{setvbuf} function returns zero on success, or a nonzero
-value if the value of @var{mode} is not valid, or if the request could
-not be honored.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden Macro int _IOFBF
-The value of this macro is an integer constant expression that can be
-used as the @var{mode} argument to the @code{setvbuf} function to
-specify that the stream should be fully buffered.
address@hidden deftypevr
-
address@hidden stdio.h
address@hidden ISO
address@hidden Macro int _IOLBF
-The value of this macro is an integer constant expression that can be
-used as the @var{mode} argument to the @code{setvbuf} function to
-specify that the stream should be line buffered.
address@hidden deftypevr
-
address@hidden stdio.h
address@hidden ISO
address@hidden Macro int _IONBF
-The value of this macro is an integer constant expression that can be
-used as the @var{mode} argument to the @code{setvbuf} function to
-specify that the stream should be unbuffered.
address@hidden deftypevr
-
address@hidden stdio.h
address@hidden ISO
address@hidden Macro int BUFSIZ
-The value of this macro is an integer constant expression that is good
-to use for the @var{size} argument to @code{setvbuf}.  This value is
-guaranteed to be at least @code{256}.
-
-The value of @code{BUFSIZ} is chosen on each system so as to make stream
-I/O efficient.  So it is a good idea to use @code{BUFSIZ} as the size
-for the buffer when you call @code{setvbuf}.
-
-Actually, you can get an even better value to use for the buffer size
-by means of the @code{fstat} system call---it is found in the
address@hidden field of the file address@hidden,
-``Attribute Meanings''.}
-
-Sometimes people also use @code{BUFSIZ} as the allocation size of
-buffers used for related purposes, such as strings used to receive a
-line of input with @code{fgets} (@pxref{Character Input}).  There is no
-particular reason to use @code{BUFSIZ} for this instead of any other
-integer, except that it might lead to doing I/O in chunks of an
-efficient size.
address@hidden deftypevr
-
address@hidden stdio.h
address@hidden ISO
address@hidden void setbuf (FILE address@hidden, char address@hidden)
-If @var{buf} is a null pointer, the effect of this function is
-equivalent to calling @code{setvbuf} with a @var{mode} argument of
address@hidden  Otherwise, it is equivalent to calling @code{setvbuf}
-with @var{buf}, and a @var{mode} of @code{_IOFBF} and a @var{size}
-argument of @code{BUFSIZ}.
-
-The @code{setbuf} function is provided for compatibility with old
-code.  Use @code{setvbuf} in all new programs.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden BSD
address@hidden void setbuffer (FILE address@hidden, char address@hidden, size_t 
@var{size})
-If @var{buf} is a null pointer, this function makes @var{stream} unbuffered.
-Otherwise, it makes @var{stream} fully buffered using @var{buf} as the
-buffer.  The @var{size} argument specifies the length of @var{buf}.
-
-This function is provided for compatibility with old @sc{bsd} code.
-Use @code{setvbuf} instead.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden BSD
address@hidden void setlinebuf (FILE address@hidden)
-This function makes @var{stream} be line buffered, and allocates the
-buffer for you.
-
-This function is provided for compatibility with old BSD code.  Use
address@hidden instead.
address@hidden deftypefun
-
-It is possible to query whether a given stream is line buffered or not
-using a nonstandard function introduced in Solaris and available in
-the @sc{gnu} C Library.
-
address@hidden stdio_ext.h
address@hidden GNU
address@hidden int __flbf (FILE address@hidden)
-The @code{__flbf} function will return a nonzero value in case the
-stream @var{stream} is line buffered.  Otherwise, the return value is
-zero.
-
-This function is declared in the @file{stdio_ext.h} header.
address@hidden deftypefun
-
-Two more extensions allow you to determine the size of the buffer and
-how much of it is used.  These functions were also introduced in
-Solaris.
-
address@hidden stdio_ext.h
address@hidden GNU
address@hidden size_t __fbufsize (FILE address@hidden)
-The @code{__fbufsize} function returns the size of the buffer in the
-stream @var{stream}.  This value can be used to optimize the use of the
-stream.
-
-This function is declared in the @file{stdio_ext.h} header.
address@hidden deftypefun
-
address@hidden stdio_ext.h
address@hidden GNU
address@hidden size_t __fpending (FILE address@hidden)
-The @code{__fpending} function returns the number of bytes currently
-in the output buffer.  For a wide-oriented stream, the measuring unit
-is wide characters.  This function should not be used on buffers in
-read mode or opened read-only.
-
-This function is declared in the @file{stdio_ext.h} header.
address@hidden deftypefun
-
address@hidden Other Kinds of Streams
address@hidden Other Kinds of Streams
-
-The @sc{gnu} library provides ways for you to define additional kinds
-of streams that do not necessarily correspond to an open file.
-
-One such type of stream takes input from or writes output to a string.
-These kinds of streams are used internally to implement the
address@hidden and @code{sscanf} functions.  You can also create such
-a stream explicitly, using the functions described in @ref{String
-Streams}.
-
-More generally, you can define streams that do input/output to arbitrary
-objects using functions supplied by your program.  This protocol is
-discussed in @ref{Custom Streams}.
-
address@hidden Note:} The facilities described in this section
-are specific to @sc{gnu}.  Other systems or C implementations might or
-might not provide equivalent functionality.
-
address@hidden String Streams
address@hidden String Streams
-
address@hidden stream, for I/O to a string
address@hidden string stream
-The @code{fmemopen} and @code{open_memstream} functions allow you to do
-I/O to a string or memory buffer.  These facilities are declared in
address@hidden
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden GNU
address@hidden {FILE *} fmemopen (void address@hidden, size_t @var{size}, const 
char address@hidden)
-This function opens a stream that allows the access specified by the
address@hidden argument, that reads from or writes to the buffer specified
-by the argument @var{buf}.  This array must be at least @var{size} bytes long.
-
-If you specify a null pointer as the @var{buf} argument, @code{fmemopen}
-dynamically allocates an array @var{size} bytes long (as with @code{malloc};
address@hidden Allocation}).  This is really only useful
-if you are going to write things to the buffer and then read them back
-in again, because you have no way of actually getting a pointer to the
-buffer (for this, try @code{open_memstream}, below).  The buffer is
-freed when the stream is closed.
-
-The argument @var{opentype} is the same as in @code{fopen}
-(@pxref{Opening Streams}).  If the @var{opentype} specifies append
-mode, then the initial file position is set to the first null
-character in the buffer.  Otherwise, the initial file position is at
-the beginning of the buffer.
-
-When a stream open for writing is flushed or closed, a null character
-(zero byte) is written at the end of the buffer if it fits.  You
-should add an extra byte to the @var{size} argument to account for this.
-Attempts to write more than @var{size} bytes to the buffer result
-in an error.
-
-For a stream open for reading, null characters (0 bytes) in the
-buffer do not count as end of file.  Read operations indicate end of
-file only when the file position advances past @var{size} bytes.  So,
-if you want to read characters from a null-terminated string, you
-should supply the length of the string as the @var{size} argument.
address@hidden deftypefun
-
-Here is an example of using @code{fmemopen} to create a stream for
-reading from a string:
-
address@hidden
-#include <stdio.h>
-
-static char buffer[] = "foobar";
-
-int
-main (void)
address@hidden
-  int ch;
-  FILE *stream;
-
-  stream = fmemopen (buffer, strlen (buffer), "r");
-  while ((ch = fgetc (stream)) != EOF)
-    printf ("Got %c\n", ch);
-  fclose (stream);
-
-  return 0;
address@hidden
-
address@hidden smallexample
-
-This program produces the following output:
-
address@hidden
-Got f
-Got o
-Got o
-Got b
-Got a
-Got r
address@hidden smallexample
-
address@hidden stdio.h
address@hidden GNU
address@hidden {FILE *} open_memstream (char address@hidden, size_t 
address@hidden)
-This function opens a stream for writing to a buffer.  The buffer is
-allocated dynamically (as with @code{malloc}; @pxref{Unconstrained
-Allocation}) and grown as necessary.
-
-When the stream is closed with @code{fclose} or flushed with
address@hidden, the locations @var{ptr} and @var{sizeloc} are updated to
-contain the pointer to the buffer and its size.  The values thus stored
-remain valid only as long as no further output on the stream takes
-place.  If you do more output, you must flush the stream again to store
-new values before you use them again.
-
-A null character is written at the end of the buffer.  This null character
-is @emph{not} included in the size value stored at @var{sizeloc}.
-
-You can move the stream's file position with @code{fseek} or
address@hidden (@pxref{File Positioning}).  Moving the file position
-past the end of the data already written fills the intervening space
-with zeros.
address@hidden deftypefun
-
-Here is an example of using @code{open_memstream}:
-
address@hidden
-#include <stdio.h>
-
-int
-main (void)
address@hidden
-  char *bp;
-  size_t size;
-  FILE *stream;
-
-  stream = open_memstream (&bp, &size);
-  fprintf (stream, "hello");
-  fflush (stream);
-  printf ("buf = `%s', size = %d\n", bp, size);
-  fprintf (stream, ", world");
-  fclose (stream);
-  printf ("buf = `%s', size = %d\n", bp, size);
-
-  return 0;
address@hidden
-
address@hidden smallexample
-
-This program produces the following output:
-
address@hidden
-buf = `hello', size = 5
-buf = `hello, world', size = 12
address@hidden smallexample
-
address@hidden Obstack Streams
address@hidden Obstack Streams
-
-You can open an output stream that puts it data in an obstack
-(@pxref{Obstacks}).
-
address@hidden stdio.h
address@hidden GNU
address@hidden {FILE *} open_obstack_stream (struct obstack address@hidden)
-This function opens a stream for writing data into the obstack @var{obstack}.
-This starts an object in the obstack and makes it grow as data is
-written (@pxref{Growing Objects}).
address@hidden @end group  Doubly invalid because not nested right.
-
-Calling @code{fflush} on this stream updates the current size of the
-object to match the amount of data that has been written.  After a call
-to @code{fflush}, you can examine the object temporarily.
-
-You can move the file position of an obstack stream with @code{fseek} or
address@hidden (@pxref{File Positioning}).  Moving the file position past
-the end of the data written fills the intervening space with zeros.
-
-To make the object permanent, update the obstack with @code{fflush}, and
-then use @code{obstack_finish} to finalize the object and get its address.
-The following write to the stream starts a new object in the obstack,
-and later writes add to that object until you do another @code{fflush}
-and @code{obstack_finish}.
-
-But how do you find out how long the object is?  You can get the length
-in bytes by calling @code{obstack_object_size} (@pxref{Status of an
-Obstack}), or you can null-terminate the object like this:
-
address@hidden
-obstack_1grow (@var{obstack}, 0);
address@hidden smallexample
-
-Whichever one you do (you can do both if you wish), you must do it
address@hidden calling @code{obstack_finish}.
address@hidden deftypefun
-
-Here is a sample function that uses @code{open_obstack_stream}:
-
address@hidden
-char *
-make_message_string (const char *a, int b)
address@hidden
-  FILE *stream = open_obstack_stream (&message_obstack);
-  output_task (stream);
-  fprintf (stream, ": ");
-  fprintf (stream, a, b);
-  fprintf (stream, "\n");
-  fclose (stream);
-  obstack_1grow (&message_obstack, 0);
-  return obstack_finish (&message_obstack);
address@hidden
address@hidden smallexample
-
address@hidden Custom Streams
address@hidden Programming Your Own Custom Streams
address@hidden custom streams
address@hidden programming your own streams
-
-This section describes how you can make a stream that gets input from an
-arbitrary data source or writes output to an arbitrary data sink
-programmed by you.  We call these @dfn{custom streams}.  The functions
-and types described here are all @sc{gnu} extensions.
-
address@hidden !!! this does not talk at all about the higher-level hooks
-
-
address@hidden Streams and Cookies
address@hidden Custom Streams and Cookies
address@hidden cookie, for custom stream
-
-Inside every custom stream is a special object called the
address@hidden  This is an object supplied by you that records where to
-fetch or store the data read or written.  It is up to you to define a
-data type to use for the cookie.  The stream functions in the library
-never refer directly to its contents, and they don't even know what
-the type is; they record its address with type @code{void *}.
-
-To implement a custom stream, you must specify @emph{how} to fetch or
-store the data in the specified place.  You do this by defining
address@hidden functions} to read, write, change file position, and close
-the stream.  All four of these functions will be passed the stream's
-cookie so they can tell where to fetch or store the data.  The library
-functions don't know what's inside the cookie, but your functions will
-know.
-
-When you create a custom stream, you must specify the cookie pointer,
-and also the four hook functions stored in a structure of type
address@hidden
-
-These facilities are declared in @file{stdio.h}.
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden GNU
address@hidden {Data Type} {cookie_io_functions_t}
-This is a structure type that holds the functions that define the
-communications protocol between the stream and its cookie.  It has
-the following members:
-
address@hidden @code
address@hidden cookie_read_function_t *read
-This is the function that reads data from the cookie.  If the value is a
-null pointer instead of a function, then read operations on this stream
-always return @code{EOF}.
-
address@hidden cookie_write_function_t *write
-This is the function that writes data to the cookie.  If the value is a
-null pointer instead of a function, then data written to the stream is
-discarded.
-
address@hidden cookie_seek_function_t *seek
-This is the function that performs the equivalent of file positioning on
-the cookie.  If the value is a null pointer instead of a function, calls
-to @code{fseek} or @code{fseeko} on this stream can only seek to
-locations within the buffer; any attempt to seek outside the buffer will
-return an @code{ESPIPE} error.
-
address@hidden cookie_close_function_t *close
-This function performs any appropriate clean-up on the cookie when
-closing the stream.  If the value is a null pointer instead of a
-function, nothing special is done to close the cookie when the stream is
-closed.
address@hidden table
address@hidden deftp
-
address@hidden stdio.h
address@hidden GNU
address@hidden {FILE *} fopencookie (void address@hidden, const char 
address@hidden, cookie_io_functions_t @var{io-functions})
-This function actually creates the stream for communicating with the
address@hidden using the functions in the @var{io-functions} argument.
-The @var{opentype} argument is interpreted as for @code{fopen}
-(@pxref{Opening Streams})---but note that the @dfn{truncate on open}
-option is ignored. The new stream is fully buffered.
-
-The @code{fopencookie} function returns the newly created stream, or a null
-pointer in case of an error.
address@hidden deftypefun
-
address@hidden Hook Functions
address@hidden Custom Stream Hook Functions
address@hidden hook functions (of custom streams)
-
-Here are more details on how you should define the four hook functions
-that a custom stream needs.
-
-You should define the function to read data from the cookie as:
-
address@hidden
-ssize_t @var{reader} (void address@hidden, char address@hidden, size_t 
@var{size})
address@hidden smallexample
-
-This is very similar to the @code{read} address@hidden,
-``I/O Primitives''.}  Your function should transfer up to @var{size}
-bytes into the @var{buffer}, and return the number of bytes read, or
-zero to indicate end of file.  You can return a value of @code{-1} to
-indicate an error.
-
-You should define the function to write data to the cookie as:
-
address@hidden
-ssize_t @var{writer} (void address@hidden, const char address@hidden, size_t 
@var{size})
address@hidden smallexample
-
-This is very similar to the @code{write} address@hidden,
-``I/O Primitives''.}  Your function should transfer up to @var{size}
-bytes from the buffer, and return the number of bytes written.  You
-can return a value of @code{-1} to indicate an error.
-
-You should define the function to perform seek operations on the cookie
-as:
-
address@hidden
-int @var{seeker} (void address@hidden, fpos_t address@hidden, int @var{whence})
address@hidden smallexample
-
-For this function, the @var{position} and @var{whence} arguments are
-interpreted as for @code{fgetpos} (@pxref{Portable Positioning}).  In
-the @sc{gnu} library, @code{fpos_t} is equivalent to @code{off_t} or
address@hidden int}, and simply represents the number of bytes from the
-beginning of the file.
-
-After doing the seek operation, your function should store the resulting
-file position relative to the beginning of the file in @var{position}.
-Your function should return a value of @code{0} on success and @code{-1}
-to indicate an error.
-
-You should define the function to do clean-up operations on the cookie
-appropriate for closing the stream as:
-
address@hidden
-int @var{cleaner} (void address@hidden)
address@hidden smallexample
-
-Your function should return @code{-1} to indicate an error, and @code{0}
-otherwise.
-
address@hidden stdio.h
address@hidden GNU
address@hidden {Data Type} cookie_read_function
-This is the data type that the read function for a custom stream
-should have.  If you declare the function as shown above, this is the
-type it will have.
address@hidden deftp
-
address@hidden stdio.h
address@hidden GNU
address@hidden {Data Type} cookie_write_function
-This is the data type of the write function for a custom stream.
address@hidden deftp
-
address@hidden stdio.h
address@hidden GNU
address@hidden {Data Type} cookie_seek_function
-This is the data type of the seek function for a custom stream.
address@hidden deftp
-
address@hidden stdio.h
address@hidden GNU
address@hidden {Data Type} cookie_close_function
-This is the data type of the close function for a custom stream.
address@hidden deftp
-
address@hidden
-Roland says:
-
address@hidden
-There is another set of functions one can give a stream, the
-input-room and output-room functions.  These functions must
-understand stdio internals.  To describe how to use these
-functions, you also need to document lots of how stdio works
-internally (which isn't relevant for other uses of stdio).
-Perhaps I can write an interface spec from which you can write
-good documentation.  But it's pretty complex and deals with lots
-of nitty-gritty details.  I think it might be better to let this
-wait until the rest of the manual is more done and polished.
address@hidden quotation
address@hidden ignore
-
address@hidden ??? This section could use an example.
-
-
address@hidden Formatted Messages
address@hidden Formatted Messages
address@hidden formatted messages
-
-On systems that are based on System V, messages of programs
-(especially the system tools) are printed in a strict form using the
address@hidden function.  The uniformity sometimes helps the user to
-interpret messages, and the strictness tests of the @code{fmtmsg}
-function ensure that the programmer follows some minimal requirements.
-
address@hidden Printing Formatted Messages
address@hidden Printing Formatted Messages
-
-Messages can be printed to standard error and/or to the console.  To
-select the destination, the programmer can use the following two
-values, bit-wise OR combined if wanted, for the @var{classification}
-parameter of @code{fmtmsg}:
-
address@hidden @code
address@hidden MM_PRINT
-Display the message in standard error.
address@hidden MM_CONSOLE
-Display the message on the system console.
address@hidden vtable
-
-The erroneous piece of the system can be signalled by exactly one of
-the following values that also is bit-wise ORed with the
address@hidden parameter to @code{fmtmsg}:
-
address@hidden @code
address@hidden MM_HARD
-The source of the condition is some hardware.
address@hidden MM_SOFT
-The source of the condition is some software.
address@hidden MM_FIRM
-The source of the condition is some firmware.
address@hidden vtable
-
-A third component of the @var{classification} parameter to
address@hidden can describe the part of the system that detects the
-problem.  This is done by using exactly one of the following values:
-
address@hidden @code
address@hidden MM_APPL
-The erroneous condition is detected by the application.
address@hidden MM_UTIL
-The erroneous condition is detected by a utility.
address@hidden MM_OPSYS
-The erroneous condition is detected by the operating system.
address@hidden vtable
-
-A last component of @var{classification} can signal the results of this
-message.  Exactly one of the following values can be used:
-
address@hidden @code
address@hidden MM_RECOVER
-It is a recoverable error.
address@hidden MM_NRECOV
-It is a nonrecoverable error.
address@hidden vtable
-
address@hidden fmtmsg.h
address@hidden XPG
address@hidden int fmtmsg (long int @var{classification}, const char 
address@hidden, int @var{severity}, const char address@hidden, const char 
address@hidden, const char address@hidden)
-Display a message described by its parameters on the device(s)
-specified in the @var{classification} parameter.  The @var{label}
-parameter identifies the source of the message.  The string should
-consist of two colon-separated parts where the first part has not more
-than ten and the second part not more than fourteen characters.  The
address@hidden parameter describes the condition of the error, the
address@hidden parameter describes possible steps to recover from the
-error, and the @var{tag} parameter is a reference to the online
-documentation where more information can be found.  It should contain
-the @var{label} value and a unique identification number.
-
-Each of the parameters can be a special value that means this value is
-to be omitted.  The symbolic names for these values are
-
address@hidden @code
address@hidden MM_NULLLBL
-Ignore @var{label} parameter.
address@hidden MM_NULLSEV
-Ignore @var{severity} parameter.
address@hidden MM_NULLMC
-Ignore @var{classification} parameter.  This implies that nothing is
-actually printed.
address@hidden MM_NULLTXT
-Ignore @var{text} parameter.
address@hidden MM_NULLACT
-Ignore @var{action} parameter.
address@hidden MM_NULLTAG
-Ignore @var{tag} parameter.
address@hidden vtable
-
-There is another way certain fields can be omitted from the output to
-standard error.  This is described below in the description of
-environment variables influencing the behavior.
-
-The @var{severity} parameter can have one of the values in the following
-table:
address@hidden severity class
-
address@hidden @code
address@hidden MM_NOSEV
-Nothing is printed; this value is the same as @code{MM_NULLSEV}.
address@hidden MM_HALT
-This value is printed as @code{HALT}.
address@hidden MM_ERROR
-This value is printed as @code{ERROR}.
address@hidden MM_WARNING
-This value is printed as @code{WARNING}.
address@hidden MM_INFO
-This value is printed as @code{INFO}.
address@hidden vtable
-
-The numeric values of these five macros are between @code{0} and
address@hidden  Using the environment variable @code{SEV_LEVEL}, or using
-the @code{addseverity} function, one can add more severity levels with
-their corresponding string to print.  This is described below
-(@pxref{Adding Severity Classes}).
-
address@hidden
-If no parameter is ignored, the output looks like this:
-
address@hidden
address@hidden: @var{severity-string}: @var{text}
-TO FIX: @var{action} @var{tag}
address@hidden smallexample
-
-The colons, newline characters and the @code{TO FIX} string are
-inserted if necessary, i.e., if the corresponding parameter is not
-ignored.
-
-This function is specified in the @emph{X/Open Portability
address@hidden/Open Company, @emph{X/Open Portability Guide,}
-Issue 4, Version 2 (Reading, UK: X/Open Company, Ltd., 1994).}  It is
-also available on all systems derived from System V.
-
-The function returns the value @code{MM_OK} if no error occurred.  If
-only the printing to standard error failed, it returns
address@hidden  If printing to the console fails, it returns
address@hidden  If nothing is printed, @code{MM_NOTOK} is returned.
-Among situations where all outputs fail, this last value is also
-returned if a parameter value is incorrect.
address@hidden deftypefun
-
-There are two environment variables that influence the behavior of
address@hidden  The first is @code{MSGVERB}.  It is used to control
-the output actually happening on standard error (@emph{not} the
-console output).  Each of the five fields can explicitly be enabled.
-To do this, the user has to put the @code{MSGVERB} variable with a
-format like the following in the environment before calling the
address@hidden function the first time:
-
address@hidden
address@hidden:@var{keyword}[:@dots{}]]
address@hidden smallexample
-
-Valid @var{keyword}s are @code{label}, @code{severity}, @code{text},
address@hidden and @code{tag}.  If the environment variable is not
-given or is an empty string, an unsupported keyword is given, or the
-value is somehow else invalid, no part of the message is masked out.
-
-The second environment variable that influences the behavior of
address@hidden is @code{SEV_LEVEL}.  This variable and the change in
-the behavior of @code{fmtmsg} are not specified in the @emph{X/Open
-Portability address@hidden/Open Company, @emph{X/Open Portability
-Guide,} Issue 4, Version 2 (Reading, UK: X/Open Company, Ltd., 1994).}
-It is available in System V systems, though.  It can be used to
-introduce new severity levels.  By default, only the five severity
-levels described above are available.  Any other numeric value would
-make @code{fmtmsg} print nothing.
-
-If the user puts @code{SEV_LEVEL} with a format like:
-
address@hidden
address@hidden:@var{description}[:@dots{}]]]
address@hidden smallexample
-
address@hidden
-in the environment of the process before the first call to
address@hidden, where @var{description} has a value of the form:
-
address@hidden
address@hidden,@var{level},@var{printstring}
address@hidden smallexample
-
-The @var{severity-keyword} part is not used by @code{fmtmsg}, but it
-has to be present.  The @var{level} part is a string representation of
-a number.  The numeric value must be a number greater than 4.  This
-value must be used in the @var{severity} parameter of @code{fmtmsg} to
-select this class.  It is not possible to overwrite any of the
-predefined classes.  The @var{printstring} is the string printed when
-a message of this class is processed by @code{fmtmsg} (see above;
address@hidden does not print the numeric value but instead the string
-representation).
-
-
address@hidden Adding Severity Classes
address@hidden Adding Severity Classes
address@hidden severity class
-
-There is another way to introduce severity classes besides using the
-environment variable @code{SEV_LEVEL}.  This simplifies the task of
-introducing new classes in a running program.  One could use the
address@hidden or @code{putenv} function to set the environment
-variable, but this is toilsome.
-
address@hidden int addseverity (int @var{severity}, const char address@hidden)
-This function allows the introduction of new severity classes that can
-be addressed by the @var{severity} parameter of the @code{fmtmsg}
-function.  The @var{severity} parameter of @code{addseverity} must
-match the value for the parameter with the same name of @code{fmtmsg},
-and @var{string} is the string printed in the actual messages instead
-of the numeric value.
-
-If @var{string} is @code{NULL}, the severity class with the numeric
-value according to @var{severity} is removed.
-
-It is not possible to overwrite or remove one of the default severity
-classes.  All calls to @code{addseverity} with @var{severity} set to one
-of the values for the default classes will fail.
-
-The return value is @code{MM_OK} if the task was successfully
-performed.  If the return value is @code{MM_NOTOK}, something went
-wrong.  This could mean that no more memory is available, or a class
-is not available when it has to be removed.
-
-This function is not specified in the @emph{X/Open Portability
address@hidden/Open Company, @emph{X/Open Portability Guide,}
-Issue 4, Version 2 (Reading, UK: X/Open Company, Ltd., 1994).},
-although the @code{fmtsmg} function is.  It is available on System V
-systems.
address@hidden deftypefun
-
-
address@hidden Example
address@hidden How to Use @code{fmtmsg} and @code{addseverity}
-
-Here is a simple example program to illustrate the use of both of the
-functions described in this section:
-
address@hidden
-#include <fmtmsg.h>
-
-int
-main (void)
address@hidden
-  addseverity (5, "NOTE2");
-  fmtmsg (MM_PRINT, "only1field", MM_INFO, "text2", "action2", "tag2");
-  fmtmsg (MM_PRINT, "UX:cat", 5, "invalid syntax", "refer to manual",
-          "UX:cat:001");
-  fmtmsg (MM_PRINT, "label:foo", 6, "text", "action", "tag");
-  return 0;
address@hidden
-
address@hidden smallexample
-
-The second call to @code{fmtmsg} illustrates a use of this function as
-it usually occurs on System V systems, which heavily use this
-function.  It seems worthwhile to give a short explanation here of how
-this system works on System V.  The value of the @var{label} field
-(@code{UX:cat}) says that the error occurred in the Unix program
address@hidden  The explanation of the error follows and the value for
-the @var{action} parameter is @dfn{refer to manual}.  One could be
-more specific here, if necessary.  The @var{tag} field contains, as
-proposed above, the value of the string given for the @var{label}
-parameter, and additionally a unique @sc{id} (@code{001} in this
-case).  For a @sc{gnu} environment, this string could contain a
-reference to the corresponding node in the Info page for the program.
-
address@hidden
-Running this program without specifying the @code{MSGVERB} and
address@hidden function produces the following output:
-
address@hidden
-UX:cat: NOTE2: invalid syntax
-TO FIX: refer to manual UX:cat:001
address@hidden smallexample
-
-We see the different fields of the message and how the extra glue (the
-colons and the @code{TO FIX} string) is printed.  But only one of the
-three calls to @code{fmtmsg} produced output.  The first call does not
-print anything because the @var{label} parameter is not in the correct
-form.  The string must contain two fields, separated by a colon
-(@pxref{Printing Formatted Messages}).  The third @code{fmtmsg} call
-produced no output, since the class with the numeric value @code{6} is
-not defined.  Although a class with numeric value @code{5} is also not
-defined by default, the call to @code{addseverity} introduces it, and
-the second call to @code{fmtmsg} produces the above output.
-
-When we change the environment of the program to contain
address@hidden,6,NOTE}, we get a different result:
-
address@hidden
-UX:cat: NOTE2: invalid syntax
-TO FIX: refer to manual UX:cat:001
-label:foo: NOTE: text
-TO FIX: action tag
address@hidden smallexample
-
-Now the third call to @code{fmtmsg} produced some output, and we see
-how the string @code{NOTE} from the environment variable appears in
-the message.
-
-Now we can reduce the output by specifying which fields we are
-interested in.  If we additionally set the environment variable
address@hidden to the value @code{severity:label:action} we get the
-following output:
-
address@hidden
-UX:cat: NOTE2
-TO FIX: refer to manual
-label:foo: NOTE
-TO FIX: action
address@hidden smallexample
-
address@hidden
-The output produced by the @var{text} and the @var{tag} parameters to
address@hidden vanished.  Please also note that now there is no colon
-after the @code{NOTE} and @code{NOTE2} strings in the output.  This is
-not necessary, since there is no more output on this line because the
-text is missing.
-
address@hidden Library Summary
address@hidden %MENU% A summary showing the syntax, header file, and derivation 
of each library feature
address@hidden Summary of Library Facilities
-
-This appendix is a complete list of the facilities declared within the
-header files supplied with the @sc{gnu} C Library.  Each entry also
-lists the standard or other source from which each facility is
-derived, and tells you where in the manual you can find more
-information about how to use it.
-
address@hidden This table runs wide.  Shrink fonts.
address@hidden
address@hidden @rm
address@hidden iftex
address@hidden @code
address@hidden summary.texi is generated from the other Texinfo files.
address@hidden See the Makefile and summary.awk for the details.
address@hidden DO NOT EDIT THIS FILE!
address@hidden a64l
address@hidden long int a64l (const char address@hidden)
-
address@hidden (XPG):  @ref{Encode Binary Data}.
-
address@hidden abort
address@hidden void abort (void)
-
address@hidden (ISO):  @ref{Aborting a Program}.
-
address@hidden abs
address@hidden int abs (int @var{number})
-
address@hidden (ISO):  @ref{Absolute Value}.
-
address@hidden acos
address@hidden double acos (double @var{x})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden acosf
address@hidden float acosf (float @var{x})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden acosh
address@hidden double acosh (double @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden acoshf
address@hidden float acoshf (float @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden acoshl
address@hidden long double acoshl (long double @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden acosl
address@hidden long double acosl (long double @var{x})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden adjtime
address@hidden int adjtime (const struct timeval address@hidden, struct timeval 
address@hidden)
-
address@hidden/time.h} (BSD):  @ref{High-Resolution Calendar}.
-
address@hidden adjtimex
address@hidden int adjtimex (struct timex address@hidden)
-
address@hidden/timex.h} (GNU):  @ref{High-Resolution Calendar}.
-
address@hidden alarm
address@hidden unsigned int alarm (unsigned int @var{seconds})
-
address@hidden (POSIX.1):  @ref{Setting an Alarm}.
-
address@hidden alloca
address@hidden void * alloca (size_t @var{size});
-
address@hidden (GNU, BSD):  @ref{Variable Size Automatic}.
-
address@hidden argp_err_exit_status
address@hidden error_t argp_err_exit_status
-
address@hidden (GNU):  @ref{Argp Global Variables}.
-
address@hidden argp_error
address@hidden void argp_error (const struct argp_state address@hidden, const 
char address@hidden, @dots{})
-
address@hidden (GNU):  @ref{Argp Helper Functions}.
-
address@hidden ARGP_ERR_UNKNOWN
address@hidden int ARGP_ERR_UNKNOWN
-
address@hidden (GNU):  @ref{Argp Parser Functions}.
-
address@hidden argp_failure
address@hidden void argp_failure (const struct argp_state address@hidden, int 
@var{status}, int @var{errnum}, const char address@hidden, @dots{})
-
address@hidden (GNU):  @ref{Argp Helper Functions}.
-
address@hidden argp_help
address@hidden void argp_help (const struct argp address@hidden, FILE 
address@hidden, unsigned @var{flags}, char address@hidden)
-
address@hidden (GNU):  @ref{Argp Help}.
-
address@hidden ARGP_IN_ORDER
address@hidden ARGP_IN_ORDER
-
address@hidden (GNU):  @ref{Argp Flags}.
-
address@hidden ARGP_KEY_ARG
address@hidden ARGP_KEY_ARG
-
address@hidden (GNU):  @ref{Argp Special Keys}.
-
address@hidden ARGP_KEY_ARGS
address@hidden ARGP_KEY_ARGS
-
address@hidden (GNU):  @ref{Argp Special Keys}.
-
address@hidden ARGP_KEY_END
address@hidden ARGP_KEY_END
-
address@hidden (GNU):  @ref{Argp Special Keys}.
-
address@hidden ARGP_KEY_ERROR
address@hidden ARGP_KEY_ERROR
-
address@hidden (GNU):  @ref{Argp Special Keys}.
-
address@hidden ARGP_KEY_FINI
address@hidden ARGP_KEY_FINI
-
address@hidden (GNU):  @ref{Argp Special Keys}.
-
address@hidden ARGP_KEY_HELP_ARGS_DOC
address@hidden ARGP_KEY_HELP_ARGS_DOC
-
address@hidden (GNU):  @ref{Argp Help Filter Keys}.
-
address@hidden ARGP_KEY_HELP_DUP_ARGS_NOTE
address@hidden ARGP_KEY_HELP_DUP_ARGS_NOTE
-
address@hidden (GNU):  @ref{Argp Help Filter Keys}.
-
address@hidden ARGP_KEY_HELP_EXTRA
address@hidden ARGP_KEY_HELP_EXTRA
-
address@hidden (GNU):  @ref{Argp Help Filter Keys}.
-
address@hidden ARGP_KEY_HELP_HEADER
address@hidden ARGP_KEY_HELP_HEADER
-
address@hidden (GNU):  @ref{Argp Help Filter Keys}.
-
address@hidden ARGP_KEY_HELP_POST_DOC
address@hidden ARGP_KEY_HELP_POST_DOC
-
address@hidden (GNU):  @ref{Argp Help Filter Keys}.
-
address@hidden ARGP_KEY_HELP_PRE_DOC
address@hidden ARGP_KEY_HELP_PRE_DOC
-
address@hidden (GNU):  @ref{Argp Help Filter Keys}.
-
address@hidden ARGP_KEY_INIT
address@hidden ARGP_KEY_INIT
-
address@hidden (GNU):  @ref{Argp Special Keys}.
-
address@hidden ARGP_KEY_NO_ARGS
address@hidden ARGP_KEY_NO_ARGS
-
address@hidden (GNU):  @ref{Argp Special Keys}.
-
address@hidden ARGP_KEY_SUCCESS
address@hidden ARGP_KEY_SUCCESS
-
address@hidden (GNU):  @ref{Argp Special Keys}.
-
address@hidden ARGP_LONG_ONLY
address@hidden ARGP_LONG_ONLY
-
address@hidden (GNU):  @ref{Argp Flags}.
-
address@hidden ARGP_NO_ARGS
address@hidden ARGP_NO_ARGS
-
address@hidden (GNU):  @ref{Argp Flags}.
-
address@hidden ARGP_NO_ERRS
address@hidden ARGP_NO_ERRS
-
address@hidden (GNU):  @ref{Argp Flags}.
-
address@hidden ARGP_NO_EXIT
address@hidden ARGP_NO_EXIT
-
address@hidden (GNU):  @ref{Argp Flags}.
-
address@hidden ARGP_NO_HELP
address@hidden ARGP_NO_HELP
-
address@hidden (GNU):  @ref{Argp Flags}.
-
address@hidden argp_parse
address@hidden error_t argp_parse (const struct argp address@hidden, int 
@var{argc}, char address@hidden, unsigned @var{flags}, int address@hidden, void 
address@hidden)
-
address@hidden (GNU):  @ref{Argp, Suboptions}.
-
address@hidden ARGP_PARSE_ARGV0
address@hidden ARGP_PARSE_ARGV0
-
address@hidden (GNU):  @ref{Argp Flags}.
-
address@hidden argp_program_bug_address
address@hidden const char * argp_program_bug_address
-
address@hidden (GNU):  @ref{Argp Global Variables}.
-
address@hidden argp_program_version
address@hidden const char * argp_program_version
-
address@hidden (GNU):  @ref{Argp Global Variables}.
-
address@hidden argp_program_version_hook
address@hidden argp_program_version_hook
-
address@hidden (GNU):  @ref{Argp Global Variables}.
-
address@hidden ARGP_SILENT
address@hidden ARGP_SILENT
-
address@hidden (GNU):  @ref{Argp Flags}.
-
address@hidden argp_state_help
address@hidden void argp_state_help (const struct argp_state address@hidden, 
FILE address@hidden, unsigned @var{flags})
-
address@hidden (GNU):  @ref{Argp Helper Functions}.
-
address@hidden argp_usage
address@hidden void argp_usage (const struct argp_state address@hidden)
-
address@hidden (GNU):  @ref{Argp Helper Functions}.
-
address@hidden argz_add
address@hidden error_t argz_add (char address@hidden, size_t address@hidden, 
const char address@hidden)
-
address@hidden (GNU):  @ref{Argz Functions}.
-
address@hidden argz_add_sep
address@hidden error_t argz_add_sep (char address@hidden, size_t 
address@hidden, const char address@hidden, int @var{delim})
-
address@hidden (GNU):  @ref{Argz Functions}.
-
address@hidden argz_append
address@hidden error_t argz_append (char address@hidden, size_t address@hidden, 
const char address@hidden, size_t @var{buf_len})
-
address@hidden (GNU):  @ref{Argz Functions}.
-
address@hidden argz_count
address@hidden size_t argz_count (const char address@hidden, size_t 
@var{arg_len})
-
address@hidden (GNU):  @ref{Argz Functions}.
-
address@hidden argz_create
address@hidden error_t argz_create (char *const @var{argv}[], char 
address@hidden, size_t address@hidden)
-
address@hidden (GNU):  @ref{Argz Functions}.
-
address@hidden argz_create_sep
address@hidden error_t argz_create_sep (const char address@hidden, int 
@var{sep}, char address@hidden, size_t address@hidden)
-
address@hidden (GNU):  @ref{Argz Functions}.
-
address@hidden argz_delete
address@hidden error_t argz_delete (char address@hidden, size_t address@hidden, 
char address@hidden)
-
address@hidden (GNU):  @ref{Argz Functions}.
-
address@hidden argz_extract
address@hidden void argz_extract (char address@hidden, size_t @var{argz_len}, 
char address@hidden)
-
address@hidden (GNU):  @ref{Argz Functions}.
-
address@hidden argz_insert
address@hidden error_t argz_insert (char address@hidden, size_t address@hidden, 
char address@hidden, const char address@hidden)
-
address@hidden (GNU):  @ref{Argz Functions}.
-
address@hidden argz_next
address@hidden char * argz_next (char address@hidden, size_t @var{argz_len}, 
const char address@hidden)
-
address@hidden (GNU):  @ref{Argz Functions}.
-
address@hidden argz_replace
address@hidden error_t argz_replace (@w{char address@hidden, size_t 
address@hidden, @w{const char address@hidden, const char address@hidden, 
@w{unsigned address@hidden)
-
address@hidden (GNU):  @ref{Argz Functions}.
-
address@hidden argz_stringify
address@hidden void argz_stringify (char address@hidden, size_t @var{len}, int 
@var{sep})
-
address@hidden (GNU):  @ref{Argz Functions}.
-
address@hidden asctime
address@hidden char * asctime (const struct tm address@hidden)
-
address@hidden (ISO):  @ref{Formatting Calendar Time}.
-
address@hidden asctime_r
address@hidden char * asctime_r (const struct tm address@hidden, char 
address@hidden)
-
address@hidden (POSIX.1c):  @ref{Formatting Calendar Time}.
-
address@hidden asin
address@hidden double asin (double @var{x})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden asinf
address@hidden float asinf (float @var{x})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden asinh
address@hidden double asinh (double @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden asinhf
address@hidden float asinhf (float @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden asinhl
address@hidden long double asinhl (long double @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden asinl
address@hidden long double asinl (long double @var{x})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden asprintf
address@hidden int asprintf (char address@hidden, const char address@hidden, 
@dots{})
-
address@hidden (GNU):  @ref{Dynamic Output}.
-
address@hidden atan
address@hidden double atan (double @var{x})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden atan2
address@hidden double atan2 (double @var{y}, double @var{x})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden atan2f
address@hidden float atan2f (float @var{y}, float @var{x})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden atan2l
address@hidden long double atan2l (long double @var{y}, long double @var{x})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden atanf
address@hidden float atanf (float @var{x})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden atanh
address@hidden double atanh (double @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden atanhf
address@hidden float atanhf (float @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden atanhl
address@hidden long double atanhl (long double @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden atanl
address@hidden long double atanl (long double @var{x})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden atexit
address@hidden int atexit (void (address@hidden) (void))
-
address@hidden (ISO):  @ref{Clean-Ups on Exit}.
-
address@hidden atof
address@hidden double atof (const char address@hidden)
-
address@hidden (ISO):  @ref{Parsing of Floats}.
-
address@hidden atoi
address@hidden int atoi (const char address@hidden)
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden atol
address@hidden long int atol (const char address@hidden)
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden atoll
address@hidden long long int atoll (const char address@hidden)
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden backtrace
address@hidden int backtrace (void address@hidden, int @var{size})
-
address@hidden (GNU):  @ref{Backtraces}.
-
address@hidden backtrace_symbols
address@hidden char ** backtrace_symbols (void *const address@hidden, int 
@var{size})
-
address@hidden (GNU):  @ref{Backtraces}.
-
address@hidden backtrace_symbols_fd
address@hidden void backtrace_symbols_fd (void *const address@hidden, int 
@var{size}, int @var{fd})
-
address@hidden (GNU):  @ref{Backtraces}.
-
address@hidden basename
address@hidden char * basename (char address@hidden)
-
address@hidden (XPG):  @ref{Finding Tokens in a String}.
-
address@hidden basename
address@hidden char * basename (const char address@hidden)
-
address@hidden (GNU):  @ref{Finding Tokens in a String}.
-
address@hidden bcmp
address@hidden int bcmp (const void address@hidden, const void address@hidden, 
size_t @var{size})
-
address@hidden (BSD):  @ref{String/Array Comparison}.
-
address@hidden bcopy
address@hidden void bcopy (const void address@hidden, void address@hidden, 
size_t @var{size})
-
address@hidden (BSD):  @ref{Copying and Concatenation}.
-
address@hidden bindtextdomain
address@hidden char * bindtextdomain (const char address@hidden, const char 
address@hidden)
-
address@hidden (GNU):  @ref{Locating gettext catalog}.
-
address@hidden bind_textdomain_codeset
address@hidden char * bind_textdomain_codeset (const char address@hidden, const 
char address@hidden)
-
address@hidden (GNU):  @ref{Charset conversion in gettext}.
-
address@hidden brk
address@hidden int brk (void address@hidden)
-
address@hidden (BSD):  @ref{Resizing the Data Segment}.
-
address@hidden _BSD_SOURCE
address@hidden _BSD_SOURCE
-
-(GNU):  @ref{Feature-Test Macros}.
-
address@hidden bsearch
address@hidden void * bsearch (const void address@hidden, const void 
address@hidden, size_t @var{count}, size_t @var{size}, comparison_fn_t 
@var{compare})
-
address@hidden (ISO):  @ref{Array Search Function}.
-
address@hidden btowc
address@hidden wint_t btowc (int @var{c})
-
address@hidden (ISO):  @ref{Converting a Character}.
-
address@hidden BUFSIZ
address@hidden int BUFSIZ
-
address@hidden (ISO):  @ref{Controlling Buffering}.
-
address@hidden bzero
address@hidden void bzero (void address@hidden, size_t @var{size})
-
address@hidden (BSD):  @ref{Copying and Concatenation}.
-
address@hidden cabs
address@hidden double cabs (complex double @var{z})
-
address@hidden (ISO):  @ref{Absolute Value}.
-
address@hidden cabsf
address@hidden float cabsf (complex float @var{z})
-
address@hidden (ISO):  @ref{Absolute Value}.
-
address@hidden cabsl
address@hidden long double cabsl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Absolute Value}.
-
address@hidden cacos
address@hidden complex double cacos (complex double @var{z})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden cacosf
address@hidden complex float cacosf (complex float @var{z})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden cacosh
address@hidden complex double cacosh (complex double @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden cacoshf
address@hidden complex float cacoshf (complex float @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden cacoshl
address@hidden complex long double cacoshl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden cacosl
address@hidden complex long double cacosl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden calloc
address@hidden void * calloc (size_t @var{count}, size_t @var{eltsize})
-
address@hidden, @file{stdlib.h} (ISO):  @ref{Allocating Cleared Space}.
-
address@hidden carg
address@hidden double carg (complex double @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden cargf
address@hidden float cargf (complex float @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden cargl
address@hidden long double cargl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden casin
address@hidden complex double casin (complex double @var{z})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden casinf
address@hidden complex float casinf (complex float @var{z})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden casinh
address@hidden complex double casinh (complex double @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden casinhf
address@hidden complex float casinhf (complex float @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden casinhl
address@hidden complex long double casinhl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden casinl
address@hidden complex long double casinl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden catan
address@hidden complex double catan (complex double @var{z})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden catanf
address@hidden complex float catanf (complex float @var{z})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden catanh
address@hidden complex double catanh (complex double @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden catanhf
address@hidden complex float catanhf (complex float @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden catanhl
address@hidden complex long double catanhl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden catanl
address@hidden complex long double catanl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Inverse Trig Functions}.
-
address@hidden catopen
address@hidden nl_catd catopen (const char address@hidden, int @var{flag})
-
address@hidden (X/Open):  @ref{The catgets Functions}.
-
address@hidden cbrt
address@hidden double cbrt (double @var{x})
-
address@hidden (BSD):  @ref{Exponents and Logarithms}.
-
address@hidden cbrtf
address@hidden float cbrtf (float @var{x})
-
address@hidden (BSD):  @ref{Exponents and Logarithms}.
-
address@hidden cbrtl
address@hidden long double cbrtl (long double @var{x})
-
address@hidden (BSD):  @ref{Exponents and Logarithms}.
-
address@hidden ccos
address@hidden complex double ccos (complex double @var{z})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden ccosf
address@hidden complex float ccosf (complex float @var{z})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden ccosh
address@hidden complex double ccosh (complex double @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden ccoshf
address@hidden complex float ccoshf (complex float @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden ccoshl
address@hidden complex long double ccoshl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden ccosl
address@hidden complex long double ccosl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden ceil
address@hidden double ceil (double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden ceilf
address@hidden float ceilf (float @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden ceill
address@hidden long double ceill (long double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden cexp
address@hidden complex double cexp (complex double @var{z})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden cexpf
address@hidden complex float cexpf (complex float @var{z})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden cexpl
address@hidden complex long double cexpl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden cfree
address@hidden void cfree (void address@hidden)
-
address@hidden (Sun):  @ref{Freeing after Malloc}.
-
address@hidden cimag
address@hidden double cimag (complex double @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden cimagf
address@hidden float cimagf (complex float @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden cimagl
address@hidden long double cimagl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden clearenv
address@hidden int clearenv (void)
-
address@hidden (GNU):  @ref{Environment Access}.
-
address@hidden clearerr
address@hidden void clearerr (FILE address@hidden)
-
address@hidden (ISO):  @ref{Error Recovery}.
-
address@hidden clearerr_unlocked
address@hidden void clearerr_unlocked (FILE address@hidden)
-
address@hidden (GNU):  @ref{Error Recovery}.
-
address@hidden CLK_TCK
address@hidden int CLK_TCK
-
address@hidden (POSIX.1):  @ref{CPU Time}.
-
address@hidden clock
address@hidden clock_t clock (void)
-
address@hidden (ISO):  @ref{CPU Time}.
-
address@hidden CLOCKS_PER_SEC
address@hidden int CLOCKS_PER_SEC
-
address@hidden (ISO):  @ref{CPU Time}.
-
address@hidden clock_t
address@hidden clock_t
-
address@hidden (ISO):  @ref{CPU Time}.
-
address@hidden clog
address@hidden complex double clog (complex double @var{z})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden clog10
address@hidden complex double clog10 (complex double @var{z})
-
address@hidden (GNU):  @ref{Exponents and Logarithms}.
-
address@hidden clog10f
address@hidden complex float clog10f (complex float @var{z})
-
address@hidden (GNU):  @ref{Exponents and Logarithms}.
-
address@hidden clog10l
address@hidden complex long double clog10l (complex long double @var{z})
-
address@hidden (GNU):  @ref{Exponents and Logarithms}.
-
address@hidden clogf
address@hidden complex float clogf (complex float @var{z})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden clogl
address@hidden complex long double clogl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden conj
address@hidden complex double conj (complex double @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden conjf
address@hidden complex float conjf (complex float @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden conjl
address@hidden complex long double conjl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden cookie_close_function
address@hidden cookie_close_function
-
address@hidden (GNU):  @ref{Hook Functions}.
-
address@hidden cookie_io_functions_t
address@hidden cookie_io_functions_t
-
address@hidden (GNU):  @ref{Streams and Cookies}.
-
address@hidden cookie_read_function
address@hidden cookie_read_function
-
address@hidden (GNU):  @ref{Hook Functions}.
-
address@hidden cookie_seek_function
address@hidden cookie_seek_function
-
address@hidden (GNU):  @ref{Hook Functions}.
-
address@hidden cookie_write_function
address@hidden cookie_write_function
-
address@hidden (GNU):  @ref{Hook Functions}.
-
address@hidden copysign
address@hidden double copysign (double @var{x}, double @var{y})
-
address@hidden (ISO):  @ref{FP Bit Twiddling}.
-
address@hidden copysignf
address@hidden float copysignf (float @var{x}, float @var{y})
-
address@hidden (ISO):  @ref{FP Bit Twiddling}.
-
address@hidden copysignl
address@hidden long double copysignl (long double @var{x}, long double @var{y})
-
address@hidden (ISO):  @ref{FP Bit Twiddling}.
-
address@hidden cos
address@hidden double cos (double @var{x})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden cosf
address@hidden float cosf (float @var{x})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden cosh
address@hidden double cosh (double @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden coshf
address@hidden float coshf (float @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden coshl
address@hidden long double coshl (long double @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden cosl
address@hidden long double cosl (long double @var{x})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden cpow
address@hidden complex double cpow (complex double @var{base}, complex double 
@var{power})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden cpowf
address@hidden complex float cpowf (complex float @var{base}, complex float 
@var{power})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden cpowl
address@hidden complex long double cpowl (complex long double @var{base}, 
complex long double @var{power})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden cproj
address@hidden complex double cproj (complex double @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden cprojf
address@hidden complex float cprojf (complex float @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden cprojl
address@hidden complex long double cprojl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden creal
address@hidden double creal (complex double @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden crealf
address@hidden float crealf (complex float @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden creall
address@hidden long double creall (complex long double @var{z})
-
address@hidden (ISO):  @ref{Operations on Complex}.
-
address@hidden csin
address@hidden complex double csin (complex double @var{z})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden csinf
address@hidden complex float csinf (complex float @var{z})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden csinh
address@hidden complex double csinh (complex double @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden csinhf
address@hidden complex float csinhf (complex float @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden csinhl
address@hidden complex long double csinhl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden csinl
address@hidden complex long double csinl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden csqrt
address@hidden complex double csqrt (complex double @var{z})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden csqrtf
address@hidden complex float csqrtf (complex float @var{z})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden csqrtl
address@hidden complex long double csqrtl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden ctan
address@hidden complex double ctan (complex double @var{z})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden ctanf
address@hidden complex float ctanf (complex float @var{z})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden ctanh
address@hidden complex double ctanh (complex double @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden ctanhf
address@hidden complex float ctanhf (complex float @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden ctanhl
address@hidden complex long double ctanhl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden ctanl
address@hidden complex long double ctanl (complex long double @var{z})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden ctime
address@hidden char * ctime (const time_t address@hidden)
-
address@hidden (ISO):  @ref{Formatting Calendar Time}.
-
address@hidden ctime_r
address@hidden char * ctime_r (const time_t address@hidden, char address@hidden)
-
address@hidden (POSIX.1c):  @ref{Formatting Calendar Time}.
-
address@hidden daylight
address@hidden int daylight
-
address@hidden (SVID):  @ref{Time Zone Functions}.
-
address@hidden dcgettext
address@hidden char * dcgettext (const char address@hidden, const char 
address@hidden, int @var{category})
-
address@hidden (GNU):  @ref{Translation with gettext}.
-
address@hidden dcngettext
address@hidden char * dcngettext (const char address@hidden, const char 
address@hidden, const char address@hidden, unsigned long int @var{n}, int 
@var{category})
-
address@hidden (GNU):  @ref{Advanced gettext functions}.
-
address@hidden dgettext
address@hidden char * dgettext (const char address@hidden, const char 
address@hidden)
-
address@hidden (GNU):  @ref{Translation with gettext}.
-
address@hidden difftime
address@hidden double difftime (time_t @var{time1}, time_t @var{time0})
-
address@hidden (ISO):  @ref{Elapsed Time}.
-
address@hidden dirname
address@hidden char * dirname (char address@hidden)
-
address@hidden (XPG):  @ref{Finding Tokens in a String}.
-
address@hidden div
address@hidden div_t div (int @var{numerator}, int @var{denominator})
-
address@hidden (ISO):  @ref{Integer Division}.
-
address@hidden div_t
address@hidden div_t
-
address@hidden (ISO):  @ref{Integer Division}.
-
address@hidden dngettext
address@hidden char * dngettext (const char address@hidden, const char 
address@hidden, const char address@hidden, unsigned long int @var{n})
-
address@hidden (GNU):  @ref{Advanced gettext functions}.
-
address@hidden drand48
address@hidden double drand48 (void)
-
address@hidden (SVID):  @ref{SVID Random}.
-
address@hidden drand48_r
address@hidden int drand48_r (struct drand48_data address@hidden, double 
address@hidden)
-
address@hidden (GNU):  @ref{SVID Random}.
-
address@hidden drem
address@hidden double drem (double @var{numerator}, double @var{denominator})
-
address@hidden (BSD):  @ref{Remainder Functions}.
-
address@hidden dremf
address@hidden float dremf (float @var{numerator}, float @var{denominator})
-
address@hidden (BSD):  @ref{Remainder Functions}.
-
address@hidden dreml
address@hidden long double dreml (long double @var{numerator}, long double 
@var{denominator})
-
address@hidden (BSD):  @ref{Remainder Functions}.
-
address@hidden E2BIG
address@hidden int E2BIG
-
address@hidden (POSIX.1: Argument list too long):  @ref{Error Codes}.
-
address@hidden EACCES
address@hidden int EACCES
-
address@hidden (POSIX.1: Permission denied):  @ref{Error Codes}.
-
address@hidden EADDRINUSE
address@hidden int EADDRINUSE
-
address@hidden (BSD: Address already in use):  @ref{Error Codes}.
-
address@hidden EADDRNOTAVAIL
address@hidden int EADDRNOTAVAIL
-
address@hidden (BSD: Cannot assign requested address):  @ref{Error Codes}.
-
address@hidden EADV
address@hidden int EADV
-
address@hidden (Undocumented: Advertise error):  @ref{Error Codes}.
-
address@hidden EAFNOSUPPORT
address@hidden int EAFNOSUPPORT
-
address@hidden (BSD: Address family not supported by protocol):  @ref{Error 
Codes}.
-
address@hidden EAGAIN
address@hidden int EAGAIN
-
address@hidden (POSIX.1: Resource temporarily unavailable):  @ref{Error Codes}.
-
address@hidden EALREADY
address@hidden int EALREADY
-
address@hidden (BSD: Operation already in progress):  @ref{Error Codes}.
-
address@hidden EAUTH
address@hidden int EAUTH
-
address@hidden (BSD: Authentication error):  @ref{Error Codes}.
-
address@hidden EBACKGROUND
address@hidden int EBACKGROUND
-
address@hidden (GNU: Inappropriate operation for background process):  
@ref{Error Codes}.
-
address@hidden EBADE
address@hidden int EBADE
-
address@hidden (Undocumented: Invalid exchange):  @ref{Error Codes}.
-
address@hidden EBADF
address@hidden int EBADF
-
address@hidden (POSIX.1: Bad file descriptor):  @ref{Error Codes}.
-
address@hidden EBADFD
address@hidden int EBADFD
-
address@hidden (Undocumented: File descriptor in bad state):
address@hidden Codes}.
-
address@hidden EBADMSG
address@hidden int EBADMSG
-
address@hidden (XOPEN: Bad message):  @ref{Error Codes}.
-
address@hidden EBADR
address@hidden int EBADR
-
address@hidden (Undocumented: Invalid request descriptor):  @ref{Error Codes}.
-
address@hidden EBADRPC
address@hidden int EBADRPC
-
address@hidden (BSD: RPC struct is bad):  @ref{Error Codes}.
-
address@hidden EBADRQC
address@hidden int EBADRQC
-
address@hidden (Undocumented: Invalid request code):  @ref{Error Codes}.
-
address@hidden EBADSLT
address@hidden int EBADSLT
-
address@hidden (Undocumented: Invalid slot):  @ref{Error Codes}.
-
address@hidden EBFONT
address@hidden int EBFONT
-
address@hidden (Undocumented: Bad font file format):  @ref{Error Codes}.
-
address@hidden EBUSY
address@hidden int EBUSY
-
address@hidden (POSIX.1: Device or resource busy):  @ref{Error Codes}.
-
address@hidden ECANCELED
address@hidden int ECANCELED
-
address@hidden (POSIX.1: Operation canceled):  @ref{Error Codes}.
-
address@hidden ECHILD
address@hidden int ECHILD
-
address@hidden (POSIX.1: No child processes):  @ref{Error Codes}.
-
address@hidden ECHRNG
address@hidden int ECHRNG
-
address@hidden (: Channel number out of range):  @ref{Error Codes}.
-
address@hidden ECOMM
address@hidden int ECOMM
-
address@hidden (Undocumented: Communication error on send):  @ref{Error Codes}.
-
address@hidden ECONNABORTED
address@hidden int ECONNABORTED
-
address@hidden (BSD: Software caused connection abort):  @ref{Error Codes}.
-
address@hidden ECONNREFUSED
address@hidden int ECONNREFUSED
-
address@hidden (BSD: Connection refused):  @ref{Error Codes}.
-
address@hidden ECONNRESET
address@hidden int ECONNRESET
-
address@hidden (BSD: Connection reset by peer):  @ref{Error Codes}.
-
address@hidden ecvt
address@hidden char * ecvt (double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden)
-
address@hidden (SVID, Unix98):  @ref{System V Number Conversion}.
-
address@hidden ecvt_r
address@hidden char * ecvt_r (double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden, char address@hidden, size_t @var{len})
-
address@hidden (GNU):  @ref{System V Number Conversion}.
-
address@hidden ED
address@hidden int ED
-
address@hidden (GNU: Undocumented):  @ref{Error Codes}.
-
address@hidden EDEADLK
address@hidden int EDEADLK
-
address@hidden (POSIX.1: Resource deadlock avoided):  @ref{Error Codes}.
-
address@hidden EDEADLOCK
address@hidden int EDEADLOCK
-
address@hidden (Undocumented: File-locking deadlock error):  @ref{Error Codes}.
-
address@hidden EDESTADDRREQ
address@hidden int EDESTADDRREQ
-
address@hidden (BSD: Destination address required):  @ref{Error Codes}.
-
address@hidden EDIED
address@hidden int EDIED
-
address@hidden (GNU: Translator died):  @ref{Error Codes}.
-
address@hidden EDOM
address@hidden int EDOM
-
address@hidden (ISO: Numerical argument out of domain):  @ref{Error Codes}.
-
address@hidden EDOTDOT
address@hidden int EDOTDOT
-
address@hidden (Undocumented: RFS specific error):  @ref{Error Codes}.
-
address@hidden EDQUOT
address@hidden int EDQUOT
-
address@hidden (BSD: Disk quota exceeded):  @ref{Error Codes}.
-
address@hidden EEXIST
address@hidden int EEXIST
-
address@hidden (POSIX.1: File exists):  @ref{Error Codes}.
-
address@hidden EFAULT
address@hidden int EFAULT
-
address@hidden (POSIX.1: Bad address):  @ref{Error Codes}.
-
address@hidden EFBIG
address@hidden int EFBIG
-
address@hidden (POSIX.1: File too large):  @ref{Error Codes}.
-
address@hidden EFTYPE
address@hidden int EFTYPE
-
address@hidden (BSD: Inappropriate file type or format):  @ref{Error Codes}.
-
address@hidden EGRATUITOUS
address@hidden int EGRATUITOUS
-
address@hidden (GNU: Gratuitous error):  @ref{Error Codes}.
-
address@hidden EGREGIOUS
address@hidden int EGREGIOUS
-
address@hidden (GNU: You really blew it this time):  @ref{Error Codes}.
-
address@hidden EHOSTDOWN
address@hidden int EHOSTDOWN
-
address@hidden (BSD: Host is down):  @ref{Error Codes}.
-
address@hidden EHOSTUNREACH
address@hidden int EHOSTUNREACH
-
address@hidden (BSD: No route to host):  @ref{Error Codes}.
-
address@hidden EIDRM
address@hidden int EIDRM
-
address@hidden (XOPEN: Identifier removed):  @ref{Error Codes}.
-
address@hidden EIEIO
address@hidden int EIEIO
-
address@hidden (GNU: Computer bought the farm):  @ref{Error Codes}.
-
address@hidden EILSEQ
address@hidden int EILSEQ
-
address@hidden (ISO: Invalid or incomplete multibyte or wide character):  
@ref{Error Codes}.
-
address@hidden EINPROGRESS
address@hidden int EINPROGRESS
-
address@hidden (BSD: Operation now in progress):  @ref{Error Codes}.
-
address@hidden EINTR
address@hidden int EINTR
-
address@hidden (POSIX.1: Interrupted system call):  @ref{Error Codes}.
-
address@hidden EINVAL
address@hidden int EINVAL
-
address@hidden (POSIX.1: Invalid argument):  @ref{Error Codes}.
-
address@hidden EIO
address@hidden int EIO
-
address@hidden (POSIX.1: Input/output error):  @ref{Error Codes}.
-
address@hidden EISCONN
address@hidden int EISCONN
-
address@hidden (BSD: Transport endpoint is already connected):  @ref{Error 
Codes}.
-
address@hidden EISDIR
address@hidden int EISDIR
-
address@hidden (POSIX.1: Is a directory):  @ref{Error Codes}.
-
address@hidden EISNAM
address@hidden int EISNAM
-
address@hidden (Undocumented: Is a named type file):  @ref{Error Codes}.
-
address@hidden EL2HLT
address@hidden int EL2HLT
-
address@hidden (Obsolete: Level 2 halted):  @ref{Error Codes}.
-
address@hidden EL2NSYNC
address@hidden int EL2NSYNC
-
address@hidden (Obsolete: Level 2 not synchronized):  @ref{Error Codes}.
-
address@hidden EL3HLT
address@hidden int EL3HLT
-
address@hidden (Obsolete: Level 3 halted):  @ref{Error Codes}.
-
address@hidden EL3RST
address@hidden int EL3RST
-
address@hidden (Obsolete: Level 3 reset):  @ref{Error Codes}.
-
address@hidden ELIBACC
address@hidden int ELIBACC
-
address@hidden (Undocumented: Can not access a needed shared library):  
@ref{Error Codes}.
-
address@hidden ELIBBAD
address@hidden int ELIBBAD
-
address@hidden (Undocumented: Accessing a corrupted shared library):  
@ref{Error Codes}.
-
address@hidden ELIBEXEC
address@hidden int ELIBEXEC
-
address@hidden (Undocumented: Cannot exec a shared library directly):  
@ref{Error Codes}.
-
address@hidden ELIBMAX
address@hidden int ELIBMAX
-
address@hidden (Undocumented: Attempting to link in too many shared libraries): 
 @ref{Error Codes}.
-
address@hidden ELIBSCN
address@hidden int ELIBSCN
-
address@hidden (Undocumented: .lib section in a.out corrupted):  @ref{Error 
Codes}.
-
address@hidden ELNRNG
address@hidden int ELNRNG
-
address@hidden (Undocumented: Link number out of range):  @ref{Error Codes}.
-
address@hidden ELOOP
address@hidden int ELOOP
-
address@hidden (BSD: Too many levels of symbolic links):  @ref{Error Codes}.
-
address@hidden EMEDIUMTYPE
address@hidden int EMEDIUMTYPE
-
address@hidden (Undocumented: Wrong medium type):  @ref{Error Codes}.
-
address@hidden EMFILE
address@hidden int EMFILE
-
address@hidden (POSIX.1: Too many open files):  @ref{Error Codes}.
-
address@hidden EMLINK
address@hidden int EMLINK
-
address@hidden (POSIX.1: Too many links):  @ref{Error Codes}.
-
address@hidden EMSGSIZE
address@hidden int EMSGSIZE
-
address@hidden (BSD: Message too long):  @ref{Error Codes}.
-
address@hidden EMULTIHOP
address@hidden int EMULTIHOP
-
address@hidden (XOPEN: Multihop attempted):  @ref{Error Codes}.
-
address@hidden ENAMETOOLONG
address@hidden int ENAMETOOLONG
-
address@hidden (POSIX.1: File name too long):  @ref{Error Codes}.
-
address@hidden ENAVAIL
address@hidden int ENAVAIL
-
address@hidden (Undocumented: No XENIX semaphores available):  @ref{Error 
Codes}.
-
address@hidden ENEEDAUTH
address@hidden int ENEEDAUTH
-
address@hidden (BSD: Need authenticator):  @ref{Error Codes}.
-
address@hidden ENETDOWN
address@hidden int ENETDOWN
-
address@hidden (BSD: Network is down):  @ref{Error Codes}.
-
address@hidden ENETRESET
address@hidden int ENETRESET
-
address@hidden (BSD: Network dropped connection on reset):  @ref{Error Codes}.
-
address@hidden ENETUNREACH
address@hidden int ENETUNREACH
-
address@hidden (BSD: Network is unreachable):  @ref{Error Codes}.
-
address@hidden ENFILE
address@hidden int ENFILE
-
address@hidden (POSIX.1: Too many open files in system):  @ref{Error Codes}.
-
address@hidden ENOANO
address@hidden int ENOANO
-
address@hidden (Undocumented: No anode):  @ref{Error Codes}.
-
address@hidden ENOBUFS
address@hidden int ENOBUFS
-
address@hidden (BSD: No buffer space available):  @ref{Error Codes}.
-
address@hidden ENOCSI
address@hidden int ENOCSI
-
address@hidden (Undocumented: No CSI structure available):  @ref{Error Codes}.
-
address@hidden ENODATA
address@hidden int ENODATA
-
address@hidden (XOPEN: No data available):  @ref{Error Codes}.
-
address@hidden ENODEV
address@hidden int ENODEV
-
address@hidden (POSIX.1: No such device):  @ref{Error Codes}.
-
address@hidden ENOENT
address@hidden int ENOENT
-
address@hidden (POSIX.1: No such file or directory):  @ref{Error Codes}.
-
address@hidden ENOEXEC
address@hidden int ENOEXEC
-
address@hidden (POSIX.1: Exec format error):  @ref{Error Codes}.
-
address@hidden ENOLCK
address@hidden int ENOLCK
-
address@hidden (POSIX.1: No locks available):  @ref{Error Codes}.
-
address@hidden ENOLINK
address@hidden int ENOLINK
-
address@hidden (XOPEN: Link has been severed):  @ref{Error Codes}.
-
address@hidden ENOMEDIUM
address@hidden int ENOMEDIUM
-
address@hidden (Undocumented: No medium found):  @ref{Error Codes}.
-
address@hidden ENOMEM
address@hidden int ENOMEM
-
address@hidden (POSIX.1: Cannot allocate memory):  @ref{Error Codes}.
-
address@hidden ENOMSG
address@hidden int ENOMSG
-
address@hidden (XOPEN: No message of desired type):  @ref{Error Codes}.
-
address@hidden ENONET
address@hidden int ENONET
-
address@hidden (Undocumented: Machine is not on the network):  @ref{Error 
Codes}.
-
address@hidden ENOPKG
address@hidden int ENOPKG
-
address@hidden (Undocumented: Package not installed):  @ref{Error Codes}.
-
address@hidden ENOPROTOOPT
address@hidden int ENOPROTOOPT
-
address@hidden (BSD: Protocol not available):  @ref{Error Codes}.
-
address@hidden ENOSPC
address@hidden int ENOSPC
-
address@hidden (POSIX.1: No space left on device):  @ref{Error Codes}.
-
address@hidden ENOSR
address@hidden int ENOSR
-
address@hidden (XOPEN: Out of streams resources):  @ref{Error Codes}.
-
address@hidden ENOSTR
address@hidden int ENOSTR
-
address@hidden (XOPEN: Device not a stream):  @ref{Error Codes}.
-
address@hidden ENOSYS
address@hidden int ENOSYS
-
address@hidden (POSIX.1: Function not implemented):  @ref{Error Codes}.
-
address@hidden ENOTBLK
address@hidden int ENOTBLK
-
address@hidden (BSD: Block device required):  @ref{Error Codes}.
-
address@hidden ENOTCONN
address@hidden int ENOTCONN
-
address@hidden (BSD: Transport endpoint is not connected):  @ref{Error Codes}.
-
address@hidden ENOTDIR
address@hidden int ENOTDIR
-
address@hidden (POSIX.1: Not a directory):  @ref{Error Codes}.
-
address@hidden ENOTEMPTY
address@hidden int ENOTEMPTY
-
address@hidden (POSIX.1: Directory not empty):  @ref{Error Codes}.
-
address@hidden ENOTNAM
address@hidden int ENOTNAM
-
address@hidden (Undocumented: Not a XENIX named type file):  @ref{Error Codes}.
-
address@hidden ENOTSOCK
address@hidden int ENOTSOCK
-
address@hidden (BSD: Socket operation on nonsocket):  @ref{Error Codes}.
-
address@hidden ENOTSUP
address@hidden int ENOTSUP
-
address@hidden (POSIX.1: Not supported):  @ref{Error Codes}.
-
address@hidden ENOTTY
address@hidden int ENOTTY
-
address@hidden (POSIX.1: Inappropriate ioctl for device):  @ref{Error Codes}.
-
address@hidden ENOTUNIQ
address@hidden int ENOTUNIQ
-
address@hidden (Undocumented: Name not unique on network):  @ref{Error Codes}.
-
address@hidden environ
address@hidden char ** environ
-
address@hidden (POSIX.1):  @ref{Environment Access}.
-
address@hidden envz_add
address@hidden error_t envz_add (char address@hidden, size_t address@hidden, 
const char address@hidden, const char address@hidden)
-
address@hidden (GNU):  @ref{Envz Functions}.
-
address@hidden envz_entry
address@hidden char * envz_entry (const char address@hidden, size_t 
@var{envz_len}, const char address@hidden)
-
address@hidden (GNU):  @ref{Envz Functions}.
-
address@hidden envz_get
address@hidden char * envz_get (const char address@hidden, size_t 
@var{envz_len}, const char address@hidden)
-
address@hidden (GNU):  @ref{Envz Functions}.
-
address@hidden envz_merge
address@hidden error_t envz_merge (char address@hidden, size_t address@hidden, 
const char address@hidden, size_t @var{envz2_len}, int @var{override})
-
address@hidden (GNU):  @ref{Envz Functions}.
-
address@hidden envz_strip
address@hidden void envz_strip (char address@hidden, size_t address@hidden)
-
address@hidden (GNU):  @ref{Envz Functions}.
-
address@hidden ENXIO
address@hidden int ENXIO
-
address@hidden (POSIX.1: No such device or address):  @ref{Error Codes}.
-
address@hidden EOF
address@hidden int EOF
-
address@hidden (ISO):  @ref{EOF and Errors}.
-
address@hidden EOPNOTSUPP
address@hidden int EOPNOTSUPP
-
address@hidden (BSD: Operation not supported):  @ref{Error Codes}.
-
address@hidden EOVERFLOW
address@hidden int EOVERFLOW
-
address@hidden (XOPEN: Value too large for defined data type):  @ref{Error 
Codes}.
-
address@hidden EPERM
address@hidden int EPERM
-
address@hidden (POSIX.1: Operation not permitted):  @ref{Error Codes}.
-
address@hidden EPFNOSUPPORT
address@hidden int EPFNOSUPPORT
-
address@hidden (BSD: Protocol family not supported):  @ref{Error Codes}.
-
address@hidden EPIPE
address@hidden int EPIPE
-
address@hidden (POSIX.1: Broken pipe):  @ref{Error Codes}.
-
address@hidden EPROCLIM
address@hidden int EPROCLIM
-
address@hidden (BSD: Too many processes):  @ref{Error Codes}.
-
address@hidden EPROCUNAVAIL
address@hidden int EPROCUNAVAIL
-
address@hidden (BSD: RPC bad procedure for program):  @ref{Error Codes}.
-
address@hidden EPROGMISMATCH
address@hidden int EPROGMISMATCH
-
address@hidden (BSD: RPC program version wrong):  @ref{Error Codes}.
-
address@hidden EPROGUNAVAIL
address@hidden int EPROGUNAVAIL
-
address@hidden (BSD: RPC program not available):  @ref{Error Codes}.
-
address@hidden EPROTO
address@hidden int EPROTO
-
address@hidden (XOPEN: Protocol error):  @ref{Error Codes}.
-
address@hidden EPROTONOSUPPORT
address@hidden int EPROTONOSUPPORT
-
address@hidden (BSD: Protocol not supported):  @ref{Error Codes}.
-
address@hidden EPROTOTYPE
address@hidden int EPROTOTYPE
-
address@hidden (BSD: Protocol wrong type for socket):  @ref{Error Codes}.
-
address@hidden erand48
address@hidden double erand48 (unsigned short int @var{xsubi}[3])
-
address@hidden (SVID):  @ref{SVID Random}.
-
address@hidden erand48_r
address@hidden int erand48_r (unsigned short int @var{xsubi}[3], struct 
drand48_data address@hidden, double address@hidden)
-
address@hidden (GNU):  @ref{SVID Random}.
-
address@hidden ERANGE
address@hidden int ERANGE
-
address@hidden (ISO: Numerical result out of range):  @ref{Error Codes}.
-
address@hidden EREMCHG
address@hidden int EREMCHG
-
address@hidden (Undocumented: Remote address changed):  @ref{Error Codes}.
-
address@hidden EREMOTE
address@hidden int EREMOTE
-
address@hidden (BSD: Object is remote):  @ref{Error Codes}.
-
address@hidden EREMOTEIO
address@hidden int EREMOTEIO
-
address@hidden (Undocumented: Remote I/O error):  @ref{Error Codes}.
-
address@hidden ERESTART
address@hidden int ERESTART
-
address@hidden (Undocumented: Interrupted system call should be restarted):  
@ref{Error Codes}.
-
address@hidden erf
address@hidden double erf (double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden erfc
address@hidden double erfc (double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden erfcf
address@hidden float erfcf (float @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden erfcl
address@hidden long double erfcl (long double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden erff
address@hidden float erff (float @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden erfl
address@hidden long double erfl (long double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden EROFS
address@hidden int EROFS
-
address@hidden (POSIX.1: Read-only file system):  @ref{Error Codes}.
-
address@hidden ERPCMISMATCH
address@hidden int ERPCMISMATCH
-
address@hidden (BSD: RPC version wrong):  @ref{Error Codes}.
-
address@hidden err
address@hidden void err (int @var{status}, const char address@hidden, @dots{})
-
address@hidden (BSD):  @ref{Error Messages}.
-
address@hidden errno
address@hidden volatile int errno
-
address@hidden (ISO):  @ref{Checking for Errors}.
-
address@hidden error
address@hidden void error (int @var{status}, int @var{errnum}, const char 
address@hidden, @dots{})
-
address@hidden (GNU):  @ref{Error Messages}.
-
address@hidden error_at_line
address@hidden void error_at_line (int @var{status}, int @var{errnum}, const 
char address@hidden, unsigned int @var{lineno}, const char address@hidden, 
@dots{})
-
address@hidden (GNU):  @ref{Error Messages}.
-
address@hidden error_message_count
address@hidden unsigned int error_message_count
-
address@hidden (GNU):  @ref{Error Messages}.
-
address@hidden error_one_per_line
address@hidden int error_one_per_line
-
address@hidden (GNU):  @ref{Error Messages}.
-
address@hidden error_print_progname
address@hidden void (* error_print_progname ) (void)
-
address@hidden (GNU):  @ref{Error Messages}.
-
address@hidden errx
address@hidden void errx (int @var{status}, const char address@hidden, @dots{})
-
address@hidden (BSD):  @ref{Error Messages}.
-
address@hidden ESHUTDOWN
address@hidden int ESHUTDOWN
-
address@hidden (BSD: Cannot send after transport endpoint shutdown):  
@ref{Error Codes}.
-
address@hidden ESOCKTNOSUPPORT
address@hidden int ESOCKTNOSUPPORT
-
address@hidden (BSD: Socket type not supported):  @ref{Error Codes}.
-
address@hidden ESPIPE
address@hidden int ESPIPE
-
address@hidden (POSIX.1: Illegal seek):  @ref{Error Codes}.
-
address@hidden ESRCH
address@hidden int ESRCH
-
address@hidden (POSIX.1: No such process):  @ref{Error Codes}.
-
address@hidden ESRMNT
address@hidden int ESRMNT
-
address@hidden (Undocumented: Srmount error):  @ref{Error Codes}.
-
address@hidden ESTALE
address@hidden int ESTALE
-
address@hidden (BSD: Stale NFS file handle):  @ref{Error Codes}.
-
address@hidden ESTRPIPE
address@hidden int ESTRPIPE
-
address@hidden (Undocumented: Streams pipe error):  @ref{Error Codes}.
-
address@hidden ETIME
address@hidden int ETIME
-
address@hidden (XOPEN: Timer expired):  @ref{Error Codes}.
-
address@hidden ETIMEDOUT
address@hidden int ETIMEDOUT
-
address@hidden (BSD: Connection timed out):  @ref{Error Codes}.
-
address@hidden ETOOMANYREFS
address@hidden int ETOOMANYREFS
-
address@hidden (BSD: Too many references: cannot splice):  @ref{Error Codes}.
-
address@hidden ETXTBSY
address@hidden int ETXTBSY
-
address@hidden (BSD: Text file busy):  @ref{Error Codes}.
-
address@hidden EUCLEAN
address@hidden int EUCLEAN
-
address@hidden (Undocumented: Structure needs cleaning):  @ref{Error Codes}.
-
address@hidden EUNATCH
address@hidden int EUNATCH
-
address@hidden (Undocumented: Protocol driver not attached):  @ref{Error Codes}.
-
address@hidden EUSERS
address@hidden int EUSERS
-
address@hidden (BSD: Too many users):  @ref{Error Codes}.
-
address@hidden EWOULDBLOCK
address@hidden int EWOULDBLOCK
-
address@hidden (BSD: Operation would block):  @ref{Error Codes}.
-
address@hidden EXDEV
address@hidden int EXDEV
-
address@hidden (POSIX.1: Invalid cross-device link):  @ref{Error Codes}.
-
address@hidden EXFULL
address@hidden int EXFULL
-
address@hidden (Undocumented: Exchange full):  @ref{Error Codes}.
-
address@hidden exit
address@hidden void exit (int @var{status})
-
address@hidden (ISO):  @ref{Normal Termination}.
-
address@hidden _Exit
address@hidden void _Exit (int @var{status})
-
address@hidden (ISO):  @ref{Termination Internals}.
-
address@hidden _exit
address@hidden void _exit (int @var{status})
-
address@hidden (POSIX.1):  @ref{Termination Internals}.
-
address@hidden EXIT_FAILURE
address@hidden int EXIT_FAILURE
-
address@hidden (ISO):  @ref{Exit Status}.
-
address@hidden EXIT_SUCCESS
address@hidden int EXIT_SUCCESS
-
address@hidden (ISO):  @ref{Exit Status}.
-
address@hidden exp
address@hidden double exp (double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden exp10
address@hidden double exp10 (double @var{x})
-
address@hidden (GNU):  @ref{Exponents and Logarithms}.
-
address@hidden exp10f
address@hidden float exp10f (float @var{x})
-
address@hidden (GNU):  @ref{Exponents and Logarithms}.
-
address@hidden exp10l
address@hidden long double exp10l (long double @var{x})
-
address@hidden (GNU):  @ref{Exponents and Logarithms}.
-
address@hidden exp2
address@hidden double exp2 (double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden exp2f
address@hidden float exp2f (float @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden exp2l
address@hidden long double exp2l (long double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden expf
address@hidden float expf (float @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden expl
address@hidden long double expl (long double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden expm1
address@hidden double expm1 (double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden expm1f
address@hidden float expm1f (float @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden expm1l
address@hidden long double expm1l (long double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden fabs
address@hidden double fabs (double @var{number})
-
address@hidden (ISO):  @ref{Absolute Value}.
-
address@hidden fabsf
address@hidden float fabsf (float @var{number})
-
address@hidden (ISO):  @ref{Absolute Value}.
-
address@hidden fabsl
address@hidden long double fabsl (long double @var{number})
-
address@hidden (ISO):  @ref{Absolute Value}.
-
address@hidden __fbufsize
address@hidden size_t __fbufsize (FILE address@hidden)
-
address@hidden (GNU):  @ref{Controlling Buffering}.
-
address@hidden fclose
address@hidden int fclose (FILE address@hidden)
-
address@hidden (ISO):  @ref{Closing Streams}.
-
address@hidden fcloseall
address@hidden int fcloseall (void)
-
address@hidden (GNU):  @ref{Closing Streams}.
-
address@hidden fcvt
address@hidden char * fcvt (double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden)
-
address@hidden (SVID, Unix98):  @ref{System V Number Conversion}.
-
address@hidden fcvt_r
address@hidden char * fcvt_r (double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden, char address@hidden, size_t @var{len})
-
address@hidden (SVID, Unix98):  @ref{System V Number Conversion}.
-
address@hidden fdim
address@hidden double fdim (double @var{x}, double @var{y})
-
address@hidden (ISO):  @ref{Misc FP Arithmetic}.
-
address@hidden fdimf
address@hidden float fdimf (float @var{x}, float @var{y})
-
address@hidden (ISO):  @ref{Misc FP Arithmetic}.
-
address@hidden fdiml
address@hidden long double fdiml (long double @var{x}, long double @var{y})
-
address@hidden (ISO):  @ref{Misc FP Arithmetic}.
-
address@hidden feclearexcept
address@hidden int feclearexcept (int @var{excepts})
-
address@hidden (ISO):  @ref{Status bit operations}.
-
address@hidden fedisableexcept
address@hidden int fedisableexcept (int @var{excepts})
-
address@hidden (GNU):  @ref{Control Functions}.
-
address@hidden FE_DIVBYZERO
address@hidden FE_DIVBYZERO
-
address@hidden (ISO):  @ref{Status bit operations}.
-
address@hidden FE_DOWNWARD
address@hidden FE_DOWNWARD
-
address@hidden (ISO):  @ref{Rounding}.
-
address@hidden feenableexcept
address@hidden int feenableexcept (int @var{excepts})
-
address@hidden (GNU):  @ref{Control Functions}.
-
address@hidden fegetenv
address@hidden int fegetenv (fenv_t address@hidden)
-
address@hidden (ISO):  @ref{Control Functions}.
-
address@hidden fegetexcept
address@hidden int fegetexcept (int @var{excepts})
-
address@hidden (GNU):  @ref{Control Functions}.
-
address@hidden fegetexceptflag
address@hidden int fegetexceptflag (fexcept_t address@hidden, int @var{excepts})
-
address@hidden (ISO):  @ref{Status bit operations}.
-
address@hidden fegetround
address@hidden int fegetround (void)
-
address@hidden (ISO):  @ref{Rounding}.
-
address@hidden feholdexcept
address@hidden int feholdexcept (fenv_t address@hidden)
-
address@hidden (ISO):  @ref{Control Functions}.
-
address@hidden FE_INEXACT
address@hidden FE_INEXACT
-
address@hidden (ISO):  @ref{Status bit operations}.
-
address@hidden FE_INVALID
address@hidden FE_INVALID
-
address@hidden (ISO):  @ref{Status bit operations}.
-
address@hidden feof
address@hidden int feof (FILE address@hidden)
-
address@hidden (ISO):  @ref{EOF and Errors}.
-
address@hidden feof_unlocked
address@hidden int feof_unlocked (FILE address@hidden)
-
address@hidden (GNU):  @ref{EOF and Errors}.
-
address@hidden FE_OVERFLOW
address@hidden FE_OVERFLOW
-
address@hidden (ISO):  @ref{Status bit operations}.
-
address@hidden feraiseexcept
address@hidden int feraiseexcept (int @var{excepts})
-
address@hidden (ISO):  @ref{Status bit operations}.
-
address@hidden ferror
address@hidden int ferror (FILE address@hidden)
-
address@hidden (ISO):  @ref{EOF and Errors}.
-
address@hidden ferror_unlocked
address@hidden int ferror_unlocked (FILE address@hidden)
-
address@hidden (GNU):  @ref{EOF and Errors}.
-
address@hidden fesetenv
address@hidden int fesetenv (const fenv_t address@hidden)
-
address@hidden (ISO):  @ref{Control Functions}.
-
address@hidden fesetexceptflag
address@hidden int fesetexceptflag (const fexcept_t address@hidden, int
-
address@hidden (ISO):  @ref{Status bit operations}.
-
address@hidden fesetround
address@hidden int fesetround (int @var{round})
-
address@hidden (ISO):  @ref{Rounding}.
-
address@hidden fetestexcept
address@hidden int fetestexcept (int @var{excepts})
-
address@hidden (ISO):  @ref{Status bit operations}.
-
address@hidden FE_TONEAREST
address@hidden FE_TONEAREST
-
address@hidden (ISO):  @ref{Rounding}.
-
address@hidden FE_TOWARDZERO
address@hidden FE_TOWARDZERO
-
address@hidden (ISO):  @ref{Rounding}.
-
address@hidden FE_UNDERFLOW
address@hidden FE_UNDERFLOW
-
address@hidden (ISO):  @ref{Status bit operations}.
-
address@hidden feupdateenv
address@hidden int feupdateenv (const fenv_t address@hidden)
-
address@hidden (ISO):  @ref{Control Functions}.
-
address@hidden FE_UPWARD
address@hidden FE_UPWARD
-
address@hidden (ISO):  @ref{Rounding}.
-
address@hidden fflush
address@hidden int fflush (FILE address@hidden)
-
address@hidden (ISO):  @ref{Flushing Buffers}.
-
address@hidden fflush_unlocked
address@hidden int fflush_unlocked (FILE address@hidden)
-
address@hidden (POSIX):  @ref{Flushing Buffers}.
-
address@hidden fgetc
address@hidden int fgetc (FILE address@hidden)
-
address@hidden (ISO):  @ref{Character Input}.
-
address@hidden fgetc_unlocked
address@hidden int fgetc_unlocked (FILE address@hidden)
-
address@hidden (POSIX):  @ref{Character Input}.
-
address@hidden fgetpos
address@hidden int fgetpos (FILE address@hidden, fpos_t address@hidden)
-
address@hidden (ISO):  @ref{Portable Positioning}.
-
address@hidden fgetpos64
address@hidden int fgetpos64 (FILE address@hidden, fpos64_t address@hidden)
-
address@hidden (Unix98):  @ref{Portable Positioning}.
-
address@hidden fgets
address@hidden char * fgets (char address@hidden, int @var{count}, FILE 
address@hidden)
-
address@hidden (ISO):  @ref{Line Input}.
-
address@hidden fgets_unlocked
address@hidden char * fgets_unlocked (char address@hidden, int @var{count}, 
FILE address@hidden)
-
address@hidden (GNU):  @ref{Line Input}.
-
address@hidden fgetwc
address@hidden wint_t fgetwc (FILE address@hidden)
-
address@hidden (ISO):  @ref{Character Input}.
-
address@hidden fgetwc_unlocked
address@hidden wint_t fgetwc_unlocked (FILE address@hidden)
-
address@hidden (GNU):  @ref{Character Input}.
-
address@hidden fgetws
address@hidden wchar_t * fgetws (wchar_t address@hidden, int @var{count}, FILE 
address@hidden)
-
address@hidden (ISO):  @ref{Line Input}.
-
address@hidden fgetws_unlocked
address@hidden wchar_t * fgetws_unlocked (wchar_t address@hidden, int 
@var{count}, FILE address@hidden)
-
address@hidden (GNU):  @ref{Line Input}.
-
address@hidden FILE
address@hidden FILE
-
address@hidden (ISO):  @ref{Streams}.
-
address@hidden finite
address@hidden int finite (double @var{x})
-
address@hidden (BSD):  @ref{Floating-Point Classes}.
-
address@hidden finitef
address@hidden int finitef (float @var{x})
-
address@hidden (BSD):  @ref{Floating-Point Classes}.
-
address@hidden finitel
address@hidden int finitel (long double @var{x})
-
address@hidden (BSD):  @ref{Floating-Point Classes}.
-
address@hidden __flbf
address@hidden int __flbf (FILE address@hidden)
-
address@hidden (GNU):  @ref{Controlling Buffering}.
-
address@hidden flockfile
address@hidden void flockfile (FILE address@hidden)
-
address@hidden (POSIX):  @ref{Streams and Threads}.
-
address@hidden floor
address@hidden double floor (double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden floorf
address@hidden float floorf (float @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden floorl
address@hidden long double floorl (long double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden _flushlbf
address@hidden void _flushlbf (void)
-
address@hidden (GNU):  @ref{Flushing Buffers}.
-
address@hidden fma
address@hidden double fma (double @var{x}, double @var{y}, double @var{z})
-
address@hidden (ISO):  @ref{Misc FP Arithmetic}.
-
address@hidden fmaf
address@hidden float fmaf (float @var{x}, float @var{y}, float @var{z})
-
address@hidden (ISO):  @ref{Misc FP Arithmetic}.
-
address@hidden fmal
address@hidden long double fmal (long double @var{x}, long double @var{y}, long 
double @var{z})
-
address@hidden (ISO):  @ref{Misc FP Arithmetic}.
-
address@hidden fmax
address@hidden double fmax (double @var{x}, double @var{y})
-
address@hidden (ISO):  @ref{Misc FP Arithmetic}.
-
address@hidden fmaxf
address@hidden float fmaxf (float @var{x}, float @var{y})
-
address@hidden (ISO):  @ref{Misc FP Arithmetic}.
-
address@hidden fmaxl
address@hidden long double fmaxl (long double @var{x}, long double @var{y})
-
address@hidden (ISO):  @ref{Misc FP Arithmetic}.
-
address@hidden fmemopen
address@hidden FILE * fmemopen (void address@hidden, size_t @var{size}, const 
char address@hidden)
-
address@hidden (GNU):  @ref{String Streams}.
-
address@hidden fmin
address@hidden double fmin (double @var{x}, double @var{y})
-
address@hidden (ISO):  @ref{Misc FP Arithmetic}.
-
address@hidden fminf
address@hidden float fminf (float @var{x}, float @var{y})
-
address@hidden (ISO):  @ref{Misc FP Arithmetic}.
-
address@hidden fminl
address@hidden long double fminl (long double @var{x}, long double @var{y})
-
address@hidden (ISO):  @ref{Misc FP Arithmetic}.
-
address@hidden fmod
address@hidden double fmod (double @var{numerator}, double @var{denominator})
-
address@hidden (ISO):  @ref{Remainder Functions}.
-
address@hidden fmodf
address@hidden float fmodf (float @var{numerator}, float @var{denominator})
-
address@hidden (ISO):  @ref{Remainder Functions}.
-
address@hidden fmodl
address@hidden long double fmodl (long double @var{numerator}, long double 
@var{denominator})
-
address@hidden (ISO):  @ref{Remainder Functions}.
-
address@hidden fmtmsg
address@hidden int fmtmsg (long int @var{classification}, const char 
address@hidden, int @var{severity}, const char address@hidden, const char 
address@hidden, const char address@hidden)
-
address@hidden (XPG):  @ref{Printing Formatted Messages}.
-
address@hidden fnmatch
address@hidden int fnmatch (const char address@hidden, const char 
address@hidden, int @var{flags})
-
address@hidden (POSIX.2):  @ref{Wildcard Matching}.
-
address@hidden FNM_CASEFOLD
address@hidden FNM_CASEFOLD
-
address@hidden (GNU):  @ref{Wildcard Matching}.
-
address@hidden FNM_EXTMATCH
address@hidden FNM_EXTMATCH
-
address@hidden (GNU):  @ref{Wildcard Matching}.
-
address@hidden FNM_FILE_NAME
address@hidden FNM_FILE_NAME
-
address@hidden (GNU):  @ref{Wildcard Matching}.
-
address@hidden FNM_LEADING_DIR
address@hidden FNM_LEADING_DIR
-
address@hidden (GNU):  @ref{Wildcard Matching}.
-
address@hidden FNM_NOESCAPE
address@hidden FNM_NOESCAPE
-
address@hidden (POSIX.2):  @ref{Wildcard Matching}.
-
address@hidden FNM_PATHNAME
address@hidden FNM_PATHNAME
-
address@hidden (POSIX.2):  @ref{Wildcard Matching}.
-
address@hidden FNM_PERIOD
address@hidden FNM_PERIOD
-
address@hidden (POSIX.2):  @ref{Wildcard Matching}.
-
address@hidden fopen
address@hidden FILE * fopen (const char address@hidden, const char 
address@hidden)
-
address@hidden (ISO):  @ref{Opening Streams}.
-
address@hidden fopen64
address@hidden FILE * fopen64 (const char address@hidden, const char 
address@hidden)
-
address@hidden (Unix98):  @ref{Opening Streams}.
-
address@hidden fopencookie
address@hidden FILE * fopencookie (void address@hidden, const char 
address@hidden, cookie_io_functions_t @var{io-functions})
-
address@hidden (GNU):  @ref{Streams and Cookies}.
-
address@hidden FOPEN_MAX
address@hidden int FOPEN_MAX
-
address@hidden (ISO):  @ref{Opening Streams}.
-
address@hidden fpclassify
address@hidden int fpclassify (@emph{float-type} @var{x})
-
address@hidden (ISO):  @ref{Floating-Point Classes}.
-
address@hidden __fpending
address@hidden size_t __fpending (FILE address@hidden) The @code{__fpending}
-
address@hidden (GNU):  @ref{Controlling Buffering}.
-
address@hidden FP_ILOGB0
address@hidden int FP_ILOGB0
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden FP_ILOGBNAN
address@hidden int FP_ILOGBNAN
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden fpos64_t
address@hidden fpos64_t
-
address@hidden (Unix98):  @ref{Portable Positioning}.
-
address@hidden fpos_t
address@hidden fpos_t
-
address@hidden (ISO):  @ref{Portable Positioning}.
-
address@hidden fprintf
address@hidden int fprintf (FILE address@hidden, const char address@hidden, 
@dots{})
-
address@hidden (ISO):  @ref{Formatted Output Functions}.
-
address@hidden __fpurge
address@hidden void __fpurge (FILE address@hidden)
-
address@hidden (GNU):  @ref{Flushing Buffers}.
-
address@hidden fputc
address@hidden int fputc (int @var{c}, FILE address@hidden)
-
address@hidden (ISO):  @ref{Simple Output}.
-
address@hidden fputc_unlocked
address@hidden int fputc_unlocked (int @var{c}, FILE address@hidden)
-
address@hidden (POSIX):  @ref{Simple Output}.
-
address@hidden fputs
address@hidden int fputs (const char address@hidden, FILE address@hidden)
-
address@hidden (ISO):  @ref{Simple Output}.
-
address@hidden fputs_unlocked
address@hidden int fputs_unlocked (const char address@hidden, FILE 
address@hidden)
-
address@hidden (GNU):  @ref{Simple Output}.
-
address@hidden fputwc
address@hidden wint_t fputwc (wchar_t @var{wc}, FILE address@hidden)
-
address@hidden (ISO):  @ref{Simple Output}.
-
address@hidden fputwc_unlocked
address@hidden wint_t fputwc_unlocked (wint_t @var{wc}, FILE address@hidden)
-
address@hidden (POSIX):  @ref{Simple Output}.
-
address@hidden fputws
address@hidden int fputws (const wchar_t address@hidden, FILE address@hidden)
-
address@hidden (ISO):  @ref{Simple Output}.
-
address@hidden fputws_unlocked
address@hidden int fputws_unlocked (const wchar_t address@hidden, FILE 
address@hidden)
-
address@hidden (GNU):  @ref{Simple Output}.
-
address@hidden fread
address@hidden size_t fread (void address@hidden, size_t @var{size}, size_t 
@var{count}, FILE address@hidden)
-
address@hidden (ISO):  @ref{Block Input/Output}.
-
address@hidden __freadable
address@hidden int __freadable (FILE address@hidden)
-
address@hidden (GNU):  @ref{Opening Streams}.
-
address@hidden __freading
address@hidden int __freading (FILE address@hidden)
-
address@hidden (GNU):  @ref{Opening Streams}.
-
address@hidden fread_unlocked
address@hidden size_t fread_unlocked (void address@hidden, size_t @var{size}, 
size_t @var{count}, FILE address@hidden)
-
address@hidden (GNU):  @ref{Block Input/Output}.
-
address@hidden free
address@hidden void free (void address@hidden)
-
address@hidden, @file{stdlib.h} (ISO):  @ref{Freeing after Malloc}.
-
address@hidden __free_hook
address@hidden __free_hook
-
address@hidden (GNU):  @ref{Hooks for Malloc}.
-
address@hidden freopen
address@hidden FILE * freopen (const char address@hidden, const char 
address@hidden, FILE address@hidden)
-
address@hidden (ISO):  @ref{Opening Streams}.
-
address@hidden freopen64
address@hidden FILE * freopen64 (const char address@hidden, const char 
address@hidden, FILE address@hidden)
-
address@hidden (Unix98):  @ref{Opening Streams}.
-
address@hidden frexp
address@hidden double frexp (double @var{value}, int address@hidden)
-
address@hidden (ISO):  @ref{Normalization Functions}.
-
address@hidden frexpf
address@hidden float frexpf (float @var{value}, int address@hidden)
-
address@hidden (ISO):  @ref{Normalization Functions}.
-
address@hidden frexpl
address@hidden long double frexpl (long double @var{value}, int address@hidden)
-
address@hidden (ISO):  @ref{Normalization Functions}.
-
address@hidden fscanf
address@hidden int fscanf (FILE address@hidden, const char address@hidden, 
@dots{})
-
address@hidden (ISO):  @ref{Formatted Input Functions}.
-
address@hidden fseek
address@hidden int fseek (FILE address@hidden, long int @var{offset}, int 
@var{whence})
-
address@hidden (ISO):  @ref{File Positioning}.
-
address@hidden fseeko
address@hidden int fseeko (FILE address@hidden, off_t @var{offset}, int 
@var{whence})
-
address@hidden (Unix98):  @ref{File Positioning}.
-
address@hidden fseeko64
address@hidden int fseeko64 (FILE address@hidden, off64_t @var{offset}, int 
@var{whence})
-
address@hidden (Unix98):  @ref{File Positioning}.
-
address@hidden __fsetlocking
address@hidden int __fsetlocking (FILE address@hidden, int @var{type})
-
address@hidden (GNU):  @ref{Streams and Threads}.
-
address@hidden fsetpos
address@hidden int fsetpos (FILE address@hidden, const fpos_t address@hidden)
-
address@hidden (ISO):  @ref{Portable Positioning}.
-
address@hidden fsetpos64
address@hidden int fsetpos64 (FILE address@hidden, const fpos64_t 
address@hidden)
-
address@hidden (Unix98):  @ref{Portable Positioning}.
-
address@hidden ftell
address@hidden long int ftell (FILE address@hidden)
-
address@hidden (ISO):  @ref{File Positioning}.
-
address@hidden ftello
address@hidden off_t ftello (FILE address@hidden)
-
address@hidden (Unix98):  @ref{File Positioning}.
-
address@hidden ftello64
address@hidden off64_t ftello64 (FILE address@hidden)
-
address@hidden (Unix98):  @ref{File Positioning}.
-
address@hidden ftrylockfile
address@hidden int ftrylockfile (FILE address@hidden)
-
address@hidden (POSIX):  @ref{Streams and Threads}.
-
address@hidden funlockfile
address@hidden void funlockfile (FILE address@hidden)
-
address@hidden (POSIX):  @ref{Streams and Threads}.
-
address@hidden fwide
address@hidden int fwide (FILE address@hidden, int @var{mode})
-
address@hidden (ISO):  @ref{Streams and I18N}.
-
address@hidden fwprintf
address@hidden int fwprintf (FILE address@hidden, const wchar_t address@hidden, 
@dots{})
-
address@hidden (ISO):  @ref{Formatted Output Functions}.
-
address@hidden __fwritable
address@hidden int __fwritable (FILE address@hidden)
-
address@hidden (GNU):  @ref{Opening Streams}.
-
address@hidden fwrite
address@hidden size_t fwrite (const void address@hidden, size_t @var{size}, 
size_t @var{count}, FILE address@hidden)
-
address@hidden (ISO):  @ref{Block Input/Output}.
-
address@hidden fwrite_unlocked
address@hidden size_t fwrite_unlocked (const void address@hidden, size_t 
@var{size}, size_t @var{count}, FILE address@hidden)
-
address@hidden (GNU):  @ref{Block Input/Output}.
-
address@hidden __fwriting
address@hidden int __fwriting (FILE address@hidden)
-
address@hidden (GNU):  @ref{Opening Streams}.
-
address@hidden fwscanf
address@hidden int fwscanf (FILE address@hidden, const wchar_t address@hidden, 
@dots{})
-
address@hidden (ISO):  @ref{Formatted Input Functions}.
-
address@hidden gamma
address@hidden double gamma (double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden gammaf
address@hidden float gammaf (float @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden gammal
address@hidden long double gammal (long double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden (*__gconv_end_fct)
address@hidden void (*__gconv_end_fct) (struct gconv_step *)
-
address@hidden (GNU):  @ref{glibc iconv Implementation}.
-
address@hidden (*__gconv_fct)
address@hidden int (*__gconv_fct) (struct __gconv_step *, struct 
__gconv_step_data *, const char **, const char *, size_t *, int)
-
address@hidden (GNU):  @ref{glibc iconv Implementation}.
-
address@hidden (*__gconv_init_fct)
address@hidden int (*__gconv_init_fct) (struct __gconv_step *)
-
address@hidden (GNU):  @ref{glibc iconv Implementation}.
-
address@hidden gcvt
address@hidden char * gcvt (double @var{value}, int @var{ndigit}, char 
address@hidden)
-
address@hidden (SVID, Unix98):  @ref{System V Number Conversion}.
-
address@hidden getc
address@hidden int getc (FILE address@hidden)
-
address@hidden (ISO):  @ref{Character Input}.
-
address@hidden getchar
address@hidden int getchar (void)
-
address@hidden (ISO):  @ref{Character Input}.
-
address@hidden getchar_unlocked
address@hidden int getchar_unlocked (void)
-
address@hidden (POSIX):  @ref{Character Input}.
-
address@hidden getc_unlocked
address@hidden int getc_unlocked (FILE address@hidden)
-
address@hidden (POSIX):  @ref{Character Input}.
-
address@hidden getdate
address@hidden struct tm * getdate (const char address@hidden)
-
address@hidden (Unix98):  @ref{General Time String Parsing}.
-
address@hidden getdate_err
address@hidden getdate_err
-
address@hidden (Unix98):  @ref{General Time String Parsing}.
-
address@hidden getdate_r
address@hidden int getdate_r (const char address@hidden, struct tm 
address@hidden)
-
address@hidden (GNU):  @ref{General Time String Parsing}.
-
address@hidden getdelim
address@hidden ssize_t getdelim (char address@hidden, size_t address@hidden, 
int @var{delimiter}, FILE address@hidden)
-
address@hidden (GNU):  @ref{Line Input}.
-
address@hidden getenv
address@hidden char * getenv (const char address@hidden)
-
address@hidden (ISO):  @ref{Environment Access}.
-
address@hidden getitimer
address@hidden int getitimer (int @var{which}, struct itimerval address@hidden)
-
address@hidden/time.h} (BSD):  @ref{Setting an Alarm}.
-
address@hidden getline
address@hidden ssize_t getline (char address@hidden, size_t address@hidden, 
FILE address@hidden)
-
address@hidden (GNU):  @ref{Line Input}.
-
address@hidden getopt
address@hidden int getopt (int @var{argc}, char address@hidden, const char 
address@hidden)
-
address@hidden (POSIX.2):  @ref{Using Getopt}.
-
address@hidden getopt_long
address@hidden int getopt_long (int @var{argc}, char *const address@hidden, 
const char address@hidden, const struct option address@hidden, int 
address@hidden)
-
address@hidden (GNU):  @ref{Getopt Long Options}.
-
address@hidden getopt_long_only
address@hidden int getopt_long_only (int @var{argc}, char *const 
address@hidden, const char address@hidden, const struct option address@hidden, 
int address@hidden)
-
address@hidden (GNU):  @ref{Getopt Long Options}.
-
address@hidden gets
address@hidden char * gets (char address@hidden)
-
address@hidden (ISO):  @ref{Line Input}.
-
address@hidden getsubopt
address@hidden int getsubopt (char address@hidden, const char* const 
address@hidden, char address@hidden)
-
address@hidden (stdlib.h):  @ref{Suboptions, Suboptions Example}.
-
address@hidden gettext
address@hidden char * gettext (const char address@hidden)
-
address@hidden (GNU):  @ref{Translation with gettext}.
-
address@hidden gettimeofday
address@hidden int gettimeofday (struct timeval address@hidden, struct timezone 
address@hidden)
-
address@hidden/time.h} (BSD):  @ref{High-Resolution Calendar}.
-
address@hidden getw
address@hidden int getw (FILE address@hidden)
-
address@hidden (SVID):  @ref{Character Input}.
-
address@hidden getwc
address@hidden wint_t getwc (FILE address@hidden)
-
address@hidden (ISO):  @ref{Character Input}.
-
address@hidden getwchar
address@hidden wint_t getwchar (void)
-
address@hidden (ISO):  @ref{Character Input}.
-
address@hidden getwchar_unlocked
address@hidden wint_t getwchar_unlocked (void)
-
address@hidden (GNU):  @ref{Character Input}.
-
address@hidden getwc_unlocked
address@hidden wint_t getwc_unlocked (FILE address@hidden)
-
address@hidden (GNU):  @ref{Character Input}.
-
address@hidden glob
address@hidden int glob (const char address@hidden, int @var{flags}, int 
(address@hidden) (const char address@hidden, int @var{error-code}), glob_t 
address@hidden)
-
address@hidden (POSIX.2):  @ref{Calling Glob}.
-
address@hidden glob64
address@hidden int glob64 (const char address@hidden, int @var{flags}, int 
(address@hidden) (const char address@hidden, int @var{error-code}), glob64_t 
address@hidden)
-
address@hidden (GNU):  @ref{Calling Glob}.
-
address@hidden glob64_t
address@hidden glob64_t
-
address@hidden (GNU):  @ref{Calling Glob}.
-
address@hidden GLOB_ABORTED
address@hidden GLOB_ABORTED
-
address@hidden (POSIX.2):  @ref{Calling Glob}.
-
address@hidden GLOB_ALTDIRFUNC
address@hidden GLOB_ALTDIRFUNC
-
address@hidden (GNU):  @ref{More Flags for Globbing}.
-
address@hidden GLOB_APPEND
address@hidden GLOB_APPEND
-
address@hidden (POSIX.2):  @ref{Flags for Globbing}.
-
address@hidden GLOB_BRACE
address@hidden GLOB_BRACE
-
address@hidden (GNU):  @ref{More Flags for Globbing}.
-
address@hidden GLOB_DOOFFS
address@hidden GLOB_DOOFFS
-
address@hidden (POSIX.2):  @ref{Flags for Globbing}.
-
address@hidden GLOB_ERR
address@hidden GLOB_ERR
-
address@hidden (POSIX.2):  @ref{Flags for Globbing}.
-
address@hidden globfree
address@hidden void globfree (glob_t address@hidden)
-
address@hidden (POSIX.2):  @ref{More Flags for Globbing}.
-
address@hidden globfree64
address@hidden void globfree64 (glob64_t address@hidden)
-
address@hidden (GNU):  @ref{More Flags for Globbing}.
-
address@hidden GLOB_MAGCHAR
address@hidden GLOB_MAGCHAR
-
address@hidden (GNU):  @ref{More Flags for Globbing}.
-
address@hidden GLOB_MARK
address@hidden GLOB_MARK
-
address@hidden (POSIX.2):  @ref{Flags for Globbing}.
-
address@hidden GLOB_NOCHECK
address@hidden GLOB_NOCHECK
-
address@hidden (POSIX.2):  @ref{Flags for Globbing}.
-
address@hidden GLOB_NOESCAPE
address@hidden GLOB_NOESCAPE
-
address@hidden (POSIX.2):  @ref{Flags for Globbing}.
-
address@hidden GLOB_NOMAGIC
address@hidden GLOB_NOMAGIC
-
address@hidden (GNU):  @ref{More Flags for Globbing}.
-
address@hidden GLOB_NOMATCH
address@hidden GLOB_NOMATCH
-
address@hidden (POSIX.2):  @ref{Calling Glob}.
-
address@hidden GLOB_NOSORT
address@hidden GLOB_NOSORT
-
address@hidden (POSIX.2):  @ref{Flags for Globbing}.
-
address@hidden GLOB_NOSPACE
address@hidden GLOB_NOSPACE
-
address@hidden (POSIX.2):  @ref{Calling Glob}.
-
address@hidden GLOB_ONLYDIR
address@hidden GLOB_ONLYDIR
-
address@hidden (GNU):  @ref{More Flags for Globbing}.
-
address@hidden GLOB_PERIOD
address@hidden GLOB_PERIOD
-
address@hidden (GNU):  @ref{More Flags for Globbing}.
-
address@hidden glob_t
address@hidden glob_t
-
address@hidden (POSIX.2):  @ref{Calling Glob}.
-
address@hidden GLOB_TILDE
address@hidden GLOB_TILDE
-
address@hidden (GNU):  @ref{More Flags for Globbing}.
-
address@hidden GLOB_TILDE_CHECK
address@hidden GLOB_TILDE_CHECK
-
address@hidden (GNU):  @ref{More Flags for Globbing}.
-
address@hidden gmtime
address@hidden struct tm * gmtime (const time_t address@hidden)
-
address@hidden (ISO):  @ref{Broken-down Time}.
-
address@hidden gmtime_r
address@hidden struct tm * gmtime_r (const time_t address@hidden, struct tm 
address@hidden)
-
address@hidden (POSIX.1c):  @ref{Broken-down Time}.
-
address@hidden _GNU_SOURCE
address@hidden _GNU_SOURCE
-
-(GNU):  @ref{Feature-Test Macros}.
-
address@hidden hcreate
address@hidden int hcreate (size_t @var{nel})
-
address@hidden (SVID):  @ref{Hash Search Function}.
-
address@hidden hcreate_r
address@hidden int hcreate_r (size_t @var{nel}, struct hsearch_data 
address@hidden)
-
address@hidden (GNU):  @ref{Hash Search Function}.
-
address@hidden hdestroy
address@hidden void hdestroy (void)
-
address@hidden (SVID):  @ref{Hash Search Function}.
-
address@hidden hdestroy_r
address@hidden void hdestroy_r (struct hsearch_data address@hidden)
-
address@hidden (GNU):  @ref{Hash Search Function}.
-
address@hidden hsearch
address@hidden ENTRY * hsearch (ENTRY @var{item}, ACTION @var{action})
-
address@hidden (SVID):  @ref{Hash Search Function}.
-
address@hidden hsearch_r
address@hidden int hsearch_r (ENTRY @var{item}, ACTION @var{action}, ENTRY 
address@hidden, struct hsearch_data address@hidden)
-
address@hidden (GNU):  @ref{Hash Search Function}.
-
address@hidden HUGE_VAL
address@hidden double HUGE_VAL
-
address@hidden (ISO):  @ref{Math Error Reporting}.
-
address@hidden HUGE_VALF
address@hidden float HUGE_VALF
-
address@hidden (ISO):  @ref{Math Error Reporting}.
-
address@hidden HUGE_VALL
address@hidden long double HUGE_VALL
-
address@hidden (ISO):  @ref{Math Error Reporting}.
-
address@hidden hypot
address@hidden double hypot (double @var{x}, double @var{y})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden hypotf
address@hidden float hypotf (float @var{x}, float @var{y})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden hypotl
address@hidden long double hypotl (long double @var{x}, long double @var{y})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden iconv
address@hidden size_t iconv (iconv_t @var{cd}, char address@hidden, size_t 
address@hidden, char address@hidden, size_t address@hidden)
-
address@hidden (XPG2):  @ref{Generic Conversion Interface}.
-
address@hidden iconv_close
address@hidden int iconv_close (iconv_t @var{cd})
-
address@hidden (XPG2):  @ref{Generic Conversion Interface}.
-
address@hidden iconv_open
address@hidden iconv_t iconv_open (const char address@hidden, const char 
address@hidden)
-
address@hidden (XPG2):  @ref{Generic Conversion Interface}.
-
address@hidden iconv_t
address@hidden iconv_t
-
address@hidden (XPG2):  @ref{Generic Conversion Interface}.
-
address@hidden ilogb
address@hidden int ilogb (double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden ilogbf
address@hidden int ilogbf (float @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden ilogbl
address@hidden int ilogbl (long double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden imaxabs
address@hidden intmax_t imaxabs (intmax_t @var{number})
-
address@hidden (ISO):  @ref{Absolute Value}.
-
address@hidden imaxdiv
address@hidden imaxdiv_t imaxdiv (intmax_t @var{numerator}, intmax_t 
@var{denominator})
-
address@hidden (ISO):  @ref{Integer Division}.
-
address@hidden imaxdiv_t
address@hidden imaxdiv_t
-
address@hidden (ISO):  @ref{Integer Division}.
-
address@hidden index
address@hidden char * index (const char address@hidden, int @var{c})
-
address@hidden (BSD):  @ref{Search Functions}.
-
address@hidden INFINITY
address@hidden float INFINITY
-
address@hidden (ISO):  @ref{Infinity and NaN}.
-
address@hidden initstate
address@hidden void * initstate (unsigned int @var{seed}, void address@hidden, 
size_t @var{size})
-
address@hidden (BSD):  @ref{BSD Random}.
-
address@hidden initstate_r
address@hidden int initstate_r (unsigned int @var{seed}, char *restrict 
@var{statebuf}, size_t @var{statelen}, struct random_data *restrict @var{buf})
-
address@hidden (GNU):  @ref{BSD Random}.
-
address@hidden _IOFBF
address@hidden int _IOFBF
-
address@hidden (ISO):  @ref{Controlling Buffering}.
-
address@hidden _IOLBF
address@hidden int _IOLBF
-
address@hidden (ISO):  @ref{Controlling Buffering}.
-
address@hidden _IONBF
address@hidden int _IONBF
-
address@hidden (ISO):  @ref{Controlling Buffering}.
-
address@hidden isalnum
address@hidden int isalnum (int @var{c})
-
address@hidden (ISO):  @ref{Classification of Characters}.
-
address@hidden isalpha
address@hidden int isalpha (int @var{c})
-
address@hidden (ISO):  @ref{Classification of Characters}.
-
address@hidden isascii
address@hidden int isascii (int @var{c})
-
address@hidden (SVID, BSD):  @ref{Classification of Characters}.
-
address@hidden isblank
address@hidden int isblank (int @var{c})
-
address@hidden (GNU):  @ref{Classification of Characters}.
-
address@hidden iscntrl
address@hidden int iscntrl (int @var{c})
-
address@hidden (ISO):  @ref{Classification of Characters}.
-
address@hidden isdigit
address@hidden int isdigit (int @var{c})
-
address@hidden (ISO):  @ref{Classification of Characters}.
-
address@hidden isfinite
address@hidden int isfinite (@emph{float-type} @var{x})
-
address@hidden (ISO):  @ref{Floating-Point Classes}.
-
address@hidden isgraph
address@hidden int isgraph (int @var{c})
-
address@hidden (ISO):  @ref{Classification of Characters}.
-
address@hidden isgreater
address@hidden int isgreater (@emph{real-floating} @var{x}, 
@emph{real-floating} @var{y})
-
address@hidden (ISO):  @ref{FP Comparison Functions}.
-
address@hidden isgreaterequal
address@hidden int isgreaterequal (@emph{real-floating} @var{x}, 
@emph{real-floating} @var{y})
-
address@hidden (ISO):  @ref{FP Comparison Functions}.
-
address@hidden isinf
address@hidden int isinf (double @var{x})
-
address@hidden (BSD):  @ref{Floating-Point Classes}.
-
address@hidden isinff
address@hidden int isinff (float @var{x})
-
address@hidden (BSD):  @ref{Floating-Point Classes}.
-
address@hidden isinfl
address@hidden int isinfl (long double @var{x})
-
address@hidden (BSD):  @ref{Floating-Point Classes}.
-
address@hidden isless
address@hidden int isless (@emph{real-floating} @var{x}, @emph{real-floating} 
@var{y})
-
address@hidden (ISO):  @ref{FP Comparison Functions}.
-
address@hidden islessequal
address@hidden int islessequal (@emph{real-floating} @var{x}, 
@emph{real-floating} @var{y})
-
address@hidden (ISO):  @ref{FP Comparison Functions}.
-
address@hidden islessgreater
address@hidden int islessgreater (@emph{real-floating} @var{x}, 
@emph{real-floating} @var{y})
-
address@hidden (ISO):  @ref{FP Comparison Functions}.
-
address@hidden islower
address@hidden int islower (int @var{c})
-
address@hidden (ISO):  @ref{Classification of Characters}.
-
address@hidden isnan
address@hidden int isnan (double @var{x})
-
address@hidden (BSD):  @ref{Floating-Point Classes}.
-
address@hidden isnan
address@hidden int isnan (@emph{float-type} @var{x})
-
address@hidden (ISO):  @ref{Floating-Point Classes}.
-
address@hidden isnanf
address@hidden int isnanf (float @var{x})
-
address@hidden (BSD):  @ref{Floating-Point Classes}.
-
address@hidden isnanl
address@hidden int isnanl (long double @var{x})
-
address@hidden (BSD):  @ref{Floating-Point Classes}.
-
address@hidden isnormal
address@hidden int isnormal (@emph{float-type} @var{x})
-
address@hidden (ISO):  @ref{Floating-Point Classes}.
-
address@hidden _ISOC99_SOURCE
address@hidden _ISOC99_SOURCE
-
-(GNU):  @ref{Feature-Test Macros}.
-
address@hidden isprint
address@hidden int isprint (int @var{c})
-
address@hidden (ISO):  @ref{Classification of Characters}.
-
address@hidden ispunct
address@hidden int ispunct (int @var{c})
-
address@hidden (ISO):  @ref{Classification of Characters}.
-
address@hidden isspace
address@hidden int isspace (int @var{c})
-
address@hidden (ISO):  @ref{Classification of Characters}.
-
address@hidden isunordered
address@hidden int isunordered (@emph{real-floating} @var{x}, 
@emph{real-floating} @var{y})
-
address@hidden (ISO):  @ref{FP Comparison Functions}.
-
address@hidden isupper
address@hidden int isupper (int @var{c})
-
address@hidden (ISO):  @ref{Classification of Characters}.
-
address@hidden iswalnum
address@hidden int iswalnum (wint_t @var{wc})
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden iswalpha
address@hidden int iswalpha (wint_t @var{wc})
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden iswblank
address@hidden int iswblank (wint_t @var{wc})
-
address@hidden (GNU):  @ref{Classification of Wide Characters}.
-
address@hidden iswcntrl
address@hidden int iswcntrl (wint_t @var{wc})
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden iswctype
address@hidden int iswctype (wint_t @var{wc}, wctype_t @var{desc})
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden iswdigit
address@hidden int iswdigit (wint_t @var{wc})
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden iswgraph
address@hidden int iswgraph (wint_t @var{wc})
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden iswlower
address@hidden int iswlower (wint_t @var{wc})
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden iswprint
address@hidden int iswprint (wint_t @var{wc})
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden iswpunct
address@hidden int iswpunct (wint_t @var{wc})
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden iswspace
address@hidden int iswspace (wint_t @var{wc})
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden iswupper
address@hidden int iswupper (wint_t @var{wc})
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden iswxdigit
address@hidden int iswxdigit (wint_t @var{wc})
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden isxdigit
address@hidden int isxdigit (int @var{c})
-
address@hidden (ISO):  @ref{Classification of Characters}.
-
address@hidden ITIMER_PROF
address@hidden ITIMER_PROF
-
address@hidden/time.h} (BSD):  @ref{Setting an Alarm}.
-
address@hidden ITIMER_REAL
address@hidden ITIMER_REAL
-
address@hidden/time.h} (BSD):  @ref{Setting an Alarm}.
-
address@hidden ITIMER_VIRTUAL
address@hidden ITIMER_VIRTUAL
-
address@hidden/time.h} (BSD):  @ref{Setting an Alarm}.
-
address@hidden j0
address@hidden double j0 (double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden j0f
address@hidden float j0f (float @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden j0l
address@hidden long double j0l (long double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden j1
address@hidden double j1 (double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden j1f
address@hidden float j1f (float @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden j1l
address@hidden long double j1l (long double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden jn
address@hidden double jn (int n, double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden jnf
address@hidden float jnf (int n, float @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden jnl
address@hidden long double jnl (int n, long double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden jrand48
address@hidden long int jrand48 (unsigned short int @var{xsubi}[3])
-
address@hidden (SVID):  @ref{SVID Random}.
-
address@hidden jrand48_r
address@hidden int jrand48_r (unsigned short int @var{xsubi}[3], struct 
drand48_data address@hidden, long int address@hidden)
-
address@hidden (GNU):  @ref{SVID Random}.
-
address@hidden l64a
address@hidden char * l64a (long int @var{n})
-
address@hidden (XPG):  @ref{Encode Binary Data}.
-
address@hidden labs
address@hidden long int labs (long int @var{number})
-
address@hidden (ISO):  @ref{Absolute Value}.
-
address@hidden LANG
address@hidden LANG
-
address@hidden (ISO):  @ref{Locale Categories}.
-
address@hidden LC_ALL
address@hidden LC_ALL
-
address@hidden (ISO):  @ref{Locale Categories}.
-
address@hidden LC_COLLATE
address@hidden LC_COLLATE
-
address@hidden (ISO):  @ref{Locale Categories}.
-
address@hidden LC_CTYPE
address@hidden LC_CTYPE
-
address@hidden (ISO):  @ref{Locale Categories}.
-
address@hidden LC_MESSAGES
address@hidden LC_MESSAGES
-
address@hidden (XOPEN):  @ref{Locale Categories}.
-
address@hidden LC_MONETARY
address@hidden LC_MONETARY
-
address@hidden (ISO):  @ref{Locale Categories}.
-
address@hidden LC_NUMERIC
address@hidden LC_NUMERIC
-
address@hidden (ISO):  @ref{Locale Categories}.
-
address@hidden lcong48
address@hidden void lcong48 (unsigned short int @var{param}[7])
-
address@hidden (SVID):  @ref{SVID Random}.
-
address@hidden lcong48_r
address@hidden int lcong48_r (unsigned short int @var{param}[7], struct 
drand48_data address@hidden)
-
address@hidden (GNU):  @ref{SVID Random}.
-
address@hidden LC_TIME
address@hidden LC_TIME
-
address@hidden (ISO):  @ref{Locale Categories}.
-
address@hidden ldexp
address@hidden double ldexp (double @var{value}, int @var{exponent})
-
address@hidden (ISO):  @ref{Normalization Functions}.
-
address@hidden ldexpf
address@hidden float ldexpf (float @var{value}, int @var{exponent})
-
address@hidden (ISO):  @ref{Normalization Functions}.
-
address@hidden ldexpl
address@hidden long double ldexpl (long double @var{value}, int @var{exponent})
-
address@hidden (ISO):  @ref{Normalization Functions}.
-
address@hidden ldiv
address@hidden ldiv_t ldiv (long int @var{numerator}, long int 
@var{denominator})
-
address@hidden (ISO):  @ref{Integer Division}.
-
address@hidden ldiv_t
address@hidden ldiv_t
-
address@hidden (ISO):  @ref{Integer Division}.
-
address@hidden lfind
address@hidden void * lfind (const void address@hidden, void address@hidden, 
size_t address@hidden, size_t @var{size}, comparison_fn_t @var{compar})
-
address@hidden (SVID):  @ref{Array Search Function}.
-
address@hidden lgamma
address@hidden double lgamma (double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden lgammaf
address@hidden float lgammaf (float @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden lgammaf_r
address@hidden float lgammaf_r (float @var{x}, int address@hidden)
-
address@hidden (XPG):  @ref{Special Functions}.
-
address@hidden lgammal
address@hidden long double lgammal (long double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden lgammal_r
address@hidden long double lgammal_r (long double @var{x}, int address@hidden)
-
address@hidden (XPG):  @ref{Special Functions}.
-
address@hidden lgamma_r
address@hidden double lgamma_r (double @var{x}, int address@hidden)
-
address@hidden (XPG):  @ref{Special Functions}.
-
address@hidden L_INCR
address@hidden L_INCR
-
address@hidden/file.h} (BSD):  @ref{File Positioning}.
-
address@hidden llabs
address@hidden long long int llabs (long long int @var{number})
-
address@hidden (ISO):  @ref{Absolute Value}.
-
address@hidden lldiv
address@hidden lldiv_t lldiv (long long int @var{numerator}, long long int 
@var{denominator})
-
address@hidden (ISO):  @ref{Integer Division}.
-
address@hidden lldiv_t
address@hidden lldiv_t
-
address@hidden (ISO):  @ref{Integer Division}.
-
address@hidden llrint
address@hidden long long int llrint (double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden llrintf
address@hidden long long int llrintf (float @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden llrintl
address@hidden long long int llrintl (long double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden llround
address@hidden long long int llround (double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden llroundf
address@hidden long long int llroundf (float @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden llroundl
address@hidden long long int llroundl (long double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden localeconv
address@hidden struct lconv * localeconv (void)
-
address@hidden (ISO):  @ref{The Lame Way to Locale Data}.
-
address@hidden localtime
address@hidden struct tm * localtime (const time_t address@hidden)
-
address@hidden (ISO):  @ref{Broken-down Time}.
-
address@hidden localtime_r
address@hidden struct tm * localtime_r (const time_t address@hidden, struct tm 
address@hidden)
-
address@hidden (POSIX.1c):  @ref{Broken-down Time}.
-
address@hidden log
address@hidden double log (double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden log10
address@hidden double log10 (double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden log10f
address@hidden float log10f (float @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden log10l
address@hidden long double log10l (long double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden log1p
address@hidden double log1p (double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden log1pf
address@hidden float log1pf (float @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden log1pl
address@hidden long double log1pl (long double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden log2
address@hidden double log2 (double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden log2f
address@hidden float log2f (float @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden log2l
address@hidden long double log2l (long double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden logb
address@hidden double logb (double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden logbf
address@hidden float logbf (float @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden logbl
address@hidden long double logbl (long double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden logf
address@hidden float logf (float @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden logl
address@hidden long double logl (long double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden lrand48
address@hidden long int lrand48 (void)
-
address@hidden (SVID):  @ref{SVID Random}.
-
address@hidden lrand48_r
address@hidden int lrand48_r (struct drand48_data address@hidden, double 
address@hidden)
-
address@hidden (GNU):  @ref{SVID Random}.
-
address@hidden lrint
address@hidden long int lrint (double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden lrintf
address@hidden long int lrintf (float @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden lrintl
address@hidden long int lrintl (long double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden lround
address@hidden long int lround (double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden lroundf
address@hidden long int lroundf (float @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden lroundl
address@hidden long int lroundl (long double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden lsearch
address@hidden void * lsearch (const void address@hidden, void address@hidden, 
size_t address@hidden, size_t @var{size}, comparison_fn_t @var{compar})
-
address@hidden (SVID):  @ref{Array Search Function}.
-
address@hidden L_SET
address@hidden L_SET
-
address@hidden/file.h} (BSD):  @ref{File Positioning}.
-
address@hidden L_XTND
address@hidden L_XTND
-
address@hidden/file.h} (BSD):  @ref{File Positioning}.
-
address@hidden mallinfo
address@hidden struct mallinfo mallinfo (void)
-
address@hidden (SVID):  @ref{Statistics of Malloc}.
-
address@hidden malloc
address@hidden void * malloc (size_t @var{size})
-
address@hidden, @file{stdlib.h} (ISO):  @ref{Basic Allocation}.
-
address@hidden __malloc_hook
address@hidden __malloc_hook
-
address@hidden (GNU):  @ref{Hooks for Malloc}.
-
address@hidden __malloc_initialize_hook
address@hidden __malloc_initialize_hook
-
address@hidden (GNU):  @ref{Hooks for Malloc}.
-
address@hidden MB_CUR_MAX
address@hidden int MB_CUR_MAX
-
address@hidden (ISO):  @ref{Selecting the Conversion}.
-
address@hidden mblen
address@hidden int mblen (const char address@hidden, size_t @var{size})
-
address@hidden (ISO):  @ref{Nonreentrant Character Conversion}.
-
address@hidden MB_LEN_MAX
address@hidden int MB_LEN_MAX
-
address@hidden (ISO):  @ref{Selecting the Conversion}.
-
address@hidden mbrlen
address@hidden size_t mbrlen (const char *restrict @var{s}, size_t @var{n}, 
mbstate_t address@hidden)
-
address@hidden (ISO):  @ref{Converting a Character}.
-
address@hidden mbrtowc
address@hidden size_t mbrtowc (wchar_t *restrict @var{pwc}, const char 
*restrict @var{s}, size_t @var{n}, mbstate_t *restrict @var{ps})
-
address@hidden (ISO):  @ref{Converting a Character}.
-
address@hidden mbsinit
address@hidden int mbsinit (const mbstate_t address@hidden)
-
address@hidden (ISO):  @ref{Keeping the state}.
-
address@hidden mbsnrtowcs
address@hidden size_t mbsnrtowcs (wchar_t *restrict @var{dst}, const char 
**restrict @var{src}, size_t @var{nmc}, size_t @var{len}, mbstate_t *restrict 
@var{ps})
-
address@hidden (GNU):  @ref{Converting Strings}.
-
address@hidden mbsrtowcs
address@hidden size_t mbsrtowcs (wchar_t *restrict @var{dst}, const char 
**restrict @var{src}, size_t @var{len}, mbstate_t *restrict @var{ps})
-
address@hidden (ISO):  @ref{Converting Strings}.
-
address@hidden mbstate_t
address@hidden mbstate_t
-
address@hidden (ISO):  @ref{Keeping the state}.
-
address@hidden mbstowcs
address@hidden size_t mbstowcs (wchar_t address@hidden, const char 
address@hidden, size_t @var{size})
-
address@hidden (ISO):  @ref{Nonreentrant String Conversion}.
-
address@hidden mbtowc
address@hidden int mbtowc (wchar_t *restrict @var{result}, const char *restrict 
@var{string}, size_t @var{size})
-
address@hidden (ISO):  @ref{Nonreentrant Character Conversion}.
-
address@hidden mcheck
address@hidden int mcheck (void (address@hidden) (enum mcheck_status 
@var{status}))
-
address@hidden (GNU):  @ref{Heap Consistency Checking}.
-
address@hidden memalign
address@hidden void * memalign (size_t @var{boundary}, size_t @var{size})
-
address@hidden (BSD):  @ref{Aligned Memory Blocks}.
-
address@hidden __memalign_hook
address@hidden __memalign_hook
-
address@hidden (GNU):  @ref{Hooks for Malloc}.
-
address@hidden memccpy
address@hidden void * memccpy (void *restrict @var{to}, const void *restrict 
@var{from}, int @var{c}, size_t @var{size})
-
address@hidden (SVID):  @ref{Copying and Concatenation}.
-
address@hidden memchr
address@hidden void * memchr (const void address@hidden, int @var{c}, size_t 
@var{size})
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden memcmp
address@hidden int memcmp (const void address@hidden, const void 
address@hidden, size_t @var{size})
-
address@hidden (ISO):  @ref{String/Array Comparison}.
-
address@hidden memcpy
address@hidden void * memcpy (void *restrict @var{to}, const void *restrict 
@var{from}, size_t @var{size})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden memfrob
address@hidden void * memfrob (void address@hidden, size_t @var{length})
-
address@hidden (GNU):  @ref{Trivial Encryption}.
-
address@hidden memmem
address@hidden void * memmem (const void address@hidden, size_t 
@var{haystack-len},@*const void address@hidden, size_t @var{needle-len})
-
address@hidden (GNU):  @ref{Search Functions}.
-
address@hidden memmove
address@hidden void * memmove (void address@hidden, const void address@hidden, 
size_t @var{size})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden mempcpy
address@hidden void * mempcpy (void *restrict @var{to}, const void *restrict 
@var{from}, size_t @var{size})
-
address@hidden (GNU):  @ref{Copying and Concatenation}.
-
address@hidden memrchr
address@hidden void * memrchr (const void address@hidden, int @var{c}, size_t 
@var{size})
-
address@hidden (GNU):  @ref{Search Functions}.
-
address@hidden memset
address@hidden void * memset (void address@hidden, int @var{c}, size_t 
@var{size})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden mktime
address@hidden time_t mktime (struct tm address@hidden)
-
address@hidden (ISO):  @ref{Broken-down Time}.
-
address@hidden mlock
address@hidden int mlock (const void address@hidden, size_t @var{len})
-
address@hidden/mman.h} (POSIX.1b):  @ref{Page Lock Functions}.
-
address@hidden mlockall
address@hidden int mlockall (int @var{flags})
-
address@hidden/mman.h} (POSIX.1b):  @ref{Page Lock Functions}.
-
address@hidden modf
address@hidden double modf (double @var{value}, double address@hidden)
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden modff
address@hidden float modff (float @var{value}, float address@hidden)
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden modfl
address@hidden long double modfl (long double @var{value}, long double 
address@hidden)
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden mrand48
address@hidden long int mrand48 (void)
-
address@hidden (SVID):  @ref{SVID Random}.
-
address@hidden mrand48_r
address@hidden int mrand48_r (struct drand48_data address@hidden, double 
address@hidden)
-
address@hidden (GNU):  @ref{SVID Random}.
-
address@hidden mtrace
address@hidden void mtrace (void)
-
address@hidden (GNU):  @ref{Tracing malloc}.
-
address@hidden munlock
address@hidden int munlock (const void address@hidden, size_t @var{len})
-
address@hidden/mman.h} (POSIX.1b):  @ref{Page Lock Functions}.
-
address@hidden munlockall
address@hidden int munlockall (void)
-
address@hidden/mman.h} (POSIX.1b):  @ref{Page Lock Functions}.
-
address@hidden muntrace
address@hidden void muntrace (void)
-
address@hidden (GNU):  @ref{Tracing malloc}.
-
address@hidden nan
address@hidden double nan (const char address@hidden)
-
address@hidden (ISO):  @ref{FP Bit Twiddling}.
-
address@hidden NAN
address@hidden float NAN
-
address@hidden (GNU):  @ref{Infinity and NaN}.
-
address@hidden nanf
address@hidden float nanf (const char address@hidden)
-
address@hidden (ISO):  @ref{FP Bit Twiddling}.
-
address@hidden nanl
address@hidden long double nanl (const char address@hidden)
-
address@hidden (ISO):  @ref{FP Bit Twiddling}.
-
address@hidden nanosleep
address@hidden int nanosleep (const struct timespec address@hidden, struct 
timespec address@hidden)
-
address@hidden (POSIX.1):  @ref{Sleeping}.
-
address@hidden nearbyint
address@hidden double nearbyint (double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden nearbyintf
address@hidden float nearbyintf (float @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden nearbyintl
address@hidden long double nearbyintl (long double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden nextafter
address@hidden double nextafter (double @var{x}, double @var{y})
-
address@hidden (ISO):  @ref{FP Bit Twiddling}.
-
address@hidden nextafterf
address@hidden float nextafterf (float @var{x}, float @var{y})
-
address@hidden (ISO):  @ref{FP Bit Twiddling}.
-
address@hidden nextafterl
address@hidden long double nextafterl (long double @var{x}, long double @var{y})
-
address@hidden (ISO):  @ref{FP Bit Twiddling}.
-
address@hidden nexttoward
address@hidden double nexttoward (double @var{x}, long double @var{y})
-
address@hidden (ISO):  @ref{FP Bit Twiddling}.
-
address@hidden nexttowardf
address@hidden float nexttowardf (float @var{x}, long double @var{y})
-
address@hidden (ISO):  @ref{FP Bit Twiddling}.
-
address@hidden nexttowardl
address@hidden long double nexttowardl (long double @var{x}, long double 
@var{y})
-
address@hidden (ISO):  @ref{FP Bit Twiddling}.
-
address@hidden ngettext
address@hidden char * ngettext (const char address@hidden, const char 
address@hidden, unsigned long int @var{n})
-
address@hidden (GNU):  @ref{Advanced gettext functions}.
-
address@hidden nl_langinfo
address@hidden char * nl_langinfo (nl_item @var{item})
-
address@hidden (XOPEN):  @ref{The Elegant and Fast Way}.
-
address@hidden nrand48
address@hidden long int nrand48 (unsigned short int @var{xsubi}[3])
-
address@hidden (SVID):  @ref{SVID Random}.
-
address@hidden nrand48_r
address@hidden int nrand48_r (unsigned short int @var{xsubi}[3], struct 
drand48_data address@hidden, long int address@hidden)
-
address@hidden (GNU):  @ref{SVID Random}.
-
address@hidden ntp_adjtime
address@hidden int ntp_adjtime (struct timex address@hidden)
-
address@hidden/timex.h} (GNU):  @ref{High-Accuracy Clock}.
-
address@hidden ntp_gettime
address@hidden int ntp_gettime (struct ntptimeval address@hidden)
-
address@hidden/timex.h} (GNU):  @ref{High-Accuracy Clock}.
-
address@hidden obstack_1grow
address@hidden void obstack_1grow (struct obstack address@hidden, char @var{c})
-
address@hidden (GNU):  @ref{Growing Objects}.
-
address@hidden obstack_1grow_fast
address@hidden void obstack_1grow_fast (struct obstack address@hidden, char 
@var{c})
-
address@hidden (GNU):  @ref{Extra-Fast Growing}.
-
address@hidden obstack_alignment_mask
address@hidden int obstack_alignment_mask (struct obstack address@hidden)
-
address@hidden (GNU):  @ref{Obstacks Data Alignment}.
-
address@hidden obstack_alloc
address@hidden void * obstack_alloc (struct obstack address@hidden, int 
@var{size})
-
address@hidden (GNU):  @ref{Allocation in an Obstack}.
-
address@hidden obstack_alloc_failed_handler
address@hidden obstack_alloc_failed_handler
-
address@hidden (GNU):  @ref{Preparing for Obstacks}.
-
address@hidden obstack_base
address@hidden void * obstack_base (struct obstack address@hidden)
-
address@hidden (GNU):  @ref{Status of an Obstack}.
-
address@hidden obstack_blank
address@hidden void obstack_blank (struct obstack address@hidden, int 
@var{size})
-
address@hidden (GNU):  @ref{Growing Objects}.
-
address@hidden obstack_blank_fast
address@hidden void obstack_blank_fast (struct obstack address@hidden, int 
@var{size})
-
address@hidden (GNU):  @ref{Extra-Fast Growing}.
-
address@hidden obstack_chunk_size
address@hidden int obstack_chunk_size (struct obstack address@hidden)
-
address@hidden (GNU):  @ref{Obstack Chunks}.
-
address@hidden obstack_copy
address@hidden void * obstack_copy (struct obstack address@hidden, void 
address@hidden, int @var{size})
-
address@hidden (GNU):  @ref{Allocation in an Obstack}.
-
address@hidden obstack_copy0
address@hidden void * obstack_copy0 (struct obstack address@hidden, void 
address@hidden, int @var{size})
-
address@hidden (GNU):  @ref{Allocation in an Obstack}.
-
address@hidden obstack_finish
address@hidden void * obstack_finish (struct obstack address@hidden)
-
address@hidden (GNU):  @ref{Growing Objects}.
-
address@hidden obstack_free
address@hidden void obstack_free (struct obstack address@hidden, void 
address@hidden)
-
address@hidden (GNU):  @ref{Freeing Obstack Objects}.
-
address@hidden obstack_grow
address@hidden void obstack_grow (struct obstack address@hidden, void 
address@hidden, int @var{size})
-
address@hidden (GNU):  @ref{Growing Objects}.
-
address@hidden obstack_grow0
address@hidden void obstack_grow0 (struct obstack address@hidden, void 
address@hidden, int @var{size})
-
address@hidden (GNU):  @ref{Growing Objects}.
-
address@hidden obstack_init
address@hidden int obstack_init (struct obstack address@hidden)
-
address@hidden (GNU):  @ref{Preparing for Obstacks}.
-
address@hidden obstack_int_grow
address@hidden void obstack_int_grow (struct obstack address@hidden, int 
@var{data})
-
address@hidden (GNU):  @ref{Growing Objects}.
-
address@hidden obstack_int_grow_fast
address@hidden void obstack_int_grow_fast (struct obstack address@hidden, int 
@var{data})
-
address@hidden (GNU):  @ref{Extra-Fast Growing}.
-
address@hidden obstack_next_free
address@hidden void * obstack_next_free (struct obstack address@hidden)
-
address@hidden (GNU):  @ref{Status of an Obstack}.
-
address@hidden obstack_object_size
address@hidden int obstack_object_size (struct obstack address@hidden)
-
address@hidden (GNU):  @ref{Growing Objects}.
-
address@hidden obstack_object_size
address@hidden int obstack_object_size (struct obstack address@hidden)
-
address@hidden (GNU):  @ref{Status of an Obstack}.
-
address@hidden obstack_printf
address@hidden int obstack_printf (struct obstack address@hidden, const char 
address@hidden, @dots{})
-
address@hidden (GNU):  @ref{Dynamic Output}.
-
address@hidden obstack_ptr_grow
address@hidden void obstack_ptr_grow (struct obstack address@hidden, void 
address@hidden)
-
address@hidden (GNU):  @ref{Growing Objects}.
-
address@hidden obstack_ptr_grow_fast
address@hidden void obstack_ptr_grow_fast (struct obstack address@hidden, void 
address@hidden)
-
address@hidden (GNU):  @ref{Extra-Fast Growing}.
-
address@hidden obstack_room
address@hidden int obstack_room (struct obstack address@hidden)
-
address@hidden (GNU):  @ref{Extra-Fast Growing}.
-
address@hidden obstack_vprintf
address@hidden int obstack_vprintf (struct obstack address@hidden, const char 
address@hidden, va_list @var{ap})
-
address@hidden (GNU):  @ref{Variable Arguments Output}.
-
address@hidden on_exit
address@hidden int on_exit (void (address@hidden)(int @var{status}, void 
address@hidden), void address@hidden)
-
address@hidden (SunOS):  @ref{Clean-Ups on Exit}.
-
address@hidden open_memstream
address@hidden FILE * open_memstream (char address@hidden, size_t 
address@hidden)
-
address@hidden (GNU):  @ref{String Streams}.
-
address@hidden open_obstack_stream
address@hidden FILE * open_obstack_stream (struct obstack address@hidden)
-
address@hidden (GNU):  @ref{Obstack Streams}.
-
address@hidden optarg
address@hidden char * optarg
-
address@hidden (POSIX.2):  @ref{Using Getopt}.
-
address@hidden opterr
address@hidden int opterr
-
address@hidden (POSIX.2):  @ref{Using Getopt}.
-
address@hidden optind
address@hidden int optind
-
address@hidden (POSIX.2):  @ref{Using Getopt}.
-
address@hidden OPTION_ALIAS
address@hidden OPTION_ALIAS
-
address@hidden (GNU):  @ref{Argp Option Flags}.
-
address@hidden OPTION_ARG_OPTIONAL
address@hidden OPTION_ARG_OPTIONAL
-
address@hidden (GNU):  @ref{Argp Option Flags}.
-
address@hidden OPTION_DOC
address@hidden OPTION_DOC
-
address@hidden (GNU):  @ref{Argp Option Flags}.
-
address@hidden OPTION_HIDDEN
address@hidden OPTION_HIDDEN
-
address@hidden (GNU):  @ref{Argp Option Flags}.
-
address@hidden OPTION_NO_USAGE
address@hidden OPTION_NO_USAGE
-
address@hidden (GNU):  @ref{Argp Option Flags}.
-
address@hidden optopt
address@hidden int optopt
-
address@hidden (POSIX.2):  @ref{Using Getopt}.
-
address@hidden PA_CHAR
address@hidden PA_CHAR
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden PA_DOUBLE
address@hidden PA_DOUBLE
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden PA_FLAG_LONG
address@hidden PA_FLAG_LONG
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden PA_FLAG_LONG_DOUBLE
address@hidden PA_FLAG_LONG_DOUBLE
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden PA_FLAG_LONG_LONG
address@hidden PA_FLAG_LONG_LONG
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden PA_FLAG_MASK
address@hidden int PA_FLAG_MASK
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden PA_FLAG_PTR
address@hidden PA_FLAG_PTR
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden PA_FLAG_SHORT
address@hidden PA_FLAG_SHORT
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden PA_FLOAT
address@hidden PA_FLOAT
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden PA_INT
address@hidden PA_INT
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden PA_LAST
address@hidden PA_LAST
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden PA_POINTER
address@hidden PA_POINTER
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden parse_printf_format
address@hidden size_t parse_printf_format (const char address@hidden, size_t 
@var{n}, int address@hidden)
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden PA_STRING
address@hidden PA_STRING
-
address@hidden (GNU):  @ref{Parsing a Template String}.
-
address@hidden perror
address@hidden void perror (const char address@hidden)
-
address@hidden (ISO):  @ref{Error Messages}.
-
address@hidden _POSIX_C_SOURCE
address@hidden _POSIX_C_SOURCE
-
-(POSIX.2):  @ref{Feature-Test Macros}.
-
address@hidden posix_memalign
address@hidden int posix_memalign (void address@hidden, size_t @var{alignment}, 
size_t @var{size})
-
address@hidden (POSIX):  @ref{Aligned Memory Blocks}.
-
address@hidden _POSIX_SOURCE
address@hidden _POSIX_SOURCE
-
-(POSIX.1):  @ref{Feature-Test Macros}.
-
address@hidden pow
address@hidden double pow (double @var{base}, double @var{power})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden pow10
address@hidden double pow10 (double @var{x})
-
address@hidden (GNU):  @ref{Exponents and Logarithms}.
-
address@hidden pow10f
address@hidden float pow10f (float @var{x})
-
address@hidden (GNU):  @ref{Exponents and Logarithms}.
-
address@hidden pow10l
address@hidden long double pow10l (long double @var{x})
-
address@hidden (GNU):  @ref{Exponents and Logarithms}.
-
address@hidden powf
address@hidden float powf (float @var{base}, float @var{power})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden powl
address@hidden long double powl (long double @var{base}, long double 
@var{power})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden printf
address@hidden int printf (const char address@hidden, @dots{})
-
address@hidden (ISO):  @ref{Formatted Output Functions}.
-
address@hidden printf_arginfo_function
address@hidden printf_arginfo_function
-
address@hidden (GNU):  @ref{Defining the Output Handler}.
-
address@hidden printf_function
address@hidden printf_function
-
address@hidden (GNU):  @ref{Defining the Output Handler}.
-
address@hidden printf_size
address@hidden int printf_size (FILE address@hidden, const struct printf_info 
address@hidden, const void *const address@hidden)
-
address@hidden (GNU):  @ref{Predefined Printf Handlers}.
-
address@hidden printf_size_info
address@hidden int printf_size_info (const struct printf_info address@hidden, 
size_t @var{n}, int address@hidden)
-
address@hidden (GNU):  @ref{Predefined Printf Handlers}.
-
address@hidden program_invocation_name
address@hidden char * program_invocation_name
-
address@hidden (GNU):  @ref{Error Messages}.
-
address@hidden program_invocation_short_name
address@hidden char * program_invocation_short_name
-
address@hidden (GNU):  @ref{Error Messages}.
-
address@hidden putc
address@hidden int putc (int @var{c}, FILE address@hidden)
-
address@hidden (ISO):  @ref{Simple Output}.
-
address@hidden putchar
address@hidden int putchar (int @var{c})
-
address@hidden (ISO):  @ref{Simple Output}.
-
address@hidden putchar_unlocked
address@hidden int putchar_unlocked (int @var{c})
-
address@hidden (POSIX):  @ref{Simple Output}.
-
address@hidden putc_unlocked
address@hidden int putc_unlocked (int @var{c}, FILE address@hidden)
-
address@hidden (POSIX):  @ref{Simple Output}.
-
address@hidden putenv
address@hidden int putenv (char address@hidden)
-
address@hidden (SVID):  @ref{Environment Access}.
-
address@hidden puts
address@hidden int puts (const char address@hidden)
-
address@hidden (ISO):  @ref{Simple Output}.
-
address@hidden putw
address@hidden int putw (int @var{w}, FILE address@hidden)
-
address@hidden (SVID):  @ref{Simple Output}.
-
address@hidden putwc
address@hidden wint_t putwc (wchar_t @var{wc}, FILE address@hidden)
-
address@hidden (ISO):  @ref{Simple Output}.
-
address@hidden putwchar
address@hidden wint_t putwchar (wchar_t @var{wc})
-
address@hidden (ISO):  @ref{Simple Output}.
-
address@hidden putwchar_unlocked
address@hidden wint_t putwchar_unlocked (wchar_t @var{wc})
-
address@hidden (GNU):  @ref{Simple Output}.
-
address@hidden putwc_unlocked
address@hidden wint_t putwc_unlocked (wchar_t @var{wc}, FILE address@hidden)
-
address@hidden (GNU):  @ref{Simple Output}.
-
address@hidden qecvt
address@hidden char * qecvt (long double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden)
-
address@hidden (GNU):  @ref{System V Number Conversion}.
-
address@hidden qecvt_r
address@hidden char * qecvt_r (long double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden, char address@hidden, size_t @var{len})
-
address@hidden (GNU):  @ref{System V Number Conversion}.
-
address@hidden qfcvt
address@hidden char * qfcvt (long double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden)
-
address@hidden (GNU):  @ref{System V Number Conversion}.
-
address@hidden qfcvt_r
address@hidden char * qfcvt_r (long double @var{value}, int @var{ndigit}, int 
address@hidden, int address@hidden, char address@hidden, size_t @var{len})
-
address@hidden (GNU):  @ref{System V Number Conversion}.
-
address@hidden qgcvt
address@hidden char * qgcvt (long double @var{value}, int @var{ndigit}, char 
address@hidden)
-
address@hidden (GNU):  @ref{System V Number Conversion}.
-
address@hidden qsort
address@hidden void qsort (void address@hidden, size_t @var{count}, size_t 
@var{size}, comparison_fn_t @var{compare})
-
address@hidden (ISO):  @ref{Array Sort Function}.
-
address@hidden rand
address@hidden int rand (void)
-
address@hidden (ISO):  @ref{ISO Random}.
-
address@hidden RAND_MAX
address@hidden int RAND_MAX
-
address@hidden (ISO):  @ref{ISO Random}.
-
address@hidden random
address@hidden long int random (void)
-
address@hidden (BSD):  @ref{BSD Random}.
-
address@hidden random_r
address@hidden int random_r (struct random_data *restrict @var{buf}, int32_t 
*restrict @var{result})
-
address@hidden (GNU):  @ref{BSD Random}.
-
address@hidden rand_r
address@hidden int rand_r (unsigned int address@hidden)
-
address@hidden (POSIX.1):  @ref{ISO Random}.
-
address@hidden rawmemchr
address@hidden void * rawmemchr (const void address@hidden, int @var{c})
-
address@hidden (GNU):  @ref{Search Functions}.
-
address@hidden realloc
address@hidden void * realloc (void address@hidden, size_t @var{newsize})
-
address@hidden, @file{stdlib.h} (ISO):  @ref{Changing Block Size}.
-
address@hidden __realloc_hook
address@hidden __realloc_hook
-
address@hidden (GNU):  @ref{Hooks for Malloc}.
-
address@hidden _REENTRANT
address@hidden _REENTRANT
-
-(GNU):  @ref{Feature-Test Macros}.
-
address@hidden REG_BADBR
address@hidden REG_BADBR
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden REG_BADPAT
address@hidden REG_BADPAT
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden REG_BADRPT
address@hidden REG_BADRPT
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden regcomp
address@hidden int regcomp (regex_t address@hidden, const char address@hidden, 
int @var{cflags})
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden REG_EBRACE
address@hidden REG_EBRACE
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden REG_EBRACK
address@hidden REG_EBRACK
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden REG_ECOLLATE
address@hidden REG_ECOLLATE
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden REG_ECTYPE
address@hidden REG_ECTYPE
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden REG_EESCAPE
address@hidden REG_EESCAPE
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden REG_EPAREN
address@hidden REG_EPAREN
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden REG_ERANGE
address@hidden REG_ERANGE
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden regerror
address@hidden size_t regerror (int @var{errcode}, regex_t address@hidden, char 
address@hidden, size_t @var{length})
-
address@hidden (POSIX.2):  @ref{Regexp Clean-Up}.
-
address@hidden REG_ESPACE
address@hidden REG_ESPACE
-
address@hidden (POSIX.2):  @ref{Matching POSIX Regexps}.
-
address@hidden REG_ESPACE
address@hidden REG_ESPACE
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden REG_ESUBREG
address@hidden REG_ESUBREG
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden regexec
address@hidden int regexec (regex_t address@hidden, char address@hidden, size_t 
@var{nmatch}, regmatch_t @var{matchptr} @t{[]}, int @var{eflags})
-
address@hidden (POSIX.2):  @ref{Matching POSIX Regexps}.
-
address@hidden regex_t
address@hidden regex_t
-
address@hidden (POSIX.2):  @ref{POSIX Regexp Compilation}.
-
address@hidden REG_EXTENDED
address@hidden REG_EXTENDED
-
address@hidden (POSIX.2):  @ref{Flags for POSIX Regexps}.
-
address@hidden regfree
address@hidden void regfree (regex_t address@hidden)
-
address@hidden (POSIX.2):  @ref{Regexp Clean-Up}.
-
address@hidden REG_ICASE
address@hidden REG_ICASE
-
address@hidden (POSIX.2):  @ref{Flags for POSIX Regexps}.
-
address@hidden register_printf_function
address@hidden int register_printf_function (int @var{spec}, printf_function 
@var{handler-function}, printf_arginfo_function @var{arginfo-function})
-
address@hidden (GNU):  @ref{Registering New Conversions}.
-
address@hidden regmatch_t
address@hidden regmatch_t
-
address@hidden (POSIX.2):  @ref{Regexp Subexpressions}.
-
address@hidden REG_NEWLINE
address@hidden REG_NEWLINE
-
address@hidden (POSIX.2):  @ref{Flags for POSIX Regexps}.
-
address@hidden REG_NOMATCH
address@hidden REG_NOMATCH
-
address@hidden (POSIX.2):  @ref{Matching POSIX Regexps}.
-
address@hidden REG_NOSUB
address@hidden REG_NOSUB
-
address@hidden (POSIX.2):  @ref{Flags for POSIX Regexps}.
-
address@hidden REG_NOTBOL
address@hidden REG_NOTBOL
-
address@hidden (POSIX.2):  @ref{Matching POSIX Regexps}.
-
address@hidden REG_NOTEOL
address@hidden REG_NOTEOL
-
address@hidden (POSIX.2):  @ref{Matching POSIX Regexps}.
-
address@hidden regoff_t
address@hidden regoff_t
-
address@hidden (POSIX.2):  @ref{Regexp Subexpressions}.
-
address@hidden remainder
address@hidden double remainder (double @var{numerator}, double 
@var{denominator})
-
address@hidden (BSD):  @ref{Remainder Functions}.
-
address@hidden remainderf
address@hidden float remainderf (float @var{numerator}, float @var{denominator})
-
address@hidden (BSD):  @ref{Remainder Functions}.
-
address@hidden remainderl
address@hidden long double remainderl (long double @var{numerator}, long double 
@var{denominator})
-
address@hidden (BSD):  @ref{Remainder Functions}.
-
address@hidden rewind
address@hidden void rewind (FILE address@hidden)
-
address@hidden (ISO):  @ref{File Positioning}.
-
address@hidden rindex
address@hidden char * rindex (const char address@hidden, int @var{c})
-
address@hidden (BSD):  @ref{Search Functions}.
-
address@hidden rint
address@hidden double rint (double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden rintf
address@hidden float rintf (float @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden rintl
address@hidden long double rintl (long double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden round
address@hidden double round (double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden roundf
address@hidden float roundf (float @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden roundl
address@hidden long double roundl (long double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden rpmatch
address@hidden int rpmatch (const char address@hidden)
-
address@hidden (stdlib.h):  @ref{Yes-or-No Questions}.
-
address@hidden sbrk
address@hidden int sbrk (ptrdiff_t @var{delta})
-
address@hidden (BSD):  @ref{Resizing the Data Segment}.
-
address@hidden scalb
address@hidden double scalb (double @var{value}, int @var{exponent})
-
address@hidden (BSD):  @ref{Normalization Functions}.
-
address@hidden scalbf
address@hidden float scalbf (float @var{value}, int @var{exponent})
-
address@hidden (BSD):  @ref{Normalization Functions}.
-
address@hidden scalbl
address@hidden long double scalbl (long double @var{value}, int @var{exponent})
-
address@hidden (BSD):  @ref{Normalization Functions}.
-
address@hidden scalbln
address@hidden long long int scalbln (double @var{x}, long int n)
-
address@hidden (BSD):  @ref{Normalization Functions}.
-
address@hidden scalblnf
address@hidden long long int scalblnf (float @var{x}, long int n)
-
address@hidden (BSD):  @ref{Normalization Functions}.
-
address@hidden scalblnl
address@hidden long long int scalblnl (long double @var{x}, long int n)
-
address@hidden (BSD):  @ref{Normalization Functions}.
-
address@hidden scalbn
address@hidden long long int scalbn (double @var{x}, int n)
-
address@hidden (BSD):  @ref{Normalization Functions}.
-
address@hidden scalbnf
address@hidden long long int scalbnf (float @var{x}, int n)
-
address@hidden (BSD):  @ref{Normalization Functions}.
-
address@hidden scalbnl
address@hidden long long int scalbnl (long double @var{x}, int n)
-
address@hidden (BSD):  @ref{Normalization Functions}.
-
address@hidden scanf
address@hidden int scanf (const char address@hidden, @dots{})
-
address@hidden (ISO):  @ref{Formatted Input Functions}.
-
address@hidden seed48
address@hidden unsigned short int * seed48 (unsigned short int @var{seed16v}[3])
-
address@hidden (SVID):  @ref{SVID Random}.
-
address@hidden seed48_r
address@hidden int seed48_r (unsigned short int @var{seed16v}[3], struct 
drand48_data address@hidden)
-
address@hidden (GNU):  @ref{SVID Random}.
-
address@hidden SEEK_CUR
address@hidden int SEEK_CUR
-
address@hidden (ISO):  @ref{File Positioning}.
-
address@hidden SEEK_END
address@hidden int SEEK_END
-
address@hidden (ISO):  @ref{File Positioning}.
-
address@hidden SEEK_SET
address@hidden int SEEK_SET
-
address@hidden (ISO):  @ref{File Positioning}.
-
address@hidden setbuf
address@hidden void setbuf (FILE address@hidden, char address@hidden)
-
address@hidden (ISO):  @ref{Controlling Buffering}.
-
address@hidden setbuffer
address@hidden void setbuffer (FILE address@hidden, char address@hidden, size_t 
@var{size})
-
address@hidden (BSD):  @ref{Controlling Buffering}.
-
address@hidden setenv
address@hidden int setenv (const char address@hidden, const char 
address@hidden, int @var{replace})
-
address@hidden (BSD):  @ref{Environment Access}.
-
address@hidden setitimer
address@hidden int setitimer (int @var{which}, struct itimerval address@hidden, 
struct itimerval address@hidden)
-
address@hidden/time.h} (BSD):  @ref{Setting an Alarm}.
-
address@hidden setlinebuf
address@hidden void setlinebuf (FILE address@hidden)
-
address@hidden (BSD):  @ref{Controlling Buffering}.
-
address@hidden setlocale
address@hidden char * setlocale (int @var{category}, const char address@hidden)
-
address@hidden (ISO):  @ref{Setting the Locale}.
-
address@hidden setstate
address@hidden void * setstate (void address@hidden)
-
address@hidden (BSD):  @ref{BSD Random}.
-
address@hidden setstate_r
address@hidden int setstate_r (char *restrict @var{statebuf}, struct 
random_data *restrict @var{buf})
-
address@hidden (GNU):  @ref{BSD Random}.
-
address@hidden settimeofday
address@hidden int settimeofday (const struct timeval address@hidden, const 
struct timezone address@hidden)
-
address@hidden/time.h} (BSD):  @ref{High-Resolution Calendar}.
-
address@hidden setvbuf
address@hidden int setvbuf (FILE address@hidden, char address@hidden, int 
@var{mode}, size_t @var{size})
-
address@hidden (ISO):  @ref{Controlling Buffering}.
-
address@hidden signbit
address@hidden int signbit (@emph{float-type} @var{x})
-
address@hidden (ISO):  @ref{FP Bit Twiddling}.
-
address@hidden significand
address@hidden long long int significand (double @var{x})
-
address@hidden (BSD):  @ref{Normalization Functions}.
-
address@hidden significandf
address@hidden long long int significandf (float @var{x})
-
address@hidden (BSD):  @ref{Normalization Functions}.
-
address@hidden significandl
address@hidden long long int significandl (long double @var{x})
-
address@hidden (BSD):  @ref{Normalization Functions}.
-
address@hidden sin
address@hidden double sin (double @var{x})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden sincos
address@hidden void sincos (double @var{x}, double address@hidden, double 
address@hidden)
-
address@hidden (GNU):  @ref{Trig Functions}.
-
address@hidden sincosf
address@hidden void sincosf (float @var{x}, float address@hidden, float 
address@hidden)
-
address@hidden (GNU):  @ref{Trig Functions}.
-
address@hidden sincosl
address@hidden void sincosl (long double @var{x}, long double address@hidden, 
long double address@hidden)
-
address@hidden (GNU):  @ref{Trig Functions}.
-
address@hidden sinf
address@hidden float sinf (float @var{x})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden sinh
address@hidden double sinh (double @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden sinhf
address@hidden float sinhf (float @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden sinhl
address@hidden long double sinhl (long double @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden sinl
address@hidden long double sinl (long double @var{x})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden sleep
address@hidden unsigned int sleep (unsigned int @var{seconds})
-
address@hidden (POSIX.1):  @ref{Sleeping}.
-
address@hidden snprintf
address@hidden int snprintf (char address@hidden, size_t @var{size}, const char 
address@hidden, @dots{})
-
address@hidden (GNU):  @ref{Formatted Output Functions}.
-
address@hidden sprintf
address@hidden int sprintf (char address@hidden, const char address@hidden, 
@dots{})
-
address@hidden (ISO):  @ref{Formatted Output Functions}.
-
address@hidden sqrt
address@hidden double sqrt (double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden sqrtf
address@hidden float sqrtf (float @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden sqrtl
address@hidden long double sqrtl (long double @var{x})
-
address@hidden (ISO):  @ref{Exponents and Logarithms}.
-
address@hidden srand
address@hidden void srand (unsigned int @var{seed})
-
address@hidden (ISO):  @ref{ISO Random}.
-
address@hidden srand48
address@hidden void srand48 (long int @var{seedval})
-
address@hidden (SVID):  @ref{SVID Random}.
-
address@hidden srand48_r
address@hidden int srand48_r (long int @var{seedval}, struct drand48_data 
address@hidden)
-
address@hidden (GNU):  @ref{SVID Random}.
-
address@hidden srandom
address@hidden void srandom (unsigned int @var{seed})
-
address@hidden (BSD):  @ref{BSD Random}.
-
address@hidden srandom_r
address@hidden int srandom_r (unsigned int @var{seed}, struct random_data 
address@hidden)
-
address@hidden (GNU):  @ref{BSD Random}.
-
address@hidden sscanf
address@hidden int sscanf (const char address@hidden, const char 
address@hidden, @dots{})
-
address@hidden (ISO):  @ref{Formatted Input Functions}.
-
address@hidden stderr
address@hidden FILE * stderr
-
address@hidden (ISO):  @ref{Standard Streams}.
-
address@hidden stdin
address@hidden FILE * stdin
-
address@hidden (ISO):  @ref{Standard Streams}.
-
address@hidden stdout
address@hidden FILE * stdout
-
address@hidden (ISO):  @ref{Standard Streams}.
-
address@hidden stime
address@hidden int stime (time_t address@hidden)
-
address@hidden (SVID, XPG):  @ref{Simple Calendar Time}.
-
address@hidden stpcpy
address@hidden char * stpcpy (char *restrict @var{to}, const char *restrict 
@var{from})
-
address@hidden (Unknown origin):  @ref{Copying and Concatenation}.
-
address@hidden stpncpy
address@hidden char * stpncpy (char *restrict @var{to}, const char *restrict 
@var{from}, size_t @var{size})
-
address@hidden (GNU):  @ref{Copying and Concatenation}.
-
address@hidden strcasecmp
address@hidden int strcasecmp (const char address@hidden, const char 
address@hidden)
-
address@hidden (BSD):  @ref{String/Array Comparison}.
-
address@hidden strcasestr
address@hidden char * strcasestr (const char address@hidden, const char 
address@hidden)
-
address@hidden (GNU):  @ref{Search Functions}.
-
address@hidden strcat
address@hidden char * strcat (char *restrict @var{to}, const char *restrict 
@var{from})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden strchr
address@hidden char * strchr (const char address@hidden, int @var{c})
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden strchrnul
address@hidden char * strchrnul (const char address@hidden, int @var{c})
-
address@hidden (GNU):  @ref{Search Functions}.
-
address@hidden strcmp
address@hidden int strcmp (const char address@hidden, const char address@hidden)
-
address@hidden (ISO):  @ref{String/Array Comparison}.
-
address@hidden strcoll
address@hidden int strcoll (const char address@hidden, const char 
address@hidden)
-
address@hidden (ISO):  @ref{Collation Functions}.
-
address@hidden strcpy
address@hidden char * strcpy (char *restrict @var{to}, const char *restrict 
@var{from})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden strcspn
address@hidden size_t strcspn (const char address@hidden, const char 
address@hidden)
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden strdup
address@hidden char * strdup (const char address@hidden)
-
address@hidden (SVID):  @ref{Copying and Concatenation}.
-
address@hidden strdupa
address@hidden char * strdupa (const char address@hidden)
-
address@hidden (GNU):  @ref{Copying and Concatenation}.
-
address@hidden strerror
address@hidden char * strerror (int @var{errnum})
-
address@hidden (ISO):  @ref{Error Messages}.
-
address@hidden strerror_r
address@hidden char * strerror_r (int @var{errnum}, char address@hidden, size_t 
@var{n})
-
address@hidden (GNU):  @ref{Error Messages}.
-
address@hidden strfry
address@hidden char * strfry (char address@hidden)
-
address@hidden (GNU):  @ref{strfry}.
-
address@hidden strftime
address@hidden size_t strftime (char address@hidden, size_t @var{size}, const 
char address@hidden, const struct tm address@hidden)
-
address@hidden (ISO):  @ref{Formatting Calendar Time}.
-
address@hidden strlen
address@hidden size_t strlen (const char address@hidden)
-
address@hidden (ISO):  @ref{String Length}.
-
address@hidden strncasecmp
address@hidden int strncasecmp (const char address@hidden, const char 
address@hidden, size_t @var{n})
-
address@hidden (BSD):  @ref{String/Array Comparison}.
-
address@hidden strncat
address@hidden char * strncat (char *restrict @var{to}, const char *restrict 
@var{from}, size_t @var{size})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden strncmp
address@hidden int strncmp (const char address@hidden, const char 
address@hidden, size_t @var{size})
-
address@hidden (ISO):  @ref{String/Array Comparison}.
-
address@hidden strncpy
address@hidden char * strncpy (char *restrict @var{to}, const char *restrict 
@var{from}, size_t @var{size})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden strndup
address@hidden char * strndup (const char address@hidden, size_t @var{size})
-
address@hidden (GNU):  @ref{Copying and Concatenation}.
-
address@hidden strndupa
address@hidden char * strndupa (const char address@hidden, size_t @var{size})
-
address@hidden (GNU):  @ref{Copying and Concatenation}.
-
address@hidden strnlen
address@hidden size_t strnlen (const char address@hidden, size_t @var{maxlen})
-
address@hidden (GNU):  @ref{String Length}.
-
address@hidden strpbrk
address@hidden char * strpbrk (const char address@hidden, const char 
address@hidden)
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden strptime
address@hidden char * strptime (const char address@hidden, const char 
address@hidden, struct tm address@hidden)
-
address@hidden (XPG4):  @ref{Low-Level Time String Parsing}.
-
address@hidden strrchr
address@hidden char * strrchr (const char address@hidden, int @var{c})
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden strsep
address@hidden char * strsep (char address@hidden, const char address@hidden)
-
address@hidden (BSD):  @ref{Finding Tokens in a String}.
-
address@hidden strspn
address@hidden size_t strspn (const char address@hidden, const char 
address@hidden)
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden strstr
address@hidden char * strstr (const char address@hidden, const char 
address@hidden)
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden strtod
address@hidden double strtod (const char *restrict @var{string}, char 
**restrict @var{tailptr})
-
address@hidden (ISO):  @ref{Parsing of Floats}.
-
address@hidden strtof
address@hidden float strtof (const char address@hidden, char address@hidden)
-
address@hidden (ISO):  @ref{Parsing of Floats}.
-
address@hidden strtoimax
address@hidden intmax_t strtoimax (const char *restrict @var{string}, char 
**restrict @var{tailptr}, int @var{base})
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden strtok
address@hidden char * strtok (char *restrict @var{newstring}, const char 
*restrict @var{delimiters})
-
address@hidden (ISO):  @ref{Finding Tokens in a String}.
-
address@hidden strtok_r
address@hidden char * strtok_r (char address@hidden, const char address@hidden, 
char address@hidden)
-
address@hidden (POSIX):  @ref{Finding Tokens in a String}.
-
address@hidden strtol
address@hidden long int strtol (const char *restrict @var{string}, char 
**restrict @var{tailptr}, int @var{base})
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden strtold
address@hidden long double strtold (const char address@hidden, char 
address@hidden)
-
address@hidden (ISO):  @ref{Parsing of Floats}.
-
address@hidden strtoll
address@hidden long long int strtoll (const char *restrict @var{string}, char 
**restrict @var{tailptr}, int @var{base})
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden strtoq
address@hidden long long int strtoq (const char *restrict @var{string}, char 
**restrict @var{tailptr}, int @var{base})
-
address@hidden (BSD):  @ref{Parsing of Integers}.
-
address@hidden strtoul
address@hidden unsigned long int strtoul (const char *retrict @var{string}, 
char **restrict @var{tailptr}, int @var{base})
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden strtoull
address@hidden unsigned long long int strtoull (const char *restrict 
@var{string}, char **restrict @var{tailptr}, int @var{base})
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden strtoumax
address@hidden uintmax_t strtoumax (const char *restrict @var{string}, char 
**restrict @var{tailptr}, int @var{base})
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden strtouq
address@hidden unsigned long long int strtouq (const char *restrict 
@var{string}, char **restrict @var{tailptr}, int @var{base})
-
address@hidden (BSD):  @ref{Parsing of Integers}.
-
address@hidden struct argp
address@hidden struct argp
-
address@hidden (GNU):  @ref{Argp Parsers}.
-
address@hidden struct argp_child
address@hidden struct argp_child
-
address@hidden (GNU):  @ref{Argp Children}.
-
address@hidden struct argp_option
address@hidden struct argp_option
-
address@hidden (GNU):  @ref{Argp Option Vectors}.
-
address@hidden struct argp_state
address@hidden struct argp_state
-
address@hidden (GNU):  @ref{Argp Parsing State}.
-
address@hidden struct __gconv_step
address@hidden struct __gconv_step
-
address@hidden (GNU):  @ref{glibc iconv Implementation}.
-
address@hidden struct __gconv_step_data
address@hidden struct __gconv_step_data
-
address@hidden (GNU):  @ref{glibc iconv Implementation}.
-
address@hidden struct itimerval
address@hidden struct itimerval
-
address@hidden/time.h} (BSD):  @ref{Setting an Alarm}.
-
address@hidden struct lconv
address@hidden struct lconv
-
address@hidden (ISO):  @ref{The Lame Way to Locale Data}.
-
address@hidden struct mallinfo
address@hidden struct mallinfo
-
address@hidden (GNU):  @ref{Statistics of Malloc}.
-
address@hidden struct obstack
address@hidden struct obstack
-
address@hidden (GNU):  @ref{Creating Obstacks}.
-
address@hidden struct option
address@hidden struct option
-
address@hidden (GNU):  @ref{Getopt Long Options}.
-
address@hidden struct printf_info
address@hidden struct printf_info
-
address@hidden (GNU):  @ref{Conversion Specifier Options}.
-
address@hidden struct random_data
address@hidden struct random_data
-
address@hidden (GNU):  @ref{BSD Random}.
-
address@hidden struct timespec
address@hidden struct timespec
-
address@hidden/time.h} (POSIX.1):  @ref{Elapsed Time}.
-
address@hidden struct timeval
address@hidden struct timeval
-
address@hidden/time.h} (BSD):  @ref{Elapsed Time}.
-
address@hidden struct timezone
address@hidden struct timezone
-
address@hidden/time.h} (BSD):  @ref{High-Resolution Calendar}.
-
address@hidden struct tm
address@hidden struct tm
-
address@hidden (ISO):  @ref{Broken-down Time}.
-
address@hidden struct tms
address@hidden struct tms
-
address@hidden/times.h} (POSIX.1):  @ref{Processor Time}.
-
address@hidden strverscmp
address@hidden int strverscmp (const char address@hidden, const char 
address@hidden)
-
address@hidden (GNU):  @ref{String/Array Comparison}.
-
address@hidden strxfrm
address@hidden size_t strxfrm (char *restrict @var{to}, const char *restrict 
@var{from}, size_t @var{size})
-
address@hidden (ISO):  @ref{Collation Functions}.
-
address@hidden _SVID_SOURCE
address@hidden _SVID_SOURCE
-
-(GNU):  @ref{Feature-Test Macros}.
-
address@hidden swprintf
address@hidden int swprintf (wchar_t address@hidden, size_t @var{size}, const 
wchar_t address@hidden, @dots{})
-
address@hidden (GNU):  @ref{Formatted Output Functions}.
-
address@hidden swscanf
address@hidden int swscanf (const wchar_t address@hidden, const char 
address@hidden, @dots{})
-
address@hidden (ISO):  @ref{Formatted Input Functions}.
-
address@hidden syscall
address@hidden long int syscall (long int @var{sysno}, ...)
-
address@hidden (Undocumented):  @ref{System Calls}.
-
address@hidden tan
address@hidden double tan (double @var{x})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden tanf
address@hidden float tanf (float @var{x})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden tanh
address@hidden double tanh (double @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden tanhf
address@hidden float tanhf (float @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden tanhl
address@hidden long double tanhl (long double @var{x})
-
address@hidden (ISO):  @ref{Hyperbolic Functions}.
-
address@hidden tanl
address@hidden long double tanl (long double @var{x})
-
address@hidden (ISO):  @ref{Trig Functions}.
-
address@hidden tdelete
address@hidden void * tdelete (const void address@hidden, void address@hidden, 
comparison_fn_t @var{compar})
-
address@hidden (SVID):  @ref{Tree Search Function}.
-
address@hidden tdestroy
address@hidden void tdestroy (void address@hidden, __free_fn_t @var{freefct})
-
address@hidden (GNU):  @ref{Tree Search Function}.
-
address@hidden textdomain
address@hidden char * textdomain (const char address@hidden)
-
address@hidden (GNU):  @ref{Locating gettext catalog}.
-
address@hidden tfind
address@hidden void * tfind (const void address@hidden, void *const 
address@hidden, comparison_fn_t @var{compar})
-
address@hidden (SVID):  @ref{Tree Search Function}.
-
address@hidden tgamma
address@hidden double tgamma (double @var{x})
-
address@hidden (XPG, ISO):  @ref{Special Functions}.
-
address@hidden tgammaf
address@hidden float tgammaf (float @var{x})
-
address@hidden (XPG, ISO):  @ref{Special Functions}.
-
address@hidden tgammal
address@hidden long double tgammal (long double @var{x})
-
address@hidden (XPG, ISO):  @ref{Special Functions}.
-
address@hidden time
address@hidden time_t time (time_t address@hidden)
-
address@hidden (ISO):  @ref{Simple Calendar Time}.
-
address@hidden timegm
address@hidden time_t timegm (struct tm address@hidden)
-
address@hidden (Undocumented):  @ref{Broken-down Time}.
-
address@hidden timelocal
address@hidden time_t timelocal (struct tm address@hidden)
-
address@hidden (Undocumented):  @ref{Broken-down Time}.
-
address@hidden times
address@hidden clock_t times (struct tms address@hidden)
-
address@hidden/times.h} (POSIX.1):  @ref{Processor Time}.
-
address@hidden time_t
address@hidden time_t
-
address@hidden (ISO):  @ref{Simple Calendar Time}.
-
address@hidden timezone
address@hidden long int timezone
-
address@hidden (SVID):  @ref{Time Zone Functions}.
-
address@hidden toascii
address@hidden int toascii (int @var{c})
-
address@hidden (SVID, BSD):  @ref{Case Conversion}.
-
address@hidden tolower
address@hidden int tolower (int @var{c})
-
address@hidden (ISO):  @ref{Case Conversion}.
-
address@hidden _tolower
address@hidden int _tolower (int @var{c})
-
address@hidden (SVID):  @ref{Case Conversion}.
-
address@hidden toupper
address@hidden int toupper (int @var{c})
-
address@hidden (ISO):  @ref{Case Conversion}.
-
address@hidden _toupper
address@hidden int _toupper (int @var{c})
-
address@hidden (SVID):  @ref{Case Conversion}.
-
address@hidden towctrans
address@hidden wint_t towctrans (wint_t @var{wc}, wctrans_t @var{desc})
-
address@hidden (ISO):  @ref{Wide-Character Case Conversion}.
-
address@hidden towlower
address@hidden wint_t towlower (wint_t @var{wc})
-
address@hidden (ISO):  @ref{Wide-Character Case Conversion}.
-
address@hidden towupper
address@hidden wint_t towupper (wint_t @var{wc})
-
address@hidden (ISO):  @ref{Wide-Character Case Conversion}.
-
address@hidden trunc
address@hidden double trunc (double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden truncf
address@hidden float truncf (float @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden truncl
address@hidden long double truncl (long double @var{x})
-
address@hidden (ISO):  @ref{Rounding Functions}.
-
address@hidden tsearch
address@hidden void * tsearch (const void address@hidden, void address@hidden, 
comparison_fn_t @var{compar})
-
address@hidden (SVID):  @ref{Tree Search Function}.
-
address@hidden twalk
address@hidden void twalk (const void address@hidden, __action_fn_t 
@var{action})
-
address@hidden (SVID):  @ref{Tree Search Function}.
-
address@hidden tzname
address@hidden char * tzname [2]
-
address@hidden (POSIX.1):  @ref{Time Zone Functions}.
-
address@hidden tzset
address@hidden void tzset (void)
-
address@hidden (POSIX.1):  @ref{Time Zone Functions}.
-
address@hidden ungetc
address@hidden int ungetc (int @var{c}, FILE address@hidden)
-
address@hidden (ISO):  @ref{How Unread}.
-
address@hidden ungetwc
address@hidden wint_t ungetwc (wint_t @var{wc}, FILE address@hidden)
-
address@hidden (ISO):  @ref{How Unread}.
-
address@hidden unsetenv
address@hidden int unsetenv (const char address@hidden)
-
address@hidden (BSD):  @ref{Environment Access}.
-
address@hidden valloc
address@hidden void * valloc (size_t @var{size})
-
address@hidden, @file{stdlib.h} (BSD):  @ref{Aligned Memory Blocks}.
-
address@hidden vasprintf
address@hidden int vasprintf (char address@hidden, const char address@hidden, 
va_list @var{ap})
-
address@hidden (GNU):  @ref{Variable Arguments Output}.
-
address@hidden verr
address@hidden void verr (int @var{status}, const char address@hidden, va_list)
-
address@hidden (BSD):  @ref{Error Messages}.
-
address@hidden verrx
address@hidden void verrx (int @var{status}, const char address@hidden, va_list)
-
address@hidden (BSD):  @ref{Error Messages}.
-
address@hidden vfprintf
address@hidden int vfprintf (FILE address@hidden, const char address@hidden, 
va_list @var{ap})
-
address@hidden (ISO):  @ref{Variable Arguments Output}.
-
address@hidden vfscanf
address@hidden int vfscanf (FILE address@hidden, const char address@hidden, 
va_list @var{ap})
-
address@hidden (ISO):  @ref{Variable Arguments Input}.
-
address@hidden vfwprintf
address@hidden int vfwprintf (FILE address@hidden, const wchar_t 
address@hidden, va_list @var{ap})
-
address@hidden (ISO):  @ref{Variable Arguments Output}.
-
address@hidden vfwscanf
address@hidden int vfwscanf (FILE address@hidden, const wchar_t address@hidden, 
va_list @var{ap})
-
address@hidden (ISO):  @ref{Variable Arguments Input}.
-
address@hidden vprintf
address@hidden int vprintf (const char address@hidden, va_list @var{ap})
-
address@hidden (ISO):  @ref{Variable Arguments Output}.
-
address@hidden vscanf
address@hidden int vscanf (const char address@hidden, va_list @var{ap})
-
address@hidden (ISO):  @ref{Variable Arguments Input}.
-
address@hidden vsnprintf
address@hidden int vsnprintf (char address@hidden, size_t @var{size}, const 
char address@hidden, va_list @var{ap})
-
address@hidden (GNU):  @ref{Variable Arguments Output}.
-
address@hidden vsprintf
address@hidden int vsprintf (char address@hidden, const char address@hidden, 
va_list @var{ap})
-
address@hidden (ISO):  @ref{Variable Arguments Output}.
-
address@hidden vsscanf
address@hidden int vsscanf (const char address@hidden, const char 
address@hidden, va_list @var{ap})
-
address@hidden (ISO):  @ref{Variable Arguments Input}.
-
address@hidden vswprintf
address@hidden int vswprintf (wchar_t address@hidden, size_t @var{size}, const 
wchar_t address@hidden, va_list @var{ap})
-
address@hidden (GNU):  @ref{Variable Arguments Output}.
-
address@hidden vswscanf
address@hidden int vswscanf (const wchar_t address@hidden, const wchar_t 
address@hidden, va_list @var{ap})
-
address@hidden (ISO):  @ref{Variable Arguments Input}.
-
address@hidden vwarn
address@hidden void vwarn (const char address@hidden, va_list)
-
address@hidden (BSD):  @ref{Error Messages}.
-
address@hidden vwarnx
address@hidden void vwarnx (const char address@hidden, va_list)
-
address@hidden (BSD):  @ref{Error Messages}.
-
address@hidden vwprintf
address@hidden int vwprintf (const wchar_t address@hidden, va_list @var{ap})
-
address@hidden (ISO):  @ref{Variable Arguments Output}.
-
address@hidden vwscanf
address@hidden int vwscanf (const wchar_t address@hidden, va_list @var{ap})
-
address@hidden (ISO):  @ref{Variable Arguments Input}.
-
address@hidden warn
address@hidden void warn (const char address@hidden, @dots{})
-
address@hidden (BSD):  @ref{Error Messages}.
-
address@hidden warnx
address@hidden void warnx (const char address@hidden, @dots{})
-
address@hidden (BSD):  @ref{Error Messages}.
-
address@hidden WCHAR_MAX
address@hidden wint_t WCHAR_MAX
-
address@hidden (ISO):  @ref{Extended Char Intro}.
-
address@hidden WCHAR_MIN
address@hidden wint_t WCHAR_MIN
-
address@hidden (ISO):  @ref{Extended Char Intro}.
-
address@hidden wchar_t
address@hidden wchar_t
-
address@hidden (ISO):  @ref{Extended Char Intro}.
-
address@hidden wcpcpy
address@hidden wchar_t * wcpcpy (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom})
-
address@hidden (GNU):  @ref{Copying and Concatenation}.
-
address@hidden wcpncpy
address@hidden wchar_t * wcpncpy (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom}, size_t @var{size})
-
address@hidden (GNU):  @ref{Copying and Concatenation}.
-
address@hidden wcrtomb
address@hidden size_t wcrtomb (char *restrict @var{s}, wchar_t @var{wc}, 
mbstate_t *restrict @var{ps})
-
address@hidden (ISO):  @ref{Converting a Character}.
-
address@hidden wcscasecmp
address@hidden int wcscasecmp (const wchar_t address@hidden, const wchar_T 
address@hidden)
-
address@hidden (GNU):  @ref{String/Array Comparison}.
-
address@hidden wcscat
address@hidden wchar_t * wcscat (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden wcschr
address@hidden wchar_t * wcschr (const wchar_t address@hidden, int @var{wc})
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden wcschrnul
address@hidden wchar_t * wcschrnul (const wchar_t address@hidden, wchar_t 
@var{wc})
-
address@hidden (GNU):  @ref{Search Functions}.
-
address@hidden wcscmp
address@hidden int wcscmp (const wchar_t address@hidden, const wchar_t 
address@hidden)
-
address@hidden (ISO):  @ref{String/Array Comparison}.
-
address@hidden wcscoll
address@hidden int wcscoll (const wchar_t address@hidden, const wchar_t 
address@hidden)
-
address@hidden (ISO):  @ref{Collation Functions}.
-
address@hidden wcscpy
address@hidden wchar_t * wcscpy (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden wcscspn
address@hidden size_t wcscspn (const wchar_t address@hidden, const wchar_t 
address@hidden)
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden wcsdup
address@hidden wchar_t * wcsdup (const wchar_t address@hidden)
-
address@hidden (GNU):  @ref{Copying and Concatenation}.
-
address@hidden wcsftime
address@hidden size_t wcsftime (wchar_t address@hidden, size_t @var{size}, 
const wchar_t address@hidden, const struct tm address@hidden)
-
address@hidden (ISO/Amend1):  @ref{Formatting Calendar Time}.
-
address@hidden wcslen
address@hidden size_t wcslen (const wchar_t address@hidden)
-
address@hidden (ISO):  @ref{String Length}.
-
address@hidden wcsncasecmp
address@hidden int wcsncasecmp (const wchar_t address@hidden, const wchar_t 
address@hidden, size_t @var{n})
-
address@hidden (GNU):  @ref{String/Array Comparison}.
-
address@hidden wcsncat
address@hidden wchar_t * wcsncat (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom}, size_t @var{size})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden wcsncmp
address@hidden int wcsncmp (const wchar_t address@hidden, const wchar_t 
address@hidden, size_t @var{size})
-
address@hidden (ISO):  @ref{String/Array Comparison}.
-
address@hidden wcsncpy
address@hidden wchar_t * wcsncpy (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom}, size_t @var{size})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden wcsnlen
address@hidden size_t wcsnlen (const wchar_t address@hidden, size_t 
@var{maxlen})
-
address@hidden (GNU):  @ref{String Length}.
-
address@hidden wcsnrtombs
address@hidden size_t wcsnrtombs (char *restrict @var{dst}, const wchar_t 
**restrict @var{src}, size_t @var{nwc}, size_t @var{len}, mbstate_t *restrict 
@var{ps})
-
address@hidden (GNU):  @ref{Converting Strings}.
-
address@hidden wcspbrk
address@hidden wchar_t * wcspbrk (const wchar_t address@hidden, const wchar_t 
address@hidden)
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden wcsrchr
address@hidden wchar_t * wcsrchr (const wchar_t address@hidden, wchar_t @var{c})
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden wcsrtombs
address@hidden size_t wcsrtombs (char *restrict @var{dst}, const wchar_t 
**restrict @var{src}, size_t @var{len}, mbstate_t *restrict @var{ps})
-
address@hidden (ISO):  @ref{Converting Strings}.
-
address@hidden wcsspn
address@hidden size_t wcsspn (const wchar_t address@hidden, const wchar_t 
address@hidden)
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden wcsstr
address@hidden wchar_t * wcsstr (const wchar_t address@hidden, const wchar_t 
address@hidden)
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden wcstod
address@hidden double wcstod (const wchar_t *restrict @var{string}, wchar_t 
**restrict @var{tailptr})
-
address@hidden (ISO):  @ref{Parsing of Floats}.
-
address@hidden wcstof
address@hidden float wcstof (const wchar_t address@hidden, wchar_t 
address@hidden)
-
address@hidden (ISO):  @ref{Parsing of Floats}.
-
address@hidden wcstoimax
address@hidden intmax_t wcstoimax (const wchar_t *restrict @var{string}, 
wchar_t **restrict @var{tailptr}, int @var{base})
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden wcstok
address@hidden wchar_t * wcstok (wchar_t address@hidden, const char 
address@hidden)
-
address@hidden (ISO):  @ref{Finding Tokens in a String}.
-
address@hidden wcstol
address@hidden long int wcstol (const wchar_t *restrict @var{string}, wchar_t 
**restrict @var{tailptr}, int @var{base})
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden wcstold
address@hidden long double wcstold (const wchar_t address@hidden, wchar_t 
address@hidden)
-
address@hidden (ISO):  @ref{Parsing of Floats}.
-
address@hidden wcstoll
address@hidden long long int wcstoll (const wchar_t *restrict @var{string}, 
wchar_t **restrict @var{tailptr}, int @var{base})
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden wcstombs
address@hidden size_t wcstombs (char address@hidden, const wchar_t 
address@hidden, size_t @var{size})
-
address@hidden (ISO):  @ref{Nonreentrant String Conversion}.
-
address@hidden wcstoq
address@hidden long long int wcstoq (const wchar_t *restrict @var{string}, 
wchar_t **restrict @var{tailptr}, int @var{base})
-
address@hidden (GNU):  @ref{Parsing of Integers}.
-
address@hidden wcstoul
address@hidden unsigned long int wcstoul (const wchar_t *restrict @var{string}, 
wchar_t **restrict @var{tailptr}, int @var{base})
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden wcstoull
address@hidden unsigned long long int wcstoull (const wchar_t *restrict 
@var{string}, wchar_t **restrict @var{tailptr}, int @var{base})
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden wcstoumax
address@hidden uintmax_t wcstoumax (const wchar_t *restrict @var{string}, 
wchar_t **restrict @var{tailptr}, int @var{base})
-
address@hidden (ISO):  @ref{Parsing of Integers}.
-
address@hidden wcstouq
address@hidden unsigned long long int wcstouq (const wchar_t *restrict 
@var{string}, wchar_t **restrict @var{tailptr}, int @var{base})
-
address@hidden (GNU):  @ref{Parsing of Integers}.
-
address@hidden wcswcs
address@hidden wchar_t * wcswcs (const wchar_t address@hidden, const wchar_t 
address@hidden)
-
address@hidden (XPG):  @ref{Search Functions}.
-
address@hidden wcsxfrm
address@hidden size_t wcsxfrm (wchar_t *restrict @var{wto}, const wchar_t 
address@hidden, size_t @var{size})
-
address@hidden (ISO):  @ref{Collation Functions}.
-
address@hidden wctob
address@hidden int wctob (wint_t @var{c})
-
address@hidden (ISO):  @ref{Converting a Character}.
-
address@hidden wctomb
address@hidden int wctomb (char address@hidden, wchar_t @var{wchar})
-
address@hidden (ISO):  @ref{Nonreentrant Character Conversion}.
-
address@hidden wctrans
address@hidden wctrans_t wctrans (const char address@hidden)
-
address@hidden (ISO):  @ref{Wide-Character Case Conversion}.
-
address@hidden wctrans_t
address@hidden wctrans_t
-
address@hidden (ISO):  @ref{Wide-Character Case Conversion}.
-
address@hidden wctype
address@hidden wctype_t wctype (const char address@hidden)
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden wctype_t
address@hidden wctype_t
-
address@hidden (ISO):  @ref{Classification of Wide Characters}.
-
address@hidden WEOF
address@hidden int WEOF
-
address@hidden (ISO):  @ref{EOF and Errors}.
-
address@hidden WEOF
address@hidden wint_t WEOF
-
address@hidden (ISO):  @ref{Extended Char Intro}.
-
address@hidden wint_t
address@hidden wint_t
-
address@hidden (ISO):  @ref{Extended Char Intro}.
-
address@hidden wmemchr
address@hidden wchar_t * wmemchr (const wchar_t address@hidden, wchar_t 
@var{wc}, size_t @var{size})
-
address@hidden (ISO):  @ref{Search Functions}.
-
address@hidden wmemcmp
address@hidden int wmemcmp (const wchar_t address@hidden, const wchar_t 
address@hidden, size_t @var{size})
-
address@hidden (ISO):  @ref{String/Array Comparison}.
-
address@hidden wmemcpy
address@hidden wchar_t * wmemcpy (wchar_t *restrict @var{wto}, const wchar_t 
*restruct @var{wfrom}, size_t @var{size})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden wmemmove
address@hidden wchar_t * wmemmove (wchar address@hidden, const wchar_t 
address@hidden, size_t @var{size})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden wmempcpy
address@hidden wchar_t * wmempcpy (wchar_t *restrict @var{wto}, const wchar_t 
*restrict @var{wfrom}, size_t @var{size})
-
address@hidden (GNU):  @ref{Copying and Concatenation}.
-
address@hidden wmemset
address@hidden wchar_t * wmemset (wchar_t address@hidden, wchar_t @var{wc}, 
size_t @var{size})
-
address@hidden (ISO):  @ref{Copying and Concatenation}.
-
address@hidden wordexp
address@hidden int wordexp (const char address@hidden, wordexp_t 
address@hidden, int @var{flags})
-
address@hidden (POSIX.2):  @ref{Calling Wordexp}.
-
address@hidden wordexp_t
address@hidden wordexp_t
-
address@hidden (POSIX.2):  @ref{Calling Wordexp}.
-
address@hidden wordfree
address@hidden void wordfree (wordexp_t address@hidden)
-
address@hidden (POSIX.2):  @ref{Calling Wordexp}.
-
address@hidden wprintf
address@hidden int wprintf (const wchar_t address@hidden, @dots{})
-
address@hidden (ISO):  @ref{Formatted Output Functions}.
-
address@hidden WRDE_APPEND
address@hidden WRDE_APPEND
-
address@hidden (POSIX.2):  @ref{Flags for Wordexp}.
-
address@hidden WRDE_BADCHAR
address@hidden WRDE_BADCHAR
-
address@hidden (POSIX.2):  @ref{Calling Wordexp}.
-
address@hidden WRDE_BADVAL
address@hidden WRDE_BADVAL
-
address@hidden (POSIX.2):  @ref{Calling Wordexp}.
-
address@hidden WRDE_CMDSUB
address@hidden WRDE_CMDSUB
-
address@hidden (POSIX.2):  @ref{Calling Wordexp}.
-
address@hidden WRDE_DOOFFS
address@hidden WRDE_DOOFFS
-
address@hidden (POSIX.2):  @ref{Flags for Wordexp}.
-
address@hidden WRDE_NOCMD
address@hidden WRDE_NOCMD
-
address@hidden (POSIX.2):  @ref{Flags for Wordexp}.
-
address@hidden WRDE_NOSPACE
address@hidden WRDE_NOSPACE
-
address@hidden (POSIX.2):  @ref{Calling Wordexp}.
-
address@hidden WRDE_REUSE
address@hidden WRDE_REUSE
-
address@hidden (POSIX.2):  @ref{Flags for Wordexp}.
-
address@hidden WRDE_SHOWERR
address@hidden WRDE_SHOWERR
-
address@hidden (POSIX.2):  @ref{Flags for Wordexp}.
-
address@hidden WRDE_SYNTAX
address@hidden WRDE_SYNTAX
-
address@hidden (POSIX.2):  @ref{Calling Wordexp}.
-
address@hidden WRDE_UNDEF
address@hidden WRDE_UNDEF
-
address@hidden (POSIX.2):  @ref{Flags for Wordexp}.
-
address@hidden wscanf
address@hidden int wscanf (const wchar_t address@hidden, @dots{})
-
address@hidden (ISO):  @ref{Formatted Input Functions}.
-
address@hidden _XOPEN_SOURCE
address@hidden _XOPEN_SOURCE
-
-(X/Open):  @ref{Feature-Test Macros}.
-
address@hidden _XOPEN_SOURCE_EXTENDED
address@hidden _XOPEN_SOURCE_EXTENDED
-
-(X/Open):  @ref{Feature-Test Macros}.
-
address@hidden y0
address@hidden double y0 (double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden y0f
address@hidden float y0f (float @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden y0l
address@hidden long double y0l (long double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden y1
address@hidden double y1 (double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden y1f
address@hidden float y1f (float @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden y1l
address@hidden long double y1l (long double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden yn
address@hidden double yn (int n, double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden ynf
address@hidden float ynf (int n, float @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden ynl
address@hidden long double ynl (int n, long double @var{x})
-
address@hidden (SVID):  @ref{Special Functions}.
-
address@hidden This file is generated by summary.awk from the Texinfo sources.
-
address@hidden table
address@hidden
address@hidden @rm
address@hidden iftex
-
-
address@hidden Contributors, Free Manuals, Maintenance, Top
address@hidden %MENU% Who wrote what parts of the GNU C Library
address@hidden Contributors to the GNU C Library
-
-The @sc{gnu} C Library was written originally by Roland McGrath, and is
-currently maintained by Ulrich Drepper.  Some parts of the library were
-contributed or worked on by other people.
-
address@hidden @bullet
address@hidden
-The @code{getopt} function and related code were written by Richard
-Stallman, @w{David J.} MacKenzie and @w{Roland McGrath}.
-
address@hidden
-The merge sort function @code{qsort} was written by Michael J. Haertel.
-
address@hidden
-The quick sort function used as a fallback by @code{qsort} was written
-by Douglas C. Schmidt.
-
address@hidden
-The memory allocation functions @code{malloc}, @code{realloc} and
address@hidden and related code were written by Michael J. Haertel,
address@hidden Gloger} and @w{Doug Lea}.
-
address@hidden
-Fast implementations of many of the string functions (@code{memcpy},
address@hidden, etc.) were written by Torbj@"orn Granlund.
-
address@hidden
-The @file{tar.h} header file was written by David J. MacKenzie.
-
address@hidden
-The port to the MIPS DECStation running Ultrix 4
-(@code{mips-dec-ultrix4})
-was contributed by Brendan Kehoe and Ian Lance Taylor.
-
address@hidden
-The DES encryption function @code{crypt} and related functions were
-contributed by Michael Glad.
-
address@hidden
-The @code{ftw} and @code{nftw} functions were contributed by Ulrich Drepper.
-
address@hidden
-The start-up code to support address@hidden shared libraries was contributed by
-Tom Quinn.
-
address@hidden
-The @code{mktime} function was contributed by Paul Eggert.
-
address@hidden
-The port to the Sequent Symmetry running Dynix version 3
-(@code{i386-sequent-bsd}) was contributed by Jason Merrill.
-
address@hidden
-The time zone support code is derived from the public-domain time zone
-package by Arthur David Olson and his many contributors.
-
address@hidden
-The port to the DEC Alpha running OSF/1 (@code{alpha-dec-osf1}) was
-contributed by Brendan Kehoe, using some code written by Roland McGrath.
-
address@hidden
-The port to SGI machines running Irix 4 (@code{mips-sgi-irix4}) was
-contributed by Tom Quinn.
-
address@hidden
-The port of the Mach and Hurd code to the MIPS architecture
-(@address@hidden) was contributed by Kazumoto Kojima.
-
address@hidden
-The floating-point printing function used by @code{printf} and
-friends, and the floating-point reading function used by @code{scanf},
address@hidden and friends were written by Ulrich Drepper.  The
-multiprecision integer functions used in those functions are taken
-from @sc{gnu} MP, which was contributed by Torbj@"orn Granlund.
-
address@hidden
-The internationalization support in the library, and the support
-programs @code{locale} and @code{localedef}, were written by Ulrich
-Drepper.  Ulrich Drepper adapted the support code for message catalogs
-(@file{libintl.h}, etc.) from the @sc{gnu} @code{gettext} package, which he
-also wrote.  He also contributed the @code{catgets} support and the
-entire suite of multibyte- and wide-character support functions
-(@file{wctype.h}, @file{wchar.h}, etc.).
-
address@hidden
-The implementations of the @file{nsswitch.conf} mechanism and the files
-and DNS backends for it were designed and written by Ulrich Drepper and
-Roland McGrath, based on a backend interface defined by Peter Eriksson.
-
address@hidden
-The port to Linux i386/ELF (@address@hidden) was
-contributed by Ulrich Drepper, based in large part on work done in
-Hongjiu Lu's Linux version of the @sc{gnu} C Library.
-
address@hidden
-The port to Linux/m68k (@address@hidden) was
-contributed by Andreas Schwab.
-
address@hidden
-The ports to Linux/ARM (@address@hidden) and ARM
-standalone (@address@hidden), as well as parts of the
-IPv6 support code, were contributed by Philip Blundell.
-
address@hidden
-Richard Henderson contributed the ELF dynamic linking code and other
-support for the Alpha processor.
-
address@hidden
-David Mosberger-Tang contributed the port to Linux/Alpha
-(@address@hidden).
-
address@hidden
-The port to Linux on PowerPC (@address@hidden)
-was contributed by Geoffrey Keating.
-
address@hidden
-Miles Bader wrote the argp argument-parsing package, and the argz/envz
-interfaces.
-
address@hidden
-Stephen R. van den Berg contributed a highly-optimized @code{strstr} function.
-
address@hidden
-Ulrich Drepper contributed the @code{hsearch} and @code{drand48}
-families of functions; reentrant @address@hidden@code{_r}} versions of the
address@hidden family; System V shared memory and IPC support code; and
-several highly-optimized string functions for address@hidden processors.
-
address@hidden
-The math functions are taken from @code{fdlibm-5.1} by Sun
-Microsystems, as modified by J.T. Conklin, Ian Lance Taylor, Ulrich
-Drepper, Andreas Schwab and Roland McGrath.
-
address@hidden
-The @code{libio} library used to implement @code{stdio} functions on
-some platforms was written by Per Bothner and modified by Ulrich Drepper.
-
address@hidden
-Eric Youngdale and Ulrich Drepper implemented versioning of objects on
-the symbol level.
-
address@hidden
-Thorsten Kukuk provided an implementation for NIS (YP) and NIS+,
-securelevel 0, 1 and 2.
-
address@hidden
-Andreas Jaeger provided a test suite for the math library.
-
address@hidden
-Mark Kettenis implemented the utmpx interface and an utmp daemon.
-
address@hidden
-Ulrich Drepper added character conversion functions (@code{iconv}).
-
address@hidden
-Thorsten Kukuk provided an implementation for a caching daemon for NSS
-(nscd).
-
address@hidden
-Tim Waugh provided an implementation of the @sc{posix}.2 wordexp function 
family.
-
address@hidden
-Mark Kettenis provided a Hesiod NSS module.
-
address@hidden
-The Internet-related code (most of the @file{inet} subdirectory) and
-several other miscellaneous functions and header files have been
-included from 4.4 @sc{bsd} with little or no modification.  The copying
-permission notice for this code can be found in the file @file{LICENSES}
-in the source distribution.
-
address@hidden
-The random-number generation functions @code{random}, @code{srandom},
address@hidden and @code{initstate}, which are also the basis for the
address@hidden and @code{srand} functions, were written by Earl T. Cohen
-for the University of California at Berkeley and are copyrighted by the
-Regents of the University of California.  They have undergone minor
-changes to fit into the @sc{gnu} C Library and to fit the @address@hidden C} 
standard,
-but the functional code is Berkeley'address@hidden
-
address@hidden
-The DNS resolver code is taken directly from BIND 4.9.5, which
-includes copyrighted code from UC Berkeley and from Digital Equipment
-Corporation.  See the file @file{LICENSES} for the text of the DEC license.
-
address@hidden
-The code to support Sun RPC is taken verbatim from Sun's
address@hidden@sc{rpcsrc-4.0}} distribution; see the file @file{LICENSES} for 
the
-text of the license.
-
address@hidden
-Some of the support code for Mach is taken from Mach 3.0 by CMU;
-the file if_ppp.h is also copyright by CMU, but under a different license;
-see the file @file{LICENSES} for the text of the licenses.
-
address@hidden
-Many of the IA64 math functions are taken from a collection of
-``Highly Optimized Mathematical Functions for Itanium'' that Intel
-makes available under a free license; see the file @file{LICENSES} for
-details.
-
address@hidden
-The @code{getaddrinfo} and @code{getnameinfo} functions and supporting
-code were written by Craig Metz; see the file @file{LICENSES} for
-details on their licensing.
-
address@hidden
-Many of the @sc{ieee} 64-bit double precision math functions
-(in the @file{sysdeps/ieee754/dbl-64} subdirectory) come
-from the @sc{ibm} Accurate Mathematical Library, contributed by @sc{ibm}.
-
address@hidden itemize
-
-
address@hidden Free Manuals, Copying, Contributors, Top
address@hidden Free Software Needs Free Documentation
address@hidden free documentation
-
-The biggest deficiency in the free software community today is not in
-the software---it is the lack of good free documentation that we can
-include with the free software.  Many of our most important
-programs do not come with free reference manuals and free introductory
-texts.  Documentation is an essential part of any software package;
-when an important free software package does not come with a free
-manual and a free tutorial, that is a major gap.  We have many such
-gaps today.
-
-Consider Perl, for instance.  The tutorial manuals that people
-normally use are nonfree.  How did this come about?  Because the
-authors of those manuals published them with restrictive terms---no
-copying, no modification, source files not available---which exclude
-them from the free software world.
-
-That wasn't the first time this sort of thing happened, and it was far
-from the last.  Many times we have heard a @sc{gnu} user eagerly describe a
-manual that he is writing, his intended contribution to the community,
-only to learn that he had ruined everything by signing a publication
-contract to make it nonfree.
-
-Free documentation, like free software, is a matter of freedom, not
-price.  The problem with the nonfree manual is not that publishers
-charge a price for printed copies---that in itself is fine.  (The Free
-Software Foundation sells printed copies of manuals, too.)  The
-problem is the restrictions on the use of the manual.  Free manuals
-are available in source code form, and give you permission to copy and
-modify.  Nonfree manuals do not allow this.
-
-The criteria of freedom for a free manual are roughly the same as for
-free software.  Redistribution (including the normal kinds of
-commercial redistribution) must be permitted, so that the manual can
-accompany every copy of the program, both on-line and on paper.
-
-Permission for modification of the technical content is crucial too.
-When people modify the software, adding or changing features, if they
-are conscientious they will change the manual too---so they can
-provide accurate and clear documentation for the modified program.  A
-manual that leaves you no choice but to write a new manual to document
-a changed version of the program is not really available to our
-community.
-
-Some kinds of limits on the way modification is handled are
-acceptable.  For example, requirements to preserve the original
-author's copyright notice, the distribution terms, or the list of
-authors, are ok.  It is also no problem to require modified versions
-to include notice that they were modified.  Even entire sections that
-may not be deleted or changed are acceptable, as long as they deal
-with nontechnical topics (like this one).  These kinds of restrictions
-are acceptable because they don't obstruct the community's normal use
-of the manual.
-
-However, it must be possible to modify all the @emph{technical}
-content of the manual, and then distribute the result in all the usual
-media, through all the usual channels.  Otherwise, the restrictions
-obstruct the use of the manual, it is not free, and we need another
-manual to replace it.
-
-Please spread the word about this issue.  Our community continues to
-lose manuals to proprietary publishing.  If we spread the word that
-free software needs free reference manuals and free tutorials, perhaps
-the next person who wants to contribute by writing documentation will
-realize, before it is too late, that only free manuals contribute to
-the free software community.
-
-If you are writing documentation, please insist on publishing it under
-the @sc{gnu} Free Documentation License or another free documentation
-license.  Remember that this decision requires your approval---you
-don't have to let the publisher decide.  Some commercial publishers
-will use a free license if you insist, but they will not propose the
-option; it is up to you to raise the issue and say firmly that this is
-what you want.  If the publisher you are dealing with refuses, please
-try other publishers.  If you're not sure whether a proposed license
-is free, write to @email{licensing@@gnu.org}.
-
-You can encourage commercial publishers to sell more free, copylefted
-manuals and tutorials by buying them, and particularly by buying
-copies from the publishers that paid for their writing or for major
-improvements.  Meanwhile, try to avoid buying nonfree documentation
-at all.  Check the distribution terms of a manual before you buy it,
-and insist that whoever seeks your business must respect your freedom.
-Check the history of the book, and try reward the publishers that have
-paid or pay the authors to work on it.
-
-The Free Software Foundation maintains a list of free documentation
-published by other publishers, at
address@hidden:// www.fsf.org/ doc/ other-free-books.html}.
-
-
address@hidden lgpl-appendix
address@hidden Copying, Documentation License, Free Manuals, Top
address@hidden lgpl-appendix
address@hidden @sc{gnu} Lesser General Public License
address@hidden ifset
address@hidden lgpl-appendix
address@hidden @sc{gnu} Lesser General Public License
address@hidden ifclear
-
address@hidden LGPL, Lesser General Public License
address@hidden Version 2.1, February 1999
-
address@hidden
-Copyright @copyright{} 1991, 1999 Free Software Foundation, Inc.
-51 Franklin St -- Fifth Floor, Boston, MA 02110-1301, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL.  It also counts
-as the successor of the @sc{gnu} Library Public License, version 2, hence the
-version number 2.1.]
address@hidden display
-
address@hidden Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the @sc{gnu} General Public
-Licenses are intended to guarantee your freedom to share and change
-free software---to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software---typically libraries---of the Free
-Software Foundation and other authors who decide to use it.  You can use
-it too, but we suggest you first think carefully about whether this
-license or the ordinary General Public License is the better strategy to
-use in any particular case, based on the explanations below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of it
-in new free programs; and that you are informed that you can do these
-things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most @sc{gnu} software, including some libraries, is covered by the
-ordinary @sc{gnu} General Public License.  This license, the @sc{gnu} Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into nonfree programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the @dfn{Lesser} General Public License because it
-does @emph{Less} to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing nonfree programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, nonfree programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used nonfree libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in nonfree
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the @sc{gnu} C Library in
-nonfree programs enables many more people to use the whole @sc{gnu}
-operating system, as well as its variant, the @sc{gnu}/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-``work based on the library'' and a ``work that uses the library''.  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
address@hidden
address@hidden TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
address@hidden iftex
address@hidden
address@hidden @sc{gnu} LESSER GENERAL PUBLIC LICENSE
address@hidden TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
address@hidden ifinfo
-
address@hidden 0
address@hidden
-This License Agreement applies to any software library or other program
-which contains a notice placed by the copyright holder or other
-authorized party saying it may be distributed under the terms of this
-Lesser General Public License (also called ``this License'').  Each
-licensee is addressed as ``you''.
-
-  A ``library'' means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The ``Library'', below, refers to any such software library or work
-which has been distributed under these terms.  A ``work based on the
-Library'' means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term ``modification''.)
-
-  ``Source code'' for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
address@hidden
-You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
address@hidden
-You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
address@hidden a
address@hidden
-The modified work must itself be a software library.
-
address@hidden
-You must cause the files modified to carry prominent notices
-stating that you changed the files and the date of any change.
-
address@hidden
-You must cause the whole of the work to be licensed at no
-charge to all third parties under the terms of this License.
-
address@hidden
-If a facility in the modified Library refers to a function or a
-table of data to be supplied by an application program that uses
-the facility, other than as an argument passed when the facility
-is invoked, then you must make a good faith effort to ensure that,
-in the event an application does not supply such function or
-table, the facility still operates, and performs whatever part of
-its purpose remains meaningful.
-
-(For example, a function in a library to compute square roots has
-a purpose that is entirely well-defined independent of the
-application.  Therefore, Subsection 2d requires that any
-application-supplied function or table used by this function must
-be optional: if the application does not supply it, the square
-root function must still compute square roots.)
address@hidden enumerate
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
address@hidden
-You may opt to apply the terms of the ordinary @sc{gnu} General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary @sc{gnu} General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary @sc{gnu} General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary @sc{gnu} General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
address@hidden
-You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
address@hidden
-A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a ``work that uses the Library''.  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a ``work that uses the Library'' with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a ``work that uses the
-library''.  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a ``work that uses the Library'' uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small in-line
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
address@hidden
-As an exception to the Sections above, you may also combine or
-link a ``work that uses the Library'' with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
address@hidden a
address@hidden
-Accompany the work with the complete corresponding
-machine-readable source code for the Library including whatever
-changes were used in the work (which must be distributed under
-Sections 1 and 2 above); and, if the work is an executable linked
-with the Library, with the complete machine-readable ``work that
-uses the Library'', as object code and/or source code, so that the
-user can modify the Library and then relink to produce a modified
-executable containing the modified Library.  (It is understood
-that the user who changes the contents of definitions files in the
-Library will not necessarily be able to recompile the application
-to use the modified definitions.)
-
address@hidden
-Use a suitable shared library mechanism for linking with the Library.  A
-suitable mechanism is one that (1) uses at run time a copy of the
-library already present on the user's computer system, rather than
-copying library functions into the executable, and (2) will operate
-properly with a modified version of the library, if the user installs
-one, as long as the modified version is interface-compatible with the
-version that the work was made with.
-
address@hidden
-Accompany the work with a written offer, valid for at
-least three years, to give the same user the materials
-specified in Subsection 6a, above, for a charge no more
-than the cost of performing this distribution.
-
address@hidden
-If distribution of the work is made by offering access to copy
-from a designated place, offer equivalent access to copy the above
-specified materials from the same place.
-
address@hidden
-Verify that the user has already received a copy of these
-materials or that you have already sent this user a copy.
address@hidden enumerate
-
-  For an executable, the required form of the ``work that uses the
-Library'' must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies the
-executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
address@hidden
-You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
address@hidden a
address@hidden
-Accompany the combined library with a copy of the same work
-based on the Library, uncombined with any other library
-facilities.  This must be distributed under the terms of the
-Sections above.
-
address@hidden
-Give prominent notice with the combined library of the fact
-that part of it is a work based on the Library, and explaining
-where to find the accompanying uncombined form of the same work.
address@hidden enumerate
-
address@hidden
-You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
address@hidden
-You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
address@hidden
-Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
address@hidden
-If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
address@hidden
-If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
address@hidden
-The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-``any later version'', you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
address@hidden
-If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
address@hidden
address@hidden NO WARRANTY
address@hidden iftex
address@hidden
address@hidden NO WARRANTY
address@hidden ifinfo
-
address@hidden
-BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY ``AS IS'' WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
address@hidden
-IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
address@hidden enumerate
-
address@hidden
address@hidden END OF TERMS AND CONDITIONS
address@hidden iftex
address@hidden
address@hidden END OF TERMS AND CONDITIONS
address@hidden ifinfo
-
address@hidden
address@hidden How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.  It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-``copyright'' line and a pointer to where the full notice is found.
-
address@hidden
address@hidden line to give the library's name and an idea of what it does.}
-Copyright (C) @var{year}  @var{name of author}
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the @sc{gnu} Lesser General Public License as published by
-the Free Software Foundation; either version 2.1 of the License, or (at
-your option) any later version.
-
-This library is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the @sc{gnu}
-Lesser General Public License for more details.
-
-You should have received a copy of the @sc{gnu} Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
-USA.
address@hidden smallexample
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a ``copyright disclaimer'' for the library, if
-necessary.  Here is a sample; alter the names:
-
address@hidden
-Yoyodyne, Inc., hereby disclaims all copyright interest in the library
-`Frob' (a library for tweaking knobs) written by James Random Hacker.
-
address@hidden of Ty Coon}, 1 April 1990
-Ty Coon, President of Vice
address@hidden smallexample
-
-That's all there is to it!
-
-
address@hidden Documentation License, Concept Index, Copying, Top
-
address@hidden @sc{gnu} Free Documentation License
-
address@hidden FDL, @sc{gnu} Free Documentation License
address@hidden Version 1.1, March 2000
-
address@hidden
-Copyright @copyright{} 2000 Free Software Foundation, Inc.
-51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
address@hidden display
-
address@hidden 0
address@hidden
-PREAMBLE
-
-The purpose of this License is to make a manual, textbook, or other
-written document @dfn{free} in the sense of freedom: to assure everyone
-the effective freedom to copy and redistribute it, with or without
-modifying it, either commercially or noncommercially.  Secondarily,
-this License preserves for the author and publisher a way to get
-credit for their work, while not being considered responsible for
-modifications made by others.
-
-This License is a kind of ``copyleft'', which means that derivative
-works of the document must themselves be free in the same sense.  It
-complements the @sc{gnu} General Public License, which is a copyleft
-license designed for free software.
-
-We have designed this License in order to use it for manuals for free
-software, because free software needs free documentation: a free
-program should come with manuals providing the same freedoms that the
-software does.  But this License is not limited to software manuals;
-it can be used for any textual work, regardless of subject matter or
-whether it is published as a printed book.  We recommend this License
-principally for works whose purpose is instruction or reference.
-
address@hidden
-APPLICABILITY AND DEFINITIONS
-
-This License applies to any manual or other work that contains a
-notice placed by the copyright holder saying it can be distributed
-under the terms of this License.  The ``Document'', below, refers to any
-such manual or work.  Any member of the public is a licensee, and is
-addressed as ``you''.
-
-A ``Modified Version'' of the Document means any work containing the
-Document or a portion of it, either copied verbatim, or with
-modifications and/or translated into another language.
-
-A ``Secondary Section'' is a named appendix or a front-matter section of
-the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall subject
-(or to related matters) and contains nothing that could fall directly
-within that overall subject.  (For example, if the Document is in part a
-textbook of mathematics, a Secondary Section may not explain any
-mathematics.)  The relationship could be a matter of historical
-connection with the subject or with related matters, or of legal,
-commercial, philosophical, ethical or political position regarding
-them.
-
-The ``Invariant Sections'' are certain Secondary Sections whose titles
-are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License.
-
-The ``Cover Texts'' are certain short passages of text that are listed,
-as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License.
-
-A ``Transparent'' copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, whose contents can be viewed and edited directly and
-straightforwardly with generic text editors or (for images composed of
-pixels) generic paint programs or (for drawings) some widely available
-drawing editor, and that is suitable for input to text formatters or
-for automatic translation to a variety of formats suitable for input
-to text formatters.  A copy made in an otherwise Transparent file
-format whose markup has been designed to thwart or discourage
-subsequent modification by readers is not Transparent.  A copy that is
-not ``Transparent'' is called ``Opaque''.
-
-Examples of suitable formats for Transparent copies include plain
address@hidden without markup, Texinfo input format, address@hidden input 
format,
address@hidden or @acronym{XML} using a publicly available
address@hidden, and standard-conforming simple @acronym{HTML} designed
-for human modification.  Opaque formats include PostScript,
address@hidden, proprietary formats that can be read and edited only by
-proprietary word processors, @acronym{SGML} or @acronym{XML} for which
-the @acronym{DTD} and/or processing tools are not generally available,
-and the machine-generated @acronym{HTML} produced by some word
-processors for output purposes only.
-
-The ``Title Page'' means, for a printed book, the title page itself,
-plus such following pages as are needed to hold, legibly, the material
-this License requires to appear in the title page.  For works in
-formats which do not have any title page as such, ``Title Page'' means
-the text near the most prominent appearance of the work's title,
-preceding the beginning of the body of the text.
-
address@hidden
-VERBATIM COPYING
-
-You may copy and distribute the Document in any medium, either
-commercially or noncommercially, provided that this License, the
-copyright notices, and the license notice saying this License applies
-to the Document are reproduced in all copies, and that you add no other
-conditions whatsoever to those of this License.  You may not use
-technical measures to obstruct or control the reading or further
-copying of the copies you make or distribute.  However, you may accept
-compensation in exchange for copies.  If you distribute a large enough
-number of copies you must also follow the conditions in section 3.
-
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-
address@hidden
-COPYING IN QUANTITY
-
-If you publish printed copies of the Document numbering more than 100,
-and the Document's license notice requires Cover Texts, you must enclose
-the copies in covers that carry, clearly and legibly, all these Cover
-Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
-the back cover.  Both covers must also clearly and legibly identify
-you as the publisher of these copies.  The front cover must present
-the full title with all words of the title equally prominent and
-visible.  You may add other material on the covers in addition.
-Copying with changes limited to the covers, as long as they preserve
-the title of the Document and satisfy these conditions, can be treated
-as verbatim copying in other respects.
-
-If the required texts for either cover are too voluminous to fit
-legibly, you should put the first ones listed (as many as fit
-reasonably) on the actual cover, and continue the rest onto adjacent
-pages.
-
-If you publish or distribute Opaque copies of the Document numbering
-more than 100, you must either include a machine-readable Transparent
-copy along with each Opaque copy, or state in or with each Opaque copy
-a publicly-accessible computer-network location containing a complete
-Transparent copy of the Document, free of added material, which the
-general network-using public has access to download anonymously at no
-charge using public-standard network protocols.  If you use the latter
-option, you must take reasonably prudent steps, when you begin
-distribution of Opaque copies in quantity, to ensure that this
-Transparent copy will remain thus accessible at the stated location
-until at least one year after the last time you distribute an Opaque
-copy (directly or through your agents or retailers) of that edition to
-the public.
-
-It is requested, but not required, that you contact the authors of the
-Document well before redistributing any large number of copies, to give
-them a chance to provide you with an updated version of the Document.
-
address@hidden
-MODIFICATIONS
-
-You may copy and distribute a Modified Version of the Document under
-the conditions of sections 2 and 3 above, provided that you release
-the Modified Version under precisely this License, with the Modified
-Version filling the role of the Document, thus licensing distribution
-and modification of the Modified Version to whoever possesses a copy
-of it.  In addition, you must do these things in the Modified Version:
-
address@hidden A
address@hidden
-Use in the Title Page (and on the covers, if any) a title distinct
-from that of the Document, and from those of previous versions
-(which should, if there were any, be listed in the History section
-of the Document).  You may use the same title as a previous version
-if the original publisher of that version gives permission.
-
address@hidden
-List on the Title Page, as authors, one or more persons or entities
-responsible for authorship of the modifications in the Modified
-Version, together with at least five of the principal authors of the
-Document (all of its principal authors, if it has less than five).
-
address@hidden
-State on the Title page the name of the publisher of the
-Modified Version, as the publisher.
-
address@hidden
-Preserve all the copyright notices of the Document.
-
address@hidden
-Add an appropriate copyright notice for your modifications
-adjacent to the other copyright notices.
-
address@hidden
-Include, immediately after the copyright notices, a license notice
-giving the public permission to use the Modified Version under the
-terms of this License, in the form shown in the Addendum below.
-
address@hidden
-Preserve in that license notice the full lists of Invariant Sections
-and required Cover Texts given in the Document's license notice.
-
address@hidden
-Include an unaltered copy of this License.
-
address@hidden
-Preserve the section entitled ``History'', and its title, and add to
-it an item stating at least the title, year, new authors, and
-publisher of the Modified Version as given on the Title Page.  If
-there is no section entitled ``History'' in the Document, create one
-stating the title, year, authors, and publisher of the Document as
-given on its Title Page, then add an item describing the Modified
-Version as stated in the previous sentence.
-
address@hidden
-Preserve the network location, if any, given in the Document for
-public access to a Transparent copy of the Document, and likewise
-the network locations given in the Document for previous versions
-it was based on.  These may be placed in the ``History'' section.
-You may omit a network location for a work that was published at
-least four years before the Document itself, or if the original
-publisher of the version it refers to gives permission.
-
address@hidden
-In any section entitled ``Acknowledgments'' or ``Dedications'',
-preserve the section's title, and preserve in the section all the
-substance and tone of each of the contributor acknowledgments
-and/or dedications given therein.
-
address@hidden
-Preserve all the Invariant Sections of the Document,
-unaltered in their text and in their titles.  Section numbers
-or the equivalent are not considered part of the section titles.
-
address@hidden
-Delete any section entitled ``Endorsements''.  Such a section
-may not be included in the Modified Version.
-
address@hidden
-Do not retitle any existing section as ``Endorsements''
-or to conflict in title with any Invariant Section.
address@hidden enumerate
-
-If the Modified Version includes new front-matter sections or
-appendices that qualify as Secondary Sections and contain no material
-copied from the Document, you may at your option designate some or all
-of these sections as invariant.  To do this, add their titles to the
-list of Invariant Sections in the Modified Version's license notice.
-These titles must be distinct from any other section titles.
-
-You may add a section entitled ``Endorsements'', provided it contains
-nothing but endorsements of your Modified Version by various
-parties---for example, statements of peer review or that the text has
-been approved by an organization as the authoritative definition of a
-standard.
-
-You may add a passage of up to five words as a Front-Cover Text, and a
-passage of up to 25 words as a Back-Cover Text, to the end of the list
-of Cover Texts in the Modified Version.  Only one passage of
-Front-Cover Text and one of Back-Cover Text may be added by (or
-through arrangements made by) any one entity.  If the Document already
-includes a cover text for the same cover, previously added by you or
-by arrangement made by the same entity you are acting on behalf of,
-you may not add another; but you may replace the old one, on explicit
-permission from the previous publisher that added the old one.
-
-The author(s) and publisher(s) of the Document do not by this License
-give permission to use their names for publicity for or to assert or
-imply endorsement of any Modified Version.
-
address@hidden
-COMBINING DOCUMENTS
-
-You may combine the Document with other documents released under this
-License, under the terms defined in section 4 above for modified
-versions, provided that you include in the combination all of the
-Invariant Sections of all of the original documents, unmodified, and
-list them all as Invariant Sections of your combined work in its
-license notice.
-
-The combined work need only contain one copy of this License, and
-multiple identical Invariant Sections may be replaced with a single
-copy.  If there are multiple Invariant Sections with the same name but
-different contents, make the title of each such section unique by
-adding at the end of it, in parentheses, the name of the original
-author or publisher of that section if known, or else a unique number.
-Make the same adjustment to the section titles in the list of
-Invariant Sections in the license notice of the combined work.
-
-In the combination, you must combine any sections entitled ``History''
-in the various original documents, forming one section entitled
-``History''; likewise combine any sections entitled ``Acknowledgments'',
-and any sections entitled ``Dedications''.  You must delete all sections
-entitled ``Endorsements.''
-
address@hidden
-COLLECTIONS OF DOCUMENTS
-
-You may make a collection consisting of the Document and other documents
-released under this License, and replace the individual copies of this
-License in the various documents with a single copy that is included in
-the collection, provided that you follow the rules of this License for
-verbatim copying of each of the documents in all other respects.
-
-You may extract a single document from such a collection, and distribute
-it individually under this License, provided you insert a copy of this
-License into the extracted document, and follow this License in all
-other respects regarding verbatim copying of that document.
-
address@hidden
-AGGREGATION WITH INDEPENDENT WORKS
-
-A compilation of the Document or its derivatives with other separate
-and independent documents or works, in or on a volume of a storage or
-distribution medium, does not as a whole count as a Modified Version
-of the Document, provided no compilation copyright is claimed for the
-compilation.  Such a compilation is called an ``aggregate'', and this
-License does not apply to the other self-contained works thus compiled
-with the Document, on account of their being thus compiled, if they
-are not themselves derivative works of the Document.
-
-If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one quarter
-of the entire aggregate, the Document's Cover Texts may be placed on
-covers that surround only the Document within the aggregate.
-Otherwise they must appear on covers around the whole aggregate.
-
address@hidden
-TRANSLATION
-
-Translation is considered a kind of modification, so you may
-distribute translations of the Document under the terms of section 4.
-Replacing Invariant Sections with translations requires special
-permission from their copyright holders, but you may include
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections.  You may include a
-translation of this License provided that you also include the
-original English version of this License.  In case of a disagreement
-between the translation and the original English version of this
-License, the original English version will prevail.
-
address@hidden
-TERMINATION
-
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License.  Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License.  However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
address@hidden
-FUTURE REVISIONS OF THIS LICENSE
-
-The Free Software Foundation may publish new, revised versions
-of the @sc{gnu} Free Documentation License from time to time.  Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.  See
address@hidden:// www.gnu.org/ copyleft/}.
-
-Each version of the License is given a distinguishing version number.
-If the Document specifies that a particular numbered version of this
-License ``or any later version'' applies to it, you have the option of
-following the terms and conditions either of that specified version or
-of any later version that has been published (not as a draft) by the
-Free Software Foundation.  If the Document does not specify a version
-number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.
address@hidden enumerate
-
address@hidden
address@hidden ADDENDUM: How to Use This License for Your Documents
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and
-license notices just after the title page:
-
address@hidden
address@hidden
-  Copyright (C)  @var{year}  @var{your name}.
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.1
-  or any later version published by the Free Software Foundation;
-  with the Invariant Sections being @var{list their titles}, with the
-  Front-Cover Texts being @var{list}, and with the Back-Cover Texts being 
@var{list}.
-  A copy of the license is included in the section entitled ``GNU
-  Free Documentation License''.
address@hidden group
address@hidden smallexample
-
-If you have no Invariant Sections, write ``with no Invariant Sections''
-instead of saying which ones are invariant.  If you have no
-Front-Cover Texts, write ``no Front-Cover Texts'' instead of
-``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
-
-If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the @sc{gnu} General Public License,
-to permit their use in free software.
-
address@hidden Local Variables:
address@hidden ispell-local-pdict: "ispell-dict"
address@hidden End:
-
-
-
address@hidden Concept Index, Type Index, Documentation License, Top
address@hidden Concept Index
-
address@hidden cp
-
address@hidden Type Index, Function Index, Concept Index, Top
address@hidden Type Index
-
address@hidden tp
-
address@hidden Function Index, Variable Index, Type Index, Top
address@hidden Function and Macro Index
-
address@hidden fn
-
address@hidden Variable Index, File Index, Function Index, Top
address@hidden Variable and Constant Macro Index
-
address@hidden vr
-
address@hidden File Index, , Variable Index, Top
address@hidden Program and File Index
-
address@hidden pg
-
-
address@hidden
-
address@hidden  LocalWords:  texinfo tex setfilename libc settitle 
setchapternewpage sp FSF
address@hidden  LocalWords:  paragraphindent bindingoffset normaloffset 
dircategory Oram sc
address@hidden  LocalWords:  direntry smallbook titlepage titlefont Loosemore 
Stallman dfn
address@hidden  LocalWords:  Drepper vskip filll multitable columnfractions 
Suvasa iftex al
address@hidden  LocalWords:  shortcontents shorttitlepage cindex posix 
nonportable iso pre
address@hidden  LocalWords:  emph iec pindex gcc samp ansi ieee online url sez 
popen pclose
address@hidden  LocalWords:  regex fnmatch getopt wordexp confstr SVID bsd XPG 
svid hsearch
address@hidden  LocalWords:  drand fmtmsg xpg xsi smallexample noindent 
Preprocesser uref
address@hidden  LocalWords:  undefining undef stdlib variadic str mem wcs 
dirent fcntl grp
address@hidden  LocalWords:  pwd pw sa tms termios getline defvr lbsd compat 
XOPEN defvrx
address@hidden  LocalWords:  Unices LARGEFILE fseeko ftello ftell ISOC lfs 
isspace cpu EOF
address@hidden  LocalWords:  prioritization Syslog setjmp longjmp pthreads 
multithreaded fp
address@hidden  LocalWords:  sizeof errno deftypevr lvalue atan EWOULDBLOCK 
EAGAIN EFAULT
address@hidden  LocalWords:  EPERM ENOENT ESRCH EINTR EIO ENXIO ENOEXEC EBADF 
ECHILD ENOMEM
address@hidden  LocalWords:  EDEADLK EACCES ENOTBLK EBUSY EEXIST EXDEV ENODEV 
ENOTDIR EFBIG
address@hidden  LocalWords:  EISDIR EINVAL EMFILE RLIMIT NOFILE ENFILE ENOTTY 
ETXTBSY EROFS
address@hidden  LocalWords:  ENOSPC ESPIPE EMLINK EPIPE SIGPIPE EDOM ERANGE 
EINPROGRESS UDP
address@hidden  LocalWords:  EALREADY nonsocket ENOTSOCK EMSGSIZE EPROTOTYPE 
ENOPROTOOPT va
address@hidden  LocalWords:  EPROTONOSUPPORT ESOCKTNOSUPPORT EOPNOTSUPP 
EPFNOSUPPORT ELOOP
address@hidden  LocalWords:  EAFNOSUPPORT EADDRINUSE EADDRNOTAVAIL ENETDOWN 
ENETUNREACH RPC
address@hidden  LocalWords:  ENETRESET ECONNABORTED ECONNRESET ENOBUFS EISCONN 
ENOTCONN aio
address@hidden  LocalWords:  EDESTADDRREQ ESHUTDOWN ETOOMANYREFS ETIMEDOUT 
ECONNREFUSED HLT
address@hidden  LocalWords:  ENAMETOOLONG gethostname EHOSTDOWN EHOSTUNREACH 
ENOTEMPTY RST
address@hidden  LocalWords:  EPROCLIM NPROC EUSERS EDQUOT ESTALE unmounting 
EREMOTE struct
address@hidden  LocalWords:  EBADRPC ERPCMISMATCH EPROGUNAVAIL EPROGMISMATCH 
EPROCUNAVAIL
address@hidden  LocalWords:  ENOLCK EFTYPE chmod nondirectory EAUTH ENEEDAUTH 
ENOSYS EILSEQ
address@hidden  LocalWords:  ENOTSUP multibyte EBACKGROUND SIGTTIN SIGTTOU 
EDIED perror CSI
address@hidden  LocalWords:  EIEIO EGRATUITOUS EBADMSG EIDRM Multihop EMULTIHOP 
multihop ce
address@hidden  LocalWords:  ENODATA ENOLINK ENOMSG ENOSR ENOSTR EOVERFLOW 
EPROTO ETIME RFS
address@hidden  LocalWords:  ECANCELED ERESTART ECHRNG NSYNC ELNRNG EUNATCH 
ENOCSI EBADE eb
address@hidden  LocalWords:  EBADR EXFULL ENOANO EBADRQC EBADSLT EDEADLOCK 
EBFONT ENONET zw
address@hidden  LocalWords:  ENOPKG EADV Srmount ESRMNT ECOMM EDOTDOT ENOTUNIQ 
EBADFD buf
address@hidden  LocalWords:  EREMCHG ELIBACC ELIBBAD ELIBSCN ELIBMAX ELIBEXEC 
ESTRPIPE NUL
address@hidden  LocalWords:  EUCLEAN ENOTNAM ENAVAIL EISNAM EREMOTEIO ENOMEDIUM 
EMEDIUMTYPE
address@hidden  LocalWords:  strerror deftypefun errnum const stderr nonnull 
multiline argv
address@hidden  LocalWords:  deftypevar fopen fprintf printf progname 
afterwards lineno len
address@hidden  LocalWords:  fname anem feof ssize errval vwarn warnx vwarnx 
verr errx ptr
address@hidden  LocalWords:  verrx programmatically execing malloc 
subsubsection calloc gdb
address@hidden  LocalWords:  pxref memset xmalloc savestring memcpy memalign 
valloc realloc
address@hidden  LocalWords:  cfree newsize xrealloc eltsize getpagesize mmap 
mallopt param
address@hidden  LocalWords:  sbrk mcheck enum abortfn lmcheck argc xbffff 
mprobe deftp sgid
address@hidden  LocalWords:  defvar resaved init morecore mallinfo ordblks 
smblks hblks sig
address@hidden  LocalWords:  hblkhd usmblks fsmblks uordblks fordblks keepcost 
mtrace ifdef
address@hidden  LocalWords:  protocolled muntrace deinstalls endif SIGUSR 
drepper tst alloc
address@hidden  LocalWords:  errlog alloc'd Obstacks obstacks obstack findex 
obstack's addr
address@hidden  LocalWords:  myobstack copystring strlen funcp obptr deftypefn 
alloca desc
address@hidden  LocalWords:  stpcpy unistd brk ptrdiff realtime mlock munlock 
MEMLOCK MCL
address@hidden  LocalWords:  PAGESIZE mlockall munlockall SIGSEGV Relocator 
ifinfo func wc
address@hidden  LocalWords:  Nonreentrant handleptr ctype wchar isalpha islower 
isupper ws
address@hidden  LocalWords:  isdigit isalnum isxdigit ispunct formfeed isblank 
isgraph wint
address@hidden  LocalWords:  isprint iscntrl ascii isascii toupper tolower 
toascii bitsets
address@hidden  LocalWords:  localedef bitset wctype alnum cntrl punct xdigit 
iswctype wmem
address@hidden  LocalWords:  iswalnum iswalpha iswdigit iswlower iswupper 
iswcntrl iswgraph
address@hidden  LocalWords:  iswprint iswpunct iswspace iswxdigit iswblank 
strcmp btowc wto
address@hidden  LocalWords:  wctrans towctrans towlower towupper nonmodifiable 
strncpy wstr
address@hidden  LocalWords:  nonnormalized wmemcpy strcpy wcscpy wcslen mbstate 
scopy scanf
address@hidden  LocalWords:  mbsrtowcs strnlen maxlen wcsnlen sprintf memmove 
oldarray wr
address@hidden  LocalWords:  newarray arraysize restruct wfrom wmemmove mempcpy 
wmempcpy cp
address@hidden  LocalWords:  memccpy wmemset wcsncpy strdup wcsdup strndup 
wcpcpy stpncpy
address@hidden  LocalWords:  wcpncpy wsize strdupa STDPATH strtok writeable 
strcat wcscat
address@hidden  LocalWords:  strncat wcsncar concat ap arg wp newp atr wcsncat 
wo bcopy llo
address@hidden  LocalWords:  bzero memcmp wcjar wmemcmp strcoll wcscmp wcscoll 
strcasecmp
address@hidden  LocalWords:  wcscasecmp strncmp wcsncmp strncasecmp wcsncasecmp 
ebcdic bcmp
address@hidden  LocalWords:  strverscmp indices strxfrm wcsxfrm qsort nstrings 
memchr ld TW
address@hidden  LocalWords:  wmemchr rawmemchr memrchr strchr strchrnul wcschr 
wstring prog
address@hidden  LocalWords:  wcschrnul strrchr backwards wcsrchr strstr wcsstr 
wcswcs oring
address@hidden  LocalWords:  strcasestr memmem strspn skipset 
abcdefghijklmnopqrstuvwxyz CN
address@hidden  LocalWords:  wcsspn strcspn stopset wcscspn strpbrk wcspbrk 
rindex wcstok
address@hidden  LocalWords:  tokenizing newstring reentrancy stddef 
nonreentrancy strsep xc
address@hidden  LocalWords:  multithreading basename overriden libgen dirname 
strfry htonl
address@hidden  LocalWords:  pseudorandom memfrob frobnicates atoi xxxxx Argz 
Envz argz sep
address@hidden  LocalWords:  envz stringify delim ifnottex ucs bmp utf ffff 
WEOF getc wgetc
address@hidden  LocalWords:  endianesses ibm EUC JIS SJIS euc nonspacing 
teletex KOI STDC
address@hidden  LocalWords:  Charset iconv fread stateful mbsinit ps srcp 
wcsrtombs outbuf
address@hidden  LocalWords:  outbuflen itow wcp wctob mbrtowc pwc mbstouwcs tmp 
nbytes dst
address@hidden  LocalWords:  mbrlen mbslen wcrtomb wcrtombs mbscatwcs src dest 
mbsnrtowcs
address@hidden  LocalWords:  nmc showmbs cnt linebuf endp wcsnrtombs nwc BUFSIZ 
eof nread
address@hidden  LocalWords:  nwrite inp outp thislen nonreentrant mbtowc wctomb 
mblen toset
address@hidden  LocalWords:  mbstowcs toward wcstombs thischar setlocale 
fromcode tocode
address@hidden  LocalWords:  fromset GCONV gconv cd inbuf nonstateful 
inbytesleft fd insize
address@hidden  LocalWords:  outbytesleft nonreversible charset wrptr nconv 
inptr lseek nnn
address@hidden  LocalWords:  glibc EUCJP endianess endian shlib itemx modname 
fct de prolog
address@hidden  LocalWords:  outbufend statep jp dir NOCONV NOMEM inbufend 
outerr outend ok
address@hidden  LocalWords:  outptr nstatus texi espana castellano usa english 
vtable nl tm
address@hidden  LocalWords:  Uniforum vindex gettextized strftime localeconv 
langinfo lconv
address@hidden  LocalWords:  extendable strfmon mon nonmonetary frac curr posn 
CODESET FMT
address@hidden  LocalWords:  ABDAY ABMON AMPM CRNCYSTR RADIXCHAR THOUSEP 
YESEXPR rpmatch tp
address@hidden  LocalWords:  NOEXPR YESSTR NOSTR maxsize asis USD gui aix Bool 
doit fputs
address@hidden  LocalWords:  gettext stdout fflush ifclear mult ifhtml middot 
infty infin
address@hidden  LocalWords:  cdot oo mul SQRTPI PIl Stroustrup's DPI acos 
deftypefunx sinf
address@hidden  LocalWords:  sinl cosf cosl tanf tanl sincos sincosf sincosl 
csin csinf zi
address@hidden  LocalWords:  csinl ccos ccosf ccosl ctan ctanf ctanl asin asinf 
asinl acosf
address@hidden  LocalWords:  acosl atanf atanl hypot casin casinf casinl cacos 
cacosf catan
address@hidden  LocalWords:  cacosl catanf catanl expf expl logf logl logb 
logbf logbl NaN
address@hidden  LocalWords:  ilogb ilogbl ILOGBNAN isnan powf powl sqrtf sqrtl 
cbrt cbrtf
address@hidden  LocalWords:  cbrtl hypotf hypotl expm cexp cexpf cexpl creal 
cimag Im clogf
address@hidden  LocalWords:  clogl carg csqrt csqrtf csqrtl cpow cpowf cpowl 
sinh sinhf erf
address@hidden  LocalWords:  sinhl coshf coshl tanh tanhf tanhl csinh csinhf 
csinhl ccosh
address@hidden  LocalWords:  ccoshf ccoshl ctanh ctanhf ctanhl asinh asinhf 
asinhl acosh dt
address@hidden  LocalWords:  acoshf acoshl atanh atanhf atanhl casinh casinhf 
casinhl erff
address@hidden  LocalWords:  cacosh cacoshf cacoshl catanh catanhf catanhl erfl 
hbox erfc
address@hidden  LocalWords:  erfcf erfcl lgamma lgammaf lgammal signgam tgamma 
lgam gam jn
address@hidden  LocalWords:  nonpositive signp gammaf gammal tgammaf jnf jnl yn 
ynf ynl ULP
address@hidden  LocalWords:  ulps nexttowardf Sparc powerpc nofpu hppa fpu 
cabsf cabsl ceil
address@hidden  LocalWords:  cargf cargl ceilf ceill cimagf cimagl conjf conjl 
copysignf xb
address@hidden  LocalWords:  copysign copysignl cprojf cproj cprojl crealf 
creall fabsf fma
address@hidden  LocalWords:  fabs fabsl fdimf fdim fdiml floorf floorl fmaf 
fmal fmaxf fmax
address@hidden  LocalWords:  fmaxl fminf fmin fminl fmodf fmod fmodl frexpf 
frexp frexpl tv
address@hidden  LocalWords:  lrintf lrint lrintl llrintf llrint llrintl lroundf 
lround modf
address@hidden  LocalWords:  lroundl llroundf llround llroundl modff modfl 
nearbyintf rintf
address@hidden  LocalWords:  nearbyint nearbyintl nextafterf nextafter 
nextafterl remquof
address@hidden  LocalWords:  nexttoward nexttowardl remainderf remainderl 
remquo remquol tz
address@hidden  LocalWords:  rint rintl roundf roundl scalbf scalb scalbl 
scalbnf scalbn Ec
address@hidden  LocalWords:  scalbnl scalblnf scalbln scalblnl tgammal truncf 
trunc truncl
address@hidden  LocalWords:  PowerPC srand RNG srandom initstate setstate PRNG 
statebuf DFL
address@hidden  LocalWords:  statelen DEECE erand xsubi lrand nrand mrand jrand 
seedval ENV
address@hidden  LocalWords:  lcong ffast INLINES unpipelined lieee mieee 
signedness stdint
address@hidden  LocalWords:  uint intmax uintmax minima ldiv lldiv imaxdiv 
mathrel isfinite
address@hidden  LocalWords:  fpclassify isnormal isinf isinff isinfl isnanf 
isnanl finitef
address@hidden  LocalWords:  finitel SIGFPE matherr signalled NaNs signbit 
untrapped FPUs
address@hidden  LocalWords:  fenv DIVBYZERO feclearexcept feraiseexcept 
fetestexcept flagp
address@hidden  LocalWords:  fegetexceptflag fexcept fesetexceptflag signalling 
deftypevrx
address@hidden  LocalWords:  VALF VALL TONEAREST TOWARDZERO fegetround 
fesetround fegetenv
address@hidden  LocalWords:  envp feholdexcept NOMASK fesetenv feupdateenv 
feenableexcept
address@hidden  LocalWords:  fedisableexcept fegetexcept bitmask llabs imaxabs 
ldexp ldexpf
address@hidden  LocalWords:  ldexpl significand significandf significandl 
intpart drem nan
address@hidden  LocalWords:  dremf dreml nanf nanl strtod tagp isgreater 
isgreaterequal UTC
address@hidden  LocalWords:  isless islessequal islessgreater isunordered 
isequal isunequal
address@hidden  LocalWords:  sscanf strtol tailptr wcstol strtoul ULONG wcstoul 
strtoll CLK
address@hidden  LocalWords:  wcstoll strtoq wcstoq strtoull wcstoull strtouq 
wcstouq atol
address@hidden  LocalWords:  strtoimax wcstoimax strtoumax wcstoumax ints 
prepend strtof Od
address@hidden  LocalWords:  strtold wcstod wcstof wcstold atof ecvt ndigit 
fcvt gcvt qecvt
address@hidden  LocalWords:  qfcvt qgcvt difftime timeval usec timespec nsec 
gettimeofday
address@hidden  LocalWords:  settimeofday examinining TCK utime stime cutime 
waitpid cstime
address@hidden  LocalWords:  newtime minuteswest dsttime tzp adjtime adjtimex 
speeded timex
address@hidden  LocalWords:  olddelta ntp mday wday yday isdst gmtoff localtime 
ctime npt
address@hidden  LocalWords:  gmtime tzname resultp mktime brokentime timelocal 
timegm tptr
address@hidden  LocalWords:  gettime tindex ntptimeval maxerror esterror 
MAXPHASE MAXFREQ
address@hidden  LocalWords:  PLL TIMECONST ppsfreq SHIFTMAX stabil jitcnt 
MAXTIME calcnt Oe
address@hidden  LocalWords:  errcnt stbcnt SINGLESHOT asctime makeinfo bufsize 
tzset fmt OI
address@hidden  LocalWords:  wcsftime strptime getdate OU Ey Oy nonalphanumeric 
DATEMSK dnd
address@hidden  LocalWords:  xxxxxxxxxxxx xxxxxxxxxx zoneinfo EWT curtime 
loctime setitimer
address@hidden  LocalWords:  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx SIGALRM 
SIGVTALRM sysv
address@hidden  LocalWords:  SIGPROF profil sigaction itimerval ITIMER 
getitimer nanosleep
address@hidden  LocalWords:  pthread catgets catd catopen NLSPATH lang codeset 
usr msg API
address@hidden  LocalWords:  catclose delset unescaped SetOne SetTwo gencat 
catdesc msgnrs
address@hidden  LocalWords:  SetTwoSet SetOneSet SetOnetwo SetMainSet 
SetMainHello MainSet
address@hidden  LocalWords:  cartouche MainHello Microsystems libintl msgid 
dgettext german
address@hidden  LocalWords:  domainname dcgettext deutsch textdomain 
bindtextdomain chdir
address@hidden  LocalWords:  Romanic ngettext dngettext dcngettext 
subsubheading nplurals
address@hidden  LocalWords:  Finno Ugric Gaeilge GUIs sgettext msgval msgstr 
lenghtened da
address@hidden  LocalWords:  goodie msgfmt xgettext fn lfind compar lsearch 
bsearch muppets
address@hidden  LocalWords:  Fozzie Sweetums Strangepork Hogthrob Zoot cmp 
hcreate nel htab
address@hidden  LocalWords:  hdestroy retval tsearch rootp tfind tdelete 
tdestroy freefct
address@hidden  LocalWords:  vroot nodep preorder endorder twalk wildcards 
Wildcard FNM ksh
address@hidden  LocalWords:  wildcard NOMATCH NOESCAPE frobozz CASEFOLD 
EXTMATCH Korn gl eo
address@hidden  LocalWords:  Globbing globbing pathc DOOFFS pathv closedir 
ALTDIRFUNC lstat
address@hidden  LocalWords:  readdir opendir NOSORT errfunc NOCHECK NOSPACE 
MAGCHAR pglob
address@hidden  LocalWords:  baz NOMAGIC getlogin getpwnam bart nonomatch 
ONLYDIR globfree
address@hidden  LocalWords:  nondirectories nsub regcomp cflags regexec NOSUB 
matchptr ba
address@hidden  LocalWords:  nmatch regerror BADBR BADPAT BADRPT ECOLLATE 
ECTYPE EESCAPE na
address@hidden  LocalWords:  ESUBREG EBRACK EPAREN EBRACE ESPACE ICASE regmatch 
eflags WRDE
address@hidden  LocalWords:  NOTBOL NOTEOL matcharray regoff bananana nonuse 
nefer regfree
address@hidden  LocalWords:  nefertiti errcode Ramey wordc wordv BADCHAR BADVAL 
CMDSUB pid
address@hidden  LocalWords:  NOCMD wordfree SHOWERR execv getpwname ractor 
tracto execee's
address@hidden  LocalWords:  execor's argp abc ofoo opterr optopt optind optarg 
POSIXLY num
address@hidden  LocalWords:  aflag bflag cvalue testopt cfoo longopts shortopts 
putchar DUP
address@hidden  LocalWords:  Suboptions sysexits args Automagic or'd argp's 
FINI reparsed
address@hidden  LocalWords:  pstate nknows nARG nOUTPUT nSILENT vThis nVERBOSE 
dup optionp
address@hidden  LocalWords:  suboptions getsubopt suboption valuep RO RW ro rw 
rsize getenv
address@hidden  LocalWords:  subopts putenv setenv unsetenv clearenv LOGNAME 
execlp execvp
address@hidden  LocalWords:  tgetent COREFILE CORESERVER syscall sysno rc 
atexit tmpfile zd
address@hidden  LocalWords:  nonconstant nonsuccess SunOS SIGABRT SIGCHLD 
SIGHUP SIGCONT lc
address@hidden  LocalWords:  FIFOs dprintf fseek rms Backtraces backtrace 
execinfo rdynamic
address@hidden  LocalWords:  backtraces ferror FILE's stdin fclose freopen 
unoriented putc
address@hidden  LocalWords:  opentype Solaris freadable fwritable freading 
fwriting mutexes
address@hidden  LocalWords:  fcloseall flockfile ftrylockfile funlockfile 
fsetlocking fwide
address@hidden  LocalWords:  BYCALLER fwrite fputwc L'f fputc ccs putwc 
putwchar fputws txt
address@hidden  LocalWords:  putw fgetc fgetwc getwc getchar getwchar getw 
getdelim lineptr
address@hidden  LocalWords:  fgets fgetws getwline Unreading unreading ungetc 
ungetwc hh tt
address@hidden  LocalWords:  unreads nPlease ARGMAX sysconf Wformat Decaring 
ABCDEF abcdef
address@hidden  LocalWords:  nchar wprintf fwprintf snprintf asprintf swprintf 
nchars nargs
address@hidden  LocalWords:  vprintf myprintf mytemplate Varargs vwprintf 
vfprintf vsprintf
address@hidden  LocalWords:  vfwprintf vswprintf vsnprintf vasprintf stdarg 
eprintf nwanted
address@hidden  LocalWords:  argtypes nelts arginfo prec showsign mywidget 
xffeffb hsep exa
address@hidden  LocalWords:  vsep zetta giga tera peta yotta hsize hfil vbox 
hrule halign
address@hidden  LocalWords:  offinterlineskip vrule tabskip cr noalign fk 
nonmatching lf xa
address@hidden  LocalWords:  readarray radices zA wscanf fscanf fwscanf swscanf 
vscanf INCR
address@hidden  LocalWords:  vwscanf vfscanf vfwscanf vsscanf vswscanf clearerr 
XTND fpos
address@hidden  LocalWords:  fgetpos fsetpos flushlbf fpurge setvbuf IOFBF 
IOLBF IONBF flbf
address@hidden  LocalWords:  fstat blksize setbuf setbuffer setlinebuf fbufsize 
fpending bp
address@hidden  LocalWords:  fmemopen memstream sizeloc io fopencookie nitty 
ORed APPL UTIL
address@hidden  LocalWords:  OPSYS NRECOV NULLLBL NULLSEV NULLMC NULLTXT 
NULLACT NULLTAG UX
address@hidden  LocalWords:  NOSEV SEV addseverity NOMSG NOCON NOTOK MSGVERB 
printstring vr
address@hidden  LocalWords:  fmtsmg smallfonts awk retrict textfonts Haertel 
copylefted GPL
address@hidden  LocalWords:  nonfree lgpl ifset appendixsubsec sublicense 
Yoyodyne Frob FDL
address@hidden  LocalWords:  noncommercially DTD PostScript PDF retitle pdict 
printindex YP
address@hidden  LocalWords:  Granlund DECStation dec ultrix Kehoe ftw nftw 
Eggert Dynix OSF
address@hidden  LocalWords:  osf SGI Irix sgi irix Hurd Kazumoto Kojima 
multiprecision conf
address@hidden  LocalWords:  nsswitch DNS backends backend Eriksson linux 
Hongjiu linuxaout
address@hidden  LocalWords:  IPv Blundell Mosberger Keating Bader IPC fdlibm 
Conklin libio
address@hidden  LocalWords:  Bothner Youngdale versioning Kukuk NIS securelevel 
Kettenis UC
address@hidden  LocalWords:  utmpx utmp NSS nscd inet CMU ppp Itanium 
getaddrinfo Metz
address@hidden  LocalWords:  getnameinfo sysdeps Gloger

Index: glibc-system.texi
===================================================================
RCS file: glibc-system.texi
diff -N glibc-system.texi
--- glibc-system.texi   5 May 2005 19:37:08 -0000       1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,39696 +0,0 @@
-\input texinfo_times.tex
-
address@hidden above calls Josh Gay's texinfo file in Times New Roman font.
address@hidden Use commented-out line below to call the default texinfo file
address@hidden texinfo                        @c -*-texinfo-*-
address@hidden %**start of header (This is for running Texinfo on a region.)
-
address@hidden libc.info
address@hidden The GNU C Library: System & Network Applications
address@hidden
address@hidden odd
address@hidden 1
-
address@hidden TO PRODUCE PRINTOUTS APPROPRIATE FOR PUBLISHING
address@hidden The text on right hand pages is pushed toward the right hand
address@hidden margin and the text on left hand pages is pushed toward the left
address@hidden hand margin.
address@hidden (To provide the reverse effect, set bindingoffset to -0.75in.)
address@hidden
-\global\bindingoffset=0.75in
-\global\normaloffset =0.75in
address@hidden tex
-
address@hidden Tell install-info what to do.
address@hidden GNU libraries
address@hidden
-* Libc: (libc).                 C Library.
address@hidden direntry
-
address@hidden This tells texinfo.tex to use the real section titles in xrefs in
address@hidden place of the node name, when no section title is explicitly 
given.
address@hidden xref-automatic-section-title
-
address@hidden %**end of header (This is for running Texinfo on a region.)
-
address@hidden EDITION 1.0
address@hidden VERSION 2.3.x
address@hidden UPDATED 2004-02-01
address@hidden ISBN 1-882114-24-8
-
address@hidden
address@hidden 6
address@hidden GNU C Library:}
address@hidden 
address@hidden System & Network Applications
address@hidden For GNU C Libraries version @value{VERSION}
address@hidden 4
address@hidden by Sandra Loosemore
address@hidden with Richard M. Stallman, Roland McGrath, 
address@hidden Andrew Oram, and Ulrich Drepper
-
-
address@hidden
address@hidden 0pt plus 1filll
-
-This manual documents the @sc{gnu} C Libraries version @value{VERSION}.
address@hidden
address@hidden 1-882114-24-8, First Printing, March 2004.
-
-
address@hidden
address@hidden @columnfractions .50 .50
address@hidden Published by:              @tab
address@hidden @tab
address@hidden GNU Press                  @tab Website: www.gnupress.org
address@hidden a division of the          @tab General: press@@gnu.org
address@hidden Free Software Foundation   @tab Orders: sales@@gnu.org
address@hidden 51 Franklin St, Fifth Floor @tab Tel: 617-542-5942
address@hidden Boston, MA 02110-1301 USA  @tab Fax: 617-542-2652
address@hidden multitable
address@hidden 2
-Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004 Free Software
-Foundation
address@hidden 1
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the @acronym{GNU} Free Documentation License,
-Version 1.2, or any later version published by the Free Software
-Foundation; with the Invariant Sections being ``Free Software and Free
-Manuals'', the address@hidden Free Documentation License''," and the
address@hidden Lesser General Public License'', with the Front Cover Texts
-being ``A @acronym{GNU} Manual'', and with the Back Cover Texts as in
-(a) below.  A copy of the license is included in the section entitled
address@hidden Free Documentation License''.
-                                                                               
-(a) The Back Cover Text is: You are free to copy and modify this
address@hidden Manual.  Buying copies from @acronym{GNU} Press supports
-the @acronym{FSF} in developing @acronym{GNU} and promoting software
-freedom.
-
address@hidden
-Cover art by Etienne Suvasa.  Cover design by Jonathan Richard.
-Printed in USA.
-
address@hidden titlepage
address@hidden
-
address@hidden
address@hidden
-
address@hidden Turn the page numbers off, insert the half title page, and turn
address@hidden them on again. 
address@hidden off
address@hidden The GNU C Library: System and Network Applications
address@hidden on
-
address@hidden linuxthreads
-
-
address@hidden Introduction
address@hidden Introduction
address@hidden %MENU% Purpose of the GNU C Library
-
-The C language provides no built-in facilities for performing such
-common operations as input/output, memory management, string
-manipulation and the like.  Instead, these facilities are defined in a
-standard @dfn{library}, which you compile and link with your programs.
address@hidden library
-
-The @sc{gnu} C Library, described in this document, defines all of the
-library functions that are specified by the @address@hidden C} standard, as
-well as additional features specific to @sc{posix} and other derivatives
-of the Unix operating system, and extensions specific to the @sc{gnu}
-system.
-
-The purpose of this manual is to tell you how to use the facilities of
-the @sc{gnu} library.  We have mentioned which features belong to which
-standards to help you identify things that are potentially
-nonportable. But the emphasis in this manual is not on strict
-portability.
-
address@hidden Getting Started
address@hidden Getting Started
-
-This manual is written with the assumption that you are at least
-somewhat familiar with the C programming language and basic programming
-concepts.  Specifically, familiarity with @sc{iso} standard C
-(@pxref{ISO C}), rather than ``traditional'' address@hidden C dialects, is
-assumed.
-
-The @sc{gnu} C Library includes several @dfn{header files}, each of which
-provides definitions and declarations for a group of related facilities;
-this information is used by the C compiler when processing your program.
-For example, the header file @file{stdio.h} declares facilities for
-performing input and output, and the header file @file{string.h}
-declares string-processing utilities.  The organization of this manual
-generally follows the same division as the header files.
-
-If you are reading this manual for the first time, you should read all
-of the introductory material and skim the remaining chapters.  There are
-a @emph{lot} of functions in the @sc{gnu} C Library and it is not
-realistic to expect that you will be able to remember exactly @emph{how}
-to use each and every one of them.  It is more important to become
-generally familiar with the kinds of facilities that the library
-provides, so that when you are writing your programs you can recognize
address@hidden to make use of library functions, and @emph{where} in this
-manual you can find more specific information about them.
-
-
address@hidden Standards and Portability
address@hidden Standards and Portability
address@hidden standards
-
-This section discusses the various standards and other sources that the
address@hidden C Library is based upon.  These sources include the 
@address@hidden C} and
address@hidden standards, and the System V and Berkeley Unix implementations.
-
-The primary focus of this manual is to tell you how to make effective
-use of the @sc{gnu} library facilities.  But if you are concerned about
-making your programs compatible with these standards, or portable to
-operating systems other than @sc{gnu}, this can affect how you use the
-library.  This section gives you an overview of these standards, so that
-you will know what they are when they are mentioned in other parts of
-the manual.
-
address@hidden Summary}, for an alphabetical list of the functions and
-other symbols provided by the library.  This list also states which
-standards each function or symbol comes from.
-
address@hidden ISO C
address@hidden @sc{iso} C
address@hidden @sc{iso} C
-
-The @sc{gnu} C Library is compatible with the C standard adopted by the
-American National Standards Institute (@sc{ansi})as @cite{American
-National Standard X3.159-1989---"@sc{ansi} C"} and later by the
-International Standardization Organization (@sc{iso}) as
address@hidden@sc{iso}/@sc{iec} 9899:1990, "Programming languages---C"}.  In
-this manual, we refer to the standard as @address@hidden C} since this is
-the more general standard with respect to ratification.  The header files
-and library facilities that make up the @sc{gnu} library are a superset
-of those specified by the @address@hidden C} address@hidden
-
address@hidden gcc
-If you are concerned about strict adherence to the @address@hidden C}
-standard, you should use the @samp{-ansi} option when you compile your
-programs with the @sc{gnu} C Compiler.  This tells the compiler to
-define @emph{only} @sc{iso} standard features from the library header
-files, unless you explicitly ask for additional features.
address@hidden Macros}, for information on how to do this.
-
-Being able to restrict the library to include only @address@hidden C} features 
is
-important because @address@hidden C} puts limitations on what names can be 
defined
-by the library implementation, and the @sc{gnu} extensions don't fit these
-limitations.  @xref{Reserved Names}, for more information about these
-restrictions.
-
-This manual does not attempt to give you complete details on the
-differences between @address@hidden C} and older dialects.  It gives
-advice on how to write programs to work portably under multiple C
-dialects, but does not aim for completeness.
-
-
address@hidden POSIX, Berkeley Unix, ISO C, Standards and Portability
address@hidden @sc{posix} (The Portable Operating System Interface)
address@hidden @sc{posix}
address@hidden @sc{posix}.1
address@hidden @sc{ieee} Std 1003.1
address@hidden @sc{iso}/@sc{iec} 9945-1
address@hidden @sc{posix}.2
address@hidden @sc{ieee} Std 1003.2
address@hidden @sc{iso}/@sc{iec} 9945-2
-
-The @sc{gnu} library is also compatible with the @sc{iso} @sc{posix}
-family of standards, known more formally as the @dfn{Portable
-Operating System Interface for Computer Environments}
-(@sc{iso}/@sc{iec} 9945).  They were also published as
address@hidden/@sc{ieee} Std 1003.  @sc{posix} is derived mostly from
-various versions of the Unix operating system.
-
-The library facilities specified by the @sc{posix} standards are a
-superset of those required by @address@hidden C}; @sc{posix} specifies
-additional features for @address@hidden C} functions, as well as
-specifying new additional functions.  In general, the additional
-requirements and functionality defined by the @sc{posix} standards are
-aimed at providing lower-level support for a particular kind of
-operating system environment, rather than general programming language
-support that can run in many diverse operating system
address@hidden
-
-The @sc{gnu} C Library implements all of the functions specified in
address@hidden@sc{iso}/@sc{iec} 9945-1:1996, the @sc{posix} System Application
-Program Interface}, commonly referred to as @sc{posix}.1.  The primary
-extensions to the @address@hidden C} facilities specified by this standard
-include file-system interface primitives (@pxref{File-System
-Interface}), device-specific terminal control functions
-(@pxref{Low-Level Terminal Interface}) and process control functions
-(@pxref{Processes}).
-
-Some facilities from @address@hidden/@sc{iec} 9945-2:1993, the
address@hidden Shell and Utilities standard} (@sc{posix}.2) are also
-implemented in the @sc{gnu} library.  These include utilities for
-dealing with regular expressions and other pattern-matching
address@hidden Sandra Loosemore et al., ``Pattern-Matching''
-in @emph{GNU C Library: Application Fundamentals} (Boston: GNU Press,
-2004), available online at
address@hidden:// www.gnu.org/ manual/ manual.html}.}
-
address@hidden Roland sez:
address@hidden The GNU C Library as it stands conforms to 1003.2 draft 11, which
address@hidden specifies:
address@hidden
address@hidden Several new macros in <limits.h>.
address@hidden popen, pclose
address@hidden <regex.h> (which is not yet fully implemented--wait on this)
address@hidden fnmatch
address@hidden getopt
address@hidden <glob.h>
address@hidden <wordexp.h> (not yet implemented)
address@hidden confstr
-
-
address@hidden Berkeley Unix, SVID, POSIX, Standards and Portability
address@hidden Berkeley Unix
address@hidden @sc{bsd} Unix
address@hidden address@hidden @sc{bsd} Unix
address@hidden Berkeley Unix
address@hidden address@hidden
address@hidden Unix, Berkeley
-
-The @sc{gnu} C Library defines facilities from some versions of Unix
-that are not formally standardized, specifically from the 4.2 @sc{bsd},
-4.3 @sc{bsd} and 4.4 @sc{bsd} Unix systems (also known as @dfn{Berkeley
-Unix}) and from address@hidden (a popular 4.2 @sc{bsd} derivative that
-includes some Unix System V functionality).  These systems support most
-of the @address@hidden C} and @sc{posix} facilities, and 4.4 @sc{bsd} and
-newer releases of address@hidden in fact support them all.
-
-The @sc{bsd} facilities include symbolic links (@pxref{Symbolic
-Links}), the @code{select} function (@pxref{Waiting for I/O}), the
address@hidden signal functions (@pxref{BSD Signal-Handling}) and sockets
-(@pxref{Sockets}).
-
address@hidden SVID, XPG, Berkeley Unix, Standards and Portability
address@hidden @sc{svid} (The System V Interface Description)
address@hidden @sc{svid}
address@hidden System V Unix
address@hidden Unix, System V
-
-The @dfn{System V Interface Description} (@sc{svid}) is a document
-describing the AT&T Unix System V operating system.  It is to some
-extent a superset of the @sc{posix} standard.
-
-The @sc{gnu} C Library defines most of the facilities required by the
address@hidden that are not also required by the @address@hidden C} or 
@sc{posix}
-standards, for compatibility with System V Unix and other Unix systems
-(such as address@hidden) that include these facilities.  However, many of
-the more obscure and less generally useful facilities required by the
address@hidden are not included.  (In fact, Unix System V itself does not
-provide them all.)
-
-The supported facilities from System V include the methods for
-inter-process communication and shared memory, the @code{hsearch} and
address@hidden families of functions, @code{fmtmsg} and several of the
-mathematical functions.
-
address@hidden XPG, , SVID, Standards and Portability
address@hidden @sc{xpg} (The X/Open Portability Guide)
-
-The @emph{X/Open Portability address@hidden/Open Company,
address@hidden/Open Portability Guide,} Issue 4 (Reading, UK: X/Open Company,
-Ltd., 1992).} is a more general standard than @sc{posix}.  X/Open owns
-the Unix copyright and the @sc{xpg} specifies the requirements for
-systems that are intended to be Unix systems.
-
-The @sc{gnu} C Library complies with the @emph{X/Open Portability
-Guide}, Issue 4.2, with all extensions common to @sc{xsi} (X/Open
-System Interface) compliant systems and also all X/Open Unix
-extensions.
-
-The additions on top of @sc{posix} are mainly derived from functionality
-available in @w{System V} and @sc{bsd} systems, though some of the
-really bad mistakes in @w{System V} systems were corrected.  Since
-fulfilling the @sc{xpg} standard with the Unix extensions is a
-precondition for getting the Unix brand, chances are good that the
-functionality is available on commercial systems.
-
-
address@hidden Using the Library, Road Map to the Manual, Standards and 
Portability, Introduction
address@hidden Using the Library
-
-This section describes some of the practical issues involved in using
-the @sc{gnu} C Library.
-
address@hidden Header Files, Macro Definitions,  , Using the Library
address@hidden Header Files
address@hidden header files
-
-Libraries for use by C programs really consist of two parts: @dfn{header
-files} that define types and macros and declare variables and
-functions, and the actual library or @dfn{archive} that contains the
-definitions of the variables and functions.
-
-(Recall that in C, a @dfn{declaration} merely provides information that
-a function or variable exists and gives its type.  For a function
-declaration, information about the types of its arguments might be
-provided as well.  The purpose of declarations is to allow the compiler
-to correctly process references to the declared variables and functions.
-A @dfn{definition}, on the other hand, actually allocates storage for a
-variable or says what a function does.)
address@hidden definition (compared to declaration)
address@hidden declaration (compared to definition)
-
-In order to use the facilities in the @sc{gnu} C Library, you should be sure
-that your program source files include the appropriate header files.
-This is so that the compiler has declarations of these facilities
-available and can correctly process references to them.  Once your
-program has been compiled, the linker resolves these references to
-the actual definitions provided in the archive file.
-
-Header files are included into a program source file by the
address@hidden preprocessor directive.  The C language supports two
-forms of this directive; the first,
-
address@hidden
-#include "@var{header}"
address@hidden smallexample
-
address@hidden
-is typically used to include a header file @var{header} that you write
-yourself; this would contain definitions and declarations describing the
-interfaces between the different parts of your particular application.
-By contrast,
-
address@hidden
-#include <file.h>
address@hidden smallexample
-
address@hidden
-is typically used to include a header file @file{file.h} that contains
-definitions and declarations for a standard library.  This file would
-normally be installed in a standard place by your system administrator.
-You should use this second form for the C library header files.
-
-Typically, @samp{#include} directives are placed at the top of the C
-source file, before any other address@hidden more information
-about the use of header files and @samp{#include} directives, see
-Richard M. Stallman and the GCC Developer Community, ``Header Files''
-in @emph{The GNU C Preprocesser Manual} (2003),
address@hidden:// gcc.gnu.org/ onlinedocs/ gcc-3.3.2/ cpp/}.}  If you begin
-your source files with some comments explaining what the code in the
-file does (a good idea), put the @samp{#include} directives
-immediately afterward, following the feature-test macro definition
-(@pxref{Feature-Test Macros}).
-
-The @sc{gnu} C Library provides several header files, each of which contains
-the type and macro definitions and variable and function declarations
-for a group of related facilities.  This means that your programs may
-need to include several header files, depending on exactly which
-facilities you are using.
-
-Some library header files include other library header files
-automatically.  However, as a matter of programming style, you should
-not rely on this; it is better to explicitly include all the header
-files required for the library facilities you are using.  The @sc{gnu} C
-Library header files have been written in such a way that it doesn't
-matter if a header file is accidentally included more than once;
-including a header file a second time has no effect.  Likewise, if your
-program needs to include multiple header files, the order in which they
-are included doesn't matter.
-
address@hidden Note:} Inclusion of standard header files in any
-order and any number of times works in any @address@hidden C} implementation.
-However, this has traditionally not been the case in many older C
-implementations.
-
-Strictly speaking, you don't @emph{have to} include a header file to use
-a function it declares; you could declare the function explicitly
-yourself, according to the specifications in this manual.  But it is
-usually better to include the header file because it may define types
-and macros that are not otherwise available and because it may define
-more efficient macro replacements for some functions.  It is also a sure
-way to have the correct declaration.
-
address@hidden Macro Definitions, Reserved Names, Header Files, Using the 
Library
address@hidden Macro Definitions of Functions
address@hidden shadowing functions with macros
address@hidden removing macros that shadow functions
address@hidden undefining macros that shadow functions
-
-If we describe something as a function in this manual, it may have a
-macro definition as well.  This normally has no effect on how your
-program runs---the macro definition does the same thing as the function
-would.  In particular, macro equivalents for library functions evaluate
-arguments exactly once, in the same way that a function call would.  The
-main reason for these macro definitions is that sometimes they can
-produce an in-line expansion that is considerably faster than an actual
-function call.
-
-Taking the address of a library function works even if it is also
-defined as a macro.  This is because, in this context, the name of the
-function isn't followed by the left parenthesis that is syntactically
-necessary to recognize a macro call.
-
-You might occasionally want to avoid using the macro definition of a
-function---perhaps to make your program easier to debug.  There are two
-ways you can do this:
-
address@hidden
address@hidden
-You can avoid a macro definition in a specific use by enclosing the name
-of the function in parentheses.  This works because the name of the
-function does not appear in a syntactic context where it is recognizable
-as a macro call.
-
address@hidden
-You can suppress any macro definition for a whole source file by using
-the @samp{#undef} preprocessor directive, unless otherwise stated
-explicitly in the description of that facility.
address@hidden enumerate
-
-For example, suppose the header file @file{stdlib.h} declares a function
-named @code{abs} with:
-
address@hidden
-extern int abs (int);
address@hidden smallexample
-
address@hidden
-and also provides a macro definition for @code{abs}.  Then, in:
-
address@hidden
-#include <stdlib.h>
-int f (int *i) @{ return abs (++*i); @}
address@hidden smallexample
-
address@hidden
-the reference to @code{abs} might refer to either a macro or a function.
-On the other hand, in each of the following examples, the reference is
-to a function and not a macro:
-
address@hidden
-#include <stdlib.h>
-int g (int *i) @{ return (abs) (++*i); @}
-
-#undef abs
-int h (int *i) @{ return abs (++*i); @}
address@hidden smallexample
-
-Since macro definitions that double for a function behave in
-exactly the same way as the actual function version, there is usually no
-need for any of these methods.  In fact, removing macro definitions usually
-just makes your program slower.
-
-
address@hidden Reserved Names, Feature-Test Macros, Macro Definitions, Using 
the Library
address@hidden Reserved Names
address@hidden reserved names
address@hidden name space
-
-The names of all library types, macros, variables and functions that
-come from the @address@hidden C} standard are reserved unconditionally; your
-program @emph{may not} redefine these names.  All other library names
-are reserved if your program explicitly includes the header file that
-defines or declares them.  There are several reasons for these
-restrictions:
-
address@hidden @bullet
address@hidden
-Other people reading your code could get very confused if, for
-example, you were using a function named @code{exit} to do something
-completely different from what the standard @code{exit} function does.
-Preventing this situation helps to make your programs easier to
-understand and contributes to modularity and maintainability.
-
address@hidden
-It avoids the possibility of a user accidentally redefining a library
-function that is called by other library functions.  If redefinition
-were allowed, those other functions would not work properly.
-
address@hidden
-It allows the compiler to do whatever special optimizations it pleases
-on calls to these functions, without the possibility that they may
-have been redefined by the user.  Some library facilities, such as
-those for dealing with variadic arguments (@pxref{Variadic Functions})
-and nonlocal exits (@pxref{Nonlocal Exits}), actually require a
-considerable amount of cooperation on the part of the C compiler, and
-with respect to the implementation, it might be easier for the
-compiler to treat these as built-in parts of the language.
address@hidden itemize
-
-In addition to the names documented in this manual, reserved names
-include all external identifiers (global functions and variables) that
-begin with an underscore (@samp{_}) and all identifiers regardless of
-use that begin with either two underscores or an underscore followed by
-a capital letter.  This is so that the library and header files can
-define functions, variables, and macros for internal purposes without
-risk of conflict with names in user programs.
-
-Some additional classes of identifier names are reserved for future
-extensions to the C language or the @sc{posix}.1 environment.  While
-using these names for your own purposes right now might not cause a
-problem, there is the possibility of conflict with future versions
-of the C or @sc{posix} standards, so you should avoid using them:
-
address@hidden @bullet
address@hidden
-Names beginning with a capital @samp{E} followed by a digit or
-uppercase letter may be used for additional error-code
address@hidden et al., ``Error-Reporting'' (see chap. 1,
-n.1).}
-
address@hidden
-Names that begin with either @samp{is} or @samp{to} followed by a
-lowercase letter may be used for additional character-testing and
-conversion address@hidden, ``Character Handling''.}
-
address@hidden
-Names that begin with @samp{LC_} followed by an uppercase letter may
-be used for additional macros specifying locale
address@hidden, ``Locales and Internationalization''.}
-
address@hidden
-Names of all existing mathematics functions suffixed with @samp{f} or
address@hidden are reserved for corresponding functions that operate on
address@hidden and @code{long double} arguments,
address@hidden, ``Mathematics''.}
-
address@hidden
-Names that begin with @samp{SIG} followed by an uppercase letter are
-reserved for additional signal names (@pxref{Standard Signals}).
-
address@hidden
-Names that begin with @samp{SIG_} followed by an uppercase letter are
-reserved for additional signal actions (@pxref{Basic Signal-Handling}).
-
address@hidden
-Names beginning with @samp{str}, @samp{mem}, or @samp{wcs} followed by
-a lowercase letter are reserved for additional string and array
address@hidden, ``String and Array Utilities''.}
-
address@hidden
-Names that end with @samp{_t} are reserved for additional type names.
address@hidden itemize
-
-In addition, some individual header files reserve names beyond
-those that they actually define.  You only need to worry about these
-restrictions if your program includes that particular header file.
-
address@hidden @bullet
address@hidden
-The header file @file{dirent.h} reserves names prefixed with
address@hidden
address@hidden dirent.h
-
address@hidden
-The header file @file{fcntl.h} reserves names prefixed with
address@hidden, @samp{F_}, @samp{O_}, and @samp{S_}.
address@hidden fcntl.h
-
address@hidden
-The header file @file{grp.h} reserves names prefixed with @samp{gr_}.
address@hidden grp.h
-
address@hidden
-The header file @file{limits.h} reserves names suffixed with @samp{_MAX}.
address@hidden limits.h
-
address@hidden
-The header file @file{pwd.h} reserves names prefixed with @samp{pw_}.
address@hidden pwd.h
-
address@hidden
-The header file @file{signal.h} reserves names prefixed with @samp{sa_}
-and @samp{SA_}.
address@hidden signal.h
-
address@hidden
-The header file @file{sys/stat.h} reserves names prefixed with @samp{st_}
-and @samp{S_}.
address@hidden sys/stat.h
-
address@hidden
-The header file @file{sys/times.h} reserves names prefixed with @samp{tms_}.
address@hidden sys/times.h
-
address@hidden
-The header file @file{termios.h} reserves names prefixed with @samp{c_},
address@hidden, @samp{I}, @samp{O}, and @samp{TC}; and names prefixed with
address@hidden followed by a digit.
address@hidden termios.h
address@hidden itemize
-
address@hidden Include the section on Creature Nest Macros.
address@hidden It is in a separate file so it can be formatted into ../NOTES.
address@hidden Feature-Test Macros
address@hidden Feature-Test Macros
-
address@hidden feature-test macros
-The exact set of features available when you compile a source file
-is controlled by which @dfn{feature-test macros} you define.
-
-If you compile your programs using @samp{gcc -ansi}, you get only the
address@hidden@sc{iso} C} library features, unless you explicitly request
-additional features by defining one or more of the feature
address@hidden Richard M. Stallman and the GCC Developer
-Community, ``Invoking GCC'' in @emph{Using GCC: The GNU Compiler
-Collection Reference Manual} (Boston, MA: GNU Press, October 2003),
address@hidden:// gcc.gnu.org/ onlinedocs/ gcc-3.3.2/ gcc/}, for more
-information about @sc{gcc} options.}
-
-You should define these macros by using @samp{#define} preprocessor
-directives at the top of your source code files.  These directives
address@hidden come before any @code{#include} of a system header file.  It
-is best to make them the very first thing in the file, preceded only by
-comments.  You could also use the @samp{-D} option to @sc{gcc}, but it
-is better if you make the source files indicate their own meaning in a
-self-contained way.
-
-This system exists to allow the library to conform to multiple standards.
-Although the different standards are often described as supersets of each
-other, they are usually incompatible because larger standards require
-functions with names that smaller ones reserve to the user program.  This
-is not mere pedantry---it has been a problem in practice.  For instance,
-some address@hidden programs define functions named @code{getline} that have
-nothing to do with this library's @code{getline}.  They would not be
-compilable if all features were enabled indiscriminately.
-
-This should not be used to verify that a program conforms to a limited
-standard.  It is insufficient for this purpose, as it will not protect you
-from including header files outside the standard, or relying on semantics
-undefined within the standard.
-
address@hidden (none)
address@hidden POSIX.1
address@hidden Macro _POSIX_SOURCE
-If you define this macro, then the functionality from the @sc{posix}.1
-standard (@sc{ieee} Standard 1003.1) is available, as well as all of the
address@hidden@sc{iso} C} facilities.
-
-The state of @code{_POSIX_SOURCE} is irrelevant if you define the
-macro @code{_POSIX_C_SOURCE} to a positive integer.
address@hidden defvr
-
address@hidden (none)
address@hidden POSIX.2
address@hidden Macro _POSIX_C_SOURCE
-Define this macro to a positive integer to control which @sc{posix}
-functionality is made available.  The greater the value of this macro,
-the more functionality is made available.
-
-If you define this macro to a value greater than or equal to @code{1},
-then the functionality from the 1990 edition of the @sc{posix}.1 standard
-(@sc{ieee} Standard 1003.1-1990) is made available.
-
-If you define this macro to a value greater than or equal to @code{2},
-then the functionality from the 1992 edition of the @sc{posix}.2 standard
-(@sc{ieee} Standard 1003.2-1992) is made available.
-
-If you define this macro to a value greater than or equal to @code{199309L},
-then the functionality from the 1993 edition of the @sc{posix}.1b standard
-(@sc{ieee} Standard 1003.1b-1993) is made available.
-
-Greater values for @code{_POSIX_C_SOURCE} will enable future extensions.
-The @sc{posix} standards process will define these values as necessary, and
-the @sc{gnu} C Library should support them some time after they become 
standardized.
-The 1996 edition of @sc{posix}.1 (@sc{iso}/@sc{iec} 9945-1: 1996) states that
-if you define @code{_POSIX_C_SOURCE} to a value greater than
-or equal to @code{199506L}, then the functionality from the 1996
-edition is made available.
address@hidden defvr
-
address@hidden (none)
address@hidden GNU
address@hidden Macro _BSD_SOURCE
-If you define this macro, functionality derived from 4.3 @sc{bsd} Unix is
-included as well as the @address@hidden C}, @sc{posix}.1, and @sc{posix}.2 
material.
-
-Some of the features derived from 4.3 @sc{bsd} Unix conflict with the
-corresponding features specified by the @sc{posix}.1 standard.  If this
-macro is defined, the 4.3 @sc{bsd} definitions take precedence over the
address@hidden definitions.
-
-Due to the nature of some of the conflicts between 4.3 @sc{bsd} and 
@sc{posix}.1,
-you need to use a special @sc{bsd} @dfn{compatibility library} when linking
-programs compiled for @sc{bsd} compatibility.  This is because some functions
-must be defined in two different ways, one in the normal C
-library, and one in the compatibility library.  If your program
-defines @code{_BSD_SOURCE}, you must give the option @samp{-lbsd-compat}
-to the compiler or linker when linking the program, to tell it to find
-functions in this special compatibility library before looking for them in
-the normal C library.
address@hidden -lbsd-compat
address@hidden bsd-compat
address@hidden @sc{bsd} compatibility library
address@hidden defvr
-
address@hidden (none)
address@hidden GNU
address@hidden Macro _SVID_SOURCE
-If you define this macro, functionality derived from @sc{svid} is
-included as well as the @address@hidden C}, @sc{posix}.1, @sc{posix}.2 and
-X/Open material.
address@hidden defvr
-
address@hidden (none)
address@hidden X/Open
address@hidden Macro _XOPEN_SOURCE
address@hidden (none)
address@hidden X/Open
address@hidden Macro _XOPEN_SOURCE_EXTENDED
-If you define this macro, functionality described in the @emph{X/Open
-Portability address@hidden/Open Company, @emph{X/Open Portability Guide,} Issue
-4, Version 2 (Reading, UK: X/Open Company, Ltd., 1994).} is
-included.  This is a superset of the @sc{posix}.1 and @sc{posix}.2
-functionality and in fact @code{_POSIX_SOURCE} and
address@hidden are automatically defined.
-
-As the unification of all Unices, functionality only available in
address@hidden and @sc{svid} is also included.
-
-If the macro @code{_XOPEN_SOURCE_EXTENDED} is also defined, even more
-functionality is available.  The extra functions will make all functions
-available that are necessary for the X/Open Unix brand.
-
-If the macro @code{_XOPEN_SOURCE} has the value @math{500}, this includes
-all functionality described so far plus some new definitions from the
-Single Unix Specification, @w{version 2}.
address@hidden defvr
-
address@hidden (NONE)
address@hidden X/Open
address@hidden Macro _LARGEFILE_SOURCE
-If this macro is defined, some extra functions are available that
-rectify a few shortcomings in all previous standards.  Specifically,
-the functions @code{fseeko} and @code{ftello} are available.  Without
-these functions, the difference between the @address@hidden C} interface
-(@code{fseek}, @code{ftell}) and the low-level @sc{posix} interface
-(@code{lseek}) would lead to problems.
-
-This macro was introduced as part of the Large File Support extension 
(@sc{lfs}).
address@hidden defvr
-
address@hidden (NONE)
address@hidden X/Open
address@hidden Macro _LARGEFILE64_SOURCE
-If you define this macro, an additional set of functions is made available
-that enables 32-bit systems to use files of sizes beyond
-the usual limit of 2GB.  This interface is not available if the system
-does not support files that large.  On systems where the natural file
-size limit is greater than 2GB (i.e., on @w{64-bit} systems), the new
-functions are identical to the replaced functions.
-
-The new functionality is made available by a new set of types and
-functions that replace the existing ones.  The names of these new objects
-contain @code{64} to indicate the intention, e.g., @code{off_t}
-vs. @code{off64_t} and @code{fseeko} vs. @code{fseeko64}.
-
-This macro was introduced as part of the Large File Support extension
-(@sc{lfs}).  It is a transition interface for the period when @w{64-bit}
-offsets are not generally used (see @code{_FILE_OFFSET_BITS}).
address@hidden defvr
-
address@hidden (NONE)
address@hidden X/Open
address@hidden Macro _FILE_OFFSET_BITS
-This macro determines which file-system interface will be used, one
-replacing the other.  Whereas @code{_LARGEFILE64_SOURCE} makes the
address@hidden interface available as an additional interface,
address@hidden allows the @w{64-bit} interface to replace the
-old interface.
-
-If @code{_FILE_OFFSET_BITS} is undefined, or if it is defined to the
-value @code{32}, nothing changes.  The 32-bit interface is used and
-types like @code{off_t} have a size of 32 bits on 32-bit
-systems.
-
-If the macro is defined to the value @code{64}, the large file interface
-replaces the old interface.  The functions are not made available
-under different names (as they are with @code{_LARGEFILE64_SOURCE});
-instead, the old function names now reference the new functions, e.g., a
-call to @code{fseeko} now indeed calls @code{fseeko64}.
-
-This macro should only be selected if the system provides mechanisms for
-handling large files.  On @w{64-bit} systems this macro has no effect
-since the @code{*64} functions are identical to the normal functions.
-
-This macro was introduced as part of the Large File Support extension
-(@sc{lfs}).
address@hidden defvr
-
address@hidden (none)
address@hidden GNU
address@hidden Macro _ISOC99_SOURCE
-Until the revised @address@hidden C} standard is widely adopted the new
-features are not automatically enabled.  The @sc{gnu} libc nevertheless
-has a complete implementation of the new standard.  To enable the new
-features the macro @code{_ISOC99_SOURCE} should be defined.
address@hidden defvr
-
address@hidden (none)
address@hidden GNU
address@hidden Macro _GNU_SOURCE
-If you define this macro, everything is included: @address@hidden C89},
address@hidden@sc{iso} C99}, @sc{posix}.1, @sc{posix}.2, @sc{bsd}, @sc{svid},
-X/Open, @sc{lfs}, and @sc{gnu} extensions.  In the cases where
address@hidden conflicts with @sc{bsd}, the @sc{posix} definitions take
-precedence.
-
-If you want to get the full effect of @code{_GNU_SOURCE} but make the
address@hidden definitions take precedence over the @sc{posix} definitions, use 
this
-sequence of definitions:
-
address@hidden
-#define _GNU_SOURCE
-#define _BSD_SOURCE
-#define _SVID_SOURCE
address@hidden smallexample
-
-If you do this, you must link your program with the @sc{bsd}
-compatibility library by passing the @samp{-lbsd-compat} option to the
-compiler or linker.  If you forget, you may get very strange errors at
-run time.
address@hidden defvr
-
address@hidden (none)
address@hidden GNU
address@hidden Macro _REENTRANT
address@hidden Macro _THREAD_SAFE
-If you define one of these macros, reentrant versions of several functions get
-declared.  Some of the functions are specified in @sc{posix}.1c, but many 
others
-are only available on a few other systems or are unique to @sc{gnu} libc.
-The problem is the delay in the standardization of the thread safe C library
-interface.
-
-Unlike on some other systems, no special version of the C library must
-be used for linking.  There is only one version---but while compiling
-this, it must have been specified to compile as thread safe.
address@hidden defvr
-
-We recommend you use @code{_GNU_SOURCE} in new programs.  If you don't
-specify the @samp{-ansi} option to @sc{gcc} and do not define any of
-these macros explicitly, the effect is the same as defining
address@hidden to 2 and @code{_POSIX_SOURCE},
address@hidden and @code{_BSD_SOURCE} to 1.
-
-When you define a feature-test macro to request a larger class of
-features, it is harmless to define, in addition, a feature-test macro
-for a subset of those features.  For example, if you define
address@hidden, then defining @code{_POSIX_SOURCE} as well has
-no effect.  Likewise, if you define @code{_GNU_SOURCE}, defining either
address@hidden, @code{_POSIX_C_SOURCE}, or @code{_SVID_SOURCE} as
-well has no effect.
-
-Note, however, that the features of @code{_BSD_SOURCE} are not a subset
-of any of the other feature-test macros supported.  This is because it
-defines @sc{bsd} features that take precedence over the @sc{posix}
-features that are requested by the other macros.  For this reason,
-defining @code{_BSD_SOURCE} in addition to the other feature-test macros
-does have an effect---it causes the @sc{bsd} features to take priority
-over the conflicting @sc{posix} features.
-
-
address@hidden Road Map to the Manual,  , Using the Library, Introduction
address@hidden Road Map to the Manual
-
-Here is an overview of the contents of the remaining chapters of
-this manual.
-
-The following chapters are found in the first volume, Sandra Loosemore
-et al., @emph{GNU C Library: Application Fundamentals} (Boston: GNU
-Press, 2004), available online at
address@hidden:// www.gnu.org/ manual/ manual.html}.
-
address@hidden @bullet
address@hidden
-``Error Reporting'' describes how errors detected by the library are
-reported.
-
address@hidden
-``Virtual Memory Allocation and Paging'' describes the @sc{gnu}
-library's facilities for managing and using virtual and real memory,
-including dynamic allocation of virtual memory.  If you do not know in
-advance how much memory your program needs, you can allocate it
-dynamically instead, and manipulate it via pointers.
-
address@hidden
-``Character Handling'' contains information about
-character-classification functions (such as @code{isspace}) and
-functions for performing case conversion.
-
address@hidden
-``String and Array Utilities'' has descriptions of functions for
-manipulating strings (null-terminated character arrays) and general
-byte arrays, including operations such as copying and comparison.
-
address@hidden
-``Character-Set Handling'' contains information about manipulating
-characters and strings using character sets larger than will fit in
-the usual @code{char} data type.
-
address@hidden
-``Locales and Internationalization'' describes how selecting a
-particular country or language affects the behavior of the library.
-For example, the locale affects collation sequences for strings and
-how monetary values are formatted.
-
address@hidden
-``Mathematics'' contains information about the math library functions.
-These include things like random-number generators and remainder
-functions on integers as well as the usual trigonometric and
-exponential functions on floating-point numbers.
-
address@hidden
-``Arithmetic Functions'' describes functions for simple arithmetic,
-analysis of floating-point values, and reading numbers from strings.
-
address@hidden
-``Date and Time'' describes functions for measuring both calendar time
-and @sc{cpu} time, as well as functions for setting alarms and timers.
-
address@hidden
-``Message Translation'' describes how to write programs that are
-capable of delivering messages in whatever language the user selects
-without filling the source code with sets of translations.
-
address@hidden
-``Searching and Sorting'' contains information about functions for
-searching and sorting arrays.  You can use these functions on any kind
-of array by providing an appropriate comparison function.
-
address@hidden
-``Pattern Matching'' presents functions for matching regular
-expressions and shell file-name patterns, and for expanding words as
-the shell does.
-
address@hidden
-``The Basic Program/System Interface'' tells how your programs can
-access their command-line arguments and environment variables.
-
address@hidden
-``Input/Output Overview'' gives an overall look at the input and
-output facilities in the library, and contains information about basic
-concepts such as file names.
-
address@hidden
-``Debugging Support'' describes functions provided by the library to
-make the debugging process easier, whether or not a dedicated debugger
-program is being used.
-
address@hidden
-``Input/Output on Streams'' describes I/O operations involving streams
-(or @address@hidden *}} objects). These are the normal C library
-functions from @file{stdio.h}.
-
address@hidden
-``Summary of Library Facilities'' gives a summary of all the
-functions, variables, and macros in the library, with complete data
-types and function prototypes, and says what standard or system each
-is derived from. This section is also found in the second volume, for
-convenient reference. 
-
address@hidden itemize
-
-The following chapters are found in the second volume, Sandra
-Loosemore et al., @emph{GNU C Library: System & Network Applications}
-(Boston: GNU Press, 2004), available online at @url{http://
-www.gnu.org/ manual/ manual.html}.
-
address@hidden @bullet
-
address@hidden
-``Low-Level Input/Output'' contains information about I/O operations
-on file descriptors.  File descriptors are a lower-level mechanism
-specific to the Unix family of operating systems.
-
address@hidden
-``File-System Interface'' has descriptions of operations on entire
-files, such as functions for deleting and renaming them and for
-creating new directories.  This chapter also contains information
-about how you can access the attributes of a file, such as its owner
-and file-protection modes.
-
address@hidden
-``Pipes and @acronym{FIFO}s'' contains information about simple
-interprocess-communication mechanisms.  Pipes allow communication
-between two related processes (such as between a parent and child),
-while @acronym{FIFO}s allow communication between processes sharing a
-common file-system on the same machine.
-
address@hidden
-``Sockets'' describes a more complicated interprocess-communication
-mechanism that allows processes running on different machines to
-communicate over a network.  This chapter also contains information about
-Internet host-addressing and how to use the system network databases.
-
address@hidden
-``Low-Level Terminal Interface'' describes how you can change the
-attributes of a terminal device.  If you want to disable echo of
-characters typed by the user, for example, read this chapter.
-
address@hidden
-``Processes'' contains information about how to start new processes
-and run programs.
-
address@hidden
-``Job Control'' describes functions for manipulating process groups
-and the controlling terminal.  This material is probably only of
-interest if you are writing a shell or other program that handles job
-control specially.
-
address@hidden
-``System Databases and Name-Service Switch'' describes the services
-that are available for looking up names in the system databases, how
-to determine which service is used for which database, and how these
-services are implemented so that contributors can design their own
-services.
-
address@hidden
-``Users and Groups'' tells you how to access the system user- and
-group-databases.
-
address@hidden
-``System Management'' describes functions for controlling and getting
-information about the hardware and software configuration your program
-is executing under.
-
address@hidden
-``System-Configuration Parameters'' tells you how you can get
-information about various operating system limits.  Most of these
-parameters are provided for compatibility with @sc{posix}.
-
address@hidden
address@hidden Encryption and Password Handling'' discusses the legal
-and technical issues related to password encryption and security, as
-well as the functions necessary to implement effective encryption.
-
address@hidden
-``Resource Usage and Limitation'' tells you how to monitor the memory
-and other resource usage totals of processes, and how to regulate this
-usage. It also covers prioritization and scheduling. 
-
address@hidden
-``Syslog'' describes facilities for issuing and logging messages of
-system administration interest.
-
address@hidden
-``Nonlocal Exits'' contains descriptions of the @code{setjmp} and
address@hidden functions.  These functions provide a facility for
address@hidden jumps that can jump from one function to another.
-
address@hidden
-``Signal Handling'' tells you all about signals---what they are, how
-to establish a handler that is called when a particular kind of signal
-is delivered, and how to prevent signals from arriving during critical
-sections of your program.
-
address@hidden
address@hidden Threads'' describes the pthreads (@acronym{POSIX}
-threads) library.  This library provides support functions for
-multithreaded programs: thread primitives, synchronization objects,
-etc.  It also implements @acronym{POSIX} 1003.1b semaphores.
-
address@hidden
-``C Language Facilities in the Library'' contains information about
-library support for standard parts of the C language, including things
-like the @code{sizeof} operator and the symbolic constant @code{NULL},
-how to write functions accepting variable numbers of arguments, and
-constants describing the ranges and other properties of the numerical
-types.  There is also a simple debugging mechanism that allows you to
-put assertions in your code and have diagnostic messages printed if
-the tests fail.
-
address@hidden
-``Installing the @acronym{GNU} C Library'' provides a detailed
-reference for installing, compiling and configuring the @acronym{GNU}
-C Library. Configuration and optimization command-line options are
-covered here. 
-
address@hidden
-``Library Maintenance'' explains how to port and enhance the @sc{gnu}
-C Library and how to report any bugs you might find.
-
address@hidden itemize
-
-If you already know the name of the facility you are interested in, you
-can look it up in @ref{Library Summary}.  This gives you a summary of
-its syntax and a pointer to where you can find a more detailed
-description.  This appendix is particularly useful if you just want to
-verify the order and type of arguments to a function, for example.  It
-also tells you what standard or system each function, variable, or macro
-is derived from.
-
address@hidden Low-Level I/O
address@hidden %MENU% Low-level, less portable I/O
address@hidden Low-Level Input/Output
-
-This chapter describes functions for performing low-level input/output
-operations on file descriptors.  These functions include the
-primitives for the higher-level I/O functions,@footnote{See Sandra
-Loosemore et al., ``Input/Output on Streams'' (see chap. 1, n. 1).} as
-well as functions for performing low-level control operations for
-which there are no equivalents on streams.
-
-Stream-level I/O is more flexible and usually more convenient;
-therefore, programmers generally use the descriptor-level functions only
-when necessary.  These are some of the usual reasons:
-
address@hidden @bullet
address@hidden
-For reading binary files in large chunks
-
address@hidden
-For reading an entire file into core before parsing it
-
address@hidden
-To perform operations other than data transfer, which can only be done
-with a descriptor; you can use @code{fileno} to get the descriptor
-corresponding to a stream.
-
address@hidden
-To pass descriptors to a child process; the child can create its own
-stream to use a descriptor that it inherits, but it cannot inherit a
-stream directly.
address@hidden itemize
-
address@hidden Opening and Closing Files
address@hidden Opening and Closing Files
-
address@hidden opening a file descriptor
address@hidden closing a file descriptor
-This section describes the primitives for opening and closing files
-using file descriptors.  The @code{open} and @code{creat} functions are
-declared in the header file @file{fcntl.h}, while @code{close} is
-declared in @file{unistd.h}.
address@hidden unistd.h
address@hidden fcntl.h
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden int open (const char address@hidden, int @var{flags}[, mode_t 
@var{mode}])
-The @code{open} function creates and returns a new file-descriptor
-for the file named by @var{filename}.  Initially, the file position
-indicator for the file is at the beginning of the file.  The argument
address@hidden is used only when a file is created, but it doesn't hurt
-to supply the argument in any case.
-
-The @var{flags} argument controls how the file is to be opened.  This
-is a bit mask; you create the value by the bit-wise @sc{or} of the
-appropriate parameters, using the @samp{|} operator in C (for the
-parameters available, @pxref{File Status Flags}).
-
-The normal return value from @code{open} is a nonnegative integer file
-descriptor.  In the case of an error, a value of @math{-1} is returned
-instead.  In addition to the usual file-name errors, the following
address@hidden error conditions are defined for this
-function:@footnote{Ibid., ``File-Name Errors''.}
-
address@hidden @code
address@hidden EACCES
-The file exists but is not readable or writable as requested by the
address@hidden argument; the file does not exist and the directory is
-unwritable, so it cannot be created.
-
address@hidden EEXIST
-Both @code{O_CREAT} and @code{O_EXCL} are set, and the named file already
-exists.
-
address@hidden EINTR
-The @code{open} operation was interrupted by a signal
-(@pxref{Interrupted Primitives}).
-
address@hidden EISDIR
-The @var{flags} argument specified write access, and the file is a directory.
-
address@hidden EMFILE
-The process has too many files open.
-The maximum number of file descriptors is controlled by the
address@hidden resource limit (@pxref{Limits on Resources}).
-
address@hidden ENFILE
-The entire system, or perhaps the file system that contains the
-directory, cannot support any additional open files at the moment.
-This problem cannot happen on the @acronym{GNU} system.
-
address@hidden ENOENT
-The named file does not exist, and @code{O_CREAT} is not specified.
-
address@hidden ENOSPC
-The directory or file system that would contain the new file cannot be
-extended, because there is no disk space left.
-
address@hidden ENXIO
address@hidden and @code{O_WRONLY} are both set in the @var{flags}
-argument, the file named by @var{filename} is a @acronym{FIFO}
-(@pxref{Pipes and FIFOs}), and no process has the file open
-for reading.
-
address@hidden EROFS
-The file resides on a read-only file system and any of
address@hidden@code{O_WRONLY}}, @code{O_RDWR} or @code{O_TRUNC} are set in the
address@hidden argument; or @code{O_CREAT} is set and the file does not
-already exist.
address@hidden table
-
address@hidden !!! umask
-
-If on a 32-bit machine the sources are translated with
address@hidden == 64}, the function @code{open} returns a
-file descriptor opened in the large file mode that enables the
-file-handling functions to use files up to @math{2^63} bytes in size
-and offset from @math{-2^63} to @math{2^63}.  This happens
-transparently for the user, since all of the low-level file-handling
-functions are equally replaced.
-
-This function is a cancellation point in multithreaded programs.  This
-is a problem if the thread allocates some resources (like memory, file
-descriptors, semaphores, etc.) at the time @code{open} is called.  If
-the thread gets canceled, these resources stay allocated until the
-program ends.  To avoid this, calls to @code{open} should be protected
-using cancellation handlers.
address@hidden ref pthread_cleanup_push / pthread_cleanup_pop
-
-The @code{open} function is the underlying primitive for the @code{fopen}
-and @code{freopen} functions, which create streams.
address@hidden deftypefun
-
address@hidden fcntl.h
address@hidden Unix98
address@hidden int open64 (const char address@hidden, int @var{flags}[, mode_t 
@var{mode}])
-This function is similar to @code{open}.  It returns a file descriptor
-that can be used to access the file named by @var{filename}.  The only
-difference is that on 32-bit systems, the file is opened in the large
-file mode, so file length and file offsets can exceed 31 bits.
-
-When the sources are translated with @code{_FILE_OFFSET_BITS == 64},
-this function is actually available under the name @code{open}---the
-new, extended @acronym{API} using 64-bit file sizes and offsets
-transparently replaces the old @acronym{API}.
address@hidden deftypefun
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden {Obsolete function} int creat (const char address@hidden, mode_t 
@var{mode})
-This function is obsolete.  The call:
-
address@hidden
-creat (@var{filename}, @var{mode})
address@hidden smallexample
-
address@hidden
-is equivalent to:
-
address@hidden
-open (@var{filename}, O_WRONLY | O_CREAT | O_TRUNC, @var{mode})
address@hidden smallexample
-
-If on a 32-bit machine the sources are translated with
address@hidden == 64}, the function @code{creat} returns a
-file descriptor opened in the large file mode that enables the
-file-handling functions to use files up to @math{2^63} in size and
-offset from @math{-2^63} to @math{2^63}.  This happens transparently
-for the user, since all of the low-level file-handling functions are
-equally replaced.
address@hidden deftypefn
-
address@hidden fcntl.h
address@hidden Unix98
address@hidden {Obsolete function} int creat64 (const char address@hidden, 
mode_t @var{mode})
-This function is similar to @code{creat}.  It returns a file
-descriptor that can be used to access the file named by
address@hidden  The only difference is that on 32-bit systems the
-file is opened in the large file mode, so file length and file offsets
-can exceed 31 bits.
-
-To use this file descriptor, you must not use the normal operations
-but instead the counterparts named @code{*64}, such as @code{read64}.
-
-When the sources are translated with @code{_FILE_OFFSET_BITS == 64},
-this function is actually available under the name @code{open}---the
-new, extended @acronym{API} using 64-bit file sizes and offsets
-transparently replaces the old @acronym{API}.
address@hidden deftypefn
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int close (int @var{filedes})
-The function @code{close} closes the file descriptor @var{filedes}.
-Closing a file has the following consequences:
-
address@hidden @bullet
address@hidden
-The file descriptor is deallocated.
-
address@hidden
-Any record locks owned by the process on the file are unlocked.
-
address@hidden
-When all file descriptors associated with a pipe or @acronym{FIFO} have been 
closed,
-any unread data is discarded.
address@hidden itemize
-
-This function is a cancellation point in multithreaded programs.  This
-is a problem if the thread allocates some resources (like memory, file
-descriptors, semaphores, etc.) at the time @code{close} is called.  If
-the thread gets canceled, these resources stay allocated until the
-program ends.  To avoid this, calls to @code{close} should be
-protected using cancellation handlers.
address@hidden ref pthread_cleanup_push / pthread_cleanup_pop
-
-The normal return value from @code{close} is @math{0}; a value of @math{-1}
-is returned in case of failure.  The following @code{errno} error
-conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden EINTR
-The @code{close} call was interrupted by a signal
-(@pxref{Interrupted Primitives}).
-Here is an example of how to handle @code{EINTR} properly:
-
address@hidden
-TEMP_FAILURE_RETRY (close (desc));
address@hidden smallexample
-
address@hidden ENOSPC
address@hidden EIO
address@hidden EDQUOT
-When the file is accessed by @acronym{NFS}, these errors from
address@hidden can sometimes go undetected until @code{close}
-(@pxref{I/O Primitives} for details on their meaning).
address@hidden table
-
-There is @emph{no} separate @code{close64} function.  This is not
-necessary, since this function does not determine nor depend on the
-mode of the file.  The kernel that performs the @code{close} operation
-knows which mode the descriptor is used for and can handle this
-situation.
address@hidden deftypefun
-
-To close a stream, call @code{fclose} instead of trying to close its
-underlying file-descriptor with @address@hidden,
-``Closing Streams''.} This flushes any buffered output and updates
-the stream object to indicate that it is closed.
-
address@hidden I/O Primitives
address@hidden Input and Output Primitives
-
-This section describes the functions for performing primitive input
-and output operations on file descriptors: @code{read}, @code{write}
-and @code{lseek}.  These functions are declared in the header file
address@hidden
address@hidden unistd.h
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden {Data Type} ssize_t
-This data type is used to represent the sizes of blocks that can be
-read or written in a single operation.  It is similar to @code{size_t},
-but must be a signed type.
address@hidden deftp
-
address@hidden reading from a file descriptor
address@hidden unistd.h
address@hidden POSIX.1
address@hidden ssize_t read (int @var{filedes}, void address@hidden, size_t 
@var{size})
-The @code{read} function reads up to @var{size} bytes from the file
-with descriptor @var{filedes}, storing the results in the
address@hidden  This is not necessarily a character string, and no
-terminating-null character is added.
-
address@hidden end of file, on a file descriptor
-The return value is the number of bytes actually read.  This might be
-less than @var{size}; for example, if there aren't that many bytes
-left in the file or if there aren't that many bytes immediately
-available.  The exact behavior depends on what kind of file it is.
-Reading less than @var{size} bytes is not an error.
-
-A value of 0 indicates end of file (except if the value of the
address@hidden argument is also 0).  This is not considered an error.
-If you keep calling @code{read} while at end of file, it will keep
-returning 0 and doing nothing else.
-
-If @code{read} returns at least one character, there is no way you can
-tell whether end of file was reached.  But if you did reach the end, the
-next read will return 0.
-
-In case of an error, @code{read} returns @math{-1}.  The following
address@hidden error conditions are defined for this function:
-
address@hidden @code
address@hidden EAGAIN
-Normally, when no input is immediately available, @code{read} waits for
-some input.  But if the @code{O_NONBLOCK} flag is set for the file
-(@pxref{File Status Flags}), @code{read} returns immediately without
-reading any data, and reports this error.
-
address@hidden Note:} Most versions of @acronym{BSD} Unix use a different
-error code for this, @code{EWOULDBLOCK}.  In the @acronym{GNU} library,
address@hidden is an alias for @code{EAGAIN}, so it doesn't matter
-which name you use.
-
-On some systems, reading a large amount of data from a character-special
-file can also fail with @code{EAGAIN} if the kernel cannot find enough
-physical memory to lock down the user's pages.  This is limited to
-devices that transfer with direct memory access into the user's memory,
-which means it does not include terminals, since they always use
-separate buffers inside the kernel.  This problem never happens in the
address@hidden system.
-
-Any condition that could result in @code{EAGAIN} can instead result in
-a successful @code{read} that returns fewer bytes than requested.
-Calling @code{read} again immediately would result in @code{EAGAIN}.
-
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor,
-or is not open for reading.
-
address@hidden EINTR
address@hidden was interrupted by a signal while it was waiting for input
-(@pxref{Interrupted Primitives}).  A signal will not necessarily cause
address@hidden to return @code{EINTR}; it may instead result in a
-successful @code{read} that returns fewer bytes than requested.
-
address@hidden EIO
-For many devices and for disk files, this error code indicates a
-hardware error.
-
address@hidden also occurs when a background process tries to read from the
-controlling terminal, and the normal action of stopping the process by
-sending it a @code{SIGTTIN} signal isn't working.  This might happen if
-the signal is being blocked or ignored, or because the process group is
-orphaned.  (@xref{Job Control} for more information about job control,
-and @ref{Signal Handling} for information about signals.)
address@hidden table
-
-There is no function named @code{read64}.  This is not necessary,
-since this function does not directly modify or handle the possibly
-wide file offset.  Since the kernel handles this state internally, the
address@hidden function can be used for all cases.
-
-This function is a cancellation point in multithreaded programs.  This
-is a problem if the thread allocates some resources (like memory, file
-descriptors, semaphores, etc.) at the time @code{read} is called.  If
-the thread gets canceled, these resources stay allocated until the
-program ends.  To avoid this, calls to @code{read} should be protected
-using cancellation handlers.
address@hidden ref pthread_cleanup_push / pthread_cleanup_pop
-
-The @code{read} function is the underlying primitive for all of the
-functions that read from streams, such as @code{fgetc}.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden Unix98
address@hidden ssize_t pread (int @var{filedes}, void address@hidden, size_t 
@var{size}, off_t @var{offset})
-The @code{pread} function is similar to the @code{read} function.  The
-first three arguments are identical, and the return values and error
-codes also correspond.
-
-The difference is the fourth argument and its handling.  The data block
-is not read from the current position of the file descriptor
address@hidden  Instead the data is read from the file starting at
-position @var{offset}.  The position of the file descriptor itself is
-not affected by the operation.  The value is the same as before the call.
-
-When the source file is compiled with @code{_FILE_OFFSET_BITS == 64},
-the @code{pread} function is in fact @code{pread64}, and the type
address@hidden has 64 bits, which makes it possible to handle files up
-to @math{2^63} bytes in length.
-
-The return value of @code{pread} describes the number of bytes read.
-In the case of an error, it returns @math{-1} like @code{read}
-does. The error codes are also the same, with these additions:
-
address@hidden @code
address@hidden EINVAL
-The value given for @var{offset} is negative and therefore illegal.
-
address@hidden ESPIPE
-The file descriptor @var{filedes} is associate with a pipe or a @acronym{FIFO} 
and
-this device does not allow positioning of the file pointer.
address@hidden table
-
-The function is an extension defined in the Unix Single Specification,
-version 2.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden Unix98
address@hidden ssize_t pread64 (int @var{filedes}, void address@hidden, size_t 
@var{size}, off64_t @var{offset})
-This function is similar to the @code{pread} function.  The difference
-is that the @var{offset} parameter is of type @code{off64_t} instead
-of @code{off_t}, which makes it possible on 32-bit machines to address
-files larger than @math{2^31} bytes and up to @math{2^63} bytes.  The
-file descriptor @code{filedes} must be opened using @code{open64}
-since otherwise the large offsets possible with @code{off64_t} will
-lead to errors with a descriptor in small file mode.
-
-When the source file is compiled with @code{_FILE_OFFSET_BITS == 64}
-on a 32-bit machine, this function is actually available under the
-name @code{pread} and so transparently replaces the 32-bit interface.
address@hidden deftypefun
-
address@hidden writing to a file descriptor
address@hidden unistd.h
address@hidden POSIX.1
address@hidden ssize_t write (int @var{filedes}, const void address@hidden, 
size_t @var{size})
-The @code{write} function writes up to @var{size} bytes from
address@hidden to the file with descriptor @var{filedes}.  The data in
address@hidden is not necessarily a character string, and a null
-character is output like any other character.
-
-The return value is the number of bytes actually written.  This may be
address@hidden, but can always be smaller.  Your program should always call
address@hidden in a loop, iterating until all the data is written.
-
-Once @code{write} returns, the data is enqueued to be written and can
-be read back right away, but it is not necessarily written out to
-permanent storage immediately.  You can use @code{fsync} when you need
-to be sure your data has been permanently stored before continuing.
-It is more efficient for the system to batch up consecutive writes and
-do them all at once when convenient.  Normally they will always be
-written to disk within a minute or less.  Modern systems provide
-another function, @code{fdatasync}, which guarantees integrity only for
-the file data and is therefore faster.
address@hidden !!! xref fsync, fdatasync
-You can use the @code{O_FSYNC} open mode to make @code{write} always
-store the data to disk before returning (@pxref{Operating Modes}).
-
-In the case of an error, @code{write} returns @math{-1}.  The following
address@hidden error conditions are defined for this function:
-
address@hidden @code
address@hidden EAGAIN
-Normally, @code{write} blocks until the write operation is complete.
-But if the @code{O_NONBLOCK} flag is set for the file (@pxref{Control
-Operations}), it returns immediately without writing any data and
-reports this error.  An example of a situation that might cause the
-process to block on output is writing to a terminal device that supports
-flow control, where output has been suspended by receipt of a STOP
-character.
-
address@hidden Note:} Most versions of @acronym{BSD} Unix use a different
-error code for this: @code{EWOULDBLOCK}.  In the @acronym{GNU} library,
address@hidden is an alias for @code{EAGAIN}, so it doesn't matter
-which name you use.
-
-On some systems, writing a large amount of data from a
-character-special file can also fail with @code{EAGAIN} if the kernel
-cannot find enough physical memory to lock down the user's pages.
-This is limited to devices that transfer with direct memory access
-into the user's memory, which means it does not include terminals,
-since they always use separate buffers inside the kernel.  This
-problem does not arise in the @acronym{GNU} system.
-
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor,
-or is not open for writing.
-
address@hidden EFBIG
-The size of the file would become larger than the implementation can support.
-
address@hidden EINTR
-The @code{write} operation was interrupted by a signal while it was
-blocked waiting for completion.  A signal will not necessarily cause
address@hidden to return @code{EINTR}; it may instead result in a
-successful @code{write} that writes fewer bytes than requested
-(@pxref{Interrupted Primitives}).
-
address@hidden EIO
-For many devices and for disk files, this error code indicates a
-hardware error.
-
address@hidden ENOSPC
-The device containing the file is full.
-
address@hidden EPIPE
-This error is returned when you try to write to a pipe or @acronym{FIFO} that
-isn't open for reading by any process.  When this happens, a @code{SIGPIPE}
-signal is also sent to the process (@pxref{Signal Handling}).
address@hidden table
-
-Unless you have arranged to prevent @code{EINTR} failures, you should
-check @code{errno} after each failing call to @code{write}, and if the
-error was @code{EINTR}, you should simply repeat the call
-(@pxref{Interrupted Primitives}).  The easy way to do this is with the
-macro @code{TEMP_FAILURE_RETRY}, as follows:
-
address@hidden
-nbytes = TEMP_FAILURE_RETRY (write (desc, buffer, count));
address@hidden smallexample
-
-There is no function named @code{write64}.  This is not necessary,
-since this function does not directly modify or handle the possibly
-wide file offset.  Since the kernel handles this state internally the
address@hidden function can be used for all cases.
-
-This function is a cancellation point in multithreaded programs.  This
-is a problem if the thread allocates some resources (like memory, file
-descriptors, semaphores or whatever) at the time @code{write} is
-called.  If the thread gets canceled, these resources stay allocated
-until the program ends.  To avoid this, calls to @code{write} should
-be protected using cancellation handlers.
address@hidden ref pthread_cleanup_push / pthread_cleanup_pop
-
-The @code{write} function is the underlying primitive for all of the
-functions that write to streams, such as @code{fputc}.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden Unix98
address@hidden ssize_t pwrite (int @var{filedes}, const void address@hidden, 
size_t @var{size}, off_t @var{offset})
-The @code{pwrite} function is similar to the @code{write} function.  The
-first three arguments are identical, and the return values and error codes
-also correspond.
-
-The difference is the fourth argument and its handling.  The data block
-is not written to the current position of the file descriptor
address@hidden  Instead the data is written to the file starting at
-position @var{offset}.  The position of the file descriptor itself is
-not affected by the operation.  The value is the same as before the call.
-
-When the source file is compiled with @code{_FILE_OFFSET_BITS == 64},
-the @code{pwrite} function is in fact @code{pwrite64} and the type
address@hidden has 64 bits, which makes it possible to handle files up
-to @math{2^63} bytes in length.
-
-The return value of @code{pwrite} describes the number of written
-bytes.  In the case of an error, it returns @math{-1} like
address@hidden does. The error codes are also the same, with these
-additions:
-
address@hidden @code
address@hidden EINVAL
-The value given for @var{offset} is negative and therefore illegal.
-
address@hidden ESPIPE
-The file descriptor @var{filedes} is associated with a pipe or a
address@hidden, and this device does not allow positioning of the file
-pointer.
address@hidden table
-
-The function is an extension defined in the Unix Single Specification,
-version 2.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden Unix98
address@hidden ssize_t pwrite64 (int @var{filedes}, const void address@hidden, 
size_t @var{size}, off64_t @var{offset})
-This function is similar to the @code{pwrite} function.  The
-difference is that the @var{offset} parameter is of type
address@hidden instead of @code{off_t}, which makes it possible on
-32-bit machines to address files larger than @math{2^31} bytes and up
-to @math{2^63} bytes.  The file descriptor @code{filedes} must be
-opened using @code{open64}, since otherwise the large offsets possible
-with @code{off64_t} will lead to errors with a descriptor in small
-file mode.
-
-When the source file is compiled using @code{_FILE_OFFSET_BITS == 64}
-on a 32-bit machine, this function is actually available under the name
address@hidden and so transparently replaces the 32-bit interface.
address@hidden deftypefun
-
-
address@hidden File Position Primitive
address@hidden Setting the File Position of a Descriptor
-
-Just as you can set the file position of a stream with @code{fseek}, you
-can set the file position of a descriptor with @code{lseek}.  This
-specifies the position in the file for the next @code{read} or
address@hidden address@hidden, ``File Positioning''.}
-
-To read the current file-position value from a descriptor, use
address@hidden (@var{desc}, 0, SEEK_CUR)}.
-
address@hidden file positioning on a file descriptor
address@hidden positioning a file descriptor
address@hidden seeking on a file descriptor
address@hidden unistd.h
address@hidden POSIX.1
address@hidden off_t lseek (int @var{filedes}, off_t @var{offset}, int 
@var{whence})
-The @code{lseek} function is used to change the file position of the
-file with descriptor @var{filedes}.
-
-The @var{whence} argument specifies how the @var{offset} should be
-interpreted, in the same way as for the @code{fseek} function, and it
-must be one of the symbolic constants @code{SEEK_SET}, @code{SEEK_CUR}
-or @code{SEEK_END}.
-
address@hidden @code
address@hidden SEEK_SET
-This specifies that @var{whence} is a count of characters from the beginning
-of the file.
-
address@hidden SEEK_CUR
-This specifies that @var{whence} is a count of characters from the current
-file position.  This count may be positive or negative.
-
address@hidden SEEK_END
-This specifies that @var{whence} is a count of characters from the end of
-the file.  A negative count specifies a position within the current
-extent of the file; a positive count specifies a position past the
-current end.  If you set the position past the current end, and
-actually write data, you will extend the file with zeros up to that
-position.
address@hidden table
-
-The return value from @code{lseek} is normally the resulting file
-position, measured in bytes from the beginning of the file.
-You can use this feature together with @code{SEEK_CUR} to read the
-current file position.
-
-If you want to append to the file, setting the file position to the
-current end of file with @code{SEEK_END} is not sufficient.  Another
-process may write more data after you seek but before you write,
-extending the file so the position you write onto clobbers their data.
-Instead, use the @code{O_APPEND} operating mode (@pxref{Operating Modes}).
-
-You can set the file position past the current end of the file.  This
-does not by itself make the file longer; @code{lseek} never changes
-the file.  But subsequent output at that position will extend the
-file.  Characters between the previous end of file and the new
-position are filled with zeros.  Extending the file in this way can
-create a @dfn{hole}: the blocks of zeros are not actually allocated on
-disk, so the file takes up less space than it appears to---it is then
-called a @dfn{sparse file}.
address@hidden sparse files
address@hidden holes in files
-
-If the file position cannot be changed, or the operation is in some way
-invalid, @code{lseek} returns a value of @math{-1}.  The following
address@hidden error conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} is not a valid file-descriptor.
-
address@hidden EINVAL
-The @var{whence} argument value is not valid, or the resulting
-file offset is not valid.  A file offset is invalid.
-
address@hidden ESPIPE
-The @var{filedes} corresponds to an object that cannot be positioned,
-such as a pipe, @acronym{FIFO} or terminal device.  @acronym{POSIX}.1
-specifies this error only for pipes and @acronym{FIFO}s, but in the
address@hidden system, you always get @code{ESPIPE} if the object is
-not seekable.
address@hidden table
-
-When the source file is compiled with @code{_FILE_OFFSET_BITS == 64},
-the @code{lseek} function is in fact @code{lseek64}, and the type
address@hidden has 64 bits, which makes it possible to handle files up
-to @math{2^63} bytes in length.
-
-This function is a cancellation point in multithreaded programs.  This
-is a problem if the thread allocates some resources (like memory, file
-descriptors, semaphores, etc.) at the time @code{lseek} is called.  If
-the thread gets canceled, these resources stay allocated until the
-program ends.  To avoid this, calls to @code{lseek} should be
-protected using cancellation handlers.
address@hidden ref pthread_cleanup_push / pthread_cleanup_pop
-
-The @code{lseek} function is the underlying primitive for the
address@hidden, @code{fseeko}, @code{ftell}, @code{ftello} and
address@hidden functions, which operate on streams instead of file
-descriptors.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden Unix98
address@hidden off64_t lseek64 (int @var{filedes}, off64_t @var{offset}, int 
@var{whence})
-This function is similar to the @code{lseek} function.  The difference
-is that the @var{offset} parameter is of type @code{off64_t} instead
-of @code{off_t}, which makes it possible on 32-bit machines to address
-files larger than @math{2^31} bytes and up to @math{2^63} bytes.  The
-file descriptor @code{filedes} must be opened using @code{open64},
-since otherwise the large offsets possible with @code{off64_t} will
-lead to errors with a descriptor in small file mode.
-
-When the source file is compiled with @code{_FILE_OFFSET_BITS == 64}
-on a 32-bit machine, this function is actually available under the
-name @code{lseek} and so transparently replaces the 32-bit interface.
address@hidden deftypefun
-
-You can have multiple descriptors for the same file if you open the file
-more than once, or if you duplicate a descriptor with @code{dup}.
-Descriptors that come from separate calls to @code{open} have independent
-file positions; using @code{lseek} on one descriptor has no effect on the
-other.  For example,
-
address@hidden
-
address@hidden
-  int d1, d2;
-  char buf[4];
-  d1 = open ("foo", O_RDONLY);
-  d2 = open ("foo", O_RDONLY);
-  lseek (d1, 1024, SEEK_SET);
-  read (d2, buf, 4);
address@hidden
-
address@hidden smallexample
-
address@hidden
-will read the first four characters of the file @file{foo}.  (The
-error-checking code necessary for a real program has been omitted here
-for brevity.)
-
-By contrast, descriptors made by duplication share a common file
-position with the original descriptor that was duplicated.  Anything
-that alters the file position of one of the duplicates, including
-reading or writing data, affects all of them alike.  Thus, for
-example:
-
address@hidden
address@hidden
-  int d1, d2, d3;
-  char buf1[4], buf2[4];
-  d1 = open ("foo", O_RDONLY);
-  d2 = dup (d1);
-  d3 = dup (d2);
-  lseek (d3, 1024, SEEK_SET);
-  read (d1, buf1, 4);
-  read (d2, buf2, 4);
address@hidden
address@hidden smallexample
-
address@hidden
-will read four characters starting with the 1024th character of
address@hidden, and then four more characters starting with the 1028th
-character.
-
address@hidden sys/types.h
address@hidden POSIX.1
address@hidden {Data Type} off_t
-This is an arithmetic data type used to represent file sizes.
-In the @acronym{GNU} system, this is equivalent to @code{fpos_t} or @code{long 
int}.
-
-If the source is compiled with @code{_FILE_OFFSET_BITS == 64}, this type
-is transparently replaced by @code{off64_t}.
address@hidden deftp
-
address@hidden sys/types.h
address@hidden Unix98
address@hidden {Data Type} off64_t
-This type is used similar to @code{off_t}.  The difference is that even
-on 32-bit machines, where the @code{off_t} type would have 32 bits,
address@hidden has 64 bits and so is able to address files up to
address@hidden bytes in length.
-
-When compiling with @code{_FILE_OFFSET_BITS == 64}, this type is
-available under the name @code{off_t}.
address@hidden deftp
-
-These aliases for the @address@hidden constants exist for the sake
-of compatibility with older @acronym{BSD} systems.  They are defined in two
-different header files: @file{fcntl.h} and @file{sys/file.h}.
-
address@hidden @code
address@hidden L_SET
-An alias for @code{SEEK_SET}
-
address@hidden L_INCR
-An alias for @code{SEEK_CUR}
-
address@hidden L_XTND
-An alias for @code{SEEK_END}
address@hidden table
-
address@hidden Descriptors and Streams
address@hidden Descriptors and Streams
address@hidden streams, and file descriptors
address@hidden converting file-descriptor to stream
address@hidden extracting file-descriptor from stream
-
-Given an open file-descriptor, you can create a stream for it with the
address@hidden function.  You can get the underlying file-descriptor for
-an existing stream with the @code{fileno} function.  These functions are
-declared in the header file @file{stdio.h}.
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden POSIX.1
address@hidden {FILE *} fdopen (int @var{filedes}, const char address@hidden)
-The @code{fdopen} function returns a new stream for the file descriptor
address@hidden
-
-The @var{opentype} argument is interpreted in the same way as for the
address@hidden function,@footnote{Ibid., ``Opening Streams''.} except
-that the @samp{b} option is not permitted; this is because
address@hidden makes no distinction between text and binary files.
-Also, @samp{w} and @samp{w+} do not cause truncation of the file;
-these have an effect only when opening a file, and in this case the
-file has already been opened.  You must make sure that the
address@hidden argument matches the actual mode of the open file
-descriptor.
-
-The return value is the new stream.  If the stream cannot be created
-(for example, if the modes for the file indicated by the file descriptor
-do not permit the access specified by the @var{opentype} argument), a
-null pointer is returned instead.
-
-In some other systems, @code{fdopen} may fail to detect that the modes
-for file descriptor do not permit the access specified by
address@hidden  The @acronym{GNU} C Library always checks for this.
address@hidden deftypefun
-
-For an example showing the use of the @code{fdopen} function,
-see @ref{Creating a Pipe}.
-
address@hidden stdio.h
address@hidden POSIX.1
address@hidden int fileno (FILE address@hidden)
-This function returns the file descriptor associated with the stream
address@hidden  If an error is detected (for example, if the @var{stream}
-is not valid) or if @var{stream} does not do I/O to a file,
address@hidden returns @math{-1}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden int fileno_unlocked (FILE address@hidden)
-The @code{fileno_unlocked} function is equivalent to the @code{fileno}
-function, except that it does not implicitly lock the stream if the
-state is @code{FSETLOCKING_INTERNAL}.
-
-This function is a @acronym{GNU} extension.
address@hidden deftypefun
-
address@hidden standard file-descriptors
address@hidden file-descriptors, standard
-There are also symbolic constants defined in @file{unistd.h} for the
-file descriptors belonging to the standard streams @code{stdin},
address@hidden and @address@hidden@footnote{Ibid., ``Standard
-Streams''.}
address@hidden unistd.h
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden @code
address@hidden STDIN_FILENO
address@hidden STDIN_FILENO
-This macro has value @code{0}, which is the file descriptor for
-standard input.
address@hidden standard input file-descriptor
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden STDOUT_FILENO
address@hidden STDOUT_FILENO
-This macro has value @code{1}, which is the file descriptor for
-standard output.
address@hidden standard output file-descriptor
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden STDERR_FILENO
address@hidden STDERR_FILENO
-This macro has value @code{2}, which is the file descriptor for
-standard error output.
address@hidden table
address@hidden standard error file-descriptor
-
address@hidden Stream/Descriptor Precautions
address@hidden Dangers of Mixing Streams and Descriptors
address@hidden channels
address@hidden streams and descriptors
address@hidden descriptors and streams
address@hidden mixing descriptors and streams
-
-You can have multiple file-descriptors and streams (let's call both
-streams and descriptors @dfn{channels} for short) connected to the same
-file, but you must take care to avoid confusion between channels.  There
-are two cases to consider: @dfn{linked} channels that share a single
-file position value, and @dfn{independent} channels that have their own
-file positions.
-
-It's best to use just one channel in your program for actual data
-transfer to any given file, except when all the access is for input.
-For example, if you open a pipe (something you can only do at the file
-descriptor level), either do all I/O with the descriptor, or construct
-a stream from the descriptor with @code{fdopen}, and then do all I/O
-with the stream.
-
address@hidden Linked Channels
address@hidden Linked Channels
address@hidden linked channels
-
-Channels that come from a single opening share the same file position;
-we call them @dfn{linked} channels.  Linked channels result when you
-make a stream from a descriptor using @code{fdopen}, when you get a
-descriptor from a stream with @code{fileno}, when you copy a descriptor
-with @code{dup} or @code{dup2}, and when descriptors are inherited
-during @code{fork}.  For files that don't support random access, such as
-terminals and pipes, @emph{all} channels are effectively linked.  On
-random-access files, all append-type output streams are effectively
-linked to each other.
-
address@hidden cleaning up a stream
-If you have been using a stream for I/O (or have just opened the
-stream), and you want to do I/O using another channel (either a stream
-or a descriptor) that is linked to it, you must first @dfn{clean up}
-the stream that you have been using (@pxref{Cleaning Streams}).
-
-Terminating a process, or executing a new program in the process,
-destroys all the streams in the process.  If descriptors linked to these
-streams persist in other processes, their file positions become
-undefined as a result.  To prevent this, you must clean up the streams
-before destroying them.
-
address@hidden Independent Channels
address@hidden Independent Channels
address@hidden independent channels
-
-When you open channels (streams or descriptors) separately on a seekable
-file, each channel has its own file position.  These are called
address@hidden channels}.
-
-The system handles each channel independently.  Most of the time, this
-is quite predictable and natural (especially for input)---each channel
-can read or write sequentially at its own place in the file.  However,
-if some of the channels are streams, you must take these precautions:
-
address@hidden @bullet
address@hidden
-You should clean an output stream after use, before doing anything else
-that might read or write from the same part of the file.
-
address@hidden
-You should clean an input stream before reading data that may have been
-modified using an independent channel.  Otherwise, you might read
-obsolete data that had been in the stream's buffer.
address@hidden itemize
-
-If you do output to one channel at the end of the file, this will
-certainly leave the other independent channels positioned somewhere
-before the new end.  You cannot reliably set their file positions to
-the new end of file before writing, because the file can always be
-extended by another process between when you set the file position and
-when you write the data.  Instead, use an append-type descriptor or
-stream---they always output at the current end of the file.  In order
-to make the end-of-file position accurate, you must clean the output
-channel you were using, if it is a stream.
-
-It's impossible for two channels to have separate file pointers for a
-file that doesn't support random access.  Thus, channels for reading or
-writing such files are always linked, never independent.  Append-type
-channels are also always linked.  For these channels, follow the rules
-for linked channels (@pxref{Linked Channels}).
-
address@hidden Cleaning Streams
address@hidden Cleaning Streams
-
-On the @acronym{GNU} system, you can clean up any stream with @code{fclean}:
-
address@hidden stdio.h
address@hidden GNU
address@hidden int fclean (FILE address@hidden)
-Clean up the stream @var{stream} so that its buffer is empty.  If
address@hidden is doing output, force it out.  If @var{stream} is doing
-input, give the data in the buffer back to the system, arranging to
-reread it.
address@hidden deftypefun
-
-On other systems, you can use @code{fflush} to clean a stream in most
-cases.
-
-You can skip the @code{fclean} or @code{fflush} if you know the stream
-is already clean.  A stream is clean whenever its buffer is empty.  For
-example, an unbuffered stream is always clean.  An input stream that is
-at end-of-file is clean.  A line-buffered stream is clean when the last
-character output was a newline.  However, a just-opened input stream
-might not be clean, as its input buffer might not be empty.
-
-There is one case in which cleaning a stream is impossible on most
-systems.  This is when the stream is doing input from a file that is
-not random access.  Such streams typically read ahead, and when the
-file is not random access, there is no way to give back the excess
-data already read.  When an input stream reads from a random-access
-file, @code{fflush} does clean the stream, but leaves the file pointer
-at an unpredictable place; you must set the file pointer before doing
-any further I/O.  On the @acronym{GNU} system, using @code{fclean}
-avoids both of these problems.
-
-Closing an output-only stream also does @code{fflush}, so this is a
-valid way of cleaning an output stream.  On the @acronym{GNU} system, closing 
an
-input stream does @code{fclean}.
-
-You need not clean a stream before using its descriptor for control
-operations such as setting terminal modes---these operations don't
-affect the file position and are not affected by it.  You can use any
-descriptor for these operations, and all channels are affected
-simultaneously.  However, text already ``output'' to a stream but
-still buffered by the stream will be subject to the new terminal modes
-when subsequently flushed.  To make sure ``past'' output is covered by
-the terminal settings that were in effect at the time, flush the
-output streams for that terminal before setting the modes
-(@pxref{Terminal Modes}).
-
address@hidden Scatter-Gather
address@hidden Fast Scatter-Gather I/O
address@hidden scatter-gather
-
-Some applications may need to read or write data to multiple buffers,
-which are separated in memory.  Although this can be done easily enough
-with multiple calls to @code{read} and @code{write}, it is inefficient
-because there is overhead associated with each kernel call.
-
-Instead, many platforms provide special high-speed primitives to perform
-these @dfn{scatter-gather} operations in a single kernel call.  The 
@acronym{GNU} C
-library will provide an emulation on any system that lacks these
-primitives, so they are not a portability threat.  They are defined in
address@hidden/uio.h}.
-
-These functions are controlled with arrays of @code{iovec} structures,
-which describe the location and size of each buffer.
-
address@hidden sys/uio.h
address@hidden BSD
address@hidden {Data Type} {struct iovec}
-
-The @code{iovec} structure describes a buffer. It contains two fields:
-
address@hidden @code
-
address@hidden void *iov_base
-This contains the address of a buffer.
-
address@hidden size_t iov_len
-This contains the length of the buffer.
-
address@hidden table
address@hidden deftp
-
address@hidden sys/uio.h
address@hidden BSD
address@hidden ssize_t readv (int @var{filedes}, const struct iovec 
address@hidden, int @var{count})
-
-The @code{readv} function reads data from @var{filedes} and scatters it
-into the buffers described in @var{vector}, which is taken to be
address@hidden structures long.  As each buffer is filled, data is sent to the
-next.
-
address@hidden is not guaranteed to fill all the buffers.  It may stop
-at any point, for the same reasons @code{read} would.
-
-The return value is a count of bytes (@emph{not} buffers) read, @math{0}
-indicating end-of-file, or @math{-1} indicating an error.  The possible
-errors are the same as in @code{read}.
-
address@hidden deftypefun
-
address@hidden sys/uio.h
address@hidden BSD
address@hidden ssize_t writev (int @var{filedes}, const struct iovec 
address@hidden, int @var{count})
-
-The @code{writev} function gathers data from the buffers described in
address@hidden, which is taken to be @var{count} structures long, and writes
-them to @code{filedes}.  As each buffer is written, it moves on to the
-next.
-
-Like @code{readv}, @code{writev} may stop midstream under the same
-conditions @code{write} would.
-
-The return value is a count of bytes written, or @math{-1} indicating an
-error.  The possible errors are the same as in @code{write}.
-
address@hidden deftypefun
-
address@hidden Note - I haven't read this anywhere. I surmised it from my 
knowledge
address@hidden of computer science. Thus, there could be subtleties I'm missing.
-
-If the buffers are small (under about 1kB), high-level streams may be
-easier to use than these functions.  However, @code{readv} and
address@hidden are more efficient when the individual buffers
-themselves (as opposed to the total output), are large.  In that case,
-a high-level stream would not be able to cache the data effectively.
-
address@hidden Memory-Mapped I/O
address@hidden Memory-Mapped I/O
-
-On modern operating systems, it is possible to @dfn{mmap} (pronounced
-``em-map'') a file to a region of memory.  When this is done, the file can
-be accessed just like an array in the program.
-
-This is more efficient than @code{read} or @code{write}, since only
-the regions of the file that a program actually accesses are loaded.
-Accesses to not-yet-loaded parts of the mmapped region are handled in
-the same way as swapped-out pages.
-
-Since mmapped pages can be stored back to their file when physical
-memory is low, it is possible to mmap files orders of magnitude larger
-than both the physical memory @emph{and} swap space.  The only limit
-is address space.  The theoretical limit is 4GB on a 32-bit
-machine---however, the actual limit will be smaller since some areas
-will be reserved for other purposes.  If the @acronym{LFS} interface
-is used, the file size on 32-bit systems is not limited to 2GB
-(offsets are signed, which reduces the addressable area of 4GB by
-half); the full 64 bits are available.
-
-Memory mapping only works on entire pages of memory.  Thus, addresses
-for mapping must be page aligned, and length values will be rounded
-up.  To determine the size of a page the machine uses, you should use:
-
address@hidden _SC_PAGESIZE
address@hidden
-size_t page_size = (size_t) sysconf (_SC_PAGESIZE);
address@hidden smallexample
-
address@hidden
-These functions are declared in @file{sys/mman.h}.
-
address@hidden sys/mman.h
address@hidden POSIX
address@hidden {void *} mmap (void address@hidden, size_t @var{length},int 
@var{protect}, int @var{flags}, int @var{filedes}, off_t @var{offset})
-
-The @code{mmap} function creates a new mapping, connected to bytes
-(@var{offset}) to (@var{offset} + @var{length} - 1) in the file open on
address@hidden  A new reference for the file specified by @var{filedes}
-is created, which is not removed by closing the file.
-
address@hidden gives a preferred starting address for the mapping.
address@hidden expresses no preference. Any previous mapping at that
-address is automatically removed. The address you give may still be
-changed, unless you use the @code{MAP_FIXED} flag.
-
address@hidden PROT_READ
address@hidden PROT_WRITE
address@hidden PROT_EXEC
address@hidden contains flags that control what kind of access is
-permitted.  They include @code{PROT_READ}, @code{PROT_WRITE} and
address@hidden, which permit reading, writing and execution,
-respectively.  Inappropriate access will cause a segfault
-(@pxref{Program-Error Signals}).
-
-Most hardware designs cannot support write permission without read
-permission, and many do not distinguish read and execute permission.
-Thus, you may receive wider permissions than you ask for, and mappings
-of write-only files may be denied even if you do not use
address@hidden
-
address@hidden contains flags that control the nature of the map.
-One of @code{MAP_SHARED} or @code{MAP_PRIVATE} must be specified.
-
-They include:
-
address@hidden @code
address@hidden MAP_PRIVATE
-This specifies that writes to the region should never be written back
-to the attached file.  Instead, a copy is made for the process, and the
-region will be swapped normally if memory runs low.  No other process will
-see the changes.
-
-Since private mappings effectively revert to ordinary memory
-when written to, you must have enough virtual memory for a copy of
-the entire mmapped region if you use this mode with @code{PROT_WRITE}.
-
address@hidden MAP_SHARED
-This specifies that writes to the region will be written back to the
-file.  Changes made will be shared immediately with other processes
-mmaping the same file.
-
-Actual writing may take place at any time.  You need to use
address@hidden, described below, if it is important that other processes
-using conventional I/O get a consistent view of the file.
-
address@hidden MAP_FIXED
-This forces the system to use the exact mapping address specified in
address@hidden and to fail if it can't.
-
address@hidden One of these is official - the other is obviously an obsolete 
synonym
address@hidden Which is which?
address@hidden MAP_ANONYMOUS
address@hidden MAP_ANON
-This flag tells the system to create an anonymous mapping, not connected
-to a file.  @var{filedes} and @var{off} are ignored, and the region is
-initialized with zeros.
-
-Anonymous maps are used as the basic primitive to extend the heap on some
-systems.  They are also useful to share data between multiple tasks
-without creating a file.
-
-On some systems, using private anonymous mmaps is more efficient than
-using @code{malloc} for large blocks.  This is not an issue with the
address@hidden C Library, since the included @code{malloc}
-automatically uses @code{mmap} where appropriate.
-
address@hidden Linux has some other MAP_ options, which I have not discussed 
here.
address@hidden MAP_DENYWRITE, MAP_EXECUTABLE and MAP_GROWSDOWN don't seem 
applicable to
address@hidden user programs (and I don't understand the last two). MAP_LOCKED 
does
address@hidden not appear to be implemented.
-
address@hidden vtable
-
address@hidden returns the address of the new mapping, or @math{-1} for an
-error.
-
-Possible errors include:
-
address@hidden @code
-
address@hidden EINVAL
-
-Either @var{address} was unusable, or inconsistent @var{flags} were
-given.
-
address@hidden EACCES
-
address@hidden was not open for the type of access specified in @var{protect}.
-
address@hidden ENOMEM
-
-Either there is not enough memory for the operation, or the process is
-out of address space.
-
address@hidden ENODEV
-
-This file is of a type that doesn't support mapping.
-
address@hidden ENOEXEC
-
-The file is on a file system that doesn't support mapping.
-
address@hidden On Linux, EAGAIN will appear if the file has a conflicting 
mandatory lock.
address@hidden However mandatory locks are not discussed in this manual.
address@hidden
address@hidden Similarly, ETXTBSY will occur if the MAP_DENYWRITE flag (not 
documented
address@hidden here) is used and the file is already open for writing.
-
address@hidden table
-
address@hidden deftypefun
-
address@hidden sys/mman.h
address@hidden LFS
address@hidden {void *} mmap64 (void address@hidden, size_t @var{length},int 
@var{protect}, int @var{flags}, int @var{filedes}, off64_t @var{offset})
-The @code{mmap64} function is equivalent to the @code{mmap} function,
-but the @var{offset} parameter is of type @code{off64_t}.  On 32-bit
-systems, this allows the file associated with the @var{filedes}
-descriptor to be larger than 2GB.  @var{filedes} must be a descriptor
-returned from a call to @code{open64} or @code{fopen64} and
address@hidden, where the descriptor is retrieved with
address@hidden
-
-When the sources are translated with @code{_FILE_OFFSET_BITS == 64},
-this function is actually available under the name @code{mmap}---the
-new, extended @acronym{API} using 64-bit file sizes and offsets
-transparently replaces the old @acronym{API}.
address@hidden deftypefun
-
address@hidden sys/mman.h
address@hidden POSIX
address@hidden int munmap (void address@hidden, size_t @var{length})
-
address@hidden removes any memory maps from (@var{addr}) to (@var{addr} +
address@hidden).  @var{length} should be the length of the mapping.
-
-It is safe to unmap multiple mappings in one command, or include unmapped
-space in the range.  It is also possible to unmap only part of an existing
-mapping.  However, only entire pages can be removed.  If @var{length} is not
-an even number of pages, it will be rounded up.
-
-It returns @math{0} for success and @math{-1} for an error.
-
-One error is possible:
-
address@hidden @code
-
address@hidden EINVAL
-The memory range given was outside the user mmap range or wasn't page
-aligned.
-
address@hidden table
-
address@hidden deftypefun
-
address@hidden sys/mman.h
address@hidden POSIX
address@hidden int msync (void address@hidden, size_t @var{length}, int 
@var{flags})
-
-When using shared mappings, the kernel can write the file at any time
-before the mapping is removed.  To be certain data has actually been
-written to the file and will be accessible to non-memory-mapped I/O, it
-is necessary to use this function.
-
-It operates on the region @var{address} to (@var{address} +
address@hidden).  It may be used on part of a mapping or multiple
-mappings; however, the region given should not contain any unmapped
-space.
-
address@hidden can contain some options:
-
address@hidden @code
-
address@hidden MS_SYNC
-
-This flag makes sure the data is actually written @emph{to disk}.
-Normally @code{msync} only makes sure that accesses to a file with
-conventional I/O reflect the recent changes.
-
address@hidden MS_ASYNC
-
-This tells @code{msync} to begin the synchronization, but not to wait for
-it to complete.
-
address@hidden Linux also has MS_INVALIDATE, which I don't understand.
-
address@hidden vtable
-
address@hidden returns @math{0} for success and @math{-1} for
-error.  Errors include:
-
address@hidden @code
-
address@hidden EINVAL
-An invalid region was given, or the @var{flags} were invalid.
-
address@hidden EFAULT
-There is no existing mapping in at least part of the given region.
-
address@hidden table
-
address@hidden deftypefun
-
address@hidden sys/mman.h
address@hidden GNU
address@hidden {void *} mremap (void address@hidden, size_t @var{length}, 
size_t @var{new_length}, int @var{flag})
-
-This function can be used to change the size of an existing memory
-area. @var{address} and @var{length} must cover a region entirely mapped
-in the same @code{mmap} statement. A new mapping with the same
-characteristics will be returned with the length @var{new_length}.
-
-One option is possible, @code{MREMAP_MAYMOVE}. If it is given in
address@hidden, the system may remove the existing mapping and create a new
-one of the desired length in another location.
-
-The address of the resulting mapping is returned, or @math{-1}. Possible
-error codes include:
-
address@hidden @code
-
address@hidden EFAULT
-There is no existing mapping in at least part of the original region, or
-the region covers two or more distinct mappings.
-
address@hidden EINVAL
-The address given is misaligned or inappropriate.
-
address@hidden EAGAIN
-The region has pages locked, and if extended it would exceed the
-process's resource limit for locked pages (@pxref{Limits on Resources}).
-
address@hidden ENOMEM
-The region is private writable, and insufficient virtual memory is
-available to extend it.  Also, this error will occur if
address@hidden is not given and the extension would collide with
-another mapped region.
-
address@hidden table
address@hidden deftypefun
-
-This function is only available on a few systems.  Except for performing
-optional optimizations, you should not rely on this function.
-
-Not all file descriptors may be mapped.  Sockets, pipes and most
-devices only allow sequential access and do not fit into the mapping
-abstraction.  In addition, some regular files may not be mmapable, and
-older kernels may not support mapping at all.  Thus, programs using
address@hidden should have a fallback method to use should it
address@hidden Stallman et al., ``Mmap'' in @emph{GNU Coding
-Standards} (January 16, 2004),
address@hidden:// www.gnu.org/ prep/ standards_toc.html}.}
-
address@hidden sys/mman.h
address@hidden POSIX
address@hidden int madvise (void address@hidden, size_t @var{length}, int 
@var{advice})
-
-This function can be used to provide the system with @var{advice} about
-the intended usage patterns of the memory region starting at @var{addr}
-and extending @var{length} bytes.
-
-The valid @acronym{BSD} values for @var{advice} are
-
address@hidden @code
-
address@hidden MADV_NORMAL
-The region should receive no further special treatment.
-
address@hidden MADV_RANDOM
-The region will be accessed via random page references. The kernel
-should page-in the minimal number of pages for each page fault.
-
address@hidden MADV_SEQUENTIAL
-The region will be accessed via sequential page references. This
-may cause the kernel to aggressively read ahead, expecting further
-sequential references after any page fault within this region.
-
address@hidden MADV_WILLNEED
-The region will be needed.  The pages within this region may
-be prefaulted in by the kernel.
-
address@hidden MADV_DONTNEED
-The region is no longer needed.  The kernel may free these pages,
-causing any changes to the pages to be lost, as well as swapped-out
-pages to be discarded.
-
address@hidden table
-
-The @acronym{POSIX} names are slightly different, but with the same meanings:
-
address@hidden @code
-
address@hidden POSIX_MADV_NORMAL
-This corresponds with @acronym{BSD}'s @code{MADV_NORMAL}.
-
address@hidden POSIX_MADV_RANDOM
-This corresponds with @acronym{BSD}'s @code{MADV_RANDOM}.
-
address@hidden POSIX_MADV_SEQUENTIAL
-This corresponds with @acronym{BSD}'s @code{MADV_SEQUENTIAL}.
-
address@hidden POSIX_MADV_WILLNEED
-This corresponds with @acronym{BSD}'s @code{MADV_WILLNEED}.
-
address@hidden POSIX_MADV_DONTNEED
-This corresponds with @acronym{BSD}'s @code{MADV_DONTNEED}.
-
address@hidden table
-
address@hidden returns @math{0} for success and @math{-1} for
-error.  Errors include:
address@hidden @code
-
address@hidden EINVAL
-An invalid region was given, or the @var{advice} was invalid.
-
address@hidden EFAULT
-There is no existing mapping in at least part of the given region.
-
address@hidden table
address@hidden deftypefun
-
address@hidden Waiting for I/O
address@hidden Waiting for Input or Output
address@hidden waiting for input or output
address@hidden multiplexing input
address@hidden input from multiple files
-
-Sometimes a program needs to accept input on multiple input channels
-whenever input arrives.  For example, some workstations may have
-devices such as a digitizing tablet, function-button box or dial box
-that are connected via normal asynchronous serial interfaces; good
-user interface style requires responding immediately to input on any
-device.  Another example is a program that acts as a server to several
-other processes via pipes or sockets.
-
-You cannot normally use @code{read} for this purpose, because this
-blocks the program until input is available on one particular file
-descriptor; input on other channels won't wake it up.  You could set
-nonblocking mode and poll each file-descriptor in turn, but this is very
-inefficient.
-
-A better solution is to use the @code{select} function.  This blocks the
-program until input or output is ready on a specified set of file
-descriptors, or until a timer expires, whichever comes first.  This
-facility is declared in the header file @file{sys/types.h}.
address@hidden sys/types.h
-
-In the case of a server socket (@pxref{Listening}), we say that
-``input'' is available when there are pending connections that could be
-accepted (@pxref{Accepting Connections}).  @code{accept} for server
-sockets blocks and interacts with @code{select} just as @code{read} does
-for normal input.
-
address@hidden file-descriptor sets, for @code{select}
-The file-descriptor sets for the @code{select} function are specified
-as @code{fd_set} objects.  Here is the description of the data type
-and some macros for manipulating these objects:
-
address@hidden sys/types.h
address@hidden BSD
address@hidden {Data Type} fd_set
-The @code{fd_set} data type represents file-descriptor sets for the
address@hidden function.  It is actually a bit array.
address@hidden deftp
-
address@hidden sys/types.h
address@hidden BSD
address@hidden Macro int FD_SETSIZE
-The value of this macro is the maximum number of file descriptors that
-a @code{fd_set} object can hold information about.  On systems with a
-fixed maximum number, @code{FD_SETSIZE} is at least that number.  On
-some systems, including @acronym{GNU}, there is no absolute limit on
-the number of descriptors open, but this macro still has a constant
-value that controls the number of bits in an @code{fd_set}; if you get
-a file descriptor with a value as high as @code{FD_SETSIZE}, you
-cannot put that descriptor into an @code{fd_set}.
address@hidden deftypevr
-
address@hidden sys/types.h
address@hidden BSD
address@hidden Macro void FD_ZERO (fd_set address@hidden)
-This macro initializes the file-descriptor set @var{set} to be the
-empty set.
address@hidden deftypefn
-
address@hidden sys/types.h
address@hidden BSD
address@hidden Macro void FD_SET (int @var{filedes}, fd_set address@hidden)
-This macro adds @var{filedes} to the file-descriptor set @var{set}.
-
-The @var{filedes} parameter must not have side effects, since it is
-evaluated more than once.
address@hidden deftypefn
-
address@hidden sys/types.h
address@hidden BSD
address@hidden Macro void FD_CLR (int @var{filedes}, fd_set address@hidden)
-This macro removes @var{filedes} from the file-descriptor set @var{set}.
-
-The @var{filedes} parameter must not have side effects, since it is
-evaluated more than once.
address@hidden deftypefn
-
address@hidden sys/types.h
address@hidden BSD
address@hidden Macro int FD_ISSET (int @var{filedes}, const fd_set 
address@hidden)
-This macro returns a nonzero value (true) if @var{filedes} is a member
-of the file-descriptor set @var{set}, and 0 (false) otherwise.
-
-The @var{filedes} parameter must not have side effects, since it is
-evaluated more than once.
address@hidden deftypefn
-
-Next, here is the description of the @code{select} function itself.
-
address@hidden sys/types.h
address@hidden BSD
address@hidden int select (int @var{nfds}, fd_set address@hidden, fd_set 
address@hidden, fd_set address@hidden, struct timeval address@hidden)
-The @code{select} function blocks the calling process until there is
-activity on any of the specified sets of file descriptors, or until the
-timeout period has expired.
-
-The file descriptors specified by the @var{read-fds} argument are
-checked to see if they are ready for reading; the @var{write-fds} file
-descriptors are checked to see if they are ready for writing; and the
address@hidden file-descriptors are checked for exceptional
-conditions.  You can pass a null pointer for any of these arguments if
-you are not interested in checking for that kind of condition.
-
-A file descriptor is considered ready for reading if it is not at end of
-file.  A server socket is considered ready for reading if there is a
-pending connection which can be accepted with @code{accept}
-(@pxref{Accepting Connections}).  A client socket is ready for writing when
-its connection is fully established (@pxref{Connecting}).
-
-``Exceptional conditions'' does not mean errors---errors are reported
-immediately when an erroneous system call is executed, and do not
-constitute a state of the descriptor.  Rather, they include conditions
-such as the presence of an urgent message on a socket (@pxref{Sockets}).
-
-
-The @code{select} function checks only the first @var{nfds} file
-descriptors.  The usual thing is to pass @code{FD_SETSIZE} as the value
-of this argument.
-
-The @var{timeout} specifies the maximum time to wait.  If you pass a
-null pointer for this argument, it means to block indefinitely until
-one of the file descriptors is ready.  Otherwise, you should provide
-the time in @code{struct timeval} address@hidden Loosemore et
-al., ``High-Resolution Calendar'' (see chap. 1, n. 1).}  Specify zero
-as the time (a @code{struct timeval} containing all zeros) if you want
-to find out which descriptors are ready without waiting if none are
-ready.
-
-The normal return value from @code{select} is the total number of ready file
-descriptors in all of the sets.  Each of the argument sets is overwritten
-with information about the descriptors that are ready for the corresponding
-operation.  Thus, to see if a particular descriptor @var{desc} has input,
-use @code{FD_ISSET (@var{desc}, @var{read-fds})} after @code{select} returns.
-
-If @code{select} returns because the time-out period expires, it returns
-a value of 0.
-
-Any signal will cause @code{select} to return immediately.  So if your
-program uses signals, you can't rely on @code{select} to keep waiting
-for the full time specified.  If you want to be sure of waiting for a
-particular amount of time, you must check for @code{EINTR} and repeat
-the @code{select} with a newly calculated time-out based on the
-current time (see the example below and @ref{Interrupted Primitives}).
-
-If an error occurs, @code{select} returns @code{-1} and does not modify
-the argument file-descriptor sets.  The following @code{errno} error
-conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-One of the file-descriptor sets specified an invalid file-descriptor.
-
address@hidden EINTR
-The operation was interrupted by a signal (@pxref{Interrupted Primitives}).
-
address@hidden EINVAL
-The @var{timeout} argument is invalid; one of the components is negative
-or too large.
address@hidden table
address@hidden deftypefun
-
address@hidden Note:}  The @code{select} function is a @acronym{BSD} Unix
-feature.
-
-Here is an example showing how you can use @code{select} to establish a
-time-out period for reading from a file descriptor.  The @code{input_timeout}
-function blocks the calling process until input is available on the
-file descriptor, or until the time-out period expires.
-
address@hidden
-
-#include <errno.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/time.h>
-
-
-
-int
-input_timeout (int filedes, unsigned int seconds)
address@hidden
-  fd_set set;
-  struct timeval timeout;
-
-
-  /* @r{Initialize the file-descriptor set.} */
-  FD_ZERO (&set);
-  FD_SET (filedes, &set);
-
-  /* @r{Initialize the timeout data structure.} */
-  timeout.tv_sec = seconds;
-  timeout.tv_usec = 0;
-
-
-  /* @address@hidden returns 0 if timeout, 1 if input available, -1 if error.} 
*/
-  return TEMP_FAILURE_RETRY (select (FD_SETSIZE,
-                                     &set, NULL, NULL,
-                                     &timeout));
address@hidden
-
-
-
-int
-main (void)
address@hidden
-  fprintf (stderr, "select returned %d.\n",
-           input_timeout (STDIN_FILENO, 5));
-  return 0;
address@hidden
-
-
address@hidden smallexample
-
-There is another example showing the use of @code{select} to multiplex
-input from multiple sockets in @ref{Server Example}.
-
-
address@hidden Synchronizing I/O
address@hidden Synchronizing I/O Operations
-
address@hidden synchronizing
-In most modern operating systems, the normal I/O operations are not
-executed synchronously; even if a @code{write} system call returns,
-this does not mean the data is actually written to the media, e.g.,
-the disk.
-
-In situations where synchronization points are necessary, you can use
-special functions that ensure that all operations finish before they
-return.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden int sync (void)
-A call to this function will not return as long as there is data that
-has not been written to the device.  All dirty buffers in the kernel
-will be written and so an overall consistent system can be achieved
-(if no other process in parallel writes data).
-
-A prototype for @code{sync} can be found in @file{unistd.h}.
-
-The return value is 0 to indicate no error.
address@hidden deftypefun
-
-Programs more often want to ensure that data written to a given file is
-committed, rather than all data in the system.  For this, @code{sync} is 
overkill.
-
-
address@hidden unistd.h
address@hidden POSIX
address@hidden int fsync (int @var{fildes})
-The @code{fsync} function can be used to make sure all data associated with
-the open file @var{fildes} is written to the device associated with the
-descriptor.  The function call does not return unless all actions have
-finished.
-
-A prototype for @code{fsync} can be found in @file{unistd.h}.
-
-This function is a cancellation point in multithreaded programs.  This
-is a problem if the thread allocates some resources (like memory, file
-descriptors, semaphores, etc.) at the time @code{fsync} is called.  If
-the thread gets canceled, these resources stay allocated until the
-program ends.  To avoid this, calls to @code{fsync} should be
-protected using cancellation handlers.
address@hidden ref pthread_cleanup_push / pthread_cleanup_pop
-
-The return value of the function is 0 if no error occurred.
-Otherwise, it is @math{-1} and the global variable @var{errno} is set
-to the following values:
address@hidden @code
address@hidden EBADF
-The descriptor @var{fildes} is not valid.
-
address@hidden EINVAL
-No synchronization is possible since the system does not implement this.
address@hidden table
address@hidden deftypefun
-
-Sometimes it is not even necessary to write all data associated with a
-file descriptor.  For example, in database files that do not change in
-size, it is enough to write all the file content data to the device.
-Metainformation, such as the modification time, is not that important,
-and leaving such information uncommitted does not prevent a successful
-recovering of the file in case of a problem.
-
address@hidden unistd.h
address@hidden POSIX
address@hidden int fdatasync (int @var{fildes})
-When a call to the @code{fdatasync} function returns, it is ensured
-that all of the file data is written to the device.  For all pending I/O
-operations, the parts guaranteeing data integrity finished.
-
-Not all systems implement the @code{fdatasync} operation.  On systems
-missing this functionality, @code{fdatasync} is emulated by a call to
address@hidden since the performed actions are a superset of those
-required by @code{fdatasync}.
-
-The prototype for @code{fdatasync} is in @file{unistd.h}.
-
-The return value of the function is 0 if no error occurred.
-Otherwise, it is @math{-1} and the global variable @var{errno} is set
-to the following values:
address@hidden @code
address@hidden EBADF
-The descriptor @var{fildes} is not valid.
-
address@hidden EINVAL
-No synchronization is possible since the system does not implement this.
address@hidden table
address@hidden deftypefun
-
-
address@hidden Asynchronous I/O
address@hidden Perform I/O Operations in Parallel
-
-The @acronym{POSIX}.1b standard defines a new set of I/O operations
-that can significantly reduce the time an application spends waiting
-at I/O.  The new functions allow a program to initiate one or more I/O
-operations and then immediately resume normal work while the I/O
-operations are executed in parallel.  This functionality is available
-if the @file{unistd.h} file defines the symbol
address@hidden
-
-These functions are part of the library with real-time functions named
address@hidden  They are not actually part of the @file{libc} binary.
-The implementation of these functions can be done using support in the
-kernel (if available) or using an implementation based on threads at
-user level.  In the latter case, it might be necessary to link
-applications with the thread library @file{libpthread} in addition to
address@hidden
-
-All @acronym{AIO} operations operate on files that were opened
-previously.  There might be an arbitrary number of operations running
-for one file.  The asynchronous I/O operations are controlled using a
-data structure named @code{struct aiocb} (@address@hidden control
-block}).  It is defined in @file{aio.h} as follows:
-
address@hidden aio.h
address@hidden POSIX.1b
address@hidden {Data Type} {struct aiocb}
-The @acronym{POSIX}.1b standard mandates that the @code{struct aiocb}
-structure contain at least the members described in the following
-table.  There might be more elements that are used by the
-implementation, but depending upon these elements is not portable and
-is highly deprecated.
-
address@hidden @code
address@hidden int aio_fildes
-This element specifies the file descriptor to be used for the
-operation.  It must be a legal descriptor, otherwise the operation will
-fail.
-
-The device on which the file is opened must allow the seek
-operation---it is not possible to use any of the @acronym{AIO}
-operations on devices like terminals, where an @code{lseek} call would
-lead to an error.
-
address@hidden off_t aio_offset
-This element specifies the offset in the file at which the operation (input
-or output) is performed.  Since the operations are carried out in arbitrary
-order and more than one operation for one file descriptor can be
-started, you cannot expect a current read/write position of the file
-descriptor.
-
address@hidden volatile void *aio_buf
-This is a pointer to the buffer with the data to be written or the place
-where the read data is stored.
-
address@hidden size_t aio_nbytes
-This element specifies the length of the buffer pointed to by @code{aio_buf}.
-
address@hidden int aio_reqprio
-If the platform has defined @code{_POSIX_PRIORITIZED_IO} and
address@hidden, the @acronym{AIO} requests are
-processed based on the current scheduling priority.  The
address@hidden element can then be used to lower the priority of the
address@hidden operation.
-
address@hidden struct sigevent aio_sigevent
-This element specifies how the calling process is notified once the
-operation terminates.  If the @code{sigev_notify} element is
address@hidden, no notification is sent.  If it is
address@hidden, the signal determined by @code{sigev_signo} is
-sent.  Otherwise, @code{sigev_notify} must be @code{SIGEV_THREAD}.  In
-this case, a thread is created that starts executing the function
-pointed to by @code{sigev_notify_function}.
-
address@hidden int aio_lio_opcode
-This element is only used by the @code{lio_listio} and
address@hidden functions.  Since these functions allow an
-arbitrary number of operations to start at once, and each operation can be
-input or output (or nothing), the information must be stored in the
-control block.  The possible values are
-
address@hidden @code
address@hidden LIO_READ
-Start a read operation.  Read from the file at position
address@hidden and store the next @code{aio_nbytes} bytes in the
-buffer pointed to by @code{aio_buf}.
-
address@hidden LIO_WRITE
-Start a write operation.  Write @code{aio_nbytes} bytes starting at
address@hidden into the file starting at position @code{aio_offset}.
-
address@hidden LIO_NOP
-Do nothing for this control block.  This value is useful sometimes when
-an array of @code{struct aiocb} values contains holes, i.e., some of the
-values must not be handled although the whole array is presented to the
address@hidden function.
address@hidden vtable
address@hidden table
-
-When the sources are compiled using @code{_FILE_OFFSET_BITS == 64} on a
-32-bit machine, this type is in fact @code{struct aiocb64}, since the 
@acronym{LFS}
-interface transparently replaces the @code{struct aiocb} definition.
address@hidden deftp
-
-For use with the @acronym{AIO} functions defined in the @acronym{LFS},
-there is a similar type defined that replaces the types of the
-appropriate members with larger types but otherwise is equivalent to
address@hidden aiocb}.  Particularly, all member names are the same.
-
address@hidden aio.h
address@hidden POSIX.1b
address@hidden {Data Type} {struct aiocb64}
address@hidden @code
address@hidden int aio_fildes
-This element specifies the file descriptor that is used for the
-operation.  It must be a legal descriptor, since otherwise the
-operation fails for obvious reasons.
-
-The device on which the file is opened must allow the seek
-operation---it is not possible to use any of the @acronym{AIO}
-operations on devices like terminals, where an @code{lseek} call would
-lead to an error.
-
address@hidden off64_t aio_offset
-This element specifies at which offset in the file the operation (input
-or output) is performed.  Since the operations are carried out in arbitrary
-order and more than one operation for one file descriptor can be
-started, you cannot expect a current read/write position of the file
-descriptor.
-
address@hidden volatile void *aio_buf
-This is a pointer to the buffer with the data to be written or the place
-where the read data is stored.
-
address@hidden size_t aio_nbytes
-This element specifies the length of the buffer pointed to by @code{aio_buf}.
-
address@hidden int aio_reqprio
-If for the platform @code{_POSIX_PRIORITIZED_IO} and
address@hidden are defined, the @acronym{AIO}
-requests are processed based on the current scheduling priority.  The
address@hidden element can then be used to lower the priority of
-the @acronym{AIO} operation.
-
address@hidden struct sigevent aio_sigevent
-This element specifies how the calling process is notified once the
-operation terminates.  If the @code{sigev_notify} element is
address@hidden, no notification is sent.  If it is
address@hidden, the signal determined by @code{sigev_signo} is
-sent.  Otherwise, @code{sigev_notify} must be @code{SIGEV_THREAD}, in
-which case a thread that starts executing the function pointed to by
address@hidden
-
address@hidden int aio_lio_opcode
-This element is only used by the @code{lio_listio} and
address@hidden functions.  Since these functions allow an
-arbitrary number of operations to start at once, and since each operation can 
be
-input or output (or nothing), the information must be stored in the
-control block.  See the description of @code{struct aiocb} for a description
-of the possible values.
address@hidden table
-
-When the sources are compiled using @code{_FILE_OFFSET_BITS == 64} on a
-32-bit machine, this type is available under the name @code{struct
-aiocb64}, since the @acronym{LFS} transparently replaces the old interface.
address@hidden deftp
-
address@hidden Asynchronous Reads/Writes
address@hidden Asynchronous Read and Write Operations
-
address@hidden aio.h
address@hidden POSIX.1b
address@hidden int aio_read (struct aiocb address@hidden)
-This function initiates an asynchronous read operation.  It
-immediately returns after the operation was enqueued or when an
-error was encountered.
-
-The first @code{aiocbp->aio_nbytes} bytes of the file for which
address@hidden>aio_fildes} is a descriptor are written to the buffer
-starting at @code{aiocbp->aio_buf}.  Reading starts at the absolute
-position @code{aiocbp->aio_offset} in the file.
-
-If prioritized I/O is supported by the platform, the
address@hidden>aio_reqprio} value is used to adjust the priority before
-the request is actually enqueued.
-
-The calling process is notified about the termination of the read
-request according to the @code{aiocbp->aio_sigevent} value.
-
-When @code{aio_read} returns, the return value is 0 if no error
-occurred that can be found before the process is enqueued.  If such an
-early error is found, the function returns @math{-1} and sets
address@hidden to one of the following values:
-
address@hidden @code
address@hidden EAGAIN
-The request was not enqueued due to (temporarily) exceeded resource
-limitations.
address@hidden ENOSYS
-The @code{aio_read} function is not implemented.
address@hidden EBADF
-The @code{aiocbp->aio_fildes} descriptor is not valid.  This condition
-need not be recognized before enqueueing the request and so this error
-might also be signaled asynchronously.
address@hidden EINVAL
-The @code{aiocbp->aio_offset} or @code{aiocbp->aio_reqpiro} value is
-invalid.  This condition need not be recognized before enqueueing the
-request and so this error might also be signaled asynchronously.
address@hidden table
-
-If @code{aio_read} returns 0, the current status of the request can be
-queried using @code{aio_error} and @code{aio_return} functions.  As
-long as the value returned by @code{aio_error} is @code{EINPROGRESS},
-the operation has not yet completed.  If @code{aio_error} returns 0,
-the operation successfully terminated, otherwise the value is to be
-interpreted as an error code.  If the function terminated, the result
-of the operation can be obtained using a call to @code{aio_return}.
-The returned value is the same as an equivalent call to @code{read}
-would have returned.  Possible error codes returned by
address@hidden are
-
address@hidden @code
address@hidden EBADF
-The @code{aiocbp->aio_fildes} descriptor is not valid.
address@hidden ECANCELED
-The operation was canceled before the operation was finished
-(@pxref{Cancel AIO Operations}).
address@hidden EINVAL
-The @code{aiocbp->aio_offset} value is invalid.
address@hidden table
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is in fact @code{aio_read64}, since the @acronym{LFS}
-interface transparently replaces the normal implementation.
address@hidden deftypefun
-
address@hidden aio.h
address@hidden Unix98
address@hidden int aio_read64 (struct aiocb address@hidden)
-This function is similar to the @code{aio_read} function.  The only
-difference is that on 32-bit machines, the file descriptor should be
-opened in the large file mode.  Internally, @code{aio_read64} uses
-functionality equivalent to @code{lseek64} (@pxref{File Position
-Primitive}) to position the file descriptor correctly for the reading,
-as opposed to @code{lseek} functionality used in @code{aio_read}.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64}, this
-function is available under the name @code{aio_read} and so transparently
-replaces the interface for small files on 32-bit machines.
address@hidden deftypefun
-
-To write data asynchronously to a file, there exists an equivalent pair
-of functions with a very similar interface.
-
address@hidden aio.h
address@hidden POSIX.1b
address@hidden int aio_write (struct aiocb address@hidden)
-This function initiates an asynchronous write operation.  The function
-call immediately returns after the operation is enqueued or if, before
-that happens, an error is encountered.
-
-The first @code{aiocbp->aio_nbytes} bytes from the buffer starting at
address@hidden>aio_buf} are written to the file for which
address@hidden>aio_fildes} is a descriptor, starting at the absolute
-position @code{aiocbp->aio_offset} in the file.
-
-If prioritized I/O is supported by the platform, the
address@hidden>aio_reqprio} value is used to adjust the priority before
-the request is actually enqueued.
-
-The calling process is notified about the termination of the read
-request according to the @code{aiocbp->aio_sigevent} value.
-
-When @code{aio_write} returns, the return value is 0 if no error
-occurred that can be found before the process is enqueued.  If such an
-early error is found, the function returns @math{-1} and sets
address@hidden to one of the following values:
-
address@hidden @code
address@hidden EAGAIN
-The request was not enqueued due to (temporarily) exceeded resource
-limitations.
address@hidden ENOSYS
-The @code{aio_write} function is not implemented.
address@hidden EBADF
-The @code{aiocbp->aio_fildes} descriptor is not valid.  This condition
-may not be recognized before enqueueing the request, and so this error
-might also be signaled asynchronously.
address@hidden EINVAL
-The @code{aiocbp->aio_offset} or @code{aiocbp->aio_reqprio} value is
-invalid.  This condition may not be recognized before enqueueing the
-request and so this error might also be signaled asynchronously.
address@hidden table
-
-When @code{aio_write} returns 0, the current status of the request can
-be queried using @code{aio_error} and @code{aio_return} functions.  As
-long as the value returned by @code{aio_error} is @code{EINPROGRESS},
-the operation has not yet completed.  If @code{aio_error} returns 0,
-the operation successfully terminated, otherwise the value is to be
-interpreted as an error code.  If the function terminated, the result
-of the operation can be had using a call to @code{aio_return}.  The
-returned value is the same as an equivalent call to @code{read} would
-have returned.  Possible error codes returned by @code{aio_error} are
-
address@hidden @code
address@hidden EBADF
-The @code{aiocbp->aio_fildes} descriptor is not valid.
address@hidden ECANCELED
-The operation was canceled before the operation was finished
-(@pxref{Cancel AIO Operations}).
address@hidden EINVAL
-The @code{aiocbp->aio_offset} value is invalid.
address@hidden table
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64}, this
-function is in fact @code{aio_write64} since the @acronym{LFS} interface 
transparently
-replaces the normal implementation.
address@hidden deftypefun
-
address@hidden aio.h
address@hidden Unix98
address@hidden int aio_write64 (struct aiocb address@hidden)
-This function is similar to the @code{aio_write} function.  The only
-difference is that on 32-bit machines, the file descriptor should be
-opened in the large file mode.  Internally, @code{aio_write64} uses
-functionality equivalent to @code{lseek64} (@pxref{File Position
-Primitive}) to position the file descriptor correctly for the writing,
-as opposed to @code{lseek} functionality used in @code{aio_write}.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64}, this
-function is available under the name @code{aio_write} and so transparently
-replaces the interface for small files on 32-bit machines.
address@hidden deftypefun
-
-Besides these functions with the more or less traditional interface,
address@hidden also defines a function that can initiate more than
-one operation at a time, and that can handle freely mixed read and
-write operations.  It is therefore similar to a combination of
address@hidden and @code{writev}.
-
address@hidden aio.h
address@hidden POSIX.1b
address@hidden int lio_listio (int @var{mode}, struct aiocb *const 
@var{list}[], int @var{nent}, struct sigevent address@hidden)
-The @code{lio_listio} function can be used to enqueue an arbitrary
-number of read and write requests at one time.  The requests can all be
-meant for the same file, all for different files or every solution in
-between.
-
address@hidden gets the @var{nent} requests from the array pointed
-to by @var{list}.  The operation to be performed is determined by the
address@hidden member in each element of @var{list}.  If this
-field is @code{LIO_READ}, a read operation is enqueued, similar to a
-call of @code{aio_read} for this element of the array (except that the
-way the termination is signalled is different, as we will see below).
-If the @code{aio_lio_opcode} member is @code{LIO_WRITE}, a write
-operation is enqueued.  Otherwise, the @code{aio_lio_opcode} must be
address@hidden, in which case this element of @var{list} is simply
-ignored.  This ``operation'' is useful in situations where you have a
-fixed array of @code{struct aiocb} elements from which only a few need
-to be handled at a time.  Another situation is where the
address@hidden call was canceled before all requests are processed
-(@pxref{Cancel AIO Operations}) and the remaining requests
-have to be reissued.
-
-The other members of each element of the array pointed to by
address@hidden must have values suitable for the operation as described in
-the documentation for @code{aio_read} and @code{aio_write} above.
-
-The @var{mode} argument determines how @code{lio_listio} behaves after
-having enqueued all the requests.  If @var{mode} is @code{LIO_WAIT},
-it waits until all requests are terminated.  Otherwise, @var{mode}
-must be @code{LIO_NOWAIT}, and in this case the function returns
-immediately after having enqueued all the requests and the caller gets
-a notification of the termination of all requests according to the
address@hidden parameter.  If @var{sig} is @code{NULL}, no notification is
-sent.  Otherwise, a signal is sent or a thread is started, just as
-described in the description for @code{aio_read} or @code{aio_write}.
-
-If @var{mode} is @code{LIO_WAIT}, the return value of
address@hidden is @math{0} when all requests are completed
-successfully.  Otherwise, the function return @math{-1} and
address@hidden is set accordingly.  To find out which request or
-requests failed, you have to use the @code{aio_error} function on all
-the elements of the array @var{list}.
-
-In case @var{mode} is @code{LIO_NOWAIT}, the function returns @math{0}
-if all requests were enqueued correctly.  The current state of the
-requests can be found using @code{aio_error} and @code{aio_return} as
-described above.  If @code{lio_listio} returns @math{-1} in this mode,
-the global variable @code{errno} is set accordingly.  If a request did
-not yet terminate, a call to @code{aio_error} returns
address@hidden  If the value is different, the request is
-finished and the error value (or @math{0}) is returned, and the result
-of the operation can be retrieved using @code{aio_return}.
-
-Possible values for @code{errno} are
-
address@hidden @code
address@hidden EAGAIN
-The resources necessary to queue all the requests are not available at
-the moment.  The error status for each element of @var{list} must be
-checked to determine which request failed.
-
-Another reason could be that the system-wide limit of @acronym{AIO}
-requests is exceeded.  This cannot be the case for the implementation
-on @acronym{GNU} systems, since no arbitrary limits exist.
address@hidden EINVAL
-The @var{mode} parameter is invalid or @var{nent} is larger than
address@hidden
address@hidden EIO
-One or more of the request's I/O operations failed.  The error status of
-each request should be checked to determine which one failed.
address@hidden ENOSYS
-The @code{lio_listio} function is not supported.
address@hidden table
-
-If the @var{mode} parameter is @code{LIO_NOWAIT} and the caller cancels
-a request, the error status for this request returned by
address@hidden is @code{ECANCELED}.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is in fact @code{lio_listio64}, since the @acronym{LFS}
-interface transparently replaces the normal implementation.
address@hidden deftypefun
-
address@hidden aio.h
address@hidden Unix98
address@hidden int lio_listio64 (int @var{mode}, struct aiocb *const 
@var{list}, int @var{nent}, struct sigevent address@hidden)
-This function is similar to the @code{lio_listio} function.  The only
-difference is that on 32-bit machines, the file descriptor should
-be opened in the large file mode.  Internally, @code{lio_listio64} uses
-functionality equivalent to @code{lseek64} (@pxref{File Position
-Primitive}) to position the file descriptor correctly for the reading or
-writing, as opposed to @code{lseek} functionality used in
address@hidden
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64}, this
-function is available under the name @code{lio_listio} and so
-transparently replaces the interface for small files on 32-bit
-machines.
address@hidden deftypefun
-
address@hidden Status of AIO Operations
address@hidden Getting the Status of @acronym{AIO} Operations
-
-As already described in the documentation of the functions in the last
-section, it must be possible to get information about the status of an
-I/O request.  When the operation is performed truly asynchronously (as
-with @code{aio_read} and @code{aio_write} and with @code{lio_listio}
-when the mode is @code{LIO_NOWAIT}), you sometimes need to know
-whether a specific request already terminated and if so, what the
-result was.  The following two functions allow you to get this kind of
-information:
-
address@hidden aio.h
address@hidden POSIX.1b
address@hidden int aio_error (const struct aiocb address@hidden)
-This function determines the error state of the request described by
-the @code{struct aiocb} variable pointed to by @var{aiocbp}.  If the
-request has not yet terminated, the value returned is always
address@hidden  Once the request has terminated, the value
address@hidden returns is either @math{0} if the request completed
-successfully, or the value that would be stored in the @code{errno}
-variable if the request would have been done using @code{read},
address@hidden or @code{fsync}.
-
-The function can return @code{ENOSYS} if it is not implemented.  It
-could also return @code{EINVAL} if the @var{aiocbp} parameter does not
-refer to an asynchronous operation whose return status is not yet known.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is in fact @code{aio_error64}, since the @acronym{LFS}
-interface transparently replaces the normal implementation.
address@hidden deftypefun
-
address@hidden aio.h
address@hidden Unix98
address@hidden int aio_error64 (const struct aiocb64 address@hidden)
-This function is similar to @code{aio_error}, with the only difference
-being that the argument is a reference to a variable of type
address@hidden aiocb64}.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64}, this
-function is available under the name @code{aio_error} and so
-transparently replaces the interface for small files on 32-bit
-machines.
address@hidden deftypefun
-
address@hidden aio.h
address@hidden POSIX.1b
address@hidden ssize_t aio_return (const struct aiocb address@hidden)
-This function can be used to retrieve the return status of the operation
-carried out by the request described in the variable pointed to by
address@hidden  As long as the error status of this request as returned
-by @code{aio_error} is @code{EINPROGRESS}, the return of this function is
-undefined.
-
-Once the request is finished, this function can be used exactly once
-to retrieve the return value.  Following calls might lead to undefined
-behavior.  The return value itself is the value that would have been
-returned by the @code{read}, @code{write}, or @code{fsync} call.
-
-The function can return @code{ENOSYS} if it is not implemented.  It
-could also return @code{EINVAL} if the @var{aiocbp} parameter does not
-refer to an asynchronous operation whose return status is not yet known.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is in fact @code{aio_return64}, since the @acronym{LFS} interface
-transparently replaces the normal implementation.
address@hidden deftypefun
-
address@hidden aio.h
address@hidden Unix98
address@hidden int aio_return64 (const struct aiocb64 address@hidden)
-This function is similar to @code{aio_return}, with the only
-difference being that the argument is a reference to a variable of
-type @code{struct aiocb64}.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is available under the name @code{aio_return} and so
-transparently replaces the interface for small files on 32-bit
-machines.
address@hidden deftypefun
-
address@hidden Synchronizing AIO Operations
address@hidden Getting into a Consistent State
-
-When dealing with asynchronous operations, it is sometimes necessary
-to get into a consistent state.  This would mean for @acronym{AIO}
-that you want to know whether a certain request or a group of requests
-was processed.  This could be done by waiting for the notification
-sent by the system after the operation terminates, but this sometimes
-would mean wasting resources (mainly computation time).  Instead,
address@hidden defines two functions that will help with most
-kinds of consistency.
-
-The @code{aio_fsync} and @code{aio_fsync64} functions are only available
-if the symbol @code{_POSIX_SYNCHRONIZED_IO} is defined in @file{unistd.h}.
-
address@hidden synchronizing
address@hidden aio.h
address@hidden POSIX.1b
address@hidden int aio_fsync (int @var{op}, struct aiocb address@hidden)
-Calling this function forces all I/O operations operating queued at
-the time of the function call operating on the file descriptor
address@hidden>aio_fildes} into the synchronized I/O completion state
-(@pxref{Synchronizing I/O}).  The @code{aio_fsync} function returns
-immediately, but the notification through the method described in
address@hidden>aio_sigevent} will happen only after all requests for
-this file descriptor have terminated and the file is synchronized.
-This also means that requests for this very same file-descriptor that
-are queued after the synchronization request are not affected.
-
-If @var{op} is @code{O_DSYNC}, the synchronization happens as with a
-call to @code{fdatasync}.  Otherwise, @var{op} should be
address@hidden, and the synchronization happens as with @code{fsync}.
-
-As long as the synchronization has not happened, a call to
address@hidden with the reference to the object pointed to by
address@hidden returns @code{EINPROGRESS}.  Once the synchronization is
-done, @code{aio_error} return @math{0} if the synchronization was not
-successful.  Otherwise, the value returned is the value to which the
address@hidden or @code{fdatasync} function would have set the
address@hidden variable.  In this case, nothing can be assumed about the
-consistency for the data written to this file descriptor.
-
-The return value of this function is @math{0} if the request was
-successfully enqueued.  Otherwise, the return value is @math{-1}, and
address@hidden is set to one of the following values:
-
address@hidden @code
address@hidden EAGAIN
-The request could not be enqueued due to temporary lack of resources.
address@hidden EBADF
-The file descriptor @code{aiocbp->aio_fildes} is not valid or not open
-for writing.
address@hidden EINVAL
-The implementation does not support I/O synchronization or the @var{op}
-parameter is other than @code{O_DSYNC} and @code{O_SYNC}.
address@hidden ENOSYS
-This function is not implemented.
address@hidden table
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is in fact @code{aio_fsync64}, since the @acronym{LFS}
-interface transparently replaces the normal implementation.
address@hidden deftypefun
-
address@hidden aio.h
address@hidden Unix98
address@hidden int aio_fsync64 (int @var{op}, struct aiocb64 address@hidden)
-This function is similar to @code{aio_fsync}, with the only difference
-being that the argument is a reference to a variable of type
address@hidden aiocb64}.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64}, this
-function is available under the name @code{aio_fsync} and so
-transparently replaces the interface for small files on 32-bit
-machines.
address@hidden deftypefun
-
-Another method of synchronization is to wait until one or more
-requests of a specific set terminate.  This could be achieved by the
address@hidden functions to notify the initiating process about the
-termination, but in some situations this is not the ideal solution.
-In a program that constantly updates clients somehow connected to the
-server, it is not always the best solution to go round robin since
-some connections might be slow.  On the other hand letting the
address@hidden function notify the caller might not be the best solution
-either, since whenever the process works on preparing data for one
-client, it makes no sense for it to be interrupted by a notification
-because the new client will not be handled before the current client
-is served.  For situations like this, @code{aio_suspend} should be
-used.
-
address@hidden aio.h
address@hidden POSIX.1b
address@hidden int aio_suspend (const struct aiocb *const @var{list}[], int 
@var{nent}, const struct timespec address@hidden)
-When calling this function, the calling thread is suspended until at
-least one of the requests pointed to by the @var{nent} elements of the
-array @var{list} has completed.  If any of the requests has already
-completed at the time @code{aio_suspend} is called, the function returns
-immediately.  Whether a request has terminated or not is determined by
-comparing the error status of the request with @code{EINPROGRESS}.  If
-an element of @var{list} is @code{NULL}, the entry is simply ignored.
-
-If no request has finished, the calling process is suspended.  If
address@hidden is @code{NULL}, the process is not woken until a request
-has finished.  If @var{timeout} is not @code{NULL}, the process remains
-suspended at least as long as specified in @var{timeout}.  In this case,
address@hidden returns with an error.
-
-The return value of the function is @math{0} if one or more requests
-from the @var{list} have terminated.  Otherwise, the function returns
address@hidden, and @code{errno} is set to one of the following values:
-
address@hidden @code
address@hidden EAGAIN
-None of the requests from the @var{list} completed in the time specified
-by @var{timeout}.
address@hidden EINTR
-A signal interrupted the @code{aio_suspend} function.  This signal might
-also be sent by the @acronym{AIO} implementation while signalling the 
termination
-of one of the requests.
address@hidden ENOSYS
-The @code{aio_suspend} function is not implemented.
address@hidden table
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is in fact @code{aio_suspend64}, since the @acronym{LFS}
-interface transparently replaces the normal implementation.
address@hidden deftypefun
-
address@hidden aio.h
address@hidden Unix98
address@hidden int aio_suspend64 (const struct aiocb64 *const @var{list}[], int 
@var{nent}, const struct timespec address@hidden)
-This function is similar to @code{aio_suspend}, with the only
-difference being that the argument is a reference to a variable of
-type @code{struct aiocb64}.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64}, this
-function is available under the name @code{aio_suspend} and so
-transparently replaces the interface for small files on 32-bit
-machines.
address@hidden deftypefun
-
address@hidden Cancel AIO Operations
address@hidden Cancellation of @acronym{AIO} Operations
-
-When one or more requests are asynchronously processed, it might be
-useful in some situations to cancel a selected operation, e.g., if it
-becomes obvious that the written data is no longer accurate and would
-have to be overwritten soon.  As an example, assume an application,
-which writes data in files, in a situation where new incoming data
-would have to be written in a file that will be updated by an enqueued
-request.  The @acronym{POSIX} @acronym{AIO} implementation provides
-such a function, but this function is not capable of forcing the
-cancellation of the request.  It is up to the implementation to decide
-whether it is possible to cancel the operation or not.  Therefore,
-using this function is merely a hint.
-
address@hidden aio.h
address@hidden POSIX.1b
address@hidden int aio_cancel (int @var{fildes}, struct aiocb address@hidden)
-The @code{aio_cancel} function can be used to cancel one or more
-outstanding requests.  If the @var{aiocbp} parameter is @code{NULL},
-the function tries to cancel all of the outstanding requests that
-would process the file descriptor @var{fildes} (i.e., whose
address@hidden member is @var{fildes}).  If @var{aiocbp} is not
address@hidden, @code{aio_cancel} attempts to cancel the specific request
-pointed to by @var{aiocbp}.
-
-For requests that were successfully canceled, the normal notification
-about the termination of the request should take place; depending on
-the @code{struct sigevent} object that controls this, nothing
-happens, a signal is sent or a thread is started.  If the request
-cannot be canceled, it terminates the usual way after performing the
-operation.
-
-After a request is successfully canceled, a call to @code{aio_error}
-with a reference to this request as the parameter will return
address@hidden, and a call to @code{aio_return} will return
address@hidden  If the request wasn't canceled and is still running the
-error status is still @code{EINPROGRESS}.
-
-The return value of the function is @code{AIO_CANCELED} if there were
-requests that haven't terminated and that were successfully canceled.
-If there is one or more requests left that couldn't be canceled, the
-return value is @code{AIO_NOTCANCELED}.  In this case,
address@hidden must be used to find out which of the, perhaps
-multiple, requests (in @var{aiocbp} is @code{NULL}) weren't
-successfully canceled.  If all requests already terminated at the time
address@hidden is called, the return value is @code{AIO_ALLDONE}.
-
-If an error occurred during the execution of @code{aio_cancel}, the
-function returns @math{-1}, and sets @code{errno} to one of the
-following values:
-
address@hidden @code
address@hidden EBADF
-The file descriptor @var{fildes} is not valid.
address@hidden ENOSYS
address@hidden is not implemented.
address@hidden table
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is in fact @code{aio_cancel64}, since the @acronym{LFS}
-interface transparently replaces the normal implementation.
address@hidden deftypefun
-
address@hidden aio.h
address@hidden Unix98
address@hidden int aio_cancel64 (int @var{fildes}, struct aiocb64 
address@hidden)
-This function is similar to @code{aio_cancel}, with the only
-difference being that the argument is a reference to a variable of
-type @code{struct aiocb64}.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64}, this
-function is available under the name @code{aio_cancel} and so
-transparently replaces the interface for small files on 32-bit
-machines.
address@hidden deftypefun
-
address@hidden Configuration of AIO
address@hidden How to Optimize the @acronym{AIO} Implementation
-
-The @acronym{POSIX} standard does not specify how the @acronym{AIO}
-functions are implemented.  They could be system calls, but it is also
-possible to emulate them at user level.
-
-At the time of this writing, the available implementation is a
-user-level implementation that uses threads for handling the enqueued
-requests.  While this implementation requires making some decisions
-about limitations, hard limitations are best avoided in the
address@hidden C Library.  Therefore, the @acronym{GNU} C Library
-provides a means for tuning the @acronym{AIO} implementation according
-to the individual use.
-
address@hidden aio.h
address@hidden GNU
address@hidden {Data Type} {struct aioinit}
-This data type is used to pass the configuration or tunable parameters
-to the implementation.  The program has to initialize the members of
-this struct and pass it to the implementation using the @code{aio_init}
-function.
-
address@hidden @code
address@hidden int aio_threads
-This member specifies the maximal number of threads that may be used
-at any one time.
address@hidden int aio_num
-This number provides an estimate on the maximum number of
-simultaneously enqueued requests.
address@hidden int aio_locks
-This is unused.
address@hidden int aio_usedba
-This is unused.
address@hidden int aio_debug
-This is unused.
address@hidden int aio_numusers
-This is unused.
address@hidden int aio_reserved[2]
-This is unused.
address@hidden table
address@hidden deftp
-
address@hidden aio.h
address@hidden GNU
address@hidden void aio_init (const struct aioinit address@hidden)
-This function must be called before any other @acronym{AIO} function.  Calling 
it
-is completely voluntary, as it is only meant to help the @acronym{AIO}
-implementation perform better.
-
-Before calling the @code{aio_init} function, the members of a variable
-of type @code{struct aioinit} must be initialized.  Then a reference
-to this variable is passed as the parameter to @code{aio_init}, which
-itself may or may not pay attention to the hints.
-
-The function has no return value, and no error cases are defined.  It
-is an extension that follows a proposal from the @acronym{SGI}
-implementation in @w{Irix 6}.  It is not covered by @acronym{POSIX}.1b
-or Unix98.
address@hidden deftypefun
-
address@hidden Control Operations
address@hidden Control Operations on Files
-
address@hidden control operations on files
address@hidden @code{fcntl} function
-This section describes how you can perform various other operations on
-file descriptors, such as inquiring about or setting flags describing
-the status of the file descriptor, and manipulating record locks. All
-of these operations are performed by the function @code{fcntl}.
-
-The second argument to the @code{fcntl} function is a command that
-specifies which operation to perform.  The function and macros that name
-various flags that are used with it are declared in the header file
address@hidden  Many of these flags are also used by the @code{open}
-function (@pxref{Opening and Closing Files}).
address@hidden fcntl.h
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden int fcntl (int @var{filedes}, int @var{command}, @dots{})
-The @code{fcntl} function performs the operation specified by
address@hidden on the file descriptor @var{filedes}.  Some commands
-require additional arguments. These additional arguments, the return
-value and error conditions are given in the detailed descriptions of
-the individual commands.
-
-Briefly, here is a list of what the various commands are.
-
address@hidden @code
address@hidden F_DUPFD
-Duplicate the file descriptor---return another file-descriptor
-pointing to the same open file (@pxref{Duplicating Descriptors}).
-
address@hidden F_GETFD
-Get flags associated with the file descriptor (@pxref{Descriptor Flags}).
-
address@hidden F_SETFD
-Set flags associated with the file descriptor (@pxref{Descriptor Flags}).
-
address@hidden F_GETFL
-Get flags associated with the open file (@pxref{File Status Flags}).
-
address@hidden F_SETFL
-Set flags associated with the open file (@pxref{File Status Flags}).
-
address@hidden F_GETLK
-Get a file lock (@pxref{File Locks}).
-
address@hidden F_SETLK
-Set or clear a file lock (@pxref{File Locks}).
-
address@hidden F_SETLKW
-Like @code{F_SETLK}, but wait for completion (@pxref{File Locks}).
-
address@hidden F_GETOWN
-Get process or process-group @acronym{id} to receive @code{SIGIO} signals
-(@pxref{Interrupt Input}).
-
address@hidden F_SETOWN
-Set process or process-group @acronym{id} to receive @code{SIGIO} signals
-(@pxref{Interrupt Input}).
address@hidden table
-
-This function is a cancellation point in multithreaded programs.  This
-is a problem if the thread allocates some resources (such as memory,
-file descriptors or semaphores) at the time @code{fcntl} is called.
-If the thread gets canceled, these resources stay allocated until the
-program ends.  To avoid this, calls to @code{fcntl} should be
-protected using cancellation handlers.
address@hidden ref pthread_cleanup_push / pthread_cleanup_pop
address@hidden deftypefun
-
-
address@hidden Duplicating Descriptors
address@hidden Duplicating Descriptors
-
address@hidden duplicating file-descriptors
address@hidden redirecting input and output
-
-You can @dfn{duplicate} a file descriptor, or allocate another file
-descriptor that refers to the same open file as the original.  Duplicate
-descriptors share one file position and one set of file status flags
-(@pxref{File Status Flags}), but each has its own set of file-descriptor
-flags (@pxref{Descriptor Flags}).
-
-The major use of duplicating a file descriptor is to implement
address@hidden of input or output---to change the file or pipe that
-a particular file-descriptor corresponds to.
-
-You can perform this operation using the @code{fcntl} function with the
address@hidden command, but there are also convenient functions
address@hidden and @code{dup2} for duplicating descriptors.
-
address@hidden unistd.h
address@hidden fcntl.h
-The @code{fcntl} function and flags are declared in @file{fcntl.h},
-while prototypes for @code{dup} and @code{dup2} are in the header file
address@hidden
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int dup (int @var{old})
-This function copies descriptor @var{old} to the first available
-descriptor number (the first number not currently open).  It is
-equivalent to @code{fcntl (@var{old}, F_DUPFD, 0)}.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int dup2 (int @var{old}, int @var{new})
-This function copies the descriptor @var{old} to descriptor number
address@hidden
-
-If @var{old} is an invalid descriptor, then @code{dup2} does nothing; it
-does not close @var{new}.  Otherwise, the new duplicate of @var{old}
-replaces any previous meaning of descriptor @var{new}, as if @var{new}
-were closed first.
-
-If @var{old} and @var{new} are different numbers, and @var{old} is a
-valid descriptor number, then @code{dup2} is equivalent to:
-
address@hidden
-close (@var{new});
-fcntl (@var{old}, F_DUPFD, @var{new})
address@hidden smallexample
-
-However, @code{dup2} does this atomically; there is no instant in the
-middle of calling @code{dup2} at which @var{new} is closed and not yet a
-duplicate of @var{old}.
address@hidden deftypefun
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int F_DUPFD
-This macro is used as the @var{command} argument to @code{fcntl}, to
-copy the file descriptor given as the first argument.
-
-The form of the call in this case is
-
address@hidden
-fcntl (@var{old}, F_DUPFD, @var{next-filedes})
address@hidden smallexample
-
-The @var{next-filedes} argument is of type @code{int} and specifies that
-the file descriptor returned should be the next available one greater
-than or equal to this value.
-
-The return value from @code{fcntl} with this command is normally the value
-of the new file-descriptor.  A return value of @math{-1} indicates an
-error.  The following @code{errno} error conditions are defined for
-this command:
-
address@hidden @code
address@hidden EBADF
-The @var{old} argument is invalid.
-
address@hidden EINVAL
-The @var{next-filedes} argument is invalid.
-
address@hidden EMFILE
-There are no more file descriptors available---your program is already
-using the maximum.  In @acronym{BSD} and @acronym{GNU}, the maximum is 
controlled by a
-resource limit that can be changed (@pxref{Limits on Resources} for
-more information about the @code{RLIMIT_NOFILE} limit).
address@hidden table
-
address@hidden is not a possible error code for @code{dup2} because
address@hidden does not create a new opening of a file; duplicate
-descriptors do not count toward the limit that @code{ENFILE}
-indicates.  @code{EMFILE} is possible because it refers to the limit
-on distinct descriptor numbers in use in one process.
address@hidden deftypevr
-
-Here is an example showing how to use @code{dup2} to do redirection.
-Typically, redirection of the standard streams (like @code{stdin}) is
-done by a shell or shell-like program before calling one of the
address@hidden functions to execute a new
-program in a child process (@pxref{Executing a File}).  When the new program 
is executed, it
-creates and initializes the standard streams to point to the
-corresponding file-descriptors, before its @code{main} function is
-invoked.
-
-So, to redirect standard input to a file, the shell could do something
-like:
-
address@hidden
-pid = fork ();
-if (pid == 0)
-  @{
-    char *filename;
-    char *program;
-    int file;
-    @dots{}
-    file = TEMP_FAILURE_RETRY (open (filename, O_RDONLY));
-    dup2 (file, STDIN_FILENO);
-    TEMP_FAILURE_RETRY (close (file));
-    execv (program, NULL);
-  @}
address@hidden smallexample
-
-There is also a more detailed example showing how to implement redirection
-in the context of a pipeline of processes in @ref{Launching Jobs}.
-
-
address@hidden Descriptor Flags
address@hidden File-Descriptor Flags
address@hidden file-descriptor flags
-
address@hidden flags} are miscellaneous attributes of a file
-descriptor.  These flags are associated with particular file
-descriptors, so that if you have created duplicate file-descriptors
-from a single opening of a file, each descriptor has its own set of flags.
-
-Currently, there is just one file-descriptor flag: @code{FD_CLOEXEC},
-which causes the descriptor to be closed if you use any of the
address@hidden@dots{}} functions (@pxref{Executing a File}).
-
-The symbols in this section are defined in the header file
address@hidden
address@hidden fcntl.h
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int F_GETFD
-This macro is used as the @var{command} argument to @code{fcntl}, to
-specify that it should return the file-descriptor flags associated
-with the @var{filedes} argument.
-
-The normal return value from @code{fcntl} with this command is a
-nonnegative number that can be interpreted as the bit-wise @sc{or} of
-the individual flags (except that currently there is only one flag to
-use).
-
-In case of an error, @code{fcntl} returns @math{-1}.  The following
address@hidden error conditions are defined for this command:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is invalid.
address@hidden table
address@hidden deftypevr
-
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int F_SETFD
-This macro is used as the @var{command} argument to @code{fcntl}, to
-specify that it should set the file-descriptor flags associated with
-the @var{filedes} argument.  This requires a third @code{int} argument
-to specify the new flags, so the form of the call is
-
address@hidden
-fcntl (@var{filedes}, F_SETFD, @var{new-flags})
address@hidden smallexample
-
-The normal return value from @code{fcntl} with this command is an
-unspecified value other than @math{-1}, which indicates an error.
-The flags and error conditions are the same as for the @code{F_GETFD}
-command.
address@hidden deftypevr
-
-The following macro is defined for use as a file-descriptor flag with
-the @code{fcntl} function.  The value is an integer constant usable
-as a bit-mask value.
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int FD_CLOEXEC
address@hidden close-on-exec (file-descriptor flag)
-This flag specifies that the file descriptor should be closed when
-an @code{exec} function is invoked (@pxref{Executing a File}).  When
-a file descriptor is allocated (as with @code{open} or @code{dup}),
-this bit is initially cleared on the new file-descriptor, meaning that
-descriptor will survive into the new program after @code{exec}.
address@hidden deftypevr
-
-If you want to modify the file-descriptor flags, you should get the
-current flags with @code{F_GETFD} and modify the value.  Don't assume
-that the flags listed here are the only ones that are implemented; your
-program may be run years from now and more flags may exist then.  For
-example, here is a function to set or clear the flag @code{FD_CLOEXEC}
-without altering any other flags:
-
address@hidden
-/* @r{Set the @code{FD_CLOEXEC} flag of @var{desc} if @var{value} is nonzero,}
-   @r{or clear the flag if @var{value} is 0.}
-   @r{Return 0 on success, or -1 on error with @code{errno} set.} */
-
-int
-set_cloexec_flag (int desc, int value)
address@hidden
-  int oldflags = fcntl (desc, F_GETFD, 0);
-  /* @r{If reading the flags failed, return error indication now.} */
-  if (oldflags < 0)
-    return oldflags;
-  /* @r{Set just the flag we want to set.} */
-  if (value != 0)
-    oldflags |= FD_CLOEXEC;
-  else
-    oldflags &= ~FD_CLOEXEC;
-  /* @r{Store modified flag word in the descriptor.} */
-  return fcntl (desc, F_SETFD, oldflags);
address@hidden
address@hidden smallexample
-
address@hidden File Status Flags
address@hidden File Status Flags
address@hidden file status flags
-
address@hidden status flags} are used to specify attributes of the opening of a
-file.  Unlike the file-descriptor flags (@pxref{Descriptor
-Flags}), the file status flags are shared by duplicated file-descriptors
-resulting from a single opening of the file.  The file status flags are
-specified with the @var{flags} argument to @code{open}
-(@pxref{Opening and Closing Files}).
-
-File status flags fall into three categories, which are described in the
-following sections.
-
address@hidden @bullet
address@hidden
address@hidden modes} (@pxref{Access Modes}) specify what type of access
-is allowed to the file: reading, writing or both.  They are set by
address@hidden and are returned by @code{fcntl}, but cannot be changed.
-
address@hidden
address@hidden flags} (@pxref{Open-Time Flags}) control details of
-what @code{open} will do.  These flags are not preserved after the
address@hidden call.
-
address@hidden
address@hidden modes} (@pxref{Operating Modes}) affect how operations
-such as @code{read} and @code{write} are done.  They are set by
address@hidden and can be fetched or changed with @code{fcntl}.
address@hidden itemize
-
-The symbols in this section are defined in the header file
address@hidden
address@hidden fcntl.h
-
address@hidden Access Modes
address@hidden File-Access Modes
-
-The file-access modes allow a file descriptor to be used for reading,
-writing or both.  (In the @acronym{GNU} system, they can also allow
-none of these, and allow execution of the file as a program.)  The
-access modes are chosen when the file is opened, and never change.
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int O_RDONLY
-Open the file for read access.
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int O_WRONLY
-Open the file for write access.
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int O_RDWR
-Open the file for both reading and writing.
address@hidden deftypevr
-
-In the @acronym{GNU} system (and not in other systems),
address@hidden and @code{O_WRONLY} are independent bits that can be
address@hidden together, and it is valid for either bit to be set
-or clear.  This means that @code{O_RDWR} is the same as
address@hidden|O_WRONLY}.  A file-access mode of zero is permissible;
-it allows no operations that do input or output to the file, but does
-allow other operations such as @code{fchmod}.  On the @acronym{GNU}
-system, since ``read-only'' or ``write-only'' are misnomers,
address@hidden defines additional names for the file-access modes.
-These names are preferred when writing @acronym{GNU}-specific code.
-But most programs will want to be portable to other @acronym{POSIX}.1
-systems and should use the @acronym{POSIX}.1 names above instead.
-
address@hidden fcntl.h
address@hidden GNU
address@hidden Macro int O_READ
-Open the file for reading.  This is the same as @code{O_RDONLY}; it is
-only defined on @acronym{GNU}.
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden GNU
address@hidden Macro int O_WRITE
-Open the file for writing.  This is the same as @code{O_WRONLY}; it is
-only defined on @acronym{GNU}.
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden GNU
address@hidden Macro int O_EXEC
-Open the file for executing.  It is only defined on @acronym{GNU}.
address@hidden deftypevr
-
-To determine the file-access mode with @code{fcntl}, you must extract
-the access-mode bits from the retrieved file-status flags.  In the
address@hidden system, you can just test the @code{O_READ} and
address@hidden bits in the flags word.  But in other @acronym{POSIX}.1
-systems, reading and writing access modes are not stored as distinct
-bit flags.  The portable way to extract the file-access mode bits is
-with @code{O_ACCMODE}.
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int O_ACCMODE
-This macro stands for a mask that can be address@hidden with the
-file-status flag value to produce a value representing the file-access
-mode.  The mode will be @code{O_RDONLY}, @code{O_WRONLY} or
address@hidden  (In the @acronym{GNU} system, it could also be zero,
-and it never includes the @code{O_EXEC} bit.)
address@hidden deftypevr
-
address@hidden Open-Time Flags
address@hidden Open-Time Flags
-
-The open-time flags specify options affecting how @code{open} will
-behave.  These options are not preserved once the file is open.  The
-exception to this is @code{O_NONBLOCK}, which is also an I/O operating
-mode and so @emph{is} saved (@pxref{Opening and Closing Files}, for
-how to call @code{open}).
-
-There are two sorts of options specified by open-time flags.
-
address@hidden @bullet
address@hidden
address@hidden translation flags} affect how @code{open} looks up the
-file name to locate the file, and whether the file can be created.
address@hidden file-name translation flags
address@hidden flags, file-name translation
-
address@hidden
address@hidden action flags} specify extra operations that @code{open} will
-perform on the file once it is open.
address@hidden open-time action flags
address@hidden flags, open-time action
address@hidden itemize
-
-Here are the file-name translation flags:
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int O_CREAT
-If set, the file will be created if it doesn't already exist.
address@hidden !!! mode arg, umask
address@hidden create on open (file status flag)
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int O_EXCL
-If both @code{O_CREAT} and @code{O_EXCL} are set, then @code{open} fails
-if the specified file already exists.  This is guaranteed to never
-clobber an existing file.
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int O_NONBLOCK
address@hidden nonblocking open
-This prevents @code{open} from blocking for a ``long time'' to open
-the file.  This is only meaningful for some kinds of files, usually
-devices such as serial ports; when it is not meaningful, it is
-harmless and ignored.  Often, opening a port to a modem blocks until
-the modem reports carrier detection; if @code{O_NONBLOCK} is
-specified, @code{open} will return immediately without a carrier.
-
-The @code{O_NONBLOCK} flag is overloaded as both an I/O operating mode
-and a file-name translation flag.  This means that specifying
address@hidden in @code{open} also sets nonblocking I/O mode
-(@pxref{Operating Modes}).  To open the file without blocking but do
-normal I/O that blocks, you must call @code{open} with
address@hidden set and then call @code{fcntl} to turn the bit off.
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int O_NOCTTY
-If the named file is a terminal device, don't make it the controlling
-terminal for the process.  (@xref{Job Control}, for information about
-what it means to be the controlling terminal.)
-
-In the @acronym{GNU} system and 4.4 @acronym{BSD}, opening a file never makes 
it the
-controlling terminal and @code{O_NOCTTY} is zero.  However, other
-systems may use a nonzero value for @code{O_NOCTTY} and set the
-controlling terminal when you open a file that is a terminal device; so
-to be portable, use @code{O_NOCTTY} when it is important to avoid this.
address@hidden controlling-terminal, setting
address@hidden deftypevr
-
-The following three file-name translation flags exist only in the
address@hidden system:
-
address@hidden fcntl.h
address@hidden GNU
address@hidden Macro int O_IGNORE_CTTY
-Do not recognize the named file as the controlling terminal, even if
-it refers to the process's existing controlling terminal device.
-Operations on the new file-descriptor will never induce job-control
-signals (@pxref{Job Control}).
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden GNU
address@hidden Macro int O_NOLINK
-If the named file is a symbolic link, open the link itself instead of
-the file it refers to.  (@code{fstat} on the new file-descriptor will
-return the information returned by @code{lstat} on the link's name.)
address@hidden symbolic link, opening
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden GNU
address@hidden Macro int O_NOTRANS
-If the named file is specially translated, do not invoke the translator.
-Open the bare file the translator itself sees.
address@hidden deftypevr
-
-
-The open-time action flags tell @code{open} to do additional
-operations that are not really related to opening the file.  The
-reason to do them as part of @code{open} instead of in separate calls
-is that @code{open} can do them @dfn{atomically}.
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int O_TRUNC
-Truncate the file to zero length.  This option is only useful for
-regular files, not special files such as directories or @acronym{FIFO}s.  
@acronym{POSIX}.1
-requires that you open the file for writing to use @code{O_TRUNC}.  In
address@hidden and @acronym{GNU} you must have permission to write the file to 
truncate it,
-but you need not open for write access.
-
-This is the only open-time action flag specified by @acronym{POSIX}.1.  There 
is
-no good reason for truncation to be done by @code{open}, instead of by
-calling @code{ftruncate} after.  The @code{O_TRUNC} flag existed in
-Unix before @code{ftruncate} was invented, and is retained for backward
-compatibility.
address@hidden deftypevr
-
-The remaining operating modes are @acronym{BSD} extensions.  They exist only
-on some systems.  On other systems, these macros are not defined.
-
address@hidden fcntl.h
address@hidden BSD
address@hidden Macro int O_SHLOCK
-Acquire a shared lock on the file, as with @code{flock}
-(@pxref{File Locks}).
-
-If @code{O_CREAT} is specified, the locking is done atomically when
-creating the file.  You are guaranteed that no other process will get
-the lock on the new file first.
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden BSD
address@hidden Macro int O_EXLOCK
-Acquire an exclusive lock on the file, as with @code{flock}
-(@pxref{File Locks}).  This is atomic like @code{O_SHLOCK}.
address@hidden deftypevr
-
address@hidden Operating Modes
address@hidden I/O Operating Modes
-
-The operating modes affect how input and output operations using a file
-descriptor work.  These flags are set by @code{open} and can be fetched
-and changed with @code{fcntl}.
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int O_APPEND
-This is the bit that enables append mode for the file.  If set, then
-all @code{write} operations write the data at the end of the file,
-extending it, regardless of the current file position.  This is the
-only reliable way to append to a file.  In append mode, you are
-guaranteed that the data you write will always go to the current end
-of the file, regardless of other processes writing to the file.
-Conversely, if you simply set the file position to the end of file and
-write, then another process can extend the file after you set the file
-position but before you write, resulting in your data appearing
-someplace before the real end of file.
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int O_NONBLOCK
-This is the bit that enables nonblocking mode for the file.  If this
-bit is set, @code{read} requests on the file can return immediately
-with a failure status if there is no input immediately available,
-instead of blocking.  Likewise, @code{write} requests can also return
-immediately with a failure status if the output can't be written
-immediately.
-
-The @code{O_NONBLOCK} flag is overloaded as both an I/O operating mode
-and a file-name translation flag (@pxref{Open-Time Flags}).
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden BSD
address@hidden Macro int O_NDELAY
-This is an obsolete name for @code{O_NONBLOCK}, provided for
-compatibility with @acronym{BSD}.  It is not defined by the
address@hidden standard.
address@hidden deftypevr
-
-The remaining operating modes are @acronym{BSD} and @acronym{GNU}
-extensions.  They exist only on some systems.  On other systems, these
-macros are not defined.
-
address@hidden fcntl.h
address@hidden BSD
address@hidden Macro int O_ASYNC
-This is the bit that enables asynchronous-input mode.  If set, then
address@hidden signals will be generated when input is available
-(@pxref{Interrupt Input}).
-
-Asynchronous-input mode is a @acronym{BSD} feature.
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden BSD
address@hidden Macro int O_FSYNC
-This is the bit that enables synchronous writing for the file.  If
-set, each @code{write} call will make sure the data is reliably stored
-on disk before returning. @c !!! xref fsync
-
-Synchronous writing is a @acronym{BSD} feature.
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden BSD
address@hidden Macro int O_SYNC
-This is another name for @code{O_FSYNC}.  They have the same value.
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden GNU
address@hidden Macro int O_NOATIME
-If this bit is set, @code{read} will not update the access time of the
-file (@pxref{File Times}).  This is used by programs that do backups, so
-that backing a file up does not count as reading it.
-Only the owner of the file or the superuser may use this bit.
-
-This is a @acronym{GNU} extension.
address@hidden deftypevr
-
address@hidden Getting File Status Flags
address@hidden Getting and Setting File Status Flags
-
-The @code{fcntl} function can fetch or change file status flags.
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int F_GETFL
-This macro is used as the @var{command} argument to @code{fcntl}, to
-read the file status flags for the open file with descriptor
address@hidden
-
-The normal return value from @code{fcntl} with this command is a
-nonnegative number that can be interpreted as the bit-wise @sc{or} of
-the individual flags.  Since the file-access modes are not single-bit
-values, you can mask off other bits in the returned flags with
address@hidden to compare them.
-
-In case of an error, @code{fcntl} returns @math{-1}.  The following
address@hidden error conditions are defined for this command:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is invalid.
address@hidden table
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int F_SETFL
-This macro is used as the @var{command} argument to @code{fcntl}, to set
-the file status flags for the open file corresponding to the
address@hidden argument.  This command requires a third @code{int}
-argument to specify the new flags, so the call looks like this:
-
address@hidden
-fcntl (@var{filedes}, F_SETFL, @var{new-flags})
address@hidden smallexample
-
-You can't change the access mode for the file in this way---whether
-the file descriptor was opened for reading or writing.
-
-The normal return value from @code{fcntl} with this command is an
-unspecified value other than @math{-1}, which indicates an error.  The
-error conditions are the same as for the @code{F_GETFL} command.
address@hidden deftypevr
-
-If you want to modify the file status flags, you should get the current
-flags with @code{F_GETFL} and modify the value.  Don't assume that the
-flags listed here are the only ones that are implemented; your program
-may be run years from now and more flags may exist then.  For example,
-here is a function to set or clear the flag @code{O_NONBLOCK} without
-altering any other flags:
-
address@hidden
-
-/* @r{Set the @code{O_NONBLOCK} flag of @var{desc} if @var{value} is nonzero,}
-   @r{or clear the flag if @var{value} is 0.}
-   @r{Return 0 on success, or -1 on error with @code{errno} set.} */
-
-int
-set_nonblock_flag (int desc, int value)
address@hidden
-  int oldflags = fcntl (desc, F_GETFL, 0);
-  /* @r{If reading the flags failed, return error indication now.} */
-  if (oldflags == -1)
-    return -1;
-  /* @r{Set just the flag we want to set.} */
-  if (value != 0)
-    oldflags |= O_NONBLOCK;
-  else
-    oldflags &= ~O_NONBLOCK;
-  /* @r{Store modified flag word in the descriptor.} */
-  return fcntl (desc, F_SETFL, oldflags);
address@hidden
-
address@hidden smallexample
-
address@hidden File Locks
address@hidden File Locks
-
address@hidden file locks
address@hidden record locking
-The remaining @code{fcntl} commands are used to support @dfn{record
-locking}, which permits multiple cooperating programs to prevent each
-other from simultaneously accessing parts of a file in error-prone
-ways.
-
address@hidden exclusive lock
address@hidden write lock
-An @dfn{exclusive} or @dfn{write} lock gives a process exclusive access
-for writing to the specified part of the file.  While a write lock is in
-place, no other process can lock that part of the file.
-
address@hidden shared lock
address@hidden read lock
-A @dfn{shared} or @dfn{read} lock prohibits any other process from
-requesting a write lock on the specified part of the file.  However,
-other processes can request read locks.
-
-The @code{read} and @code{write} functions do not actually check to see
-whether there are any locks in place.  If you want to implement a
-locking protocol for a file shared by multiple processes, your application
-must do explicit @code{fcntl} calls to request and clear locks at the
-appropriate points.
-
-Locks are associated with processes.  A process can only have one kind
-of lock set for each byte of a given file.  When any file descriptor for
-that file is closed by the process, all of the locks that process holds
-on that file are released, even if the locks were made using other
-descriptors that remain open.  Likewise, locks are released when a
-process exits, and are not inherited by child processes created using
address@hidden (@pxref{Creating a Process}).
-
-When making a lock, use a @code{struct flock} to specify what kind of
-lock and where.  This data type and the associated macros for the
address@hidden function are declared in the header file @file{fcntl.h}.
address@hidden fcntl.h
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden {Data Type} {struct flock}
-This structure is used with the @code{fcntl} function to describe a file
-lock.  It has these members:
-
address@hidden @code
address@hidden short int l_type
-This specifies the type of the lock; either @code{F_RDLCK},
address@hidden or @code{F_UNLCK}.
-
address@hidden short int l_whence
-This corresponds to the @var{whence} argument to @code{fseek} or
address@hidden, and specifies what the offset is relative to.  Its value
-can be one of @code{SEEK_SET}, @code{SEEK_CUR} or @code{SEEK_END}.
-
address@hidden off_t l_start
-This specifies the offset of the start of the region to which the lock
-applies and is given in bytes relative to the point specified by the
address@hidden member.
-
address@hidden off_t l_len
-This specifies the length of the region to be locked.  A value of
address@hidden is treated specially; it means the region extends to the end of
-the file.
-
address@hidden pid_t l_pid
-This field is the process @acronym{ID} (@pxref{Process-Creation
-Concepts}) of the process holding the lock.  It is filled in by
-calling @code{fcntl} with the @code{F_GETLK} command, but is ignored
-when making a lock.
address@hidden table
address@hidden deftp
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int F_GETLK
-This macro is used as the @var{command} argument to @code{fcntl}, to
-specify that it should get information about a lock.  This command
-requires a third argument of type @address@hidden flock *}} to be passed
-to @code{fcntl}, so that the form of the call is
-
address@hidden
-fcntl (@var{filedes}, F_GETLK, @var{lockp})
address@hidden smallexample
-
-If there is a lock already in place that would block the lock described
-by the @var{lockp} argument, information about that lock overwrites
address@hidden@var{lockp}}.  Existing locks are not reported if they are
-compatible with making a new lock as specified.  Thus, you should
-specify a lock type of @code{F_WRLCK} if you want to find out about both
-read and write locks, or @code{F_RDLCK} if you want to find out about
-write locks only.
-
-There might be more than one lock affecting the region specified by
-the @var{lockp} argument, but @code{fcntl} only returns information
-about one of them.  The @code{l_whence} member of the @var{lockp}
-structure is set to @code{SEEK_SET}, and the @code{l_start} and
address@hidden fields are set to identify the locked region.
-
-If no lock applies, the only change to the @var{lockp} structure is to
-update the @code{l_type} to a value of @code{F_UNLCK}.
-
-The normal return value from @code{fcntl} with this command is an
-unspecified value other than @math{-1}, which is reserved to indicate an
-error.  The following @code{errno} error conditions are defined for
-this command:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is invalid.
-
address@hidden EINVAL
-Either the @var{lockp} argument doesn't specify valid lock information,
-or the file associated with @var{filedes} doesn't support locks.
address@hidden table
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int F_SETLK
-This macro is used as the @var{command} argument to @code{fcntl}, to
-specify that it should set or clear a lock.  This command requires a
-third argument of type @address@hidden flock *}} to be passed to
address@hidden, so that the form of the call is
-
address@hidden
-fcntl (@var{filedes}, F_SETLK, @var{lockp})
address@hidden smallexample
-
-If the process already has a lock on any part of the region, the old lock
-on that part is replaced with the new lock.  You can remove a lock
-by specifying a lock type of @code{F_UNLCK}.
-
-If the lock cannot be set, @code{fcntl} returns immediately with a value
-of @math{-1}.  This function does not block waiting for other processes
-to release locks.  If @code{fcntl} succeeds, it return a value other
-than @math{-1}.
-
-The following @code{errno} error conditions are defined for this
-function:
-
address@hidden @code
address@hidden EAGAIN
address@hidden EACCES
-The lock cannot be set because it is blocked by an existing lock on
-the file.  Some systems use @code{EAGAIN} in this case, and other
-systems use @code{EACCES}; your program should treat them alike, after
address@hidden  The @acronym{GNU} system always uses @code{EAGAIN}.
-
address@hidden EBADF
-Either the @var{filedes} argument is invalid; because you requested a
-read lock but the @var{filedes} is not open for read access; or you
-requested a write lock but the @var{filedes} is not open for write
-access.
-
address@hidden EINVAL
-Either the @var{lockp} argument doesn't specify valid lock information,
-or the file associated with @var{filedes} doesn't support locks.
-
address@hidden ENOLCK
-The system has run out of file-lock resources---there are already too
-many file locks in place.
-
-Well-designed file systems never report this error, because they have
-no limitation on the number of locks.  However, you must still account
-for the possibility of this error, as it could result from network
-access to a file system on another machine.
address@hidden table
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden Macro int F_SETLKW
-This macro is used as the @var{command} argument to @code{fcntl}, to
-specify that it should set or clear a lock.  It is just like the
address@hidden command, but causes the process to block (or wait)
-until the request can be specified.
-
-This command requires a third argument of type @code{struct flock *}, as
-for the @code{F_SETLK} command.
-
-The @code{fcntl} return values and errors are the same as for the
address@hidden command, but these additional @code{errno} error conditions
-are defined for this command:
-
address@hidden @code
address@hidden EINTR
-The function was interrupted by a signal while it was waiting
-(@pxref{Interrupted Primitives}).
-
address@hidden EDEADLK
-The specified region is being locked by another process.  But that
-process is waiting to lock a region that the current process has
-locked, so waiting for the lock would result in deadlock.  The system
-does not guarantee that it will detect all such conditions, but it
-lets you know if it notices one.
address@hidden table
address@hidden deftypevr
-
-
-The following macros are defined for use as values for the @code{l_type}
-member of the @code{flock} structure.  The values are integer constants.
-
address@hidden @code
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden F_RDLCK
address@hidden F_RDLCK
-This macro is used to specify a read (or shared) lock.
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden F_WRLCK
address@hidden F_WRLCK
-This macro is used to specify a write (or exclusive) lock.
-
address@hidden fcntl.h
address@hidden POSIX.1
address@hidden F_UNLCK
address@hidden F_UNLCK
-This macro is used to specify that the region is unlocked.
address@hidden table
-
-As an example of a situation where file locking is useful, consider a
-program that can be run simultaneously by several different users,
-which logs status information to a common file.  One example of such a
-program might be a game that uses a file to keep track of high scores.
-Another example might be a program that records usage or accounting
-information for billing purposes.
-
-Having multiple copies of the program simultaneously writing to the
-file could cause the contents of the file to become mixed up.  But
-you can prevent this kind of problem by setting a write lock on the
-file before actually writing to the file.
-
-If the program also needs to read the file and wants to make sure that
-the contents of the file are in a consistent state, then it can also use
-a read lock.  While the read lock is set, no other process can lock
-that part of the file for writing.
-
address@hidden ??? This section could use an example program.
-
-Remember that file locks are only a @emph{voluntary} protocol for
-controlling access to a file.  There is still potential for access to
-the file by programs that don't use the lock protocol.
-
address@hidden Interrupt Input
address@hidden Interrupt-Driven Input
-
address@hidden interrupt-driven input
-If you set the @code{O_ASYNC} status flag on a file descriptor
-(@pxref{File Status Flags}), a @code{SIGIO} signal is sent whenever
-input or output becomes possible on that file descriptor.  The process
-or process group to receive the signal can be selected by using the
address@hidden command to the @code{fcntl} function.  If the file
-descriptor is a socket, this also selects the recipient of @code{SIGURG}
-signals that are delivered when out-of-band data arrives on that socket
-(@pxref{Out-of-Band Data}).  address@hidden is sent in any situation
-where @code{select} would report the socket as having an ``exceptional
-condition'' (@pxref{Waiting for I/O}).]
-
-If the file descriptor corresponds to a terminal device, then @code{SIGIO}
-signals are sent to the foreground process group of the terminal
-(@pxref{Job Control}).
-
address@hidden fcntl.h
-The symbols in this section are defined in the header file
address@hidden
-
address@hidden fcntl.h
address@hidden BSD
address@hidden Macro int F_GETOWN
-This macro is used as the @var{command} argument to @code{fcntl}, to
-specify that it should get information about the process or process
-group to which @code{SIGIO} signals are sent.  For a terminal, this is
-actually the foreground process-group @acronym{id}, which you can get
-using @code{tcgetpgrp} (@pxref{Terminal Access Functions}).
-
-The return value is interpreted as a process @acronym{ID}; if negative, its
-absolute value is the process-group @acronym{id}.
-
-The following @code{errno} error condition is defined for this command:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is invalid.
address@hidden table
address@hidden deftypevr
-
address@hidden fcntl.h
address@hidden BSD
address@hidden Macro int F_SETOWN
-This macro is used as the @var{command} argument to @code{fcntl}, to
-specify that it should set the process or process group to which
address@hidden signals are sent.  This command requires a third argument
-of type @code{pid_t} to be passed to @code{fcntl}, so that the form of
-the call is
-
address@hidden
-fcntl (@var{filedes}, F_SETOWN, @var{pid})
address@hidden smallexample
-
-The @var{pid} argument should be a process @acronym{ID}.  You can also pass a
-negative number whose absolute value is a process-group @acronym{id}.
-
-The return value from @code{fcntl} with this command is @math{-1}
-in case of error and some other value if successful.  The following
address@hidden error conditions are defined for this command:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is invalid.
-
address@hidden ESRCH
-There is no process or process group corresponding to @var{pid}.
address@hidden table
address@hidden deftypevr
-
address@hidden ??? This section could use an example program.
-
address@hidden IOCTLs
address@hidden Generic I/O Control Operations
address@hidden generic I/O control operations
address@hidden @acronym{IOCTL}s
-
-The @acronym{GNU} system can handle most input/output operations on
-many different devices and objects in terms of a few file primitives:
address@hidden, @code{write} and @code{lseek}.  However, most devices
-also have a few peculiar operations that do not fit into this model,
-such as:
-
address@hidden @bullet
-
address@hidden
-Changing the character font used on a terminal
-
address@hidden
-Telling a magnetic tape system to rewind or fast forward (since they
-cannot move in byte increments, @code{lseek} is inapplicable).
-
address@hidden
-Ejecting a disk from a drive
-
address@hidden
-Playing an audio track from a @address@hidden drive
-
address@hidden
-Maintaining routing tables for a network
-
address@hidden itemize
-
-Although some objects such as sockets and terminals have special
-functions of their own, it would not be practical to create functions
-for all these address@hidden, the terminal-specific
-functions are implemented with @acronym{IOCTL}s on many platforms.}
-
-Instead these minor operations, known as @dfn{IOCTL}s, are assigned code
-numbers and multiplexed through the @code{ioctl} function, defined in
address@hidden/ioctl.h}.  The code numbers themselves are defined in many
-different headers.
-
address@hidden sys/ioctl.h
address@hidden BSD
address@hidden int ioctl (int @var{filedes}, int @var{command}, @dots{})
-
-The @code{ioctl} function performs the generic I/O operation
address@hidden on @var{filedes}.
-
-A third argument is usually present, either a single number or a
-pointer to a structure.  The meaning of this argument, the returned
-value and any error codes depends upon the command used.  Often,
address@hidden is returned for a failure.
-
address@hidden deftypefun
-
-On some systems, @acronym{IOCTL}s used by different devices share the
-same numbers.  Thus, although use of an inappropriate @acronym{IOCTL}
address@hidden only produces an error, you should not attempt to use
-device-specific @acronym{IOCTL}s on an unknown device.
-
-Most @acronym{IOCTL}s are @acronym{OS} specific and/or are only used
-in special system utilities, and are thus beyond the scope of this
-document.  For an example of the use of an @acronym{IOCTL}, see
address@hidden Data}.
-
address@hidden File-System Interface
address@hidden %MENU% Functions for manipulating files
address@hidden File-System Interface
-
-This chapter describes the @acronym{GNU} C Library's functions for
-manipulating files.  Unlike the input and output functions
-(@pxref{Low-Level I/O}),@footnote{See Loosemore et al., ``Input/Output
-on Streams'' (see chap. 1, n. 1).} these functions are concerned with
-operating on the files themselves rather than on their contents.
-
-Among the facilities described in this chapter are functions for
-examining or modifying directories, functions for renaming and deleting
-files, and functions for examining and setting file attributes such as
-access permissions and modification times.
-
address@hidden Working Directory
address@hidden Working Directory
-
address@hidden current working directory
address@hidden working directory
address@hidden change working directory
-Each process has a directory associated with it, called its
address@hidden working directory} or simply @dfn{working directory},
-which is used in the resolution of relative file
address@hidden, ``File-Name Resolution''.}
-
-When you log in and begin a new session, your working directory is
-initially set to the home directory associated with your login account
-in the system user database.  You can find any user's home directory
-using the @code{getpwuid} or @code{getpwnam} functions (@pxref{User
-Database}).
-
-Users can change the working directory using shell commands like
address@hidden  The functions described in this section are the primitives
-used by those commands and by other programs for examining and changing
-the working directory.
address@hidden cd
-
-Prototypes for these functions are declared in the header file
address@hidden
address@hidden unistd.h
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden {char *} getcwd (char address@hidden, size_t @var{size})
-The @code{getcwd} function returns an absolute file-name representing
-the current working directory, storing it in the character array
address@hidden that you provide.  The @var{size} argument is how you tell
-the system the allocation size of @var{buffer}.
-
-The @acronym{GNU} library version of this function also permits you to
-specify a null pointer for the @var{buffer} argument.  Then
address@hidden allocates a buffer automatically, as with
address@hidden@footnote{Ibid., ``Unconstrained Allocation''.}  If the
address@hidden is greater than 0, then the buffer is that large;
-otherwise, the buffer is as large as necessary to hold the result.
-
-The return value is @var{buffer} on success and a null pointer on failure.
-The following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden EINVAL
-The @var{size} argument is 0 and @var{buffer} is not a null pointer.
-
address@hidden ERANGE
-The @var{size} argument is less than the length of the working directory
-name.  You need to allocate a bigger array and try again.
-
address@hidden EACCES
-Permission to read or search a component of the file name was denied.
address@hidden table
address@hidden deftypefun
-
-You could implement the behavior of @acronym{GNU}'s @address@hidden (NULL, 0)}}
-using only the standard behavior of @code{getcwd}:
-
address@hidden
-char *
-gnu_getcwd ()
address@hidden
-  size_t size = 100;
-
-  while (1)
-    @{
-      char *buffer = (char *) xmalloc (size);
-      if (getcwd (buffer, size) == buffer)
-        return buffer;
-      free (buffer);
-      if (errno != ERANGE)
-        return 0;
-      size *= 2;
-    @}
address@hidden
address@hidden smallexample
-
address@hidden
-For information about @code{xmalloc}, which is not a library function
-but is a customary name used in most @acronym{GNU} software, see
-Loosemore et al., ``Examples of @code{malloc}'' (see chap. 1, n. 1).
-
address@hidden unistd.h
address@hidden BSD
address@hidden {Deprecated Function} {char *} getwd (char address@hidden)
-This is similar to @code{getcwd}, but has no way to specify the size of
-the buffer.  The @acronym{GNU} library provides @code{getwd} only
-for backward compatibility with @acronym{BSD}.
-
-The @var{buffer} argument should be a pointer to an array at least
address@hidden bytes long (@pxref{Limits for Files}).  In the
address@hidden system, there is no limit to the size of a file name, so
-this is not necessarily enough space to contain the directory name.
-That is why this function is deprecated.
address@hidden deftypefn
-
address@hidden unistd.h
address@hidden GNU
address@hidden {char *} get_current_dir_name (void)
address@hidden PWD
-This @code{get_current_dir_name} function is basically equivalent to
address@hidden@code{getcwd (NULL, 0)}}.  The only difference is that the value 
of
-the @code{PWD} variable is returned if this value is correct.  This is
-a subtle difference that is visible if the path described by the
address@hidden value is using one or more symbol links, in which case the
-value returned by @code{getcwd} can resolve the symbol links and
-therefore yield a different result.
-
-This function is a @acronym{GNU} extension.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int chdir (const char address@hidden)
-This function is used to set the process's working directory to
address@hidden
-
-The normal, successful return value from @code{chdir} is @code{0}.  A
-value of @code{-1} is returned to indicate an error.  The @code{errno}
-error conditions defined for this function are the usual file-name
-syntax errors, plus @code{ENOTDIR} if the file @var{filename} is not a
address@hidden, ``File-Name Errors''.}
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden XPG
address@hidden int fchdir (int @var{filedes})
-This function is used to set the process's working directory to the
-directory associated with the file descriptor @var{filedes}.
-
-The normal, successful return value from @code{fchdir} is @code{0}.  A
-value of @code{-1} is returned to indicate an error.  The following
address@hidden error conditions are defined for this function:
-
address@hidden @code
address@hidden EACCES
-Read permission is denied for the directory named by @code{dirname}.
-
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden ENOTDIR
-The file descriptor @var{filedes} is not associated with a directory.
-
address@hidden EINTR
-The function call was interrupt by a signal.
-
address@hidden EIO
-An I/O error occurred.
address@hidden table
address@hidden deftypefun
-
-
address@hidden Accessing Directories
address@hidden Accessing Directories
address@hidden accessing directories
address@hidden reading from a directory
address@hidden directories, accessing
-
-The facilities described in this section let you read the contents of a
-directory file.  This is useful if you want your program to list all the
-files in a directory, perhaps as part of a menu.
-
address@hidden directory stream
-The @code{opendir} function opens a @dfn{directory stream} whose
-elements are directory entries.  You use the @code{readdir} function
-on the directory stream to retrieve these entries, represented as
address@hidden@code{struct dirent}} objects.  The name of the file for each 
entry
-is stored in the @code{d_name} member of this structure.  There are
-obvious parallels here to the stream facilities for ordinary
address@hidden, ``Input/Output on Streams''.}
-
address@hidden Directory Entries
address@hidden Format of a Directory Entry
-
address@hidden dirent.h
-This section describes what you find in a single directory entry, as you
-might obtain it from a directory stream.  All the symbols are declared
-in the header file @file{dirent.h}.
-
address@hidden dirent.h
address@hidden POSIX.1
address@hidden {Data Type} {struct dirent}
-This is a structure type used to return information about directory
-entries.  It contains the following fields:
-
address@hidden @code
address@hidden char d_name[]
-This is the null-terminated file-name component.  This is the only
-field you can count on in all @acronym{POSIX} systems.
-
address@hidden ino_t d_fileno
-This is the file serial number.  For @acronym{BSD} compatibility, you can also
-refer to this member as @code{d_ino}.  In the @acronym{GNU} system and most 
@acronym{POSIX}
-systems, for most files this the same as the @code{st_ino} member that
address@hidden will return for the file (@pxref{File Attributes}).
-
address@hidden unsigned char d_namlen
-This is the length of the file name, not including the terminating null
-character.  Its type is @code{unsigned char} because that is the integer
-type of the appropriate size.
-
address@hidden unsigned char d_type
-This is the type of the file, possibly unknown.  The following constants
-are defined for its value:
-
address@hidden @code
address@hidden DT_UNKNOWN
-The type is unknown.  On some systems, this is the only value
-returned.
-
address@hidden DT_REG
-This is a regular file.
-
address@hidden DT_DIR
-This is a directory.
-
address@hidden DT_FIFO
-This is a named pipe, or @acronym{FIFO} (@pxref{FIFO Special Files}).
-
address@hidden DT_SOCK
-This is a local-domain socket.  @c !!! @xref{Local Domain}.
-
address@hidden DT_CHR
-This is a character device.
-
address@hidden DT_BLK
-This is a block device.
address@hidden vtable
-
-This member is a @acronym{BSD} extension.  The symbol
address@hidden is defined if this member is available.  On
-systems where it is used, it corresponds to the file-type bits in the
address@hidden member of @code{struct statbuf}.  If the value cannot
-be determined, the member value is @code{DT_UNKNOWN}.  These two
-macros convert between @code{d_type} values and @code{st_mode} values:
-
address@hidden dirent.h
address@hidden BSD
address@hidden int IFTODT (mode_t @var{mode})
-This returns the @code{d_type} value corresponding to @var{mode}.
address@hidden deftypefun
-
address@hidden dirent.h
address@hidden BSD
address@hidden mode_t DTTOIF (int @var{dtype})
-This returns the @code{st_mode} value corresponding to @var{dtype}.
address@hidden deftypefun
address@hidden table
-
-This structure may contain additional members in the future.  Their
-availability is always announced in the compilation environment by a
-macro named @address@hidden where @var{xxx} is replaced
-by the name of the new member.  For instance, the member @code{d_reclen}
-available on some systems is announced through the macro
address@hidden
-
-When a file has multiple names, each name has its own directory entry.
-The only way you can tell that the directory entries belong to a
-single file is that they have the same value for the @code{d_fileno}
-field.
-
-File attributes such as size, modification times, etc., are part of the
-file itself, not of any particular directory entry (@pxref{File
-Attributes}).
address@hidden deftp
-
address@hidden Opening a Directory
address@hidden Opening a Directory Stream
-
address@hidden dirent.h
-This section describes how to open a directory stream.  All the symbols
-are declared in the header file @file{dirent.h}.
-
address@hidden dirent.h
address@hidden POSIX.1
address@hidden {Data Type} DIR
-The @code{DIR} data type represents a directory stream.
address@hidden deftp
-
-You shouldn't ever allocate objects of the @code{struct dirent} or
address@hidden data types, since the directory-access functions do that for
-you.  Instead, you refer to these objects using the pointers returned by
-the following functions:
-
address@hidden dirent.h
address@hidden POSIX.1
address@hidden {DIR *} opendir (const char address@hidden)
-The @code{opendir} function opens and returns a directory stream for
-reading the directory whose file name is @var{dirname}.  The stream
-has type @code{DIR *}.
-
-If unsuccessful, @code{opendir} returns a null pointer.  In addition
-to the usual file-name errors, the following @code{errno} error
-conditions are defined for this function:@footnote{Ibid., ``File-Name
-Errors''.}
-
address@hidden @code
address@hidden EACCES
-Read permission is denied for the directory named by @code{dirname}.
-
address@hidden EMFILE
-The process has too many files open.
-
address@hidden ENFILE
-The entire system, or perhaps the file system that contains the
-directory, cannot support any additional open files at the moment.
-This problem cannot happen on the @acronym{GNU} system.
address@hidden table
-
-The @code{DIR} type is typically implemented using a file descriptor,
-and the @code{opendir} function in terms of the @code{open} function
-(@pxref{Low-Level I/O}).  Directory streams and the underlying
-file-descriptors are closed on @code{exec} (@pxref{Executing a File}).
address@hidden deftypefun
-
-In some situations, it can be desirable to get hold of the file
-descriptor that is created by the @code{opendir} call.  For instance,
-to switch the current working directory to the directory just read the
address@hidden function could be used.  Historically, the @code{DIR}
-type was exposed and programs could access the fields.  This does not
-happen in the @acronym{GNU} C Library.  Instead, a separate function
-is provided to allow access.
-
address@hidden dirent.h
address@hidden GNU
address@hidden int dirfd (DIR address@hidden)
-The function @code{dirfd} returns the file descriptor associated with
-the directory stream @var{dirstream}.  This descriptor can be used
-until the directory is closed with @code{closedir}.  If the directory
-stream implementation is not using file descriptors, the return value
-is @code{-1}.
address@hidden deftypefun
-
address@hidden Reading/Closing Directory
address@hidden Reading and Closing a Directory Stream
-
address@hidden dirent.h
-This section describes how to read directory entries from a directory
-stream, and how to close the stream when you are done with it.  All the
-symbols are declared in the header file @file{dirent.h}.
-
address@hidden dirent.h
address@hidden POSIX.1
address@hidden {struct dirent *} readdir (DIR address@hidden)
-This function reads the next entry from the directory.  It normally
-returns a pointer to a structure containing information about the file.
-This structure is statically allocated and can be rewritten by a
-subsequent call.
-
address@hidden Note:} On some systems, @code{readdir} may not
-return entries for @file{.} and @file{..}, even though these are
-always valid file-names in any address@hidden, ``File-Name
-Resolution''.}
-
-If there are no more entries in the directory or an error is detected,
address@hidden returns a null pointer.  The following @code{errno}
-error condition is defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{dirstream} argument is not valid.
address@hidden table
-
address@hidden is not thread safe.  Multiple threads using
address@hidden on the same @var{dirstream} may overwrite the return
-value.  Use @code{readdir_r} when this is critical.
address@hidden deftypefun
-
address@hidden dirent.h
address@hidden GNU
address@hidden int readdir_r (DIR address@hidden, struct dirent address@hidden, 
struct dirent address@hidden)
-This function is the reentrant version of @code{readdir}.  Like
address@hidden, it returns the next entry from the directory.  But to
-prevent conflicts between simultaneously-running threads, the result
-is not stored in statically allocated memory.  Instead, the argument
address@hidden points to a place to store the result.
-
-Normally, @code{readdir_r} returns 0 and sets @address@hidden to
address@hidden  If there are no more entries in the directory or an
-error is detected, @code{readdir_r} sets @address@hidden to a
-null pointer and returns a nonzero error code, also stored in
address@hidden, as described for @code{readdir}.
-
address@hidden Note:} On some systems, @code{readdir_r} may not
-return a NUL-terminated string for the file name, even when there is
-no @code{d_reclen} field in @code{struct dirent} and the file name is
-the maximum size allowed.  Modern systems all have the @code{d_reclen}
-field, and on old systems multithreading is not critical.  In any
-case, there is no such problem with the @code{readdir} function, so
-that even on systems without the @code{d_reclen} member, you could use
-multiple threads by using external locking.
-
-It is also important to look at the definition of the @code{struct
-dirent} type.  Simply passing a pointer to an object of this type for
-the second parameter of @code{readdir_r} might not be enough.  Some
-systems don't define the @code{d_name} element to be sufficiently
-long.  In this case, the user has to provide additional space.  There
-must be room for at least @code{NAME_MAX + 1} characters in the
address@hidden array.  Code to call @code{readdir_r} could look like
-this:
-
address@hidden
-  union
-  @{
-    struct dirent d;
-    char b[offsetof (struct dirent, d_name) + NAME_MAX + 1];
-  @} u;
-
-  if (readdir_r (dir, &u.d, &res) == 0)
-    @dots{}
address@hidden smallexample
address@hidden deftypefun
-
-To support large file-systems on 32-bit machines there are @acronym{LFS} 
variants
-of the last two functions.
-
address@hidden dirent.h
address@hidden LFS
address@hidden {struct dirent64 *} readdir64 (DIR address@hidden)
-The @code{readdir64} function is just like the @code{readdir}
-function, except that it returns a pointer to a record of type
address@hidden dirent64}.  Some of the members of this data type
-(notably @code{d_ino}) might have a different size to allow large
-file-systems.
-
-In all other aspects, this function is equivalent to @code{readdir}.
address@hidden deftypefun
-
address@hidden dirent.h
address@hidden LFS
address@hidden int readdir64_r (DIR address@hidden, struct dirent64 
address@hidden, struct dirent64 address@hidden)
-The @code{readdir64_r} function is equivalent to the @code{readdir_r}
-function, except that it takes parameters of base type @code{struct
-dirent64} instead of @code{struct dirent} in the second and third
-position.  The same precautions mentioned in the documentation of
address@hidden also apply here.
address@hidden deftypefun
-
address@hidden dirent.h
address@hidden POSIX.1
address@hidden int closedir (DIR address@hidden)
-This function closes the directory stream @var{dirstream}.  It returns
address@hidden on success and @code{-1} on failure.
-
-The following @code{errno} error conditions are defined for this
-function:
-
address@hidden @code
address@hidden EBADF
-The @var{dirstream} argument is not valid.
address@hidden table
address@hidden deftypefun
-
address@hidden Simple Directory Lister
address@hidden Simple Program to List a Directory
-
-Here's a simple program that prints the names of the files in
-the current working directory:
-
address@hidden
-
-#include <stdio.h>
-#include <sys/types.h>
-#include <dirent.h>
-
-
-int
-main (void)
address@hidden
-  DIR *dp;
-  struct dirent *ep;
-
-  dp = opendir ("./");
-  if (dp != NULL)
-    @{
-      while (ep = readdir (dp))
-        puts (ep->d_name);
-      (void) closedir (dp);
-    @}
-  else
-    perror ("Couldn't open the directory");
-
-  return 0;
address@hidden
-
address@hidden smallexample
-
-The order in which files appear in a directory tends to be fairly
-random (@pxref{Scanning Directory Content}.  A more useful program would sort 
the entries (perhaps by
-alphabetizing them) before printing address@hidden, ``Array Sort Function''.}
-
-
address@hidden Random Access Directory
address@hidden Random Access in a Directory Stream
-
address@hidden dirent.h
-This section describes how to reread parts of a directory that you have
-already read from an open directory stream.  All the symbols are
-declared in the header file @file{dirent.h}.
-
address@hidden dirent.h
address@hidden POSIX.1
address@hidden void rewinddir (DIR address@hidden)
-The @code{rewinddir} function is used to reinitialize the directory
-stream @var{dirstream}, so that if you call @code{readdir}, it returns
-information about the first entry in the directory again.  This
-function also notices if files have been added or removed to the
-directory since it was opened with @code{opendir}.  Entries for these
-files might or might not be returned by @code{readdir} if they were
-added or removed since you last called @code{opendir} or
address@hidden
address@hidden deftypefun
-
address@hidden dirent.h
address@hidden BSD
address@hidden off_t telldir (DIR address@hidden)
-The @code{telldir} function returns the file position of the directory
-stream @var{dirstream}.  You can use this value with @code{seekdir} to
-restore the directory stream to that position.
address@hidden deftypefun
-
address@hidden dirent.h
address@hidden BSD
address@hidden void seekdir (DIR address@hidden, off_t @var{pos})
-The @code{seekdir} function sets the file position of the directory
-stream @var{dirstream} to @var{pos}.  The value @var{pos} must be the
-result of a previous call to @code{telldir} on this particular stream;
-closing and reopening the directory can invalidate values returned by
address@hidden
address@hidden deftypefun
-
-
address@hidden Scanning Directory Content
address@hidden Scanning the Content of a Directory
-
-A higher-level interface to the directory-handling functions is the
address@hidden function.  With its help, you can select a subset of
-the entries in a directory, possibly sort them and get a list of names
-as the result.
-
address@hidden dirent.h
address@hidden BSD/SVID
address@hidden int scandir (const char address@hidden, struct dirent 
address@hidden, int (address@hidden) (const struct dirent *), int 
(address@hidden) (const void *, const void *))
-
-The @code{scandir} function scans the contents of the directory
-selected by @var{dir}.  The result in address@hidden is an array of
-pointers to a structure of type @code{struct dirent}, which describes
-all selected directory entries and is allocated using @code{malloc}.
-Instead of always getting all directory entries returned, the
-user-supplied function @var{selector} can be used to decide which
-entries are in the result.  Only the entries for which @var{selector}
-returns a nonzero value are selected.
-
-Finally, the entries in address@hidden are sorted using the
-user-supplied function @var{cmp}.  The arguments passed to the
address@hidden function are of type @code{struct dirent **}, therefore you
-cannot directly use the @code{strcmp} or @code{strcoll} functions;
-instead see the functions @code{alphasort} and @code{versionsort}
-below.
-
-The return value of the function is the number of entries placed in
address@hidden  If it is @code{-1}, an error occurred (either the
-directory could not be opened for reading or the @code{malloc} call
-failed), and the global variable @code{errno} contains more
-information on the error.
address@hidden deftypefun
-
-As described above, the fourth argument to the @code{scandir} function
-must be a pointer to a sorting function.  For the convenience of the
-programmer, the @acronym{GNU} C Library contains implementations of
-functions that are very useful for this purpose.
-
address@hidden dirent.h
address@hidden BSD/SVID
address@hidden int alphasort (const void address@hidden, const void 
address@hidden)
-The @code{alphasort} function behaves like the @code{strcoll}
address@hidden, ``String/Array Comparison''.}  The
-difference is that the arguments are not string pointers but instead
- are of type @code{struct dirent **}.
-
-The return value of @code{alphasort} is less than, equal to or greater
-than 0 depending on the order of the two entries @var{a} and @var{b}.
address@hidden deftypefun
-
address@hidden dirent.h
address@hidden GNU
address@hidden int versionsort (const void address@hidden, const void 
address@hidden)
-The @code{versionsort} function is like @code{alphasort}, except that
-it uses the @code{strverscmp} function internally.
address@hidden deftypefun
-
-If the file system supports large files, we cannot use @code{scandir}
-anymore, since the @code{dirent} structure might not be able to
-contain all the information.  The @acronym{LFS} provides the new type
address@hidden@code{struct dirent64}}.  To use this, we need a new function.
-
address@hidden dirent.h
address@hidden GNU
address@hidden int scandir64 (const char address@hidden, struct dirent64 
address@hidden, int (address@hidden) (const struct dirent64 *), int 
(address@hidden) (const void *, const void *))
-The @code{scandir64} function works like the @code{scandir} function,
-except that the directory entries it returns are described by elements
-of type @address@hidden dirent64}}.  The function pointed to by
address@hidden is again used to select the desired entries, except
-that @var{selector} now must point to a function that takes a
address@hidden@code{struct dirent64 *}} parameter.
-
-Similarly, the @var{cmp} function should expect its two arguments to
-be of type @code{struct dirent64 **}.
address@hidden deftypefun
-
-As @var{cmp} is now a function of a different type, the functions
address@hidden and @code{versionsort} cannot be supplied for that
-argument.  Instead, we provide these two replacement functions:
-
address@hidden dirent.h
address@hidden GNU
address@hidden int alphasort64 (const void address@hidden, const void 
address@hidden)
-The @code{alphasort64} function behaves like the @code{strcoll}
address@hidden, ``String/Array Comparison''.}  The
-difference is that the arguments are not string pointers but instead
-are of type @code{struct dirent64 **}.
-
-The return value of @code{alphasort64} is less than, equal to or
-greater than 0 depending on the order of the two entries @var{a} and
address@hidden
address@hidden deftypefun
-
address@hidden dirent.h
address@hidden GNU
address@hidden int versionsort64 (const void address@hidden, const void 
address@hidden)
-The @code{versionsort64} function is like @code{alphasort64}, except
-that it uses the @code{strverscmp} function internally.
address@hidden deftypefun
-
-It is important not to mix the use of @code{scandir} and the 64-bit
-comparison functions or vice versa.  There are systems on which this
-works, but on others it fails miserably.
-
address@hidden Simple Directory Lister Mark II
address@hidden Simple Program to List a Directory, Mark II
-
-Here is a revised version of the directory lister found in @ref{Simple
-Directory Lister}.  Using the @code{scandir} function we can avoid the
-functions that work directly with the directory contents.  After the
-call, the returned entries are available for direct use.
-
address@hidden
-
-#include <stdio.h>
-#include <dirent.h>
-
-
-static int
-one (struct dirent *unused)
address@hidden
-  return 1;
address@hidden
-
-int
-main (void)
address@hidden
-  struct dirent **eps;
-  int n;
-
-  n = scandir ("./", &eps, one, alphasort);
-  if (n >= 0)
-    @{
-      int cnt;
-      for (cnt = 0; cnt < n; ++cnt)
-        puts (eps[cnt]->d_name);
-    @}
-  else
-    perror ("Couldn't open the directory");
-
-  return 0;
address@hidden
-
address@hidden smallexample
-
-Note the simple selector function in this example.  Since we want to see
-all directory entries, we always return @code{1}.
-
-
address@hidden Working with Directory Trees
address@hidden Working with Directory Trees
address@hidden directory hierarchy
address@hidden hierarchy, directory
address@hidden tree, directory
-
-The functions described so far for handling the files in a directory
-have allowed you to either retrieve the information bit by bit, or to
-process all the files as a group (see @code{scandir}).  Sometimes it is
-useful to process whole hierarchies of directories and their contained
-files.  The X/Open specification defines two functions to do this.  The
-simpler form is derived from an early definition in @w{System V} systems
-and therefore this function is available on @acronym{SVID}-derived systems.  
The
-prototypes and required definitions can be found in the @file{ftw.h}
-header.
-
-There are four functions in this family: @code{ftw}, @code{nftw} and
-their 64-bit counterparts @code{ftw64} and @code{nftw64}.  These
-functions take as one of their arguments a pointer to a callback
-function of the appropriate type.
-
address@hidden ftw.h
address@hidden GNU
address@hidden {Data Type} __ftw_func_t
-
address@hidden
-int (*) (const char *, const struct stat *, int)
address@hidden smallexample
-
-This is the type of callback function given to the @code{ftw}
-function.  The first parameter points to the file name, the second
-parameter to an object of type @code{struct stat}, which is filled in
-for the file named in the first parameter.
-
address@hidden
-The last parameter is a flag giving more information about the current
-file.  It can have the following values:
-
address@hidden @code
address@hidden FTW_F
-The item is either a normal file or a file that does not fit into one
-of the following categories.  This could be special files, sockets,
-etc.
address@hidden FTW_D
-The item is a directory.
address@hidden FTW_NS
-The @code{stat} call failed, so the information pointed to by the
-second parameter is invalid.
address@hidden FTW_DNR
-The item is a directory that cannot be read.
address@hidden FTW_SL
-The item is a symbolic link.  Since symbolic links are normally
-followed, seeing this value in a @code{ftw} callback function means
-the referenced file does not exist.  The situation for @code{nftw} is
-different.
-
-This value is only available if the program is compiled with
address@hidden or @code{_XOPEN_EXTENDED} defined before including
-the first header.  The original @acronym{SVID} systems do not have symbolic 
links.
address@hidden vtable
-
-If the sources are compiled with @code{_FILE_OFFSET_BITS == 64}, this
-type is in fact @code{__ftw64_func_t}, since this mode changes
address@hidden stat} to be @code{struct stat64}.
address@hidden deftp
-
-For the @acronym{LFS} interface and for use in the function @code{ftw64}, the
-header @file{ftw.h} defines another function type.
-
address@hidden ftw.h
address@hidden GNU
address@hidden {Data Type} __ftw64_func_t
-
address@hidden
-int (*) (const char *, const struct stat64 *, int)
address@hidden smallexample
-
-This type is used just like @code{__ftw_func_t} for the callback
-function, but this time is called from @code{ftw64}.  The second
-parameter to the function is a pointer to a variable of type
address@hidden stat64}, which is able to represent the larger values.
address@hidden deftp
-
address@hidden ftw.h
address@hidden GNU
address@hidden {Data Type} __nftw_func_t
-
address@hidden
-int (*) (const char *, const struct stat *, int, struct FTW *)
address@hidden smallexample
-
address@hidden FTW_DP
address@hidden FTW_SLN
-The first three arguments are the same as for the @code{__ftw_func_t}
-type.  However for the third argument some additional values are defined
-to allow finer differentiation:
address@hidden @code
address@hidden FTW_DP
-The current item is a directory and all subdirectories have already been
-visited and reported.  This flag is returned instead of @code{FTW_D} if
-the @code{FTW_DEPTH} flag is passed to @code{nftw} (see below).
address@hidden FTW_SLN
-The current item is a stale symbolic link.  The file it points to does
-not exist.
address@hidden table
-
-The last parameter of the callback function is a pointer to a structure
-with some extra information as described below.
-
-If the sources are compiled with @code{_FILE_OFFSET_BITS == 64}, this
-type is in fact @code{__nftw64_func_t}, since this mode changes
address@hidden stat} to be @code{struct stat64}.
address@hidden deftp
-
-For the @acronym{LFS} interface there is also a variant of this data
-type available, which has to be used with the @code{nftw64} function.
-
address@hidden ftw.h
address@hidden GNU
address@hidden {Data Type} __nftw64_func_t
-
address@hidden
-int (*) (const char *, const struct stat64 *, int, struct FTW *)
address@hidden smallexample
-
-This type is used just like @code{__nftw_func_t} for the callback
-function, but this time is called from @code{nftw64}.  The second
-parameter to the function is this time a pointer to a variable of type
address@hidden stat64}, which is able to represent the larger values.
address@hidden deftp
-
address@hidden ftw.h
address@hidden XPG4.2
address@hidden {Data Type} {struct FTW}
-The information contained in this structure helps in interpreting the
-name parameter and gives some information about the current state of the
-traversal of the directory hierarchy.
-
address@hidden @code
address@hidden int base
-The value is the offset into the string passed in the first parameter
-to the callback function of the beginning of the file name.  The rest
-of the string is the path of the file.  This information is especially
-important if the @code{FTW_CHDIR} flag was set in calling @code{nftw},
-since then the current directory is the one the current item is found
-in.
address@hidden int level
-While processing, the code tracks how many directories down it has gone
-to find the current file.  This nesting level starts at @math{0} for
-files in the initial directory (or is 0 for the initial file if a
-file was passed).
address@hidden table
address@hidden deftp
-
-
address@hidden ftw.h
address@hidden SVID
address@hidden int ftw (const char address@hidden, __ftw_func_t @var{func}, int 
@var{descriptors})
-The @code{ftw} function calls the callback function given in the
-parameter @var{func} for every item that is found in the directory
-specified by @var{filename} and all directories below.  The function
-follows symbolic links if necessary but does not process an item
-twice.  If @var{filename} is not a directory then it itself is the
-only object returned to the callback function.
-
-The file name passed to the callback function is constructed by taking
-the @var{filename} parameter and appending the names of all passed
-directories and then the local file-name.  So the callback function can
-use this parameter to access the file.  @code{ftw} also calls
address@hidden for the file and passes that information on to the callback
-function.  If this @code{stat} call was not successful the failure is
-indicated by setting the third argument of the callback function to
address@hidden  Otherwise it is set according to the description given
-in the account of @code{__ftw_func_t} above.
-
-The callback function is expected to return @math{0} to indicate that no
-error occurred and that processing should continue.  If an error
-occurred in the callback function or it wants @code{ftw} to return
-immediately, the callback function can return a value other than
address@hidden  This is the only correct way to stop the function.  The
-program must not use @code{setjmp} or similar techniques to continue
-from another place.  This would leave resources allocated by the
address@hidden function unfreed.
-
-The @var{descriptors} parameter to @code{ftw} specifies how many file
-descriptors it is allowed to consume.  The function runs faster the more
-descriptors it can use.  For each level in the directory hierarchy at
-most one descriptor is used, but for very deep ones any limit on open
-file-descriptors for the process or the system may be exceeded.
-Moreover, file-descriptor limits in a multithreaded program apply to
-all the threads as a group, and therefore it is a good idea to supply a
-reasonable limit to the number of open descriptors.
-
-The return value of the @code{ftw} function is @math{0} if all
-callback function calls returned @math{0} and all actions performed by
-the @code{ftw} succeeded.  If a function call failed (other than
-calling @code{stat} on an item) the function returns @math{-1}.  If a
-callback function returns a value other than @math{0}, this value is
-returned as the return value of @code{ftw}.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit system, this function is in fact @code{ftw64}---the
address@hidden interface transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden ftw.h
address@hidden Unix98
address@hidden int ftw64 (const char address@hidden, __ftw64_func_t @var{func}, 
int @var{descriptors})
-This function is similar to @code{ftw} but it can work on file systems
-with large files.  File information is reported using a variable of
-type @code{struct stat64}, which is passed by reference to the
-callback function.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit system, this function is available under the name @code{ftw} and
-transparently replaces the old implementation.
address@hidden deftypefun
-
address@hidden ftw.h
address@hidden XPG4.2
address@hidden int nftw (const char address@hidden, __nftw_func_t @var{func}, 
int @var{descriptors}, int @var{flag})
-The @code{nftw} function works like the @code{ftw} functions.  They call
-the callback function @var{func} for all items found in the directory
address@hidden and below.  At most @var{descriptors} file descriptors
-are consumed during the @code{nftw} call.
-
-One difference is that the callback function is of a different type.  It
-is of type @address@hidden FTW *}} and provides the callback function
-with the extra information described above.
-
-A second difference is that @code{nftw} takes a fourth argument, which
-is @math{0} or a address@hidden combination of any of the following values:
-
address@hidden @code
address@hidden FTW_PHYS
-While traversing the directory, symbolic links are not followed.
-Instead, symbolic links are reported using the @code{FTW_SL} value for
-the type parameter to the callback function.  If the file referenced
-by a symbolic link does not exist, @code{FTW_SLN} is returned instead.
address@hidden FTW_MOUNT
-The callback function is only called for items that are on the same
-mounted file-system as the directory given by the @var{filename}
-parameter to @code{nftw}.
address@hidden FTW_CHDIR
-If this flag is given, the current working directory is changed to the
-directory of the reported object before the callback function is
-called.  When @code{ntfw} finally returns, the current directory is
-restored to its original value.
address@hidden FTW_DEPTH
-If this option is specified, all subdirectories and files within them
-are processed before processing the top directory itself (depth-first
-processing).  This also means the type flag given to the callback
-function is @code{FTW_DP} and not @code{FTW_D}.
address@hidden vtable
-
-The return value is computed in the same way as for @code{ftw}.
address@hidden returns @math{0} if no failures occurred and all callback
-functions returned @math{0}.  In case of internal errors, such as
-memory problems, the return value is @math{-1} and @var{errno} is set
-accordingly.  If the return value of a callback invocation was
-nonzero, then that value is returned.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit system, this function is in fact @code{nftw64}---the
address@hidden interface transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden ftw.h
address@hidden Unix98
address@hidden int nftw64 (const char address@hidden, __nftw64_func_t 
@var{func}, int @var{descriptors}, int @var{flag})
-This function is similar to @code{nftw}, but it can work on file
-systems with large files.  File information is reported using a
-variable of type @code{struct stat64}, which is passed by reference to
-the callback function.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit system, this function is available under the name @code{nftw} and
-transparently replaces the old implementation.
address@hidden deftypefun
-
-
address@hidden Hard Links
address@hidden Hard Links
address@hidden hard link
address@hidden link, hard
address@hidden multiple names for one file
address@hidden file names, multiple
-
-In @acronym{POSIX} systems, one file can have many names at the same time.  
All of
-the names are equally real, and no one of them is preferred to the
-others.
-
-To add a name to a file, use the @code{link} function.  (The new name is
-also called a @dfn{hard link} to the file.)  Creating a new link to a
-file does not copy the contents of the file; it simply makes a new name
-by which the file can be known, in addition to the file's existing name
-or names.
-
-One file can have names in several directories, so the organization
-of the file system is not a strict hierarchy or tree.
-
-In most implementations, it is not possible to have hard links to the
-same file in multiple file systems.  @code{link} reports an error if you
-try to make a hard link to the file from another file system when this
-cannot be done.
-
-The prototype for the @code{link} function is declared in the header
-file @file{unistd.h}.
address@hidden unistd.h
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int link (const char address@hidden, const char address@hidden)
-The @code{link} function makes a new link to the existing file named by
address@hidden, under the new name @var{newname}.
-
-This function returns a value of @code{0} if it is successful and
address@hidden on failure.  In addition to the usual file-name errors for
-both @var{oldname} and @var{newname}, the following @code{errno} error
-conditions are defined for this function:@footnote{Ibid., ``File-Name
-Errors''.}
-
address@hidden @code
address@hidden EACCES
-You are not allowed to write to the directory in which the new link is
-to be written.
address@hidden
-Some implementations also require that the existing file be accessible
-by the caller, and use this error to report failure for that reason.
address@hidden ignore
-
address@hidden EEXIST
-There is already a file named @var{newname}.  If you want to replace
-this link with a new link, you must remove the old link explicitly first.
-
address@hidden EMLINK
-There are already too many links to the file named by @var{oldname}.
-The maximum number of links to a file is @code{LINK_MAX}
-(@pxref{Limits for Files}).
-
address@hidden ENOENT
-The file named by @var{oldname} doesn't exist.  You can't make a link to
-a file that doesn't exist.
-
address@hidden ENOSPC
-The directory or file system that would contain the new link is full
-and cannot be extended.
-
address@hidden EPERM
-In the @acronym{GNU} system and some others, you cannot make links to 
directories.
-Many systems allow only privileged users to do so.  This error
-is used to report the problem.
-
address@hidden EROFS
-The directory containing the new link can't be modified because it's on
-a read-only file system.
-
address@hidden EXDEV
-The directory specified in @var{newname} is on a different file system
-than the existing file.
-
address@hidden EIO
-A hardware error occurred while trying to read or write to the file system.
address@hidden table
address@hidden deftypefun
-
address@hidden Symbolic Links
address@hidden Symbolic Links
address@hidden soft link
address@hidden link, soft
address@hidden symbolic link
address@hidden link, symbolic
-
-The @acronym{GNU} system supports @dfn{soft links} or @dfn{symbolic
-links}.  This is a kind of ``file'' that is essentially a pointer to
-another file name.  Unlike hard links, symbolic links can be made to
-directories or across file systems with no restrictions.  You can also
-make a symbolic link to a name that is not the name of any file
-(opening this link will fail until a file by that name is created).
-Likewise, if the symbolic link points to an existing file that is
-later deleted, the symbolic link continues to point to the same file
-name even though the name no longer names any file.
-
-The reason symbolic links work the way they do is that special things
-happen when you try to open the link.  The @code{open} function realizes
-you have specified the name of a link, reads the file name contained in
-the link, and opens that file name instead.  The @code{stat} function
-likewise operates on the file that the symbolic link points to, instead
-of on the link itself.
-
-By contrast, other operations, such as deleting or renaming the file,
-operate on the link itself.  The functions @code{readlink} and
address@hidden also refrain from following symbolic links, because their
-purpose is to obtain information about the link.  @code{link}, the
-function that makes a hard link, does too.  It makes a hard link to
-the symbolic link, which you rarely want.
-
-Some systems have for some functions operating on files a limit on how
-many symbolic links are followed when resolving a path name.  The
-limit, if it exists, is published in the @file{sys/param.h} header
-file.
-
address@hidden sys/param.h
address@hidden BSD
address@hidden Macro int MAXSYMLINKS
-
-The macro @code{MAXSYMLINKS} specifies how many symlinks some function
-will follow before returning @code{ELOOP}.  Not all functions behave
-the same, and this value is not the same as that returned for
address@hidden by @code{sysconf}.  In fact, the @code{sysconf}
-result can indicate that there is no fixed limit even though
address@hidden exists and has a finite value.
address@hidden deftypevr
-
-Prototypes for most of the functions listed in this section are in
address@hidden
address@hidden unistd.h
-
address@hidden unistd.h
address@hidden BSD
address@hidden int symlink (const char address@hidden, const char 
address@hidden)
-The @code{symlink} function makes a symbolic link to @var{oldname} named
address@hidden
-
-The normal return value from @code{symlink} is @code{0}.  A return
-value of @code{-1} indicates an error.  In addition to the usual
-file-name syntax errors, the following @code{errno} error conditions
-are defined for this function:@footnote{Ibid., ``File-Name Errors''.}
-
address@hidden @code
address@hidden EEXIST
-There is already an existing file named @var{newname}.
-
address@hidden EROFS
-The file @var{newname} would exist on a read-only file system.
-
address@hidden ENOSPC
-The directory or file system cannot be extended to make the new link.
-
address@hidden EIO
-A hardware error occurred while reading or writing data on the disk.
-
address@hidden
address@hidden not sure about these
address@hidden ELOOP
-There are too many levels of indirection.  This can be the result of
-circular symbolic links to directories.
-
address@hidden EDQUOT
-The new link can't be created because the user's disk quota has been
-exceeded.
address@hidden ignore
address@hidden table
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden BSD
address@hidden int readlink (const char address@hidden, char address@hidden, 
size_t @var{size})
-The @code{readlink} function gets the value of the symbolic link
address@hidden  The file name that the link points to is copied into
address@hidden  This file-name string is @emph{not} null terminated;
address@hidden normally returns the number of characters copied.  The
address@hidden argument specifies the maximum number of characters to
-copy---usually the allocation size of @var{buffer}.
-
-If the return value equals @var{size}, you cannot tell whether or not
-there was room to return the entire name.  So make a bigger buffer and
-call @code{readlink} again.  Here is an example:
-
address@hidden
-char *
-readlink_malloc (const char *filename)
address@hidden
-  int size = 100;
-  char *buffer = NULL;
-
-  while (1)
-    @{
-      buffer = (char *) xrealloc (buffer, size);
-      int nchars = readlink (filename, buffer, size);
-      if (nchars < 0)
-        @{
-          free (buffer);
-          return NULL;
-        @}
-      if (nchars < size)
-        return buffer;
-      size *= 2;
-    @}
address@hidden
address@hidden smallexample
-
address@hidden   Invalid outside example.
-A value of @code{-1} is returned in case of error.  In addition to the
-usual file-name errors, the following @code{errno} error conditions
-are defined for this function:@footnote{Ibid., ``File-Name Errors''.}
-
address@hidden @code
address@hidden EINVAL
-The named file is not a symbolic link.
-
address@hidden EIO
-A hardware error occurred while reading or writing data on the disk.
address@hidden table
address@hidden 
address@hidden deftypefun
-
-In some situations it is desirable to resolve all the symbolic links
-to get the real name of a file where no prefix names a symbolic link
-that is followed and no file name in the path is @samp{.} or
address@hidden  This is desirable if, for example, files have to be
-compared, in which case different names can refer to the same inode.
-
address@hidden stdlib.h
address@hidden GNU
address@hidden {char *} canonicalize_file_name (const char address@hidden)
-
-The @code{canonicalize_file_name} function returns the absolute name
-of the file named by @var{name} that contains no @samp{.}, @samp{..}
-components nor any repeated path separators (@samp{/}) or symlinks.
-The result is passed back as the return value of the function in a
-block of memory allocated with @code{malloc}.  If the result is not
-used anymore, the memory should be freed with a call to @code{free}.
-
-If any of the path components except the last one is missing, the
-function returns a NULL pointer.  This is also what is returned if the
-length of the path reaches or exceeds @code{PATH_MAX} characters.  In
-any case, @code{errno} is set accordingly.
-
address@hidden @code
address@hidden ENAMETOOLONG
-The resulting path is too long.  This error only occurs on systems
-that have a limit on the file-name length.
-
address@hidden EACCES
-At least one of the path components is not readable.
-
address@hidden ENOENT
-The input file-name is empty.
-
address@hidden ENOENT
-At least one of the path components does not exist.
-
address@hidden ELOOP
-More than @code{MAXSYMLINKS} many symlinks have been followed.
address@hidden table
-
-This function is a @acronym{GNU} extension and is declared in @file{stdlib.h}.
address@hidden deftypefun
-
-The Unix standard includes a similar function that differs from
address@hidden in that the user has to provide the buffer
-where the result is placed in.
-
address@hidden stdlib.h
address@hidden XPG
address@hidden {char *} realpath (const char *restrict @var{name}, char 
*restrict @var{resolved})
-
-A call to @code{realpath} where the @var{resolved} parameter is
address@hidden behaves exactly like @code{canonicalize_file_name}.  The
-function allocates a buffer for the file name and returns a pointer to
-it.  If @var{resolved} is not @code{NULL}, it points to a buffer into
-which the result is copied.  It is the caller's responsibility to
-allocate a buffer that is large enough.  On systems that define
address@hidden, this means the buffer must be large enough for a
-pathname of this size.  For systems without limitations on the
-pathname length, the requirement cannot be met, and programs should
-not call @code{realpath} with anything but @code{NULL} for the second
-parameter.
-
-One other difference is that the buffer @var{resolved} (if nonzero)
-will contain the part of the path component that does not exist or is
-not readable if the function returns @code{NULL} and @code{errno} is
-set to @code{EACCES} or @code{ENOENT}.
-
-This function is declared in @file{stdlib.h}.
address@hidden deftypefun
-
-The advantage of using this function is that it is more widely
-available.  The drawback is that it reports failures for long path on
-systems that have no limits on the file-name length.
-
address@hidden Deleting Files
address@hidden Deleting Files
address@hidden deleting a file
address@hidden removing a file
address@hidden unlinking a file
-
-You can delete a file with @code{unlink} or @code{remove}.
-
-Deletion actually deletes a file name.  If this is the file's only name,
-then the file is deleted as well.  If the file has other remaining names
-(@pxref{Hard Links}), it remains accessible under those names.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int unlink (const char address@hidden)
-The @code{unlink} function deletes the file name @var{filename}.  If
-this is a file's sole name, the file itself is also deleted.  If any
-process has the file open when this happens, deletion is postponed
-until all processes have closed the file.
-
address@hidden unistd.h
-The function @code{unlink} is declared in the header file @file{unistd.h}.
-
-This function returns @code{0} on successful completion and @code{-1}
-on error.  In addition to the usual file-name errors, the following
address@hidden error conditions are defined for this
-function:@footnote{Ibid., ``File-Name Errors''.}
-
address@hidden @code
address@hidden EACCES
-Write permission is denied for the directory from which the file is to be
-removed, or the directory has the sticky bit set and you do not own the file.
-
address@hidden EBUSY
-This error indicates that the file is being used by the system in such a
-way that it can't be unlinked.  For example, you might see this error if
-the file name specifies the root directory or a mount point for a file
-system.
-
address@hidden ENOENT
-The file name to be deleted doesn't exist.
-
address@hidden EPERM
-On some systems, @code{unlink} cannot be used to delete the name of a
-directory, or at least can only be used this way by a privileged user.
-To avoid such problems, use @code{rmdir} to delete directories.  (In
-the @acronym{GNU} system @code{unlink} can never delete the name of a
-directory.)
-
address@hidden EROFS
-The directory containing the file name to be deleted is on a read-only
-file system and can't be modified.
address@hidden table
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int rmdir (const char address@hidden)
address@hidden directories, deleting
address@hidden deleting a directory
-The @code{rmdir} function deletes a directory.  The directory must be
-empty before it can be removed; in other words, it can only contain
-entries for @file{.} and @file{..}.
-
-In most other respects, @code{rmdir} behaves like @code{unlink}.  There
-are two additional @code{errno} error conditions defined for
address@hidden:
-
address@hidden @code
address@hidden ENOTEMPTY
address@hidden EEXIST
-The directory to be deleted is not empty.
address@hidden table
-
-These two error codes are synonymous; some systems use one, and some use
-the other.  The @acronym{GNU} system always uses @code{ENOTEMPTY}.
-
-The prototype for this function is declared in the header file
address@hidden
address@hidden unistd.h
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden int remove (const char address@hidden)
-This is the @sc{iso} C function to remove a file.  It works like
address@hidden for files and like @code{rmdir} for directories.
address@hidden is declared in @file{stdio.h}.
address@hidden stdio.h
address@hidden deftypefun
-
address@hidden Renaming Files
address@hidden Renaming Files
-
-The @code{rename} function is used to change a file's name.
-
address@hidden renaming a file
address@hidden stdio.h
address@hidden ISO
address@hidden int rename (const char address@hidden, const char address@hidden)
-The @code{rename} function renames the file @var{oldname} to
address@hidden  The file formerly accessible under the name
address@hidden is afterward accessible as @var{newname} instead.  If
-the file had any other names aside from @var{oldname}, it continues to
-have those names.
-
-The directory containing the name @var{newname} must be on the same file
-system as the directory containing the name @var{oldname}.
-
-One special case for @code{rename} is when @var{oldname} and
address@hidden are two names for the same file.  The consistent way to
-handle this case is to delete @var{oldname}.  However, in this case
address@hidden requires that @code{rename} do nothing and report success---which
-is inconsistent.  We don't know what your operating system will do.
-
-If @var{oldname} is not a directory, then any existing file named
address@hidden is removed during the renaming operation.  However, if
address@hidden is the name of a directory, @code{rename} fails in this
-case.
-
-If @var{oldname} is a directory, then either @var{newname} must not
-exist, or it must name a directory that is empty.  In the latter case,
-the existing directory named @var{newname} is deleted first.  The name
address@hidden must not specify a subdirectory of the directory
address@hidden that is being renamed.
-
-One useful feature of @code{rename} is that the meaning of @var{newname}
-changes ``atomically'' from any previously existing file by that name to
-its new meaning (i.e. the file that was called @var{oldname}).  There is
-no instant at which @var{newname} is nonexistent ``in between'' the old
-meaning and the new meaning.  If there is a system crash during the
-operation, it is possible for both names to still exist; but
address@hidden will always be intact if it exists at all.
-
-If @code{rename} fails, it returns @code{-1}.  In addition to the usual
-file-name errors, the address@hidden error conditions are defined for this 
function:@footnote{Ibid., ``File-Name Errors''.}
-
address@hidden @code
address@hidden EACCES
-One of the directories containing @var{newname} or @var{oldname}
-refuses write permission; or @var{newname} and @var{oldname} are
-directories and write permission is refused for one of them.
-
address@hidden EBUSY
-A directory named by @var{oldname} or @var{newname} is being used by
-the system in a way that prevents the renaming from working.  This includes
-directories that are mount points for file systems, and directories
-that are the current working directories of processes.
-
address@hidden ENOTEMPTY
address@hidden EEXIST
-The directory @var{newname} isn't empty.  The @acronym{GNU} system always 
returns
address@hidden for this, but some other systems return @code{EEXIST}.
-
address@hidden EINVAL
address@hidden is a directory that contains @var{newname}.
-
address@hidden EISDIR
address@hidden is a directory but the @var{oldname} isn't.
-
address@hidden EMLINK
-The parent directory of @var{newname} would have too many links
-(entries).
-
address@hidden ENOENT
-The file @var{oldname} doesn't exist.
-
address@hidden ENOSPC
-The directory that would contain @var{newname} has no room for another
-entry, and there is no space left in the file system to expand it.
-
address@hidden EROFS
-The operation would involve writing to a directory on a read-only file
-system.
-
address@hidden EXDEV
-The two file names @var{newname} and @var{oldname} are on different
-file systems.
address@hidden table
address@hidden deftypefun
-
address@hidden Creating Directories
address@hidden Creating Directories
address@hidden creating a directory
address@hidden directories, creating
-
address@hidden mkdir
-Directories are created with the @code{mkdir} function.  (There is
-also a shell command @code{mkdir} that does the same thing.)
address@hidden !!! umask
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden int mkdir (const char address@hidden, mode_t @var{mode})
-The @code{mkdir} function creates a new, empty directory with name
address@hidden
-
-The argument @var{mode} specifies the file permissions for the new
-directory file (@pxref{Permission Bits}).
-
-
-A return value of @code{0} indicates successful completion, and
address@hidden indicates failure.  In addition to the usual file-name syntax
-errors, the following @code{errno} error conditions are defined for this 
function:@footnote{Ibid., ``File-Name Errors''.}
-
address@hidden @code
address@hidden EACCES
-Write permission is denied for the parent directory in which the new
-directory is to be added.
-
address@hidden EEXIST
-A file named @var{filename} already exists.
-
address@hidden EMLINK
-The parent directory has too many links (entries).
-
-Well-designed file systems never report this error, because they permit
-more links than your disk could possibly hold.  However, you must still
-take account of the possibility of this error, as it could result from
-network access to a file system on another machine.
-
address@hidden ENOSPC
-The file system doesn't have enough room to create the new directory.
-
address@hidden EROFS
-The parent directory of the directory being created is on a read-only
-file system and cannot be modified.
address@hidden table
-
-To use this function, your program should include the header file
address@hidden/stat.h}.
address@hidden sys/stat.h
address@hidden deftypefun
-
address@hidden File Attributes
address@hidden File Attributes
-
address@hidden ls
-When you issue an @samp{ls -l} shell command on a file, it gives you
-information about the size of the file, who owns it, when it was last
-modified, etc.  These are called the @dfn{file attributes}, and are
-associated with the file itself and not a particular one of its names.
-
-This section contains information about how you can inquire about and
-modify the attributes of a file.
-
address@hidden Attribute Meanings
address@hidden The Meaning of the File Attributes
address@hidden status of a file
address@hidden attributes of a file
address@hidden file attributes
-
-When you read the attributes of a file, they come back in a structure
-called @code{struct stat}.  This section describes the names of the
-attributes, their data types, and what they mean.  For the functions
-to read the attributes of a file, see @ref{Reading Attributes}.
-
-The header file @file{sys/stat.h} declares all the symbols defined
-in this section.
address@hidden sys/stat.h
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden {Data Type} {struct stat}
-The @code{stat} structure type is used to return information about the
-attributes of a file.  It contains at least the following members:
-
address@hidden @code
address@hidden mode_t st_mode
-This specifies the mode of the file.  This includes file-type
-information (@pxref{Testing File-Type}) and the file permission bits
-(@pxref{Permission Bits}).
-
address@hidden ino_t st_ino
-This is the file serial number, which distinguishes this file from all
-other files on the same device.
-
address@hidden dev_t st_dev
-This identifies the device containing the file.  The @code{st_ino} and
address@hidden, taken together, uniquely identify the file.  The
address@hidden value is not necessarily consistent across reboots or
-system crashes, however.
-
address@hidden nlink_t st_nlink
-This is the number of hard links to the file.  This count keeps track
-of how many directories have entries for this file.  If the count is
-ever decremented to 0, then the file itself is discarded as soon as no
-process still holds it open.  Symbolic links are not counted in the
-total.
-
address@hidden uid_t st_uid
-This is the user @acronym{ID} of the file's owner (@pxref{File
-Owner}).
-
address@hidden gid_t st_gid
-This is the group @acronym{ID} of the file (@pxref{File Owner}).
-
address@hidden off_t st_size
-This specifies the size of a regular file in bytes.  For files that
-are really devices, this field isn't usually meaningful.  For symbolic
-links, this specifies the length of the file name the link refers to.
-
address@hidden time_t st_atime
-This is the last access-time for the file (@pxref{File Times}).
-
address@hidden unsigned long int st_atime_usec
-This is the fractional part of the last access-time for the file
-(@pxref{File Times}).
-
address@hidden time_t st_mtime
-This is the time of the last modification to the contents of the file
-(@pxref{File Times}).
-
address@hidden unsigned long int st_mtime_usec
-This is the fractional part of the time of the last modification to the
-contents of the file (@pxref{File Times}).
-
address@hidden time_t st_ctime
-This is the time of the last modification to the attributes of the file
-(@pxref{File Times}).
-
address@hidden unsigned long int st_ctime_usec
-This is the fractional part of the time of the last modification to the
-attributes of the file (@pxref{File Times}).
-
address@hidden !!! st_rdev
address@hidden blkcnt_t st_blocks
-This is the amount of disk space that the file occupies, measured in
-units of 512-byte blocks.
-
-The number of disk blocks is not strictly proportional to the size of
-the file, for two reasons: the file system may use some blocks for
-internal record keeping; and the file may be sparse---it may have
-``holes'' that contain zeros but do not actually take up space on the
-disk.
-
-You can tell (approximately) whether a file is sparse by comparing this
-value with @code{st_size}, like this:
-
address@hidden
-(st.st_blocks * 512 < st.st_size)
address@hidden smallexample
-
-This test is not perfect, because a file that is just slightly sparse
-might not be detected as sparse at all.  For practical applications,
-this is not a problem.
-
address@hidden unsigned int st_blksize
-The optimal block size for reading or writing this file, in bytes.
-You might use this size for allocating the buffer space for reading or
-writing the file.  (This is unrelated to @code{st_blocks}.)
address@hidden table
address@hidden deftp
-
-The extensions for the Large File Support (@acronym{LFS}) require,
-even on 32-bit machines, types that can handle file sizes up to
address@hidden  Therefore, a new definition of @code{struct stat} is
-necessary.
-
address@hidden sys/stat.h
address@hidden LFS
address@hidden {Data Type} {struct stat64}
-The members of this type are the same and have the same names as those
-in @code{struct stat}.  The only difference is that the members
address@hidden, @code{st_size} and @code{st_blocks} have a different
-type to support larger values.
-
address@hidden @code
address@hidden mode_t st_mode
-This specifies the mode of the file.  This includes file-type
-information (@pxref{Testing File-Type}) and the file permission bits
-(@pxref{Permission Bits}).
-
address@hidden ino64_t st_ino
-This is the file serial number, which distinguishes this file from all
-other files on the same device.
-
address@hidden dev_t st_dev
-This identifies the device containing the file.  The @code{st_ino} and
address@hidden, taken together, uniquely identify the file.  The
address@hidden value is not necessarily consistent across reboots or
-system crashes, however.
-
address@hidden nlink_t st_nlink
-This is the number of hard links to the file.  This count keeps track
-of how many directories have entries for this file.  If the count is
-ever decremented to 0, then the file itself is discarded as soon as no
-process still holds it open.  Symbolic links are not counted in the
-total.
-
address@hidden uid_t st_uid
-This is the user @acronym{ID} of the file's owner (@pxref{File Owner}).
-
address@hidden gid_t st_gid
-This is the group @acronym{ID} of the file (@pxref{File Owner}).
-
address@hidden off64_t st_size
-This specifies the size of a regular file in bytes.  For files that
-are really devices, this field isn't usually meaningful.  For symbolic
-links, this specifies the length of the file name the link refers to.
-
address@hidden time_t st_atime
-This is the last access-time for the file (@pxref{File Times}).
-
address@hidden unsigned long int st_atime_usec
-This is the fractional part of the last access-time for the file
-(@pxref{File Times}).
-
address@hidden time_t st_mtime
-This is the time of the last modification to the contents of the file
-(@pxref{File Times}).
-
address@hidden unsigned long int st_mtime_usec
-This is the fractional part of the time of the last modification to the
-contents of the file (@pxref{File Times}).
-
address@hidden time_t st_ctime
-This is the time of the last modification to the attributes of the file
-(@pxref{File Times}).
-
address@hidden unsigned long int st_ctime_usec
-This is the fractional part of the time of the last modification to the
-attributes of the file (@pxref{File Times}).
-
address@hidden !!! st_rdev
address@hidden blkcnt64_t st_blocks
-This is the amount of disk space that the file occupies, measured in
-units of 512-byte blocks.
-
address@hidden unsigned int st_blksize
-This is the optimal block size for reading or writing this file, in
-bytes.  You might use this size for allocating the buffer space for
-reading or writing the file.  It is unrelated to @code{st_blocks}.
address@hidden table
address@hidden deftp
-
-Some of the file attributes have special data-type names that exist
-specifically for those attributes.  They are all aliases for
-well-known integer types that you know and love.  These typedef names
-are defined in the header file @file{sys/types.h} as well as in
address@hidden/stat.h}.  Here is a list of them:
-
address@hidden sys/types.h
address@hidden POSIX.1
address@hidden {Data Type} mode_t
-This is an integer data type used to represent file modes.  In the
address@hidden system, this is equivalent to @code{unsigned int}.
address@hidden deftp
-
address@hidden inode number
address@hidden sys/types.h
address@hidden POSIX.1
address@hidden {Data Type} ino_t
-This is an arithmetic data type used to represent file serial numbers.
-In Unix jargon, these are sometimes called @dfn{inode numbers}.  In
-the @acronym{GNU} system, this type is equivalent to @code{unsigned
-long int}.
-
-If the source is compiled with @code{_FILE_OFFSET_BITS == 64}, this
-type is transparently replaced by @code{ino64_t}.
address@hidden deftp
-
address@hidden sys/types.h
address@hidden Unix98
address@hidden {Data Type} ino64_t
-This is an arithmetic data type used to represent file serial numbers
-for use in @acronym{LFS}.  In the @acronym{GNU} system, this type is
-equivalent to @code{unsigned long longint}.
-
-When compiling with @code{_FILE_OFFSET_BITS == 64}, this type is
-available under the name @code{ino_t}.
address@hidden deftp
-
address@hidden sys/types.h
address@hidden POSIX.1
address@hidden {Data Type} dev_t
-This is an arithmetic data type used to represent file device numbers.
-In the @acronym{GNU} system, this is equivalent to @code{int}.
address@hidden deftp
-
address@hidden sys/types.h
address@hidden POSIX.1
address@hidden {Data Type} nlink_t
-This is an arithmetic data type used to represent file link counts.
-In the @acronym{GNU} system, this is equivalent to @code{unsigned short int}.
address@hidden deftp
-
address@hidden sys/types.h
address@hidden Unix98
address@hidden {Data Type} blkcnt_t
-This is an arithmetic data type used to represent block counts.
-In the @acronym{GNU} system, this is equivalent to @code{unsigned long int}.
-
-If the source is compiled with @code{_FILE_OFFSET_BITS == 64}, this
-type is transparently replaced by @code{blkcnt64_t}.
address@hidden deftp
-
address@hidden sys/types.h
address@hidden Unix98
address@hidden {Data Type} blkcnt64_t
-This is an arithmetic data type used to represent block counts for use
-in @acronym{LFS}.  In the @acronym{GNU} system, this is equivalent to
address@hidden long long int}.
-
-When compiling with @code{_FILE_OFFSET_BITS == 64}, this type is
-available under the name @code{blkcnt_t}.
address@hidden deftp
-
address@hidden Reading Attributes
address@hidden Reading the Attributes of a File
-
-To examine the attributes of files, use the functions @code{stat},
address@hidden and @code{lstat}.  They return the attribute information in
-a @code{struct stat} object.  All three functions are declared in the
-header file @file{sys/stat.h}.
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden int stat (const char address@hidden, struct stat address@hidden)
-The @code{stat} function returns information about the attributes of the
-file named by @address@hidden in the structure pointed to by @var{buf}.
-
-If @var{filename} is the name of a symbolic link, the attributes you
-get describe the file that the link points to.  If the link points to
-a nonexistent file name, then @code{stat} fails, reporting a
-nonexistent file.
-
-The return value is @code{0} if the operation is successful or
address@hidden on failure.  In addition to the usual file-name errors, the
-following @code{errno} error condition is defined for this
-function:@footnote{Ibid., ``File-Name Errors''.}
-
address@hidden @code
address@hidden ENOENT
-The file named by @var{filename} doesn't exist.
address@hidden table
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is in fact @code{stat64}, since the @acronym{LFS}
-interface transparently replaces the normal implementation.
address@hidden deftypefun
-
address@hidden sys/stat.h
address@hidden Unix98
address@hidden int stat64 (const char address@hidden, struct stat64 
address@hidden)
-This function is similar to @code{stat} but it is also able to work on
-files larger then @math{2^31} bytes on 32-bit systems.  To be able to
-do this, the result is stored in a variable of type @code{struct
-stat64} to which @var{buf} must point.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is available under the name @code{stat} and so
-transparently replaces the interface for small files on 32-bit
-machines.
address@hidden deftypefun
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden int fstat (int @var{filedes}, struct stat address@hidden)
-The @code{fstat} function is like @code{stat}, except that it takes an
-open file-descriptor as an argument instead of a file name
-(@pxref{Low-Level I/O}).
-
-Like @code{stat}, @code{fstat} returns @code{0} on success and
address@hidden on failure.  The following @code{errno} error condition is
-defined for @code{fstat}:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
address@hidden table
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is in fact @code{fstat64}, since the @acronym{LFS}
-interface transparently replaces the normal implementation.
address@hidden deftypefun
-
address@hidden sys/stat.h
address@hidden Unix98
address@hidden int fstat64 (int @var{filedes}, struct stat64 address@hidden)
-This function is similar to @code{fstat} but is able to work on large
-files on 32-bit platforms.  For large files, the file descriptor
address@hidden should be obtained by @code{open64} or @code{creat64}.
-The @var{buf} pointer points to a variable of type @code{struct
-stat64} that is able to represent the larger values.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is available under the name @code{fstat} and so
-transparently replaces the interface for small files on 32-bit
-machines.
address@hidden deftypefun
-
address@hidden sys/stat.h
address@hidden BSD
address@hidden int lstat (const char address@hidden, struct stat address@hidden)
-The @code{lstat} function is like @code{stat}, except that it does not
-follow symbolic links.  If @var{filename} is the name of a symbolic
-link, @code{lstat} returns information about the link
-itself. Otherwise, @code{lstat} works like @code{stat}
-(@pxref{Symbolic Links}).
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is in fact @code{lstat64}, since the @acronym{LFS}
-interface transparently replaces the normal implementation.
address@hidden deftypefun
-
address@hidden sys/stat.h
address@hidden Unix98
address@hidden int lstat64 (const char address@hidden, struct stat64 
address@hidden)
-This function is similar to @code{lstat}, but it is also able to work
-on files larger then @math{2^31} bytes on 32-bit systems.  To be able
-to do this, the result is stored in a variable of type @code{struct
-stat64} to which @var{buf} must point.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64},
-this function is available under the name @code{lstat} and so
-transparently replaces the interface for small files on 32-bit
-machines.
address@hidden deftypefun
-
address@hidden Testing File-Type
address@hidden Testing the Type of a File
-
-The @dfn{file mode}, stored in the @code{st_mode} field of the file
-attributes, contains two kinds of information: the file-type code, and
-the access-permission bits.  This section discusses only the type
-code, which you can use to tell whether the file is a directory,
-socket, symbolic link, etc.  For details about access permissions, see
address@hidden Bits}.
-
-There are two ways you can access the file-type information in a file
-mode.  First, for each file type there is a @dfn{predicate macro} that
-examines a given file mode and returns whether it is of that type or
-not.  Second, you can mask out the rest of the file mode to leave just
-the file-type code, and compare this against constants for each of the
-supported file-types.
-
-All of the symbols listed in this section are defined in the header file
address@hidden/stat.h}.
address@hidden sys/stat.h
-
-The following predicate macros test the type of a file, given the
-value @var{m}, which is the @code{st_mode} field returned by
address@hidden on that file:
-
address@hidden sys/stat.h
address@hidden POSIX
address@hidden Macro int S_ISDIR (mode_t @var{m})
-This macro returns nonzero if the file is a directory.
address@hidden deftypefn
-
address@hidden sys/stat.h
address@hidden POSIX
address@hidden Macro int S_ISCHR (mode_t @var{m})
-This macro returns nonzero if the file is a character special file (a
-device like a terminal).
address@hidden deftypefn
-
address@hidden sys/stat.h
address@hidden POSIX
address@hidden Macro int S_ISBLK (mode_t @var{m})
-This macro returns nonzero if the file is a block special file (a device
-like a disk).
address@hidden deftypefn
-
address@hidden sys/stat.h
address@hidden POSIX
address@hidden Macro int S_ISREG (mode_t @var{m})
-This macro returns nonzero if the file is a regular file.
address@hidden deftypefn
-
address@hidden sys/stat.h
address@hidden POSIX
address@hidden Macro int S_ISFIFO (mode_t @var{m})
-This macro returns nonzero if the file is a @acronym{FIFO} special file, or a
-pipe (@pxref{Pipes and FIFOs}).
address@hidden deftypefn
-
address@hidden sys/stat.h
address@hidden GNU
address@hidden Macro int S_ISLNK (mode_t @var{m})
-This macro returns nonzero if the file is a symbolic link
-(@pxref{Symbolic Links}).
address@hidden deftypefn
-
address@hidden sys/stat.h
address@hidden GNU
address@hidden Macro int S_ISSOCK (mode_t @var{m})
-This macro returns nonzero if the file is a socket (@pxref{Sockets}).
address@hidden deftypefn
-
-An alternate address@hidden method of testing the file type is
-supported for compatibility with @acronym{BSD}.  The mode can be
-bit-wise @sc{and}ed with @code{S_IFMT} to extract the file-type code,
-and compared to the appropriate constant.  For example:
-
address@hidden
-S_ISCHR (@var{mode})
address@hidden smallexample
-
address@hidden
-is equivalent to:
-
address@hidden
-((@var{mode} & S_IFMT) == S_IFCHR)
address@hidden smallexample
-
address@hidden sys/stat.h
address@hidden BSD
address@hidden Macro int S_IFMT
-This is a bit mask used to extract the file-type code from a mode value.
address@hidden deftypevr
-
-These are the symbolic names for the different file-type codes:
-
address@hidden @code
address@hidden sys/stat.h
address@hidden BSD
address@hidden S_IFDIR
address@hidden S_IFDIR
-This is the file-type constant of a directory file.
-
address@hidden sys/stat.h
address@hidden BSD
address@hidden S_IFCHR
address@hidden S_IFCHR
-This is the file-type constant of a character-oriented device file.
-
address@hidden sys/stat.h
address@hidden BSD
address@hidden S_IFBLK
address@hidden S_IFBLK
-This is the file-type constant of a block-oriented device file.
-
address@hidden sys/stat.h
address@hidden BSD
address@hidden S_IFREG
address@hidden S_IFREG
-This is the file-type constant of a regular file.
-
address@hidden sys/stat.h
address@hidden BSD
address@hidden S_IFLNK
address@hidden S_IFLNK
-This is the file-type constant of a symbolic link.
-
address@hidden sys/stat.h
address@hidden BSD
address@hidden S_IFSOCK
address@hidden S_IFSOCK
-This is the file-type constant of a socket.
-
address@hidden sys/stat.h
address@hidden BSD
address@hidden S_IFIFO
address@hidden S_IFIFO
-This is the file-type constant of a @acronym{FIFO} or pipe.
address@hidden table
-
-The @acronym{POSIX}.1b standard introduced a few more objects that can
-possibly be implemented as objects in the file system.  These are
-message queues, semaphores and shared memory objects.  To allow
-differentiation of these objects from other files, the @acronym{POSIX}
-standard introduces three new test macros.  But unlike the other
-macros, they do not take the value of the @code{st_mode} field as the
-parameter.  Instead, they expect a pointer to the whole @code{struct
-stat} structure.
-
address@hidden sys/stat.h
address@hidden POSIX
address@hidden Macro int S_TYPEISMQ (struct stat address@hidden)
-If the system implements @acronym{POSIX} message queues as distinct
-objects and the file is a message-queue object, this macro returns a
-nonzero value.  In all other cases, the result is 0.
address@hidden deftypefn
-
address@hidden sys/stat.h
address@hidden POSIX
address@hidden Macro int S_TYPEISSEM (struct stat address@hidden)
-If the system implements @acronym{POSIX} semaphores as distinct
-objects and the file is a semaphore object, this macro returns a
-nonzero value.  In all other cases, the result is 0.
address@hidden deftypefn
-
address@hidden sys/stat.h
address@hidden POSIX
address@hidden Macro int S_TYPEISSHM (struct stat address@hidden)
-If the system implements @acronym{POSIX} shared memory objects as
-distinct objects and the file is an shared memory object, this macro
-returns a nonzero value.  In all other cases, the result is 0.
address@hidden deftypefn
-
address@hidden File Owner
address@hidden File Owner
address@hidden file owner
address@hidden owner of a file
address@hidden group owner of a file
-
-Every file has an @dfn{owner} that is one of the registered user names
-defined on the system.  Each file also has a @dfn{group} that is one
-of the defined groups.  The file owner can often be useful for showing
-you who edited the file (especially when you edit with @acronym{GNU}
-Emacs), but its main purpose is for access control.
-
-The file owner and group play a role in determining access because the
-file has one set of access-permission bits for the owner, another set
-that applies to users who belong to the file's group, and a third set
-that applies to everyone else.  @xref{Access Permission}, for the
-details of how access is decided based on this data.
-
-When a file is created, its owner is set to the effective address@hidden of the
-process that creates it (@pxref{Process Persona}).  The file's group 
@acronym{ID}
-may be set to either the effective address@hidden of the process, or the group
address@hidden of the directory that contains the file, depending on the system
-where the file is stored.  When you access a remote file system, it
-behaves according to its own rules, not according to the system your
-program is running on.  Thus, your program must be prepared to encounter
-either kind of behavior no matter what kind of system you run it on.
-
address@hidden chown
address@hidden chgrp
-You can change the owner and/or group owner of an existing file using
-the @code{chown} function.  This is the primitive for the @code{chown}
-and @code{chgrp} shell commands.
-
address@hidden unistd.h
-The prototype for this function is declared in @file{unistd.h}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int chown (const char address@hidden, uid_t @var{owner}, gid_t 
@var{group})
-The @code{chown} function changes the owner of the file @var{filename}
-to @var{owner} and its group owner to @var{group}.
-
-Changing the owner of the file on certain systems clears the
address@hidden and address@hidden permission bits.
-This is because those bits may not be appropriate for the new owner.
-Other file permission bits are not changed.
-
-The return value is @code{0} on success and @code{-1} on failure.  In
-addition to the usual file-name errors, the following @code{errno}
-error conditions are defined for this function:@footnote{Ibid.,
-``File-Name Errors''.}
-
address@hidden @code
address@hidden EPERM
-This process lacks permission to make the requested change.
-
-Only privileged users or the file's owner can change the file's group.
-On most file systems, only privileged users can change the file owner;
-some file systems allow you to change the owner if you are currently the
-owner.  When you access a remote file system, the behavior you encounter
-is determined by the system that actually holds the file, not by the
-system your program is running on.
-
address@hidden for Files}, for information about the
address@hidden macro.
-
address@hidden EROFS
-The file is on a read-only file system.
address@hidden table
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden BSD
address@hidden int fchown (int @var{filedes}, int @var{owner}, int @var{group})
-This is like @code{chown}, except that it changes the owner of the open
-file with descriptor @var{filedes}.
-
-The return value from @code{fchown} is @code{0} on success and @code{-1}
-on failure.  The following @code{errno} error codes are defined for this
-function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden EINVAL
-The @var{filedes} argument corresponds to a pipe or socket, not an ordinary
-file.
-
address@hidden EPERM
-This process lacks permission to make the requested change.  For
-details, see @code{chmod} above.
-
address@hidden EROFS
-The file resides on a read-only file system.
address@hidden table
address@hidden deftypefun
-
address@hidden Permission Bits
address@hidden The Mode Bits for Access Permission
-
-The @dfn{file mode}, stored in the @code{st_mode} field of the file
-attributes, contains two kinds of information: the file-type code, and
-the access-permission bits.  This section discusses only the
-access-permission bits, which control who can read or write the file.
address@hidden File-Type}, for information about the file-type code.
-
-All of the symbols listed in this section are defined in the header file
address@hidden/stat.h}.
address@hidden sys/stat.h
-
address@hidden file permission bits
-These symbolic constants are defined for the file mode bits that control
-access permission for the file:
-
address@hidden @code
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden S_IRUSR
address@hidden S_IRUSR
address@hidden sys/stat.h
address@hidden BSD
address@hidden S_IREAD
address@hidden S_IREAD
-This is the read permission bit for the owner of the file.  On many
-systems, this bit is 0400.  @code{S_IREAD} is an obsolete synonym
-provided for @acronym{BSD} compatibility.
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden S_IWUSR
address@hidden S_IWUSR
address@hidden sys/stat.h
address@hidden BSD
address@hidden S_IWRITE
address@hidden S_IWRITE
-This is the write permission bit for the owner of the file.  Usually,
-it is 0200.  @address@hidden is an obsolete synonym provided for
address@hidden compatibility.
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden S_IXUSR
address@hidden S_IXUSR
address@hidden sys/stat.h
address@hidden BSD
address@hidden S_IEXEC
address@hidden S_IEXEC
-This is the execute (for ordinary files) or search (for directories)
-permission bit for the owner of the file.  It is usually 0100.
address@hidden is an obsolete synonym provided for @acronym{BSD}
-compatibility.
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden S_IRWXU
address@hidden S_IRWXU
-This is equivalent to @samp{(S_IRUSR | S_IWUSR | S_IXUSR)}.
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden S_IRGRP
address@hidden S_IRGRP
-This is the read permission bit for the group owner of the file.
-Usually, it is 040.
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden S_IWGRP
address@hidden S_IWGRP
-This is the write permission bit for the group owner of the file.
-Usually, it is 020.
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden S_IXGRP
address@hidden S_IXGRP
-This is the execute or search permission bit for the group owner of
-the file.  Usually, it is 010.
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden S_IRWXG
address@hidden S_IRWXG
-This is equivalent to @samp{(S_IRGRP | S_IWGRP | S_IXGRP)}.
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden S_IROTH
address@hidden S_IROTH
-This is the read permission bit for other users.  Usually, it is 04.
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden S_IWOTH
address@hidden S_IWOTH
-This is the write permission bit for other users.  Usually, it is 02.
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden S_IXOTH
address@hidden S_IXOTH
-This is the execute or search permission bit for other users.
-Usually, it is 01.
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden S_IRWXO
address@hidden S_IRWXO
-This is equivalent to @samp{(S_IROTH | S_IWOTH | S_IXOTH)}.
-
address@hidden sys/stat.h
address@hidden POSIX
address@hidden S_ISUID
address@hidden S_ISUID
-This is the address@hidden bit. Usually, it is 04000
-(@pxref{How to Change Persona}).
-
address@hidden sys/stat.h
address@hidden POSIX
address@hidden S_ISGID
address@hidden S_ISGID
-This is the address@hidden bit Usually, it is 02000
-(@pxref{How to Change Persona}).
-
address@hidden sticky bit
address@hidden sys/stat.h
address@hidden BSD
address@hidden S_ISVTX
address@hidden S_ISVTX
-This is the @dfn{sticky} bit. Usually, it is 01000.
-
-For a directory, it gives permission to delete a file in that
-directory only if you own that file.  Ordinarily, a user can either
-delete all the files in a directory or cannot delete any of them
-(based on whether the user has write permission for the directory).
-The same restriction applies---you must have both write permission for
-the directory and own the file you want to delete.  The one exception
-is that the owner of the directory can delete any file in the
-directory, no matter who owns it (provided the owner has given himself
-write permission for the directory).  This is commonly used for the
address@hidden/tmp} directory, where anyone may create files but not delete
-files created by other users.
-
-Originally, the sticky bit on an executable file modified the swapping
-policies of the system.  Normally, when a program terminated, its
-pages in core were immediately freed and reused.  If the sticky bit
-was set on the executable file, the system kept the pages in core for
-a while as if the program were still running.  This was advantageous
-for a program likely to be run many times in succession.  This usage
-is obsolete in modern systems.  When a program terminates, its pages
-always remain in core as long as there is no shortage of memory in the
-system.  When the program is next run, its pages will still be in core
-if no shortage arose since the last run.
-
-On some modern systems where the sticky bit has no useful meaning for an
-executable file, you cannot set the bit at all for a nondirectory.
-If you try, @code{chmod} fails with @code{EFTYPE}
-(@pxref{Setting Permissions}).
-
-Some systems (particularly address@hidden) have yet another use for
-the sticky bit.  If the sticky bit is set on a file that is @emph{not}
-executable, it means the opposite---never cache the pages of this file
-at all.  The main use of this is for the files on an @acronym{NFS}
-server machine that are used as the swap area of diskless client
-machines.  The idea is that the pages of the file will be cached in
-the client's memory, so it is a waste of the server's memory to cache
-them a second time.  With this usage, the sticky bit also implies that
-the file system may fail to record the file's modification time onto
-disk reliably (the idea being that no one cares for a swap file).
-
-This bit is only available on @acronym{BSD} systems (and those derived
-from them).  Therefore, you have to use the @code{_BSD_SOURCE}
-feature-select macro to get the definition (@pxref{Feature-Test
-Macros}).
address@hidden table
-
-The actual bit values of the symbols are listed in the table above
-so you can decode file mode values when debugging your programs.
-These bit values are correct for most systems, but they are not
-guaranteed.
-
address@hidden:} Writing explicit numbers for file permissions is bad
-practice.  Not only is it not portable, it also requires everyone who
-reads your program to remember what the bits mean.  To make your program
-clean use the symbolic names.
-
address@hidden Access Permission
address@hidden How Your Access to a File is Decided
address@hidden permission to access a file
address@hidden access permission for a file
address@hidden file access-permission
-
-Recall that the operating system normally decides access permission for
-a file based on the effective user and group @acronym{ID}s of the process and 
its
-supplementary address@hidden, together with the file's owner, group and
-permission bits.  These concepts are discussed in detail in @ref{Process
-Persona}.
-
-If the effective address@hidden of the process matches the owner
address@hidden of the file, then permissions for read, write and
-execute/search are controlled by the corresponding ``user'' (or
-``owner'') bits.  Likewise, if any of the effective address@hidden
-or supplementary address@hidden of the process matches the group
-owner @acronym{ID} of the file, then permissions are controlled by the
-``group'' bits.  Otherwise, permissions are controlled by the
-``other'' bits.
-
-Privileged users, like @samp{root}, can access any file regardless of
-its permission bits.  As a special case, for a file to be executable
-even by a privileged user, at least one of its execute bits must be set.
-
address@hidden Setting Permissions
address@hidden Assigning File Permissions
-
address@hidden file-creation mask
address@hidden umask
-The primitive functions for creating files (for example, @code{open} or
address@hidden) take a @var{mode} argument, which specifies the file
-permissions to give the newly created file.  This mode is modified by
-the process's @dfn{file creation mask}, or @dfn{umask}, before it is
-used.
-
-The bits that are set in the file-creation mask identify permissions
-that are always to be disabled for newly created files.  For example,
-if you set all the ``other'' access bits in the mask, then newly
-created files are not accessible at all to processes in the ``other''
-category, even if the @var{mode} argument passed to the create
-function would permit such access.  In other words, the file-creation
-mask is the complement of the ordinary access-permissions you want to
-grant.
-
-Programs that create files typically specify a @var{mode} argument
-that includes all the permissions that make sense for the particular
-file.  For an ordinary file, this is typically read and write
-permission for all classes of users.  These permissions are then
-restricted as specified by the individual user's own file-creation
-mask.
-
address@hidden chmod
-To change the permission of an existing file given its name, call
address@hidden  This function uses the specified permission bits and
-ignores the file creation mask.
-
address@hidden umask
-In normal use, the file-creation mask is initialized by the user's
-login shell (using the @code{umask} shell command), and inherited by
-all subprocesses.  Application programs normally don't need to worry
-about the file-creation mask.  It will automatically do what it is
-supposed to do.
-
-When your program needs to create a file and bypass the umask for its
-access-permissions, the easiest way to do this is to use @code{fchmod}
-after opening the file, rather than changing the umask.  In fact,
-changing the umask is usually done only by shells.  They use the
address@hidden function.
-
-The functions in this section are declared in @file{sys/stat.h}.
address@hidden sys/stat.h
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden mode_t umask (mode_t @var{mask})
-The @code{umask} function sets the file-creation mask of the current
-process to @var{mask}, and returns the previous value of the
-file-creation mask.
-
-Here is an example showing how to read the mask with @code{umask}
-without changing it permanently:
-
address@hidden
-mode_t
-read_umask (void)
address@hidden
-  mode_t mask = umask (0);
-  umask (mask);
-  return mask;
address@hidden
address@hidden smallexample
-
address@hidden
-However, it is better to use @code{getumask} if you just want to read
-the mask value, because it is reentrant (at least if you use the @acronym{GNU}
-operating system).
address@hidden deftypefun
-
address@hidden sys/stat.h
address@hidden GNU
address@hidden mode_t getumask (void)
-Return the current value of the file-creation mask for the current
-process.  This function is a @acronym{GNU} extension.
address@hidden deftypefun
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden int chmod (const char address@hidden, mode_t @var{mode})
-The @code{chmod} function sets the access-permission bits for the file
-named by @var{filename} to @var{mode}.
-
-If @var{filename} is a symbolic link, @code{chmod} changes the
-permissions of the file pointed to by the link, not those of the link
-itself.
-
-This function returns @code{0} if successful and @code{-1} if not.  In
-addition to the usual file-name errors, the following @code{errno}
-error conditions are defined for this function:@footnote{Ibid.,
-``File-Name Errors''.}
-
address@hidden @code
address@hidden ENOENT
-The named file doesn't exist.
-
address@hidden EPERM
-This process does not have permission to change the access permissions
-of this file.  Only the file's owner (as judged by the effective user
address@hidden of the process) or a privileged user can change them.
-
address@hidden EROFS
-The file resides on a read-only file system.
-
address@hidden EFTYPE
address@hidden has the @code{S_ISVTX} bit (the @dfn{sticky bit}) set,
-and the named file is not a directory.  Some systems do not allow setting the
-sticky bit on nondirectory files, and some do (and only some of those
-assign a useful meaning to the bit for nondirectory files).
-
-You only get @code{EFTYPE} on systems where the sticky bit has no useful
-meaning for nondirectory files, so it is always safe to just clear the
-bit in @var{mode} and call @code{chmod} again.  @xref{Permission Bits},
-for full details on the sticky bit.
address@hidden table
address@hidden deftypefun
-
address@hidden sys/stat.h
address@hidden BSD
address@hidden int fchmod (int @var{filedes}, int @var{mode})
-This is like @code{chmod}, except that it changes the permissions of the
-currently open file given by @var{filedes}.
-
-The return value from @code{fchmod} is @code{0} on success and @code{-1}
-on failure.  The following @code{errno} error codes are defined for this
-function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden EINVAL
-The @var{filedes} argument corresponds to a pipe or socket, or something
-else that doesn't really have access permissions.
-
address@hidden EPERM
-This process does not have permission to change the access permissions
-of this file.  Only the file's owner (as judged by the effective address@hidden
-of the process) or a privileged user can change them.
-
address@hidden EROFS
-The file resides on a read-only file system.
address@hidden table
address@hidden deftypefun
-
address@hidden Testing File Access
address@hidden Testing Permission to Access a File
address@hidden testing access-permission
address@hidden access, testing for
address@hidden setuid programs and file access
-
-In some situations, it is desirable to allow programs to access files
-or devices even if this is not possible with the permissions granted
-to the user.  One possible solution is to set the setuid-bit of the
-program file.  If such a program is started, the @emph{effective} user
address@hidden of the process is changed to that of the owner of the
-program file.  So to allow write access to files like
address@hidden/etc/passwd}, which normally can be written only by the
-superuser, the modifying program will have to be owned by @code{root}
-and the setuid-bit set.
-
-But besides the files the program is intended to change, the user
-should not be allowed to access any file to which he would not have
-access anyway.  The program therefore must explicitly check whether
address@hidden user} would have the necessary access to a file, before it
-reads or writes the file.
-
-To do this, use the function @code{access}, which checks for access
-permission based on the process's @emph{real} address@hidden rather than the
-effective address@hidden  (The setuid feature does not alter the real 
address@hidden,
-so it reflects the user who actually ran the program.)
-
-There is another way you could check this access, which is easy to
-describe, but very hard to use.  This is to examine the file mode bits
-and mimic the system's own access computation.  This method is
-undesirable, because many systems have additional access-control
-features; your program cannot portably mimic them, and you would not
-want to try to keep track of the diverse features that different
-systems have.  Using @code{access} is simple and automatically does
-whatever is appropriate for the system you are using.
-
address@hidden is only appropriate to use in setuid programs.  A
-non-setuid program will always use the effective @acronym{ID} rather
-than the real @acronym{ID}.
-
address@hidden unistd.h
-The symbols in this section are declared in @file{unistd.h}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int access (const char address@hidden, int @var{how})
-The @code{access} function checks to see whether the file named by
address@hidden can be accessed in the way specified by the @var{how}
-argument.  The @var{how} argument either can be the bit-wise @sc{or}
-of the flags @code{R_OK}, @code{W_OK}, @code{X_OK} or the existence
-test @code{F_OK}.
-
-This function uses the @emph{real} user and address@hidden of the calling
-process, rather than the @emph{effective} @acronym{ID}s, to check for access
-permission.  As a result, if you use the function from a @code{setuid}
-or @code{setgid} program (@pxref{How to Change Persona}), it gives
-information relative to the user who actually ran the program.
-
-The return value is @code{0} if the access is permitted and @code{-1}
-otherwise.  (In other words, treated as a predicate function,
address@hidden returns true if the requested access is @emph{denied}.)
-
-In addition to the usual file-name errors, the following @code{errno}
-error conditions are defined for this function:@footnote{Ibid.,
-``File-Name Errors''.}
-
address@hidden @code
address@hidden EACCES
-The access specified by @var{how} is denied.
-
address@hidden ENOENT
-The file doesn't exist.
-
address@hidden EROFS
-Write permission was requested for a file on a read-only file system.
address@hidden table
address@hidden deftypefun
-
-These macros are defined in the header file @file{unistd.h} for use
-as the @var{how} argument to the @code{access} function.  The values
-are integer constants.
address@hidden unistd.h
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden Macro int R_OK
-This is a flag meaning test for read permission.
address@hidden deftypevr
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden Macro int W_OK
-This is a flag meaning test for write permission.
address@hidden deftypevr
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden Macro int X_OK
-This is a flag meaning test for execute/search permission.
address@hidden deftypevr
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden Macro int F_OK
-This is a flag meaning test for existence of the file.
address@hidden deftypevr
-
address@hidden File Times
address@hidden File Times
-
address@hidden file access-time
address@hidden file modification time
address@hidden file attribute modification time
-Each file has three time stamps associated with it: its access time,
-its modification time and its attribute-modification time.  These
-correspond to the @code{st_atime}, @code{st_mtime}, and
address@hidden members of the @code{stat} structure (@pxref{File
-Attributes}).
-
-All of these times are represented in calendar-time format, as
address@hidden objects.  This data type is defined in
address@hidden@footnote{Ibid., ``Calendar Time''.}
address@hidden time.h
-
-Reading from a file updates its access-time attribute, and writing
-updates its modification time.  When a file is created, all three time
-stamps for that file are set to the current time.  In addition, the
-attribute-change-time and modification-time fields of the directory
-that contains the new entry are updated.
-
-Adding a new name for a file with the @code{link} function updates the
-attribute-change-time field of the file being linked, and both the
-attribute-change-time and modification-time fields of the directory
-containing the new name.  These same fields are affected if a file
-name is deleted with @code{unlink}, @code{remove} or @code{rmdir}.
-Renaming a file with @code{rename} affects only the
-attribute-change-time and modification-time fields of the two parent
-directories involved, and not the times for the file being renamed.
-
-Changing the attributes of a file (for example, with @code{chmod})
-updates its attribute-change-time field.
-
-You can also change some of the time stamps of a file explicitly using
-the @code{utime} function---all except the attribute-change time.  You
-need to include the header file @file{utime.h} to use this facility.
address@hidden utime.h
-
address@hidden time.h
address@hidden POSIX.1
address@hidden {Data Type} {struct utimbuf}
-The @code{utimbuf} structure is used with the @code{utime} function to
-specify new access and modification times for a file.  It contains the
-following members:
-
address@hidden @code
address@hidden time_t actime
-This is the access time for the file.
-
address@hidden time_t modtime
-This is the modification time for the file.
address@hidden table
address@hidden deftp
-
address@hidden time.h
address@hidden POSIX.1
address@hidden int utime (const char address@hidden, const struct utimbuf 
address@hidden)
-This function is used to modify the file times associated with the file
-named @var{filename}.
-
-If @var{times} is a null pointer, then the access and modification times
-of the file are set to the current time.  Otherwise, they are set to the
-values from the @code{actime} and @code{modtime} members (respectively)
-of the @code{utimbuf} structure pointed to by @var{times}.
-
-The attribute-modification time for the file is set to the current time
-in either case (since changing the time stamps is itself a modification
-of the file attributes).
-
-The @code{utime} function returns @code{0} if successful and @code{-1}
-on failure.  In addition to the usual file-name errors, the following
address@hidden error conditions are defined for this
-function:@footnote{Ibid., ``File-Name Errors''.}
-
address@hidden @code
address@hidden EACCES
-There is a permission problem in the case where a null pointer was
-passed as the @var{times} argument.  In order to update the time stamp
-on the file, you must either be the owner of the file, have write
-permission for the file or be a privileged user.
-
address@hidden ENOENT
-The file doesn't exist.
-
address@hidden EPERM
-If the @var{times} argument is not a null pointer, you must either be
-the owner of the file or be a privileged user.
-
address@hidden EROFS
-The file lives on a read-only file system.
address@hidden table
address@hidden deftypefun
-
-Each of the three time stamps has a corresponding microsecond part,
-which extends its resolution.  These fields are called
address@hidden, @code{st_mtime_usec} and @code{st_ctime_usec};
-each has a value between 0 and 999,999, which indicates the time in
-microseconds.  They correspond to the @code{tv_usec} field of a
address@hidden address@hidden, ``High-Resolution Calendar''}
-
-The @code{utimes} function is like @code{utime}, but also lets you specify
-the fractional part of the file times.  The prototype for this function is
-in the header file @file{sys/time.h}.
address@hidden sys/time.h
-
address@hidden sys/time.h
address@hidden BSD
address@hidden int utimes (const char address@hidden, struct timeval 
@address@hidden)
-This function sets the file access and modification times of the file
address@hidden  The new file access-time is specified by
address@hidden@var{tvp}[0]} and the new modification time by
address@hidden@var{tvp}[1]}.  Similar to @code{utime}, if @var{tvp} is a null
-pointer, then the access and modification times of the file are set to
-the current time.  This function comes from @acronym{BSD}.
-
-The return values and error conditions are the same as for the @code{utime}
-function.
address@hidden deftypefun
-
address@hidden sys/time.h
address@hidden BSD
address@hidden int lutimes (const char address@hidden, struct timeval 
@address@hidden)
-This function is like @code{utimes}, except that it does not follow
-symbolic links.  If @var{filename} is the name of a symbolic link,
address@hidden sets the file access and modification times of the
-symbolic link special file itself, as seen by @code{lstat}
-(@pxref{Symbolic Links}), while @code{utimes} sets the file access and
-modification times of the file the symbolic link refers to.  This
-function comes from address@hidden and is not available on all
-platforms (if not available, it will fail with @code{ENOSYS}).
-
-The return values and error conditions are the same as for the @code{utime}
-function.
address@hidden deftypefun
-
address@hidden sys/time.h
address@hidden BSD
address@hidden int futimes (int address@hidden, struct timeval @address@hidden)
-This function is like @code{utimes}, except that it takes an open file
-descriptor as an argument instead of a file name (@pxref{Low-Level
-I/O}).  This function comes from address@hidden and is not
-available on all platforms (if not available, it will fail with
address@hidden).
-
-Like @code{utimes}, @code{futimes} returns @code{0} on success and @code{-1}
-on failure.  The following @code{errno} error conditions are defined for
address@hidden:
-
address@hidden @code
address@hidden EACCES
-There is a permission problem in the case where a null pointer was
-passed as the @var{times} argument.  In order to update the time stamp
-on the file, you must either be the owner of the file, have write
-permission for the file or be a privileged user.
-
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden EPERM
-If the @var{times} argument is not a null pointer, you must either be
-the owner of the file or be a privileged user.
-
address@hidden EROFS
-The file lives on a read-only file system.
address@hidden table
address@hidden deftypefun
-
address@hidden File Size
address@hidden File Size
-
-Normally, file sizes are maintained automatically.  A file begins with
-a size of @math{0} and is automatically extended when data is written
-past its end.  It is also possible to empty a file completely by an
address@hidden or @code{fopen} call.
-
-However, sometimes it is necessary to @emph{reduce} the size of a file.
-This can be done with the @code{truncate} and @code{ftruncate} functions.
-They were introduced in @acronym{BSD} Unix.  @code{ftruncate} was later added 
to
address@hidden
-
-Some systems allow you to extend a file (creating holes) with these
-functions.  This is useful when using memory-mapped I/O
-(@pxref{Memory-Mapped I/O}), where files are not automatically extended.
-However it is not portable, but must be implemented if @code{mmap}
-allows mapping of files (i.e., @code{_POSIX_MAPPED_FILES} is defined).
-
-Using these functions on anything other than a regular file gives
address@hidden results.  On many systems, such a call will appear to
-succeed, without actually accomplishing anything.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden int truncate (const char address@hidden, off_t @var{length})
-
-The @code{truncate} function changes the size of @var{filename} to
address@hidden  If @var{length} is shorter than the previous length, data
-at the end will be lost.  The file must be writable by the user to
-perform this operation.
-
-If @var{length} is longer, holes will be added to the end.  However, some
-systems do not support this feature and will leave the file unchanged.
-
-When the source file is compiled with @code{_FILE_OFFSET_BITS == 64},
-the @code{truncate} function is in fact @code{truncate64}, and the
-type @code{off_t} has 64 bits, which makes it possible to handle files
-up to @math{2^63} bytes in length.
-
-The return value is @math{0} for success and @math{-1} for an error.
-In addition to the usual file-name errors, the following errors may
-occur:
-
address@hidden @code
-
address@hidden EACCES
-The file is a directory or not writable.
-
address@hidden EINVAL
address@hidden is negative.
-
address@hidden EFBIG
-The operation would extend the file beyond the limits of the operating system.
-
address@hidden EIO
-A hardware I/O error occurred.
-
address@hidden EPERM
-The file is ``append-only'' or ``immutable''.
-
address@hidden EINTR
-The operation was interrupted by a signal.
-
address@hidden table
-
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden Unix98
address@hidden int truncate64 (const char address@hidden, off64_t @var{length})
-This function is similar to the @code{truncate} function.  The
-difference is that the @var{length} argument is 64 bits wide even on
-32-bit machines, which allows the handling of files with sizes up to
address@hidden bytes.
-
-When the source file is compiled with @code{_FILE_OFFSET_BITS == 64}
-on a 32-bit machine, this function is actually available under the
-name @code{truncate} and so transparently replaces the 32-bit
-interface.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX
address@hidden int ftruncate (int @var{fd}, off_t @var{length})
-
-This is like @code{truncate}, but it works on a file descriptor @var{fd}
-for an opened file instead of a file name to identify the object.  The
-file must be opened for writing to successfully carry out the operation.
-
-The @acronym{POSIX} standard leaves implementation defined what
-happens if the specified new @var{length} of the file is bigger than
-the original size.  The @code{ftruncate} function might simply leave
-the file alone and do nothing, or it can increase the size to the
-desired size.  In this later case, the extended area should be zero
-filled.  So using @code{ftruncate} is not a reliable way to increase
-the file size, but if it is possible, it is probably the fastest way.
-The function also operates on @acronym{POSIX} shared memory segments
-if these are implemented by the system.
-
address@hidden is especially useful in combination with @code{mmap}.
-Since the mapped region must have a fixed size, you cannot enlarge the
-file by writing something beyond the last mapped page.  Instead you have
-to enlarge the file itself and then remap the file with the new size.
-The example below shows how this works.
-
-When the source file is compiled with @code{_FILE_OFFSET_BITS == 64},
-the @code{ftruncate} function is in fact @code{ftruncate64}, and the
-type @code{off_t} has 64 bits, which makes it possible to handle files
-up to @math{2^63} bytes in length.
-
-The return value is @math{0} for success and @math{-1} for an error.
-The following errors may occur:
-
address@hidden @code
-
address@hidden EBADF
address@hidden does not correspond to an open file.
-
address@hidden EACCES
address@hidden is a directory or not open for writing.
-
address@hidden EINVAL
address@hidden is negative.
-
address@hidden EFBIG
-The operation would extend the file beyond the limits of the operating system.
address@hidden or the open() call -- with the not-yet-discussed feature of 
opening
address@hidden files with extralarge offsets.
-
address@hidden EIO
-A hardware I/O error occurred.
-
address@hidden EPERM
-The file is ``append-only'' or ``immutable''.
-
address@hidden EINTR
-The operation was interrupted by a signal.
-
address@hidden ENOENT is also possible on Linux --- however it only occurs if 
the file
address@hidden descriptor has a `file' structure but no `inode' structure.  I'm 
not
address@hidden sure how such an fd could be created.  Perhaps it's a bug.
-
address@hidden table
-
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden Unix98
address@hidden int ftruncate64 (int @var{id}, off64_t @var{length})
-This function is similar to the @code{ftruncate} function.  The
-difference is that the @var{length} argument is 64 bits wide even on
-32-bit machines, which allows the handling of files with sizes up to
address@hidden bytes.
-
-When the source file is compiled with @code{_FILE_OFFSET_BITS == 64}
-on a 32-bit machine, this function is actually available under the
-name @code{ftruncate} and so transparently replaces the 32-bit
-interface.
address@hidden deftypefun
-
-Here is a little example of how to use @code{ftruncate} in
-combination with @code{mmap}:
-
address@hidden
-int fd;
-void *start;
-size_t len;
-
-int
-add (off_t at, void *block, size_t size)
address@hidden
-  if (at + size > len)
-    @{
-      /* Resize the file and remap.  */
-      size_t ps = sysconf (_SC_PAGESIZE);
-      size_t ns = (at + size + ps - 1) & ~(ps - 1);
-      void *np;
-      if (ftruncate (fd, ns) < 0)
-        return -1;
-      np = mmap (NULL, ns, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
-      if (np == MAP_FAILED)
-        return -1;
-      start = np;
-      len = ns;
-    @}
-  memcpy ((char *) start + at, block, size);
-  return 0;
address@hidden
address@hidden smallexample
-
-The function @code{add} writes a block of memory at an arbitrary
-position in the file.  If the current size of the file is too small,
-it is extended.  It is extended by a round number of pages.  This is a
-requirement of @code{mmap}.  The program has to keep track of the real
-size, and when it has finished, a final @code{ftruncate} call should
-set the real size of the file.
-
address@hidden Making Special Files
address@hidden Making Special Files
address@hidden creating special files
address@hidden special files
-
-The @code{mknod} function is the primitive for making special files,
-such as files that correspond to devices.  The @acronym{GNU} library includes
-this function for compatibility with @acronym{BSD}.
-
-The prototype for @code{mknod} is declared in @file{sys/stat.h}.
address@hidden sys/stat.h
-
address@hidden sys/stat.h
address@hidden BSD
address@hidden int mknod (const char address@hidden, int @var{mode}, int 
@var{dev})
-The @code{mknod} function makes a special file with name
address@hidden  The @var{mode} specifies the mode of the file, and
-may include the various special-file bits, such as @code{S_IFCHR} (for
-a character special file) or @code{S_IFBLK} (for a block special file)
-(@pxref{Testing File-Type}).
-
-The @var{dev} argument specifies which device the special file refers to.
-Its exact interpretation depends on the kind of special file being created.
-
-The return value is @code{0} on success and @code{-1} on error.  In
-addition to the usual file-name errors, the following @code{errno}
-error conditions are defined for this function:@footnote{Ibid.,
-``File-Name Errors''.}
-
address@hidden @code
address@hidden EPERM
-The calling process is not privileged.  Only the superuser can create
-special files.
-
address@hidden ENOSPC
-The directory or file system that would contain the new file is full
-and cannot be extended.
-
address@hidden EROFS
-The directory containing the new file can't be modified because it's on
-a read-only file system.
-
address@hidden EEXIST
-There is already a file named @var{filename}.  If you want to replace
-this file, you must remove the old file explicitly first.
address@hidden table
address@hidden deftypefun
-
address@hidden Temporary Files
address@hidden Temporary Files
-
-If you need to use a temporary file in your program, you can use the
address@hidden function to open it.  Or you can use either the
address@hidden or @code{tmpnam_r} (better) function to provide a name
-for a temporary file, and then you can open it in the usual way with
address@hidden
-
-The @code{tempnam} function is like @code{tmpnam} but lets you choose
-what directory temporary files will go in, and something about what
-their file names will look like.  Important for multithreaded programs
-is that @code{tempnam} is reentrant, while @code{tmpnam} is not, since
-it returns a pointer to a static buffer.
-
-These facilities are declared in the header file @file{stdio.h}.
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden ISO
address@hidden {FILE *} tmpfile (void)
-This function creates a temporary binary file for update mode, as if
-by calling @code{fopen} with mode @samp{wb+}.  The file is deleted
-automatically when it is closed or when the program terminates.  On
-some other @acronym{ISO} C systems, the file may fail to be deleted if
-the program terminates abnormally.
-
-This function is reentrant.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit system, this function is in fact @code{tmpfile64}---the
address@hidden interface transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden Unix98
address@hidden {FILE *} tmpfile64 (void)
-This function is similar to @code{tmpfile}, but the stream it returns
-a pointer to was opened using @code{tmpfile64}.  Therefore, this
-stream can be used for files larger then @math{2^31} bytes on 32-bit
-machines.
-
-The return type is still @code{FILE *}.  There is no special
address@hidden type for the @acronym{LFS} interface.
-
-If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit machine, this function is available under the name
address@hidden and so transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden {char *} tmpnam (char address@hidden)
-This function constructs and returns a valid file name that does not
-refer to any existing file.  If the @var{result} argument is a null
-pointer, the return value is a pointer to an internal static string,
-which might be modified by subsequent calls and therefore makes this
-function nonreentrant.  Otherwise, the @var{result} argument should be
-a pointer to an array of at least @code{L_tmpnam} characters, and the
-result is written into that array.
-
-It is possible for @code{tmpnam} to fail if you call it too many times
-without removing previously created files.  This is because the limited
-length of the temporary file names gives room for only a finite number
-of different names.  If @code{tmpnam} fails it returns a null pointer.
-
address@hidden:} Between the time the pathname is constructed and the
-file is created, another process might have created a file with the
-same name using @code{tmpnam}, leading to a possible security hole.
-The implementation generates names which can hardly be predicted, but
-when opening the file, you should use the @code{O_EXCL} flag.  Using
address@hidden or @code{mkstemp} is a safe way to avoid this problem.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden GNU
address@hidden {char *} tmpnam_r (char address@hidden)
-This function is nearly identical to the @code{tmpnam} function,
-except that if @var{result} is a null pointer, it returns a null
-pointer.
-
-This guarantees reentrancy because the nonreentrant situation of
address@hidden cannot happen here.
-
address@hidden: This function has the same security problems as
address@hidden
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden ISO
address@hidden Macro int L_tmpnam
-The value of this macro is an integer constant expression that
-represents the minimum size of a string large enough to hold a file name
-generated by the @code{tmpnam} function.
address@hidden deftypevr
-
address@hidden stdio.h
address@hidden ISO
address@hidden Macro int TMP_MAX
-The macro @code{TMP_MAX} is a lower bound for how many temporary names
-you can create with @code{tmpnam}.  You can rely on being able to call
address@hidden at least this many times before it might fail saying you
-have made too many temporary file names.
-
-With the @acronym{GNU} library, you can create a very large number of temporary
-file names.  If you actually created the files, you would probably run
-out of disk space before you ran out of names.  Some other systems have
-a fixed, small limit on the number of temporary files.  The limit is
-never less than @code{25}.
address@hidden deftypevr
-
address@hidden stdio.h
address@hidden SVID
address@hidden {char *} tempnam (const char address@hidden, const char 
address@hidden)
-This function generates a unique temporary file name.  If @var{prefix}
-is not a null pointer, up to five characters of this string are used as
-a prefix for the file name.  The return value is a string newly
-allocated with @code{malloc}, so you should release its storage with
address@hidden when it is no longer needed.
-
-Because the string is dynamically allocated, this function is
-reentrant.
-
-The directory prefix for the temporary file name is determined by
-testing each of the following in sequence.  The directory must exist and
-be writable.
-
address@hidden @bullet
address@hidden
-The environment variable @code{TMPDIR}, if it is defined---for
-security reasons, this only happens if the program is not
address@hidden or @acronym{SGID} enabled
-
address@hidden
-The @var{dir} argument, if it is not a null pointer
-
address@hidden
-The value of the @code{P_tmpdir} macro
-
address@hidden
-The directory @file{/tmp}
address@hidden itemize
-
-This function is defined for @acronym{SVID} compatibility.
-
address@hidden:} Between the time the pathname is constructed and the
-file is created, another process might have created a file with the
-same name using @code{tempnam}, leading to a possible security hole.
-The implementation generates names that can hardly be predicted, but
-when opening the file you should use the @code{O_EXCL} flag.  Using
address@hidden or @code{mkstemp} is a safe way to avoid this problem.
address@hidden deftypefun
address@hidden TMPDIR environment variable
-
address@hidden stdio.h
address@hidden SVID
address@hidden !!! are we putting SVID/GNU/POSIX.1/BSD in here or not??
address@hidden {SVID Macro} {char *} P_tmpdir
-This macro is the name of the default directory for temporary files.
address@hidden deftypevr
-
-Older Unix systems did not have the functions just described.
-Instead, they used @code{mktemp} and @code{mkstemp}.  Both of these
-functions work by modifying a file-name template string you pass.  The
-last six characters of this string must be @samp{XXXXXX}.  These six
address@hidden are replaced with six characters that make the whole string
-a unique file-name.  Usually the template string is something like
address@hidden/tmp/@var{prefix}XXXXXX}, and each program uses a unique
address@hidden
-
-Because @code{mktemp} and @code{mkstemp} modify the template string,
-you @emph{must not} pass string constants to them.  String constants
-are normally in read-only storage, so your program would crash when
address@hidden or @code{mkstemp} tried to modify the string.  These
-functions are declared in the header file @file{stdlib.h}.
address@hidden stdlib.h
-
address@hidden stdlib.h
address@hidden Unix
address@hidden {char *} mktemp (char address@hidden)
-The @code{mktemp} function generates a unique file-name by modifying
address@hidden as described above.  If successful, it returns
address@hidden as modified.  If @code{mktemp} cannot find a unique file
-name, it makes @var{template} an empty string and returns that.  If
address@hidden does not end with @samp{XXXXXX}, @code{mktemp} returns a
-null pointer.
-
address@hidden:} Between the time the pathname is constructed and the
-file is created, another process might have created a file with the
-same name using @code{mktemp}, leading to a possible security hole.
-The implementation generates names that can hardly be predicted, but
-when opening the file you should use the @code{O_EXCL} flag.  Using
address@hidden is a safe way to avoid this problem.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden BSD
address@hidden int mkstemp (char address@hidden)
-The @code{mkstemp} function generates a unique file-name just as
address@hidden does, but it also opens the file for you with
address@hidden (@pxref{Opening and Closing Files}).  If successful, it
-modifies @var{template} in place and returns a file descriptor for
-that file open for reading and writing.  If @code{mkstemp} cannot
-create a uniquely named file, it returns @code{-1}.  If @var{template}
-does not end with @samp{XXXXXX}, @code{mkstemp} returns @code{-1} and
-does not modify @var{template}.
-
-The file is opened using mode @code{0600}.  If the file is meant to be
-used by other users, this mode must be changed explicitly.
address@hidden deftypefun
-
-Unlike @code{mktemp}, @code{mkstemp} is actually guaranteed to create a
-unique file that cannot possibly clash with any other program trying to
-create a temporary file.  This is because it works by calling
address@hidden with the @code{O_EXCL} flag, which says you want to create a
-new file and get an error if the file already exists.
-
address@hidden stdlib.h
address@hidden BSD
address@hidden {char *} mkdtemp (char address@hidden)
-The @code{mkdtemp} function creates a directory with a unique name.  If
-it succeeds, it overwrites @var{template} with the name of the
-directory, and returns @var{template}.  As with @code{mktemp} and
address@hidden, @var{template} should be a string ending with
address@hidden
-
-If @code{mkdtemp} cannot create an uniquely named directory, it returns
address@hidden and sets @var{errno} appropriately.  If @var{template} does
-not end with @samp{XXXXXX}, @code{mkdtemp} returns @code{NULL} and does
-not modify @var{template}.  @var{errno} will be set to @code{EINVAL} in
-this case.
-
-The directory is created using mode @code{0700}.
address@hidden deftypefun
-
-The directory created by @code{mkdtemp} cannot clash with temporary
-files or directories created by other users.  This is because
-directory creation always works like @code{open} with @code{O_EXCL}
-(@pxref{Creating Directories}).
-
-The @code{mkdtemp} function comes from address@hidden
-
address@hidden Pipes and FIFOs
address@hidden %MENU% A simple interprocess communication mechanism
address@hidden Pipes and @acronym{FIFO}s
-
address@hidden pipe
-A @dfn{pipe} is a mechanism for interprocess communication; data
-written to the pipe by one process can be read by another process.
-The data is handled in a first-in, first-out (@acronym{FIFO}) order.
-The pipe has no name; it is created for one use, and both ends must be
-inherited from the single process that created the pipe.
-
address@hidden FIFO special file
-A @dfn{FIFO special file} is similar to a pipe, but instead of being an
-anonymous, temporary connection, a @acronym{FIFO} has a name or names like any
-other file.  Processes open the @acronym{FIFO} by name in order to communicate
-through it.
-
-A pipe or @acronym{FIFO} has to be open at both ends simultaneously.  If you 
read
-from a pipe or @acronym{FIFO} file that doesn't have any processes writing to 
it
-(perhaps because they have all closed the file, or exited), the read
-returns end-of-file.  Writing to a pipe or @acronym{FIFO} that doesn't have a
-reading process is treated as an error condition; it generates a
address@hidden signal, and fails with error code @code{EPIPE} if the
-signal is handled or blocked.
-
-Neither pipes nor @acronym{FIFO} special files allow file positioning.  Both
-reading and writing operations happen sequentially; reading from the
-beginning of the file and writing at the end.
-
address@hidden Creating a Pipe
address@hidden Creating a Pipe
address@hidden creating a pipe
address@hidden opening a pipe
address@hidden interprocess communication, with pipes
-
-The primitive for creating a pipe is the @code{pipe} function.  This
-creates both the reading and writing ends of the pipe.  It is not very
-useful for a single process to use a pipe to talk to itself.  In
-typical use, a process creates a pipe just before it forks one or more
-child processes (@pxref{Creating a Process}).  The pipe is then used
-for communication either between the parent or child processes or
-between two sibling processes.
-
-The @code{pipe} function is declared in the header file
address@hidden
address@hidden unistd.h
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int pipe (int @address@hidden)
-The @code{pipe} function creates a pipe and puts the file descriptors
-for the reading and writing ends of the pipe, respectively, into
address@hidden@var{filedes}[0]} and @address@hidden
-
-
-An easy way to remember that the input end comes first is that file
-descriptor @code{0} is standard input, and file descriptor @code{1} is
-standard output.
-
-If successful, @code{pipe} returns a value of @code{0}.  On failure,
address@hidden is returned.  The following @code{errno} error conditions are
-defined for this function:
-
address@hidden @code
address@hidden EMFILE
-The process has too many files open.
-
address@hidden ENFILE
-There are too many open files in the entire address@hidden more
-information about @code{ENFILE}, see Loosemore et al., ``Error Codes''
-(see chap. 1, n. 1).}  This error never occurs in the @acronym{GNU}
-system.
address@hidden table
address@hidden deftypefun
-
-Here is an example of a simple program that creates a pipe.  This program
-uses the @code{fork} function to create
-a child process (@pxref{Creating a Process}).  The parent process writes data 
to the pipe, which is
-read by the child process.
-
address@hidden
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-/* @r{Read characters from the pipe and echo them to @code{stdout}.} */
-
-void
-read_from_pipe (int file)
address@hidden
-  FILE *stream;
-  int c;
-  stream = fdopen (file, "r");
-  while ((c = fgetc (stream)) != EOF)
-    putchar (c);
-  fclose (stream);
address@hidden
-
-/* @r{Write some random text to the pipe.} */
-
-void
-write_to_pipe (int file)
address@hidden
-  FILE *stream;
-  stream = fdopen (file, "w");
-  fprintf (stream, "hello, world!\n");
-  fprintf (stream, "goodbye, world!\n");
-  fclose (stream);
address@hidden
-
-int
-main (void)
address@hidden
-  pid_t pid;
-  int mypipe[2];
-
-
-  /* @r{Create the pipe.} */
-  if (pipe (mypipe))
-    @{
-      fprintf (stderr, "Pipe failed.\n");
-      return EXIT_FAILURE;
-    @}
-
-
-  /* @r{Create the child process.} */
-  pid = fork ();
-  if (pid == (pid_t) 0)
-    @{
-      /* @r{This is the child process.
-         Close other end first.} */
-      close (mypipe[1]);
-      read_from_pipe (mypipe[0]);
-      return EXIT_SUCCESS;
-    @}
-  else if (pid < (pid_t) 0)
-    @{
-      /* @r{The fork failed.} */
-      fprintf (stderr, "Fork failed.\n");
-      return EXIT_FAILURE;
-    @}
-  else
-    @{
-      /* @r{This is the parent process.
-         Close other end first.} */
-      close (mypipe[0]);
-      write_to_pipe (mypipe[1]);
-      return EXIT_SUCCESS;
-    @}
address@hidden
-
address@hidden smallexample
-
address@hidden Pipe to a Subprocess
address@hidden Pipe to a Subprocess
address@hidden creating a pipe to a subprocess
address@hidden pipe to a subprocess
address@hidden filtering i/o through subprocess
-
-A common use of pipes is to send data to or receive data from a
-program being run as a subprocess.  One way of doing this is by using
-a combination of @code{pipe} (to create the pipe), @code{fork} (to
-create the subprocess), @code{dup2} (to force the subprocess to use
-the pipe as its standard input or output channel) and @code{exec} (to
-execute the new program).  Or, you can use @code{popen} and
address@hidden
-
-The advantage of using @code{popen} and @code{pclose} is that the
-interface is much simpler and easier to use.  But it doesn't offer as
-much flexibility as using the low-level functions directly.
-
address@hidden stdio.h
address@hidden POSIX.2, SVID, BSD
address@hidden {FILE *} popen (const char address@hidden, const char 
address@hidden)
-The @code{popen} function is closely related to the @code{system}
-function (@pxref{Running a Command}).  It executes the shell command
address@hidden as a subprocess.  However, instead of waiting for the
-command to complete, it creates a pipe to the subprocess and returns a
-stream that corresponds to that pipe.
-
-If you specify a @var{mode} argument of @samp{r}, you can read from the
-stream to retrieve data from the standard output channel of the subprocess.
-The subprocess inherits its standard input channel from the parent process.
-
-Similarly, if you specify a @var{mode} argument of @samp{w}, you can
-write to the stream to send data to the standard input channel of the
-subprocess.  The subprocess inherits its standard output channel from
-the parent process.
-
-In the event of an error, @code{popen} returns a null pointer.  This
-might happen if the pipe or stream cannot be created, if the
-subprocess cannot be forked or if the program cannot be executed.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden POSIX.2, SVID, BSD
address@hidden int pclose (FILE address@hidden)
-The @code{pclose} function is used to close a stream created by @code{popen}.
-It waits for the child process to terminate and returns its status value,
-as for the @code{system} function.
address@hidden deftypefun
-
-Here is an example showing how to use @code{popen} and @code{pclose} to
-filter output through another program, in this case the paging program
address@hidden
-
address@hidden
-#include <stdio.h>
-#include <stdlib.h>
-
-void
-write_data (FILE * stream)
address@hidden
-  int i;
-  for (i = 0; i < 100; i++)
-    fprintf (stream, "%d\n", i);
-  if (ferror (stream))
-    @{
-      fprintf (stderr, "Output to stream failed.\n");
-      exit (EXIT_FAILURE);
-    @}
address@hidden
-
-
-int
-main (void)
address@hidden
-  FILE *output;
-
-  output = popen ("more", "w");
-  if (!output)
-    @{
-      fprintf (stderr,
-               "incorrect parameters or too many files.\n");
-      return EXIT_FAILURE;
-    @}
-  write_data (output);
-  if (pclose (output) != 0)
-    @{
-      fprintf (stderr,
-               "Could not run more or other error.\n");
-    @}
-  return EXIT_SUCCESS;
address@hidden
-
-
address@hidden smallexample
-
address@hidden FIFO Special Files
address@hidden @acronym{FIFO} Special Files
address@hidden creating a @acronym{FIFO} special file
address@hidden interprocess communication, with @acronym{FIFO}
-
-A @acronym{FIFO} special file is similar to a pipe, except that it is created 
in a
-different way.  Instead of being an anonymous communications channel, a
address@hidden special file is entered into the file system by calling
address@hidden
-
-Once you have created a @acronym{FIFO} special file in this way, any process 
can
-open it for reading or writing, in the same way as an ordinary file.
-However, it has to be open at both ends simultaneously before you can
-proceed to do any input or output operations on it.  Opening a @acronym{FIFO} 
for
-reading normally blocks until some other process opens the same @acronym{FIFO} 
for
-writing, and vice versa.
-
-The @code{mkfifo} function is declared in the header file
address@hidden/stat.h}.
address@hidden sys/stat.h
-
address@hidden sys/stat.h
address@hidden POSIX.1
address@hidden int mkfifo (const char address@hidden, mode_t @var{mode})
-The @code{mkfifo} function makes a @acronym{FIFO} special file with name
address@hidden  The @var{mode} argument is used to set the file's
-permissions (@pxref{Setting Permissions}).
-
-The normal, successful return value from @code{mkfifo} is @code{0}.
-In the case of an error, @code{-1} is returned.  In addition to the
-usual file-name errors, the following @code{errno} error conditions
-are defined for this function:@footnote{Ibid., ``File-Name Errors''.}
-
address@hidden @code
address@hidden EEXIST
-The named file already exists.
-
address@hidden ENOSPC
-The directory or file system cannot be extended.
-
address@hidden EROFS
-The directory that would contain the file resides on a read-only file
-system.
address@hidden table
address@hidden deftypefun
-
address@hidden Pipe Atomicity
address@hidden Atomicity of Pipe I/O
-
-Reading or writing pipe data is @dfn{atomic} if the size of data
-written is not greater than @code{PIPE_BUF}.  This means that the data
-transfer seems to be an instantaneous unit, in that nothing else in
-the system can observe a state in which it is partially complete.
-Atomic I/O may not begin right away (it may need to wait for buffer
-space or for data), but once it does begin, it finishes immediately.
-
-Reading or writing a larger amount of data may not be atomic; for
-example, output data from other processes sharing the descriptor may be
-interspersed.  Also, once @code{PIPE_BUF} characters have been written,
-further writes will block until some characters are read.
-
address@hidden for Files}, for information about the @code{PIPE_BUF}
-parameter.
-
address@hidden Sockets, Low-Level Terminal Interface, Pipes and 
@acronym{FIFO}s, Top
address@hidden %MENU% A more complicated IPC mechanism, with networking support
address@hidden Sockets
-
-This chapter describes the @acronym{GNU} facilities for interprocess
-communication using sockets.
-
address@hidden socket
address@hidden interprocess communication, with sockets
-A @dfn{socket} is a generalized interprocess communication channel.
-Like a pipe, a socket is represented as a file descriptor.  Unlike
-pipes, sockets support communication between unrelated processes, and
-even between processes running on different machines that communicate
-over a network.  Sockets are the primary means of communicating with
-other machines; @code{telnet}, @code{rlogin}, @code{ftp}, @code{talk}
-and the other familiar network programs use sockets.
-
-Not all operating systems support sockets.  In the @acronym{GNU}
-library, the header file @file{sys/socket.h} exists regardless of the
-operating system, and the socket functions always exist, but if the
-system does not really support sockets, these functions always fail.
-
-We do not currently document the facilities for broadcast messages or
-for configuring Internet interfaces.  The reentrant functions and some
-newer functions that are related to IPv6 aren't yet documented either.
-
address@hidden Socket Concepts
address@hidden Socket Concepts
-
address@hidden communication style (of a socket)
address@hidden style of communication (of a socket)
-When you create a socket, you must specify the style of communication
-you want to use and the type of protocol that should implement it.
-The @dfn{communication style} of a socket defines the user-level
-semantics of sending and receiving data on the socket.  Choosing a
-communication style specifies the answers to questions such as these:
-
address@hidden @bullet
address@hidden
address@hidden packet
address@hidden byte stream
address@hidden stream (sockets)
address@hidden are the units of data transmission?}  Some communication
-styles regard the data as a sequence of bytes with no larger
-structure; others group the bytes into records (which are known in
-this context as @dfn{packets}).
-
address@hidden
address@hidden loss of data on sockets
address@hidden data loss on sockets
address@hidden data be lost during normal operation?}  Some communication
-styles guarantee that all the data sent arrives in the order it was
-sent (barring system or network crashes); other styles occasionally
-lose data as a normal part of operation, and may sometimes deliver
-packets more than once or in the wrong order.
-
-Designing a program to use unreliable communication styles usually
-involves taking precautions to detect lost or misordered packets and
-to retransmit data as needed.
-
address@hidden
address@hidden communication entirely with one partner?}  Some
-communication styles are like a telephone call---you make a
address@hidden with one remote socket and then exchange data
-freely.  Other styles are like mailing letters---you specify a
-destination address for each message you send.
address@hidden itemize
-
address@hidden namespace (of socket)
address@hidden domain (of socket)
address@hidden socket namespace
address@hidden socket domain
-You must also choose a @dfn{namespace} for naming the socket.  A socket
-name (``address'') is meaningful only in the context of a particular
-namespace.  In fact, even the data type to use for a socket name may
-depend on the namespace.  Namespaces are also called ``domains'', but we
-avoid that word as it can be confused with other usage of the same
-term.  Each namespace has a symbolic name that starts with @samp{PF_}.
-A corresponding symbolic name starting with @samp{AF_} designates the
-address format for that namespace.
-
address@hidden network protocol
address@hidden protocol (of socket)
address@hidden socket protocol
address@hidden protocol family
-Finally, you must choose the @dfn{protocol} to carry out the
-communication.  The protocol determines what low-level mechanism is
-used to transmit and receive data.  Each protocol is valid for a
-particular namespace and communication style; a namespace is sometimes
-called a @dfn{protocol family} because of this, which is why the
-namespace names start with @samp{PF_}.
-
-The rules of a protocol apply to the data passing between two programs,
-perhaps on different computers; most of these rules are handled by the
-operating system and you need not know about them.  What you do need to
-know about protocols is this:
-
address@hidden @bullet
address@hidden
-In order to have communication between two sockets, they must specify
-the @emph{same} protocol.
-
address@hidden
-Each protocol is meaningful with particular style/namespace
-combinations and cannot be used with inappropriate combinations.  For
-example, the @acronym{TCP} protocol fits only the byte-stream style of
-communication and the Internet namespace.
-
address@hidden
-For each combination of style and namespace, there is a @dfn{default
-protocol}, which you can request by specifying 0 as the protocol
-number.  And that's what you should normally do---use the default.
address@hidden itemize
-
-Throughout the following description, at various places
-variables/parameters to denote sizes are required.  And here the
-trouble starts.  In the first implementations, the type of these
-variables was simply @code{int}.  On most machines at that time, an
address@hidden was 32 bits wide, which created a @emph{de facto} standard
-requiring 32-bit variables.  This is important, since references to
-variables of this type are passed to the kernel.
-
-Then the @acronym{POSIX} people came and unified the interface with
-the words "all size values are of type @code{size_t}".  On 64-bit
-machines, @code{size_t} is 64 bits wide, so pointers to variables were
-no longer possible.
-
-The Unix98 specification provides a solution by introducing a type
address@hidden  This type is used in all of the cases that
address@hidden changed to use @code{size_t}.  The only requirement of
-this type is that it be an unsigned type of at least 32 bits.
-Therefore, implementations that require that references to 32-bit
-variables be passed can be as happy as implementations that use 64-bit
-values.
-
-
address@hidden Communication Styles
address@hidden Communication Styles
-
-The @acronym{GNU} library includes support for several different kinds of 
sockets,
-each with different characteristics.  This section describes the
-supported socket types.  The symbolic constants listed here are
-defined in @file{sys/socket.h}.
address@hidden sys/socket.h
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden Macro int SOCK_STREAM
-The @code{SOCK_STREAM} style is like a pipe (@pxref{Pipes and FIFOs}).
-It operates over a connection with a particular remote socket and
-transmits data reliably as a stream of bytes.
-
-Use of this style is covered in detail in @ref{Connections}.
address@hidden deftypevr
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden Macro int SOCK_DGRAM
-The @code{SOCK_DGRAM} style is used for sending individually addressed
-packets unreliably.  It is the diametrical opposite of
address@hidden
-
-Each time you write data to a socket of this kind, that data becomes
-one packet.  Since @code{SOCK_DGRAM} sockets do not have connections,
-you must specify the recipient address with each packet.
-
-The only guarantee that the system makes about your requests to
-transmit data is that it will try its best to deliver each packet you
-send.  It may succeed with the sixth packet after failing with the
-fourth and fifth packets; the seventh packet may arrive before the
-sixth, and may arrive a second time after the sixth.
-
-The typical use for @code{SOCK_DGRAM} is in situations where it is
-acceptable to simply resend a packet if no response is seen in a
-reasonable amount of time.
-
address@hidden, for detailed information about how to use datagram
-sockets.
address@hidden deftypevr
-
address@hidden
address@hidden This appears to be only for the NS domain, which we aren't
address@hidden discussing and probably won't support either.
address@hidden sys/socket.h
address@hidden BSD
address@hidden Macro int SOCK_SEQPACKET
-This style is like @code{SOCK_STREAM} except that the data are
-structured into packets.
-
-A program that receives data over a @code{SOCK_SEQPACKET} socket
-should be prepared to read the entire message packet in a single call
-to @code{read}; if it only reads part of the message, the remainder of
-the message is simply discarded instead of being available for
-subsequent calls to @code{read}.
-
-Many protocols do not support this communication style.
address@hidden deftypevr
address@hidden ignore
-
address@hidden
address@hidden sys/socket.h
address@hidden BSD
address@hidden Macro int SOCK_RDM
-This style is a reliable version of @code{SOCK_DGRAM}: it sends
-individually addressed packets, but guarantees that each packet sent
-arrives exactly once.
-
address@hidden:} It is not clear this is actually supported
-by any operating system.
address@hidden deftypevr
address@hidden ignore
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden Macro int SOCK_RAW
-This style provides access to low-level network protocols and
-interfaces.  Ordinary user programs usually have no need to use this
-style.
address@hidden deftypevr
-
address@hidden Socket Addresses
address@hidden Socket Addresses
-
address@hidden address of socket
address@hidden name of socket
address@hidden binding a socket address
address@hidden socket address (name) binding
-The name of a socket is normally called an @dfn{address}.  The
-functions and symbols for dealing with socket addresses were named
-inconsistently, sometimes using the term ``name'' and sometimes using
-``address''.  You can regard these terms as synonymous where sockets
-are concerned.
-
-A socket newly created with the @code{socket} function has no
-address.  Other processes can find it for communication only if you
-give it an address.  We call this @dfn{binding} the address to the
-socket, and the way to do it is with the @code{bind} function.
-
-You need be concerned with the address of a socket if other processes
-are to find it and start communicating with it.  You can specify an
-address for other sockets, but this is usually pointless; the first time
-you send data from a socket, or use it to initiate a connection, the
-system assigns an address automatically if you have not specified one.
-
-Occasionally a client needs to specify an address because the server
-discriminates based on address; for example, the rsh and rlogin
-protocols look at the client's socket address and only bypass password
-checking if it is less than @code{IPPORT_RESERVED} (@pxref{Ports}).
-
-The details of socket addresses vary depending on what namespace you
-are using (@pxref{Local Namespace}, or @ref{Internet Namespace}).
-
-Regardless of the namespace, you use the same functions @code{bind} and
address@hidden to set and examine a socket's address.  These
-functions use a phony data type, @code{struct sockaddr *}, to accept the
-address.  In practice, the address lives in a structure of some other
-data type appropriate to the address format you are using, but you cast
-its address to @code{struct sockaddr *} when you pass it to
address@hidden
-
address@hidden Address Formats
address@hidden Address Formats
-
-The functions @code{bind} and @code{getsockname} use the generic data
-type @code{struct sockaddr *} to represent a pointer to a socket
-address.  You can't use this data type effectively to interpret an
-address or construct one; for that, you must use the proper data type
-for the socket's namespace.
-
-Thus, the usual practice is to construct an address of the proper
-namespace-specific type, then cast a pointer to @code{struct sockaddr *}
-when you call @code{bind} or @code{getsockname}.
-
-The one piece of information that you can get from the @code{struct
-sockaddr} data type is the @dfn{address format designator}.  This tells
-you which data type to use to understand the address fully.
-
address@hidden sys/socket.h
-The symbols in this section are defined in the header file
address@hidden/socket.h}.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden {Data Type} {struct sockaddr}
-The @code{struct sockaddr} type itself has the following members:
-
address@hidden @code
address@hidden short int sa_family
-This is the code for the address format of this address.  It
-identifies the format of the data that follows.
-
address@hidden char sa_data[14]
-This is the actual socket address data, which is format dependent.
-Its length also depends on the format, and may well be more than 14.
-The length 14 of @code{sa_data} is essentially arbitrary.
address@hidden table
address@hidden deftp
-
-Each address format has a symbolic name that starts with @samp{AF_}.
-Each of them corresponds to a @samp{PF_} symbol that designates the
-corresponding namespace.  Here is a list of address format names:
-
address@hidden @code
address@hidden sys/socket.h
address@hidden POSIX
address@hidden AF_LOCAL
address@hidden AF_LOCAL
-This designates the address format that goes with the local namespace.
-(@code{PF_LOCAL} is the name of that namespace.)  @xref{Local Namespace
-Details}, for information about this address format.
-
address@hidden sys/socket.h
address@hidden BSD, Unix98
address@hidden AF_UNIX
address@hidden AF_UNIX
-This is a synonym for @code{AF_LOCAL}.  Although @code{AF_LOCAL} is
-mandated by @acronym{POSIX}.1g, @code{AF_UNIX} is portable to more
-systems.  @code{AF_UNIX} was the traditional name stemming from
address@hidden, so even most @acronym{POSIX} systems support it.  It is
-also the name of choice in the Unix98 specification. The same is true
-for @code{PF_UNIX} vs. @code{PF_LOCAL}.
-
address@hidden sys/socket.h
address@hidden GNU
address@hidden AF_FILE
address@hidden AF_FILE
-This is another synonym for @code{AF_LOCAL}, for compatibility.
address@hidden is likewise a synonym for @code{PF_LOCAL}.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden AF_INET
address@hidden AF_INET
-This designates the address format that goes with the Internet
-namespace (@pxref{Internet Address Formats}).  @code{PF_INET} is the
-name of that namespace.
-
address@hidden sys/socket.h
address@hidden IPv6 Basic API
address@hidden AF_INET6
-This is similar to @code{AF_INET}, but refers to the IPv6 protocol.
address@hidden is the name of the corresponding namespace.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden AF_UNSPEC
address@hidden AF_UNSPEC
-This designates no particular address format.  It is used only in rare
-cases, such as to clear out the default destination address of a
-``connected'' datagram socket (@pxref{Sending Datagrams}).
-
-The corresponding namespace designator symbol @code{PF_UNSPEC} exists
-for completeness, but there is no reason to use it in a program.
address@hidden table
-
address@hidden/socket.h} defines symbols starting with @samp{AF_} for many
-different kinds of networks, most or all of which are not actually
-implemented.  We will document those that really work as we receive
-information about how to use them.
-
address@hidden Setting Address
address@hidden Setting the Address of a Socket
-
address@hidden sys/socket.h
-Use the @code{bind} function to assign an address to a socket.  The
-prototype for @code{bind} is in the header file @file{sys/socket.h}.
-For examples of use, see @ref{Local Socket Example}, or @ref{Inet Example}.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int bind (int @var{socket}, struct sockaddr address@hidden, 
socklen_t @var{length})
-The @code{bind} function assigns an address to the socket
address@hidden  The @var{addr} and @var{length} arguments specify the
-address; the detailed format of the address depends on the namespace.
-The first part of the address is always the format designator, which
-specifies a namespace and says that the address is in the format of
-that namespace.
-
-The return value is @code{0} on success and @code{-1} on failure.  The
-following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{socket} argument is not a valid file-descriptor.
-
address@hidden ENOTSOCK
-The descriptor @var{socket} is not a socket.
-
address@hidden EADDRNOTAVAIL
-The specified address is not available on this machine.
-
address@hidden EADDRINUSE
-Some other socket is already using the specified address.
-
address@hidden EINVAL
-The socket @var{socket} already has an address.
-
address@hidden EACCES
-You do not have permission to access the requested address.  In the
-Internet domain, only the superuser is allowed to specify a port
-number in the range 0 through @code{IPPORT_RESERVED} minus 1
-(@pxref{Ports}).
address@hidden table
-
-Additional conditions may be possible depending on the particular namespace
-of the socket.
address@hidden deftypefun
-
address@hidden Reading Address
address@hidden Reading the Address of a Socket
-
address@hidden sys/socket.h
-Use the function @code{getsockname} to examine the address of an
-Internet socket.  The prototype for this function is in the header file
address@hidden/socket.h}.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int getsockname (int @var{socket}, struct sockaddr 
address@hidden, socklen_t address@hidden)
-The @code{getsockname} function returns information about the address
-of the socket @var{socket} in the locations specified by the
address@hidden and @var{length-ptr} arguments.  The @var{length-ptr} is a
-pointer; you should initialize it to be the allocation size of
address@hidden, and on return it contains the actual size of the address
-data.
-
-The format of the address data depends on the socket namespace.  The
-length of the information is usually fixed for a given namespace, so
-normally you can know exactly how much space is needed and can provide
-that much.  The usual practice is to allocate a place for the value
-using the proper data type for the socket's namespace, then cast its
-address to @code{struct sockaddr *} to pass it to @code{getsockname}.
-
-The return value is @code{0} on success and @code{-1} on error.  The
-following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{socket} argument is not a valid file-descriptor.
-
address@hidden ENOTSOCK
-The descriptor @var{socket} is not a socket.
-
address@hidden ENOBUFS
-There are not enough internal buffers available for the operation.
address@hidden table
address@hidden deftypefun
-
-You can't read the address of a socket in the file namespace.  This is
-consistent with the rest of the system; in general, there's no way to
-find a file's name from a descriptor for that file.
-
address@hidden Interface Naming
address@hidden Interface Naming
-
-Each network interface has a name.  This usually consists of a few
-letters that relate to the type of interface, which may be followed by a
-number if there is more than one interface of that type.  Examples
-might be @code{lo} (the loopback interface) and @code{eth0} (the first
-Ethernet interface).
-
-Although such names are convenient for humans, it would be clumsy to
-have to use them whenever a program needs to refer to an interface.  In
-such situations an interface is referred to by its @dfn{index}, which is
-an arbitrarily-assigned small positive integer.
-
-The following functions, constants and data types are declared in the
-header file @file{net/if.h}.
-
address@hidden net/if.h
address@hidden Constant size_t IFNAMSIZ
-This constant defines the maximum buffer size needed to hold an
-interface name, including its terminating zero byte.
address@hidden deftypevr
-
address@hidden net/if.h
address@hidden IPv6 basic API
address@hidden {unsigned int} if_nametoindex (const char *ifname)
-This function yields the interface index corresponding to a particular
-name.  If no interface exists with the name given, it returns 0.
address@hidden deftypefun
-
address@hidden net/if.h
address@hidden IPv6 basic API
address@hidden {char *} if_indextoname (unsigned int ifindex, char *ifname)
-This function maps an interface index to its corresponding name.  The
-returned name is placed in the buffer pointed to by @code{ifname}, which
-must be at least @code{IFNAMSIZ} bytes in length.  If the index was
-invalid, the function's return value is a null pointer, otherwise it is
address@hidden
address@hidden deftypefun
-
address@hidden net/if.h
address@hidden IPv6 basic API
address@hidden {Data Type} {struct if_nameindex}
-This data type is used to hold the information about a single
-interface.  It has the following members:
-
address@hidden @code
address@hidden unsigned int if_index;
-This is the interface index.
-
address@hidden char *if_name
-This is the null-terminated index name.
-
address@hidden table
address@hidden deftp
-
address@hidden net/if.h
address@hidden IPv6 basic API
address@hidden {struct if_nameindex *} if_nameindex (void)
-This function returns an array of @code{if_nameindex} structures, one
-for every interface that is present.  The end of the list is indicated
-by a structure with an interface of 0 and a null name pointer.  If an
-error occurs, this function returns a null pointer.
-
-The returned structure must be freed with @code{if_freenameindex} after
-use.
address@hidden deftypefun
-
address@hidden net/if.h
address@hidden IPv6 basic API
address@hidden void if_freenameindex (struct if_nameindex *ptr)
-This function frees the structure returned by an earlier call to
address@hidden
address@hidden deftypefun
-
address@hidden Local Namespace
address@hidden The Local Namespace
address@hidden local namespace, for sockets
-
-This section describes the details of the local namespace, whose
-symbolic name (required when you create a socket) is @code{PF_LOCAL}.
-The local namespace is also known as ``Unix domain sockets''.  Another
-name is file namespace since socket addresses are normally implemented
-as file names.
-
address@hidden Local-Namespace Concepts
address@hidden Local-Namespace Concepts
-
-In the local namespace, socket addresses are file names.  You can
-specify any file name you want as the address of the socket, but you
-must have write permission on the directory containing it.
address@hidden XXX The following was said to be wrong.
address@hidden In order to connect to a socket you must have read permission 
for it.
-It's common to put these files in the @file{/tmp} directory.
-
-One peculiarity of the local namespace is that the name is only used
-when opening the connection; once open the address is not meaningful and
-may not exist.
-
-Another peculiarity is that you cannot connect to such a socket from
-another machine---not even if the other machine shares the file system
-that contains the name of the socket.  You can see the socket in a
-directory listing, but connecting to it never succeeds.  Some programs
-take advantage of this, such as by asking the client to send its own
-process @acronym{ID}, and using the process @acronym{ID}s to
-distinguish between clients.  However, we recommend you not use this
-method in protocols you design, as we might someday permit connections
-from other machines that mount the same file systems.  Instead, send
-each new client an identifying number if you want it to have one.
-
-After you close a socket in the local namespace, you should delete the
-file name from the file system.  Use @code{unlink} or @code{remove} to
-do this (@pxref{Deleting Files}).
-
-The local namespace supports just one protocol for any communication
-style; it is protocol number @code{0}.
-
address@hidden Local Namespace Details
address@hidden Details of Local Namespace
-
address@hidden sys/socket.h
-To create a socket in the local namespace, use the constant
address@hidden as the @var{namespace} argument to @code{socket} or
address@hidden  This constant is defined in @file{sys/socket.h}.
-
address@hidden sys/socket.h
address@hidden POSIX
address@hidden Macro int PF_LOCAL
-This designates the local namespace, in which socket addresses are local
-names, and its associated family of protocols.  @code{PF_Local} is the
-macro used by Posix.1g.
address@hidden deftypevr
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden Macro int PF_UNIX
-This is a synonym for @code{PF_LOCAL}, for compatibility's sake.
address@hidden deftypevr
-
address@hidden sys/socket.h
address@hidden GNU
address@hidden Macro int PF_FILE
-This is a synonym for @code{PF_LOCAL}, for compatibility's sake.
address@hidden deftypevr
-
-The structure for specifying socket names in the local namespace is
-defined in the header file @file{sys/un.h}:
address@hidden sys/un.h
-
address@hidden sys/un.h
address@hidden BSD
address@hidden {Data Type} {struct sockaddr_un}
-This structure is used to specify local namespace socket addresses.  It has
-the following members:
-
address@hidden @code
address@hidden short int sun_family
-This identifies the address family or format of the socket address.
-You should store the value @code{AF_LOCAL} to designate the local
-namespace (@pxref{Socket Addresses}).
-
address@hidden char sun_path[108]
-This is the file name to use.
-
address@hidden table
address@hidden deftp
-
-You should compute the @var{length} parameter for a socket address in
-the local namespace as the sum of the size of the @code{sun_family}
-component and the string length (@emph{not} the allocation size!) of
-the file-name string.  This can be done using the macro @code{SUN_LEN}:
-
address@hidden sys/un.h
address@hidden BSD
address@hidden {Macro} int SUN_LEN (@emph{struct sockaddr_un *} @var{ptr})
-The macro computes the length of socket address in the local namespace.
address@hidden deftypefn
-
address@hidden Local Socket Example
address@hidden Example of Local-Namespace Sockets
-
-Here is an example showing how to create and name a socket in the local
-namespace.
-
address@hidden
-#include <stddef.h>
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-int
-make_named_socket (const char *filename)
address@hidden
-  struct sockaddr_un name;
-  int sock;
-  size_t size;
-
-  /* @r{Create the socket.} */
-  sock = socket (PF_LOCAL, SOCK_DGRAM, 0);
-  if (sock < 0)
-    @{
-      perror ("socket");
-      exit (EXIT_FAILURE);
-    @}
-
-  /* @r{Bind a name to the socket.} */
-  name.sun_family = AF_LOCAL;
-  strncpy (name.sun_path, filename, sizeof (name.sun_path));
-  name.sun_path[sizeof (name.sun_path) - 1] = '\0';
-
-  /* @r{The size of the address is
-     the offset of the start of the file name,
-     plus its length,
-     plus 1 for the terminating null byte.
-     Alternatively you can just do:
-     size = SUN_LEN (&name);
-} */
-  size = (offsetof (struct sockaddr_un, sun_path)
-          + strlen (name.sun_path) + 1);
-
-  if (bind (sock, (struct sockaddr *) &name, size) < 0)
-    @{
-      perror ("bind");
-      exit (EXIT_FAILURE);
-    @}
-
-  return sock;
address@hidden
-
address@hidden smallexample
-
address@hidden Internet Namespace
address@hidden The Internet Namespace
address@hidden Internet namespace, for sockets
-
-This section describes the details of the protocols and socket naming
-conventions used in the Internet namespace.
-
-Originally, the Internet namespace used only @acronym{IP} version 4
-(IPv4).  With the growing number of hosts on the Internet, a new
-protocol with a larger address space was necessary: @acronym{IP}
-version 6 (IPv6).  IPv6 introduces 128-bit addresses (IPv4 has 32-bit
-addresses) and other features, and will eventually replace IPv4.
-
-To create a socket in the IPv4 Internet namespace, use the symbolic
-name @code{PF_INET} of this namespace as the @var{namespace} argument
-to @code{socket} or @code{socketpair}.  For IPv6 addresses, you need
-the macro @code{PF_INET6}. These macros are defined in
address@hidden/socket.h}.
address@hidden sys/socket.h
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden Macro int PF_INET
-This designates the IPv4 Internet namespace and associated family of
-protocols.
address@hidden deftypevr
-
address@hidden sys/socket.h
address@hidden X/Open
address@hidden Macro int PF_INET6
-This designates the IPv6 Internet namespace and associated family of
-protocols.
address@hidden deftypevr
-
-A socket address for the Internet namespace includes the following components:
-
address@hidden @bullet
address@hidden
-The address of the machine you want to connect to; Internet addresses
-can be specified in several ways---these are discussed in
address@hidden Address Formats}; @ref{Host Addresses} and @ref{Host
-Names}.
-
address@hidden
-A port number for that machine (@pxref{Ports})
address@hidden itemize
-
-You must ensure that the address and port number are represented in a
-canonical format called @dfn{network byte order} (@pxref{Byte Order}).
-
-
address@hidden Internet Address Formats
address@hidden Internet Socket Address Formats
-
-In the Internet namespace, for both IPv4 (@code{AF_INET}) and IPv6
-(@code{AF_INET6}), a socket address consists of a host address and a
-port on that host.  In addition, the protocol you choose effectively
-serves as a part of the address because local port numbers are
-meaningful only within a particular protocol.
-
-The data types for representing socket addresses in the Internet namespace
-are defined in the header file @file{netinet/in.h}.
address@hidden netinet/in.h
-
address@hidden netinet/in.h
address@hidden BSD
address@hidden {Data Type} {struct sockaddr_in}
-This is the data type used to represent socket addresses in the
-Internet namespace.  It has the following members:
-
address@hidden @code
address@hidden sa_family_t sin_family
-This identifies the address family or format of the socket address.
-You should store the value @code{AF_INET} in this member
-(@pxref{Socket Addresses}).
-
address@hidden struct in_addr sin_addr
-This is the Internet address of the host machine.  @xref{Host
-Addresses}, and @ref{Host Names}, for how to get a value to store
-here.
-
address@hidden unsigned short int sin_port
-This is the port number (@pxref{Ports}).
address@hidden table
address@hidden deftp
-
-When you call @code{bind} or @code{getsockname}, you should specify
address@hidden (struct sockaddr_in)} as the @var{length} parameter if
-you are using an IPv4 Internet namespace socket address.
-
address@hidden {Data Type} {struct sockaddr_in6}
-This is the data type used to represent socket addresses in the IPv6
-namespace.  It has the following members:
-
address@hidden @code
address@hidden sa_family_t sin6_family
-This identifies the address family or format of the socket address.
-You should store the value of @code{AF_INET6} in this member
-(@pxref{Socket Addresses}).
-
address@hidden struct in6_addr sin6_addr
-This is the IPv6 address of the host machine.  @xref{Host
-Addresses}, and @ref{Host Names}, for how to get a value to store
-here.
-
address@hidden uint32_t sin6_flowinfo
-This is a currently unimplemented field.
-
address@hidden uint16_t sin6_port
-This is the port number (@pxref{Ports}).
-
address@hidden table
address@hidden deftp
-
address@hidden Host Addresses
address@hidden Host Addresses
-
-Each computer on the Internet has one or more @dfn{Internet addresses},
-numbers which identify that computer among all those on the Internet.
-Users typically write IPv4 numeric host-addresses as sequences of four
-numbers, separated by periods, as in @samp{128.52.46.32}, and IPv6
-numeric host-addresses as sequences of up to eight numbers separated by
-colons, as in @samp{5f03:1200:836f:c100::1}.
-
-Each computer also has one or more @dfn{host names}, which are strings
-of words separated by periods, as in @samp{mescaline.gnu.org}.
-
-Programs that let the user specify a host typically accept both
-numeric addresses and host names.  To open a connection, a program
-needs a numeric address, and so must convert a host name to the
-numeric address it stands for.
-
address@hidden Abstract Host Addresses
address@hidden Internet Host-Addresses
address@hidden host-address, Internet
address@hidden Internet host-address
-
address@hidden
-Each computer on the Internet has one or more Internet addresses,
-numbers which identify that computer among all those on the Internet.
address@hidden ifinfo
-
address@hidden network number
address@hidden local network address number
-An IPv4 Internet host-address is a number containing 4 bytes of data.
-Historically, these are divided into two parts, a @dfn{network number}
-and a @dfn{local network address number} within that network.  In the
-mid-1990s, classless addresses were introduced that changed this
-behavior.  Since some functions implicitly expect the old definitions,
-we first describe the class-based network and will then describe
-classless addresses.  IPv6 uses only classless addresses and therefore
-the following paragraphs don't apply to it. 
-
-The class-based IPv4 network number consists of the first 1, 2 or
-3 bytes; the rest of the bytes are the local address.
-
-IPv4 network numbers are registered with the Network Information Center
-(@acronym{NIC}), and are divided into three classes---A, B and C.  The local
-network address numbers of individual machines are registered with the
-administrator of the particular network.
-
-Class A networks have single-byte numbers in the range 0 to 127.
-There are only a small number of Class A networks, but they can each
-support a very large number of hosts.  Medium-sized Class B networks
-have 2-byte network numbers, with the first byte in the range 128 to
-191.  Class C networks are the smallest; they have 3-byte network
-numbers, with the first byte in the range 192-255.  Thus, the first 1,
-2 or 3 bytes of an Internet address specify a network.  The remaining
-bytes of the Internet address specify the address within that network.
-
-The Class A network 0 is reserved for broadcast to all networks.  In
-addition, the host number 0 within each network is reserved for
-broadcast to all hosts in that network.  These uses are obsolete now
-but for compatibility reasons, you shouldn't use network 0 and host
-number 0.
-
-The Class A network 127 is reserved for loopback; you can always use
-the Internet address @samp{127.0.0.1} to refer to the host machine.
-
-Since a single machine can be a member of multiple networks, it can
-have multiple Internet host-addresses.  However, there is never
-supposed to be more than one machine with the same host address.
-
address@hidden !!! this section could document the IN_CLASS* macros in 
<netinet/in.h>.
address@hidden No, it shouldn't since they're obsolete.
-
address@hidden standard dot notation, for Internet addresses
address@hidden dot notation, for Internet addresses
-There are four forms of the @dfn{standard numbers-and-dots notation}
-for Internet addresses:
-
address@hidden @code
address@hidden @address@hidden@address@hidden
-This specifies all 4 bytes of the address individually and is the
-commonly used representation.
-
address@hidden @address@hidden@var{c}
-The last part of the address, @var{c}, is interpreted as a 2-byte quantity.
-This is useful for specifying host addresses in a Class B network with
-network address number @address@hidden@var{b}}.
-
address@hidden @address@hidden
-The last part of the address, @var{b}, is interpreted as a 3-byte quantity.
-This is useful for specifying host addresses in a Class A network with
-network address number @var{a}.
-
address@hidden @var{a}
-If only one part is given, this corresponds directly to the host-address
-number.
address@hidden table
-
-Within each part of the address, the usual C conventions for
-specifying the radix apply.  In other words, a leading @samp{0x} or
address@hidden implies hexadecimal radix; a leading @samp{0} implies octal;
-otherwise, decimal radix is assumed.
-
address@hidden Classless Addresses
-
-IPv4 addresses (and IPv6 addresses also) are now considered classless;
-the distinction between classes A, B and C can be ignored.  Instead,
-an IPv4 host-address consists of a 32-bit address and a 32-bit mask.
-The mask contains set bits for the network part and cleared bits for
-the host part.  The network part is contiguous from the left, with the
-remaining bits representing the host.  As a consequence, the netmask
-can simply be specified as the number of set bits.  Classes A, B and C
-are just special cases of this general rule.  For example, class A
-addresses have a netmask of @samp{255.0.0.0} or a prefix length of 8.
-
-Classless IPv4 network addresses are written in numbers-and-dots
-notation with the prefix length appended and a slash as separator.  For
-example the class A network 10 is written as @samp{10.0.0.0/8}.
-
address@hidden IPv6 Addresses
-
-IPv6 addresses contain 128 bits (IPv4 has 32 bits) of data.  A host
-address is usually written as eight 16-bit hexadecimal numbers that are
-separated by colons.  Two colons are used to abbreviate strings of
-consecutive zeros.  For example, the IPv6 loopback address
address@hidden:0:0:0:0:0:0:1} can just be written as @samp{::1}.
-
address@hidden Host Address Data Type
address@hidden Host-Address Data Type
-
-IPv4 Internet host-addresses are represented in some contexts as integers
-(type @code{uint32_t}).  In other contexts, the integer is
-packaged inside a structure of type @code{struct in_addr}.  It would
-be better if the usage were made consistent, but it is not hard to extract
-the integer from the structure or put the integer into a structure.
-
-You will find older code that uses @code{unsigned long int} for IPv4
-Internet host-addresses instead of @code{uint32_t} or @code{struct
-in_addr}.  Historically, @code{unsigned long int} was a 32-bit number,
-but with 64-bit machines this has changed.  Using @code{unsigned long
-int} might break the code if it is used on machines where this type
-doesn't have 32 bits.  @code{uint32_t} is specified by Unix98 and
-guaranteed to have 32 bits.
-
-IPv6 Internet host-addresses have 128 bits and are packaged inside a
-structure of type @code{struct in6_addr}.
-
-The following basic definitions for Internet addresses are declared in
-the header file @file{netinet/in.h}:
address@hidden netinet/in.h
-
address@hidden netinet/in.h
address@hidden BSD
address@hidden {Data Type} {struct in_addr}
-This data type is used in certain contexts to contain an IPv4 Internet
-host-address.  It has just one field, named @code{s_addr}, which records
-the host-address number as an @code{uint32_t}.
address@hidden deftp
-
address@hidden netinet/in.h
address@hidden BSD
address@hidden Macro {uint32_t} INADDR_LOOPBACK
-You can use this constant to stand for ``the address of this machine,''
-instead of finding its actual address.  It is the IPv4 Internet address
address@hidden, which is usually called @samp{localhost}.  This
-special constant saves you the trouble of looking up the address of your
-own machine.  Also, the system usually implements @code{INADDR_LOOPBACK}
-specially, avoiding any network traffic for the case of one machine
-talking to itself.
address@hidden deftypevr
-
address@hidden netinet/in.h
address@hidden BSD
address@hidden Macro {uint32_t} INADDR_ANY
-You can use this constant to stand for ``any incoming address'' when
-binding to an address (@pxref{Setting Address}).  This is the usual
-address to give in the @code{sin_addr} member of @address@hidden
-sockaddr_in}} when you want to accept Internet connections.
address@hidden deftypevr
-
address@hidden netinet/in.h
address@hidden BSD
address@hidden Macro {uint32_t} INADDR_BROADCAST
-This constant is the address you use to send a broadcast message.
address@hidden !!! broadcast needs further documented
address@hidden deftypevr
-
address@hidden netinet/in.h
address@hidden BSD
address@hidden Macro {uint32_t} INADDR_NONE
-This constant is returned by some functions to indicate an error.
address@hidden deftypevr
-
address@hidden netinet/in.h
address@hidden IPv6 basic API
address@hidden {Data Type} {struct in6_addr}
-This data type is used to store an IPv6 address.  It stores 128 bits of
-data, which can be accessed (via a union) in a variety of ways.
address@hidden deftp
-
address@hidden netinet/in.h
address@hidden IPv6 basic API
address@hidden Constant {struct in6_addr} in6addr_loopback
-This constant is the IPv6 address @samp{::1}, the loopback address.  See
-above for a description of what this means.  The macro
address@hidden is provided to allow you to initialize your
-own variables to this value.
address@hidden deftypevr
-
address@hidden netinet/in.h
address@hidden IPv6 basic API
address@hidden Constant {struct in6_addr} in6addr_any
-This constant is the IPv6 address @samp{::}, the unspecified address.  See
-above for a description of what this means.  The macro
address@hidden is provided to allow you to initialize your
-own variables to this value.
address@hidden deftypevr
-
address@hidden Host Address Functions
address@hidden Host-Address Functions
-
address@hidden arpa/inet.h
address@hidden
-These additional functions for manipulating Internet addresses are
-declared in the header file @file{arpa/inet.h}.  They represent Internet
-addresses in network byte order, and network numbers and
-local-address-within-network numbers in host byte order.  @xref{Byte
-Order}, for an explanation of network and host byte order.
-
address@hidden arpa/inet.h
address@hidden BSD
address@hidden int inet_aton (const char address@hidden, struct in_addr 
address@hidden)
-This function converts the IPv4 Internet host-address @var{name} from
-the standard numbers-and-dots notation into binary data and stores it
-in the @code{struct in_addr} that @var{addr} points to.
address@hidden returns nonzero if the address is valid and zero if
-not.
address@hidden deftypefun
-
address@hidden arpa/inet.h
address@hidden BSD
address@hidden {uint32_t} inet_addr (const char address@hidden)
-This function converts the IPv4 Internet host-address @var{name} from the
-standard numbers-and-dots notation into binary data.  If the input is
-not valid, @code{inet_addr} returns @code{INADDR_NONE}.  This is an
-obsolete interface to @code{inet_aton}, described immediately above. It
-is obsolete because @code{INADDR_NONE} is a valid address
-(255.255.255.255), and @code{inet_aton} provides a cleaner way to
-indicate error return.
address@hidden deftypefun
-
address@hidden arpa/inet.h
address@hidden BSD
address@hidden {uint32_t} inet_network (const char address@hidden)
-This function extracts the network number from the address @var{name},
-given in the standard numbers-and-dots notation. The returned address is
-in host order. If the input is not valid, @code{inet_network} returns
address@hidden
-
-The function works only with traditional IPv4 class A, B and C network
-types.  It doesn't work with classless addresses and shouldn't be used
-anymore.
address@hidden deftypefun
-
address@hidden arpa/inet.h
address@hidden BSD
address@hidden {char *} inet_ntoa (struct in_addr @var{addr})
-This function converts the IPv4 Internet host-address @var{addr} to a
-string in the standard numbers-and-dots notation.  The return value is
-a pointer into a statically allocated buffer.  Subsequent calls will
-overwrite the same buffer, so you should copy the string if you need
-to save it.
-
-In multithreaded programs, each thread has its own statically
-allocated buffer.  But still, subsequent calls of @code{inet_ntoa} in
-the same thread will overwrite the result of the last call.
-
-Instead of @code{inet_ntoa}, the newer function @code{inet_ntop},
-which is described below, should be used since it handles both IPv4
-and IPv6 addresses.
address@hidden deftypefun
-
address@hidden arpa/inet.h
address@hidden BSD
address@hidden {struct in_addr} inet_makeaddr (uint32_t @var{net}, uint32_t 
@var{local})
-This function makes an IPv4 Internet host-address by combining the network
-number @var{net} with the local-address-within-network number
address@hidden
address@hidden deftypefun
-
address@hidden arpa/inet.h
address@hidden BSD
address@hidden uint32_t inet_lnaof (struct in_addr @var{addr})
-This function returns the local-address-within-network part of the
-Internet host-address @var{addr}.
-
-The function works only with traditional IPv4 class A, B and C network
-types.  It doesn't work with classless addresses and shouldn't be used
-anymore.
address@hidden deftypefun
-
address@hidden arpa/inet.h
address@hidden BSD
address@hidden uint32_t inet_netof (struct in_addr @var{addr})
-This function returns the network number part of the Internet host
-address @var{addr}.
-
-The function works only with traditional IPv4 class A, B and C network
-types.  It doesn't work with classless addresses and shouldn't be used
-anymore.
address@hidden deftypefun
-
address@hidden arpa/inet.h
address@hidden IPv6 basic API
address@hidden int inet_pton (int @var{af}, const char address@hidden, void 
address@hidden)
-This function converts an Internet address (either IPv4 or IPv6) from
-presentation (textual) to network (binary) format.  @var{af} should be
-either @code{AF_INET} or @code{AF_INET6}, as appropriate for the type of
-address being converted.  @var{cp} is a pointer to the input string, and
address@hidden is a pointer to a buffer for the result.  It is the caller's
-responsibility to make sure the buffer is large enough.
address@hidden deftypefun
-
address@hidden arpa/inet.h
address@hidden IPv6 basic API
address@hidden {const char *} inet_ntop (int @var{af}, const void 
address@hidden, char address@hidden, size_t @var{len})
-This function converts an Internet address (either IPv4 or IPv6) from
-network (binary) to presentation (textual) form.  @var{af} should be
-either @code{AF_INET} or @code{AF_INET6}, as appropriate.  @var{cp} is a
-pointer to the address to be converted.  @var{buf} should be a pointer
-to a buffer to hold the result, and @var{len} is the length of this
-buffer.  The return value from the function will be this buffer address.
address@hidden deftypefun
-
address@hidden Host Names
address@hidden Host Names
address@hidden hosts database
address@hidden converting host name to address
address@hidden converting host-address to name
-
-Besides the standard numbers-and-dots notation for Internet addresses,
-you can also refer to a host by a symbolic name.  The advantage of a
-symbolic name is that it is usually easier to remember.  For example,
-the machine with Internet address @samp{158.121.106.19} is also known as
address@hidden; and other machines in the @samp{gnu.org}
-domain can refer to it simply as @samp{alpha}.
-
address@hidden /etc/hosts
address@hidden netdb.h
-Internally, the system uses a database to keep track of the mapping
-between host names and host numbers.  This database is usually either
-the file @file{/etc/hosts} or an equivalent provided by a name server.
-The functions and other symbols for accessing this database are declared
-in @file{netdb.h}.  They are @acronym{BSD} features, defined unconditionally if
-you include @file{netdb.h}.
-
address@hidden netdb.h
address@hidden BSD
address@hidden {Data Type} {struct hostent}
-This data type is used to represent an entry in the hosts database.  It
-has the following members:
-
address@hidden @code
address@hidden char *h_name
-This is the ``official'' name of the host.
-
address@hidden char **h_aliases
-These are alternative names for the host, represented as a null-terminated
-vector of strings.
-
address@hidden int h_addrtype
-This is the host-address type; in practice, its value is always either
address@hidden or @code{AF_INET6}, with the latter being used for IPv6
-hosts.  In principle, other kinds of addresses could be represented in
-the database as well as Internet addresses; if this were done, you
-might find a value in this field other than @code{AF_INET} or
address@hidden (@pxref{Socket Addresses}).
-
address@hidden int h_length
-This is the length, in bytes, of each address.
-
address@hidden char **h_addr_list
-This is the vector of addresses for the host.  (Recall that the host
-might be connected to multiple networks and have different addresses on
-each one.)  The vector is terminated by a null pointer.
-
address@hidden char *h_addr
-This is a synonym for @code{h_addr_list[0]}; in other words, it is the
-first host-address.
address@hidden table
address@hidden deftp
-
-As far as the host database is concerned, each address is just a block
-of memory @code{h_length} bytes long.  But in other contexts, there is
-an implicit assumption that you can convert IPv4 addresses to a
address@hidden in_addr} or an @code{uint32_t}.  Host addresses in a
address@hidden hostent} structure are always given in network byte order
-(@pxref{Byte Order}).
-
-You can use @code{gethostbyname}, @code{gethostbyname2} or
address@hidden to search the hosts database for information about
-a particular host.  The information is returned in a
-statically allocated structure; you must copy the information if you
-need to save it across calls.  You can also use @code{getaddrinfo} and
address@hidden to obtain this information.
-
address@hidden netdb.h
address@hidden BSD
address@hidden {struct hostent *} gethostbyname (const char address@hidden)
-The @code{gethostbyname} function returns information about the host
-named @var{name}.  If the lookup fails, it returns a null pointer.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden IPv6 Basic API
address@hidden {struct hostent *} gethostbyname2 (const char address@hidden, 
int @var{af})
-The @code{gethostbyname2} function is like @code{gethostbyname}, but
-allows the caller to specify the desired address family (e.g.@:
address@hidden or @code{AF_INET6}) of the result.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden BSD
address@hidden {struct hostent *} gethostbyaddr (const char address@hidden, 
size_t @var{length}, int @var{format})
-The @code{gethostbyaddr} function returns information about the host
-with Internet address @var{addr}.  The parameter @var{addr} is not
-really a pointer to char - it can be a pointer to an IPv4 or an IPv6
-address. The @var{length} argument is the size (in bytes) of the address
-at @var{addr}.  @var{format} specifies the address format; for an IPv4
-Internet address, specify a value of @code{AF_INET}; for an IPv6
-Internet address, use @code{AF_INET6}.
-
-If the lookup fails, @code{gethostbyaddr} returns a null pointer.
address@hidden deftypefun
-
address@hidden h_errno
-If the name lookup by @code{gethostbyname} or @code{gethostbyaddr}
-fails, you can find out the reason by looking at the value of the
-variable @code{h_errno}.  It would be cleaner design for these
-functions to set @code{errno}, but use of @code{h_errno} is compatible
-with other systems.
-
-Here are the error codes that you may find in @code{h_errno}:
-
address@hidden @code
address@hidden netdb.h
address@hidden BSD
address@hidden HOST_NOT_FOUND
address@hidden HOST_NOT_FOUND
-No such host is known in the database.
-
address@hidden netdb.h
address@hidden BSD
address@hidden TRY_AGAIN
address@hidden TRY_AGAIN
-This condition happens when the name server could not be contacted.  If
-you try again later, you may succeed then.
-
address@hidden netdb.h
address@hidden BSD
address@hidden NO_RECOVERY
address@hidden NO_RECOVERY
-A nonrecoverable error occurred.
-
address@hidden netdb.h
address@hidden BSD
address@hidden NO_ADDRESS
address@hidden NO_ADDRESS
-The host database contains an entry for the name, but it doesn't have an
-associated Internet address.
address@hidden table
-
-The lookup functions above all have one thing in common: they are not
-reentrant and so are unusable in multithreaded applications.
-Therefore, the @acronym{GNU} C Library provides a new set of functions
-that can be used in this context.
-
address@hidden netdb.h
address@hidden GNU
address@hidden int gethostbyname_r (const char *restrict @var{name}, struct 
hostent *restrict @var{result_buf}, char *restrict @var{buf}, size_t 
@var{buflen}, struct hostent **restrict @var{result}, int *restrict 
@var{h_errnop})
-The @code{gethostbyname_r} function returns information about the host
-named @var{name}.  The caller must pass a pointer to an object of type
address@hidden hostent} in the @var{result_buf} parameter.  In addition,
-the function may need extra buffer space, and the caller must pass a
-pointer and the size of the buffer in the @var{buf} and @var{buflen}
-parameters.
-
-A pointer to the buffer, in which the result is stored, is available
-in @address@hidden after the function call successfully returned.
-If an error occurs or if no entry is found, the pointer
address@hidden@var{result}} is a null pointer.  Success is signalled by a
-zero return value.  If the function failed, the return value is an
-error number.  In addition to the errors defined for
address@hidden, it can also be @code{ERANGE}.  In this case, the
-call should be repeated with a larger buffer.  Additional error
-information is not stored in the global variable @code{h_errno} but
-instead in the object pointed to by @var{h_errnop}.
-
-Here's a small example:
address@hidden
-struct hostent *
-gethostname (char *host)
address@hidden
-  struct hostent hostbuf, *hp;
-  size_t hstbuflen;
-  char *tmphstbuf;
-  int res;
-  int herr;
-
-  hstbuflen = 1024;
-  /* Allocate buffer, remember to free it to avoid memory leakage.  */
-  tmphstbuf = malloc (hstbuflen);
-
-  while ((res = gethostbyname_r (host, &hostbuf, tmphstbuf, hstbuflen,
-                                 &hp, &herr)) == ERANGE)
-    @{
-      /* Enlarge the buffer.  */
-      hstbuflen *= 2;
-      tmphstbuf = realloc (tmphstbuf, hstbuflen);
-    @}
-  /*  Check for errors.  */
-  if (res || hp == NULL)
-    return NULL;
-  return hp;
address@hidden
address@hidden smallexample
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden GNU
address@hidden int gethostbyname2_r (const char address@hidden, int @var{af}, 
struct hostent *restrict @var{result_buf}, char *restrict @var{buf}, size_t 
@var{buflen}, struct hostent **restrict @var{result}, int *restrict 
@var{h_errnop})
-The @code{gethostbyname2_r} function is like @code{gethostbyname_r}, but
-allows the caller to specify the desired address family (e.g.@:
address@hidden or @code{AF_INET6}) for the result.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden GNU
address@hidden int gethostbyaddr_r (const char address@hidden, size_t 
@var{length}, int @var{format}, struct hostent *restrict @var{result_buf}, char 
*restrict @var{buf}, size_t @var{buflen}, struct hostent **restrict 
@var{result}, int *restrict @var{h_errnop})
-The @code{gethostbyaddr_r} function returns information about the host
-with Internet address @var{addr}.  The parameter @var{addr} is not
-really a pointer to char---it can be a pointer to an IPv4 or an IPv6
-address. The @var{length} argument is the size (in bytes) of the
-address at @var{addr}.  @var{format} specifies the address format; for
-an IPv4 Internet address, specify a value of @code{AF_INET}; for an
-IPv6 Internet address, use @code{AF_INET6}.
-
-Similar to the @code{gethostbyname_r} function, the caller must
-provide buffers for the result and memory used internally.  In case of
-success, the function returns 0.  Otherwise, the value is an error
-number where @code{ERANGE} has the special meaning that the
-caller-provided buffer is too small.
address@hidden deftypefun
-
-You can also scan the entire hosts database one entry at a time using
address@hidden, @code{gethostent} and @code{endhostent}.  Be
-careful when using these functions, because they are not reentrant.
-
address@hidden netdb.h
address@hidden BSD
address@hidden void sethostent (int @var{stayopen})
-This function opens the hosts database to begin scanning it.  You can
-then call @code{gethostent} to read the entries.
-
address@hidden There was a rumor that this flag has different meaning if using 
the @acronym{DNS},
address@hidden but it appears this description is accurate in that case also.
-If the @var{stayopen} argument is nonzero, this sets a flag so that
-subsequent calls to @code{gethostbyname} or @code{gethostbyaddr} will
-not close the database (as they usually would).  This makes for more
-efficiency if you call those functions several times, by avoiding
-reopening the database for each call.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden BSD
address@hidden {struct hostent *} gethostent (void)
-This function returns the next entry in the hosts database.  It
-returns a null pointer if there are no more entries.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden BSD
address@hidden void endhostent (void)
-This function closes the hosts database.
address@hidden deftypefun
-
address@hidden Ports
address@hidden Internet Ports
address@hidden port number
-
-A socket address in the Internet namespace consists of a machine's
-Internet address plus a @dfn{port number} that distinguishes the
-sockets on a given machine (for a given protocol).  Port numbers range
-from 0 to 65,535.
-
-Port numbers less than @code{IPPORT_RESERVED} are reserved for standard
-servers, such as @code{finger} and @code{telnet}.  There is a database
-that keeps track of these, and you can use the @code{getservbyname}
-function to map a service name onto a port number (@pxref{Services
-Database}).
-
-If you write a server that is not one of the standard ones defined in
-the database, you must choose a port number for it.  Use a number
-greater than @code{IPPORT_USERRESERVED}; such numbers are reserved for
-servers and won't ever be generated automatically by the system.
-Avoiding conflicts with servers being run by other users is up to you.
-
-When you use a socket without specifying its address, the system
-generates a port number for it.  This number is between
address@hidden and @code{IPPORT_USERRESERVED}.
-
-On the Internet, it is actually legitimate to have two different
-sockets with the same port number, as long as they never both try to
-communicate with the same socket address (host address plus port
-number).  You shouldn't duplicate a port number except in special
-circumstances where a higher-level protocol requires it.  Normally,
-the system won't let you do it; @code{bind} normally insists on
-distinct port numbers.  To reuse a port number, you must set the
-socket option @code{SO_REUSEADDR} (@pxref{Socket-Level Options}).
-
address@hidden netinet/in.h
-These macros are defined in the header file @file{netinet/in.h}.
-
address@hidden netinet/in.h
address@hidden BSD
address@hidden Macro int IPPORT_RESERVED
-Port numbers less than @code{IPPORT_RESERVED} are reserved for
-superuser use.
address@hidden deftypevr
-
address@hidden netinet/in.h
address@hidden BSD
address@hidden Macro int IPPORT_USERRESERVED
-Port numbers greater than or equal to @code{IPPORT_USERRESERVED} are
-reserved for explicit use; they will never be allocated automatically.
address@hidden deftypevr
-
address@hidden Services Database
address@hidden The Services Database
address@hidden services database
address@hidden converting service-name to port-number
address@hidden converting port-number to service-name
-
address@hidden /etc/services
-The database that keeps track of ``well-known'' services is usually
-either the file @file{/etc/services} or an equivalent from a name server.
-You can use these utilities, declared in @file{netdb.h}, to access
-the services database.
address@hidden netdb.h
-
address@hidden netdb.h
address@hidden BSD
address@hidden {Data Type} {struct servent}
-This data type holds information about entries from the services database.
-It has the following members:
-
address@hidden @code
address@hidden char *s_name
-This is the ``official'' name of the service.
-
address@hidden char **s_aliases
-These are alternate names for the service, represented as an array of
-strings.  A null pointer terminates the array.
-
address@hidden int s_port
-This is the port number for the service.  Port numbers are given in
-network byte order (@pxref{Byte Order}).
-
address@hidden char *s_proto
-This is the name of the protocol to use with this service
-(@pxref{Protocols Database}).
address@hidden table
address@hidden deftp
-
-To get information about a particular service, use the
address@hidden or @code{getservbyport} functions.  The information
-is returned in a statically allocated structure; you must copy the
-information if you need to save it across calls.
-
address@hidden netdb.h
address@hidden BSD
address@hidden {struct servent *} getservbyname (const char address@hidden, 
const char address@hidden)
-The @code{getservbyname} function returns information about the
-service named @var{name} using protocol @var{proto}.  If it can't find
-such a service, it returns a null pointer.
-
-This function is useful for servers as well as for clients; servers
-use it to determine which port they should listen on (@pxref{Listening}).
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden BSD
address@hidden {struct servent *} getservbyport (int @var{port}, const char 
address@hidden)
-The @code{getservbyport} function returns information about the
-service at port @var{port} using protocol @var{proto}.  If it can't
-find such a service, it returns a null pointer.
address@hidden deftypefun
-
address@hidden
-You can also scan the services database using @code{setservent},
address@hidden and @code{endservent}.  Be careful when using these
-functions, because they are not reentrant.
-
address@hidden netdb.h
address@hidden BSD
address@hidden void setservent (int @var{stayopen})
-This function opens the services database to begin scanning it.
-
-If the @var{stayopen} argument is nonzero, this sets a flag so that
-subsequent calls to @code{getservbyname} or @code{getservbyport} will
-not close the database (as they usually would).  This makes for more
-efficiency if you call those functions several times, by avoiding
-reopening the database for each call.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden BSD
address@hidden {struct servent *} getservent (void)
-This function returns the next entry in the services database.  If
-there are no more entries, it returns a null pointer.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden BSD
address@hidden void endservent (void)
-This function closes the services database.
address@hidden deftypefun
-
address@hidden Byte Order
address@hidden Byte-Order Conversion
address@hidden byte-order conversion, for socket
address@hidden converting byte-order
-
address@hidden big-endian
address@hidden little-endian
-Different kinds of computers use different conventions for the
-ordering of bytes within a word.  Some computers put the most
-significant byte within a word first (this is called ``big-endian''
-order), and others put it last (``little-endian'' order).
-
address@hidden network byte order
-So that machines with different byte-order conventions can
-communicate, the Internet protocols specify a canonical byte-order
-convention for data transmitted over the network.  This is known as
address@hidden byte order}.
-
-When establishing an Internet socket connection, you must make sure that
-the data in the @code{sin_port} and @code{sin_addr} members of the
address@hidden structure are represented in network byte order.
-If you are encoding integer data in the messages sent through the
-socket, you should convert this to network byte order too.  If you don't
-do this, your program may fail when running on or talking to other kinds
-of machines.
-
-If you use @code{getservbyname} and @code{gethostbyname} or
address@hidden to get the port number and host address, the values are
-already in network byte order, and you can copy them directly into
-the @code{sockaddr_in} structure.
-
-Otherwise, you have to convert the values explicitly.  Use @code{htons}
-and @code{ntohs} to convert values for the @code{sin_port} member.  Use
address@hidden and @code{ntohl} to convert IPv4 addresses for the
address@hidden member.  (Remember, @code{struct in_addr} is equivalent
-to @code{uint32_t}.)  These functions are declared in
address@hidden/in.h}.
address@hidden netinet/in.h
-
address@hidden netinet/in.h
address@hidden BSD
address@hidden {uint16_t} htons (uint16_t @var{hostshort})
-This function converts the @code{uint16_t} integer @var{hostshort} from
-host byte order to network byte order.
address@hidden deftypefun
-
address@hidden netinet/in.h
address@hidden BSD
address@hidden {uint16_t} ntohs (uint16_t @var{netshort})
-This function converts the @code{uint16_t} integer @var{netshort} from
-network byte order to host byte order.
address@hidden deftypefun
-
address@hidden netinet/in.h
address@hidden BSD
address@hidden {uint32_t} htonl (uint32_t @var{hostlong})
-This function converts the @code{uint32_t} integer @var{hostlong} from
-host byte order to network byte order.
-
-This is used for IPv4 Internet addresses.
address@hidden deftypefun
-
address@hidden netinet/in.h
address@hidden BSD
address@hidden {uint32_t} ntohl (uint32_t @var{netlong})
-This function converts the @code{uint32_t} integer @var{netlong} from
-network byte order to host byte order.
-
-This is used for IPv4 Internet addresses.
address@hidden deftypefun
-
address@hidden Protocols Database
address@hidden Protocols Database
address@hidden protocols database
-
-The communications protocol used with a socket controls low-level
-details of how data are exchanged.  For example, the protocol implements
-things like checksums to detect errors in transmissions, and routing
-instructions for messages.  Normal user programs have little reason to
-mess with these details directly.
-
address@hidden @acronym{TCP} (Internet protocol)
-The default communications protocol for the Internet namespace depends on
-the communication style.  For stream communication, the default is 
@acronym{TCP}
-(``transmission control protocol'').  For datagram communication, the
-default is @acronym{UDP} (``user datagram protocol'').  For reliable datagram
-communication, the default is @acronym{RDP} (``reliable datagram protocol'').
-You should nearly always use the default.
-
address@hidden /etc/protocols
-Internet protocols are generally specified by a name instead of a
-number.  The network protocols that a host knows about are stored in a
-database.  This is usually either derived from the file
address@hidden/etc/protocols}, or it may be an equivalent provided by a name
-server.  You look up the protocol number associated with a named
-protocol in the database using the @code{getprotobyname} function.
-
-Here are detailed descriptions of the utilities for accessing the
-protocols database.  These are declared in @file{netdb.h}.
address@hidden netdb.h
-
address@hidden netdb.h
address@hidden BSD
address@hidden {Data Type} {struct protoent}
-This data type is used to represent entries in the network protocols
-database.  It has the following members:
-
address@hidden @code
address@hidden char *p_name
-This is the official name of the protocol.
-
address@hidden char **p_aliases
-These are alternate names for the protocol, specified as an array of
-strings.  The last element of the array is a null pointer.
-
address@hidden int p_proto
-This is the protocol number (in host byte order); use this member as the
address@hidden argument to @code{socket}.
address@hidden table
address@hidden deftp
-
-You can use @code{getprotobyname} and @code{getprotobynumber} to search
-the protocols database for a specific protocol.  The information is
-returned in a statically allocated structure; you must copy the
-information if you need to save it across calls.
-
address@hidden netdb.h
address@hidden BSD
address@hidden {struct protoent *} getprotobyname (const char address@hidden)
-The @code{getprotobyname} function returns information about the
-network protocol named @var{name}.  If there is no such protocol, it
-returns a null pointer.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden BSD
address@hidden {struct protoent *} getprotobynumber (int @var{protocol})
-The @code{getprotobynumber} function returns information about the
-network protocol with number @var{protocol}.  If there is no such
-protocol, it returns a null pointer.
address@hidden deftypefun
-
-You can also scan the whole protocols database one protocol at a time
-by using @code{setprotoent}, @code{getprotoent} and
address@hidden  Be careful when using these functions, because
-they are not reentrant.
-
address@hidden netdb.h
address@hidden BSD
address@hidden void setprotoent (int @var{stayopen})
-This function opens the protocols database to begin scanning it.
-
-If the @var{stayopen} argument is nonzero, this sets a flag so that
-subsequent calls to @code{getprotobyname} or @code{getprotobynumber} will
-not close the database (as they usually would).  This makes for more
-efficiency if you call those functions several times, by avoiding
-reopening the database for each call.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden BSD
address@hidden {struct protoent *} getprotoent (void)
-This function returns the next entry in the protocols database.  It
-returns a null pointer if there are no more entries.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden BSD
address@hidden void endprotoent (void)
-This function closes the protocols database.
address@hidden deftypefun
-
address@hidden Inet Example
address@hidden Internet Socket Example
-
-Here is an example showing how to create and name a socket in the
-Internet namespace.  The newly created socket exists on the machine that
-the program is running on.  Rather than finding and using the machine's
-Internet address, this example specifies @code{INADDR_ANY} as the host
-address; the system replaces that with the machine's actual address.
-
address@hidden
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-int 
-make_socket (uint16_t port)
address@hidden
-  int sock;
-  struct sockaddr_in name;
-
-  /* @r{Create the socket.} */
-  sock = socket (PF_INET, SOCK_STREAM, 0);
-  if (sock < 0)
-    @{
-      perror ("socket");
-      exit (EXIT_FAILURE);
-    @}
-
-  /* @r{Give the socket a name.} */
-  name.sin_family = AF_INET;
-  name.sin_port = htons (port);
-  name.sin_addr.s_addr = htonl (INADDR_ANY);
-  if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0)
-    @{
-      perror ("bind");
-      exit (EXIT_FAILURE);
-    @}
-
-  return sock;
address@hidden
-
address@hidden smallexample
-
-Here is another example, showing how you can fill in a @code{sockaddr_in}
-structure, given a host name string and a port number:
-
address@hidden
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-
-void 
-init_sockaddr (struct sockaddr_in *name,
-               const char *hostname,
-               uint16_t port)
address@hidden
-  struct hostent *hostinfo;
-
-  name->sin_family = AF_INET;
-  name->sin_port = htons (port);
-  hostinfo = gethostbyname (hostname);
-  if (hostinfo == NULL) 
-    @{
-      fprintf (stderr, "Unknown host %s.\n", hostname);
-      exit (EXIT_FAILURE);
-    @}
-  name->sin_addr = *(struct in_addr *) hostinfo->h_addr;
address@hidden
-
address@hidden smallexample
-
address@hidden Misc Namespaces
address@hidden Other Namespaces
-
address@hidden PF_NS
address@hidden PF_ISO
address@hidden PF_CCITT
address@hidden PF_IMPLINK
address@hidden PF_ROUTE
-Certain other namespaces and associated protocol families are
-supported but not documented yet because they are not often used.
address@hidden refers to the Xerox Network Software protocols.
address@hidden stands for Open Systems Interconnect.  @code{PF_CCITT}
-refers to protocols from CCITT.  @file{socket.h} defines these symbols
-and other naming protocols not actually implemented.
-
address@hidden is used for communicating between hosts and Internet
-Message address@hidden information on this and
address@hidden, an occasionally used local-area routing protocol, see
-Marcus Brinkmann et al., @emph{GNU Hurd Manual} (April 24, 2002),
address@hidden:// www.gnu.org/ software/ hurd/doc/ hurd_toc.html}.}
-
address@hidden Open/Close Sockets
address@hidden Opening and Closing Sockets
-
-This section describes the actual library functions for opening and
-closing sockets.  The same functions work for all namespaces and
-connection styles.
-
address@hidden Creating a Socket
address@hidden Creating a Socket
address@hidden creating a socket
address@hidden socket, creating
address@hidden opening a socket
-
-The primitive for creating a socket is the @code{socket} function,
-declared in @file{sys/socket.h}.
address@hidden sys/socket.h
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int socket (int @var{namespace}, int @var{style}, int 
@var{protocol})
-This function creates a socket and specifies communication style
address@hidden, which should be one of the socket styles listed in
address@hidden Styles}.  The @var{namespace} argument specifies
-the namespace; it must be @code{PF_LOCAL} (@pxref{Local Namespace}) or
address@hidden (@pxref{Internet Namespace}).  @var{protocol}
-designates the specific protocol (@pxref{Socket Concepts}); zero is
-usually right for @var{protocol}.
-
-The return value from @code{socket} is the file descriptor for the new
-socket or @code{-1} in case of error.  The following @code{errno}
-error conditions are defined for this function:
-
address@hidden @code
address@hidden EPROTONOSUPPORT
-The @var{protocol} or @var{style} is not supported by the
address@hidden specified.
-
address@hidden EMFILE
-The process already has too many file descriptors open.
-
address@hidden ENFILE
-The system already has too many file descriptors open.
-
address@hidden EACCES
-The process does not have the privilege to create a socket of the specified
address@hidden or @var{protocol}.
-
address@hidden ENOBUFS
-The system ran out of internal buffer space.
address@hidden table
-
-The file descriptor returned by the @code{socket} function supports
-both read and write operations.  However, like pipes, sockets do not
-support file-positioning operations.
address@hidden deftypefun
-
-For examples of how to call the @code{socket} function,
-see @ref{Local Socket Example}, or @ref{Inet Example}.
-
-
address@hidden Closing a Socket
address@hidden Closing a Socket
address@hidden socket, closing
address@hidden closing a socket
address@hidden shutting down a socket
address@hidden socket shutdown
-
-When you have finished using a socket, you can simply close its
-file descriptor with @code{close} (@pxref{Opening and Closing Files}).
-If there is still data waiting to be transmitted over the connection,
-normally @code{close} tries to complete this transmission.  You
-can control this behavior using the @code{SO_LINGER} socket option to
-specify a time-out period (@pxref{Socket Options}).
-
address@hidden sys/socket.h
-You can also shut down only reception or transmission on a
-connection by calling @code{shutdown}, which is declared in
address@hidden/socket.h}.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int shutdown (int @var{socket}, int @var{how})
-The @code{shutdown} function shuts down the connection of socket
address@hidden  The argument @var{how} specifies what action to
-perform:
-
address@hidden @code
address@hidden 0
-Stop receiving data for this socket.  If further data arrives,
-reject it.
-
address@hidden 1
-Stop trying to transmit data from this socket.  Discard any data
-waiting to be sent.  Stop looking for acknowledgement of data already
-sent; don't retransmit it if it is lost.
-
address@hidden 2
-Stop both reception and transmission.
address@hidden table
-
-The return value is @code{0} on success and @code{-1} on failure.  The
-following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
address@hidden is not a valid file-descriptor.
-
address@hidden ENOTSOCK
address@hidden is not a socket.
-
address@hidden ENOTCONN
address@hidden is not connected.
address@hidden table
address@hidden deftypefun
-
address@hidden Socket Pairs
address@hidden Socket Pairs
address@hidden creating a socket pair
address@hidden socket pair
address@hidden opening a socket pair
-
address@hidden sys/socket.h
-A @dfn{socket pair} consists of a pair of connected (but unnamed)
-sockets.  It is very similar to a pipe and is used in much the same
-way.  Socket pairs are created with the @code{socketpair} function,
-declared in @file{sys/socket.h}.  A socket pair is much like a pipe; the
-main difference is that the socket pair is bidirectional, whereas the
-pipe has one input-only end and one output-only end (@pxref{Pipes and FIFOs}).
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int socketpair (int @var{namespace}, int @var{style}, int 
@var{protocol}, int @address@hidden)
-This function creates a socket pair, returning the file descriptors in
address@hidden@var{filedes}[0]} and @address@hidden  The socket pair
-is a full-duplex communications channel, so that both reading and writing
-may be performed at either end.
-
-The @var{namespace}, @var{style} and @var{protocol} arguments are
-interpreted as for the @code{socket} function.  @var{style} should be
-one of the communication styles listed in @ref{Communication Styles}.
-The @var{namespace} argument specifies the namespace, which must be
address@hidden (@pxref{Local Namespace}); @var{protocol} specifies the
-communications protocol, but 0 is the only meaningful value.
-
-If @var{style} specifies a connectionless communication style, then
-the two sockets you get are not @emph{connected}, strictly speaking,
-but each of them knows the other as the default destination address,
-so they can send packets to each other.
-
-The @code{socketpair} function returns @code{0} on success and @code{-1}
-on failure.  The following @code{errno} error conditions are defined
-for this function:
-
address@hidden @code
address@hidden EMFILE
-The process has too many file descriptors open.
-
address@hidden EAFNOSUPPORT
-The specified namespace is not supported.
-
address@hidden EPROTONOSUPPORT
-The specified protocol is not supported.
-
address@hidden EOPNOTSUPP
-The specified protocol does not support the creation of socket pairs.
address@hidden table
address@hidden deftypefun
-
address@hidden Connections
address@hidden Using Sockets with Connections
-
address@hidden connection
address@hidden client
address@hidden server
-The most common communication styles involve making a connection to a
-particular other socket, and then exchanging data with that socket
-over and over.  Making a connection is asymmetric; one side (the
address@hidden) acts to request a connection, while the other side (the
address@hidden) makes a socket and waits for the connection request.
-
address@hidden
address@hidden @bullet
address@hidden
address@hidden (@pxref{Connecting}) describes what the client
-program must do to initiate a connection with a server.
-
address@hidden
address@hidden (@pxref{Listening}) and @dfn{accepting connections}
-(@pxref{Accepting Connections}) describe what the server program must
-do to wait for and act upon connection requests from clients.
-
address@hidden
address@hidden data} (@pxref{Transferring Data}) describes how data
-are transferred through the connected socket.
address@hidden itemize
address@hidden iftex
-
address@hidden Connecting
address@hidden Making a Connection
address@hidden connecting a socket
address@hidden socket, connecting
address@hidden socket, initiating a connection
address@hidden socket, client actions
-
-In making a connection, the client makes a connection while the server
-waits for and accepts the connection.  Here we discuss what the client
-program must do with the @code{connect} function, which is declared in
address@hidden/socket.h}.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int connect (int @var{socket}, struct sockaddr address@hidden, 
socklen_t @var{length})
-The @code{connect} function initiates a connection from the socket
-with file descriptor @var{socket} to the socket whose address is
-specified by the @var{addr} and @var{length} arguments.  This socket
-is typically on another machine, and it must be already set up as a
-server. @xref{Socket Addresses}, for information about how these
-arguments are interpreted.
-
-Normally, @code{connect} waits until the server responds to the
-request before it returns.  You can set nonblocking mode on the socket
address@hidden to make @code{connect} return immediately without waiting
-for the response (@pxref{File Status Flags}).
-
address@hidden !!! how do you tell when it has finished connecting?  I suspect 
the
address@hidden way you do it is select for writing.
-
-The normal return value from @code{connect} is @code{0}.  If an error
-occurs, @code{connect} returns @code{-1}.  The following @code{errno}
-error conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The socket @var{socket} is not a valid file-descriptor.
-
address@hidden ENOTSOCK
-File descriptor @var{socket} is not a socket.
-
address@hidden EADDRNOTAVAIL
-The specified address is not available on the remote machine.
-
address@hidden EAFNOSUPPORT
-The namespace of the @var{addr} is not supported by this socket.
-
address@hidden EISCONN
-The socket @var{socket} is already connected.
-
address@hidden ETIMEDOUT
-The attempt to establish the connection timed out.
-
address@hidden ECONNREFUSED
-The server has actively refused to establish the connection.
-
address@hidden ENETUNREACH
-The network of the given @var{addr} isn't reachable from this host.
-
address@hidden EADDRINUSE
-The socket address of the given @var{addr} is already in use.
-
address@hidden EINPROGRESS
-The socket @var{socket} is nonblocking and the connection could not be
-established immediately.  You can determine when the connection is
-completely established with @code{select} (@pxref{Waiting for I/O}).
-Another @code{connect} call on the same socket, before the connection is
-completely established, will fail with @code{EALREADY}.
-
address@hidden EALREADY
-The socket @var{socket} is nonblocking and already has a pending
-connection in progress (see @code{EINPROGRESS} above).
address@hidden table
-
-This function is defined as a cancellation point in multithreaded
-programs, so you have to be prepared for this and make sure that
-allocated resources (like memory, files descriptors, semaphores, etc.)
-are freed even if the thread is canceled.
address@hidden @xref{pthread_cleanup_push}, for a method how to do this.
address@hidden deftypefun
-
address@hidden Listening
address@hidden Listening for Connections
address@hidden listening (sockets)
address@hidden sockets, server actions
address@hidden sockets, listening
-
-Now let us consider what the server process must do to accept
-connections on a socket.  First it must use the @code{listen} function
-to enable connection requests on the socket, then it must accept each
-incoming connection with a call to @code{accept} (@pxref{Accepting
-Connections}).  Once connection requests are enabled on a server
-socket, the @code{select} function reports when the socket has a
-connection ready to be accepted (@pxref{Waiting for I/O}).
-
-The @code{listen} function is not allowed for sockets using
-connectionless communication styles.
-
-You can write a network server that does not even start running until a
-connection to it is requested (@pxref{Inetd Servers}).
-
-In the Internet namespace, there are no special protection mechanisms
-for controlling access to a port; any process on any machine
-can make a connection to your server.  If you want to restrict access to
-your server, make it examine the addresses associated with connection
-requests or implement some other handshaking or identification
-protocol.
-
-In the local namespace, the ordinary file-protection bits control who
-has access to connect to the socket.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int listen (int @var{socket}, unsigned int @var{n})
-The @code{listen} function enables the socket @var{socket} to accept
-connections, thus making it a server socket.
-
-The argument @var{n} specifies the length of the queue for pending
-connections.  When the queue fills, new clients attempting to connect
-fail with @code{ECONNREFUSED} until the server calls @code{accept} to
-accept a connection from the queue.
-
-The @code{listen} function returns @code{0} on success and @code{-1}
-on failure.  The following @code{errno} error conditions are defined
-for this function:
-
address@hidden @code
address@hidden EBADF
-The argument @var{socket} is not a valid file-descriptor.
-
address@hidden ENOTSOCK
-The argument @var{socket} is not a socket.
-
address@hidden EOPNOTSUPP
-The socket @var{socket} does not support this operation.
address@hidden table
address@hidden deftypefun
-
address@hidden Accepting Connections
address@hidden Accepting Connections
address@hidden sockets, accepting connections
address@hidden accepting connections
-
-When a server receives a connection request, it can complete the
-connection by accepting the request.  Use the function @code{accept}
-to do this.
-
-A socket that has been established as a server can accept connection
-requests from multiple clients.  The server's original socket
address@hidden not become part of the connection}; instead, @code{accept}
-makes a new socket that participates in the connection.  @code{accept}
-returns the descriptor for this socket.  The server's original socket
-remains available for listening for further connection requests.
-
-The number of pending connection requests on a server socket is finite.
-If connection requests arrive from clients faster than the server can
-act upon them, the queue can fill up and additional requests are refused
-with an @code{ECONNREFUSED} error.  You can specify the maximum length of
-this queue as an argument to the @code{listen} function, although the
-system may also impose its own internal limit on the length of this
-queue.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int accept (int @var{socket}, struct sockaddr address@hidden, 
socklen_t address@hidden)
-This function is used to accept a connection request on the server
-socket @var{socket}.
-
-The @code{accept} function waits if there are no connections pending,
-unless the socket @var{socket} has nonblocking mode set.  You can use
address@hidden to wait for a pending connection, with a nonblocking
-socket (@pxref{File Status Flags}, for information about nonblocking
-mode).
-
-The @var{addr} and @var{length-ptr} arguments are used to return
-information about the name of the client socket that initiated the
-connection (@pxref{Socket Addresses}, for information about the
-format).
-
-Accepting a connection does not make @var{socket} part of the
-connection.  Instead, it creates a new socket that becomes connected.
-The normal return value of @code{accept} is the file descriptor for
-the new socket.
-
-After @code{accept}, the original socket @var{socket} remains open and
-unconnected, and continues listening until you close it.  You can
-accept further connections with @var{socket} by calling @code{accept}
-again.
-
-If an error occurs, @code{accept} returns @code{-1}.  The following
address@hidden error conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{socket} argument is not a valid file-descriptor.
-
address@hidden ENOTSOCK
-The descriptor @var{socket} argument is not a socket.
-
address@hidden EOPNOTSUPP
-The descriptor @var{socket} does not support this operation.
-
address@hidden EWOULDBLOCK
address@hidden has nonblocking mode set, and there are no pending
-connections immediately available.
address@hidden table
-
-This function is defined as a cancellation point in multithreaded
-programs, so you have to be prepared for this and make sure that
-allocated resources (like memory, files descriptors, semaphores, etc.)
-are freed even if the thread is canceled.
address@hidden @xref{pthread_cleanup_push}, for a method how to do this.
address@hidden deftypefun
-
-The @code{accept} function is not allowed for sockets using
-connectionless communication styles.
-
address@hidden Who Is Connected
address@hidden Who Is Connected to Me?
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int getpeername (int @var{socket}, struct sockaddr 
address@hidden, socklen_t address@hidden)
-The @code{getpeername} function returns the address of the socket that
address@hidden is connected to; it stores the address in the memory
-space specified by @var{addr} and @var{length-ptr}.  It stores the
-length of the address in @address@hidden (@pxref{Socket
-Addresses}, for information about the format of the address).  In some
-operating systems, @code{getpeername} works only for sockets in the
-Internet domain.
-
-The return value is @code{0} on success and @code{-1} on error.  The
-following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The argument @var{socket} is not a valid file-descriptor.
-
address@hidden ENOTSOCK
-The descriptor @var{socket} is not a socket.
-
address@hidden ENOTCONN
-The socket @var{socket} is not connected.
-
address@hidden ENOBUFS
-There are not enough internal buffers available.
address@hidden table
address@hidden deftypefun
-
-
address@hidden Transferring Data
address@hidden Transferring Data
address@hidden reading from a socket
address@hidden writing to a socket
-
-Once a socket has been connected to a peer, you can use the ordinary
address@hidden and @code{write} operations to
-transfer data (@pxref{I/O Primitives}).  A socket is a two-way communications 
channel, so read
-and write operations can be performed at either end.
-
-There are also some I/O modes that are specific to socket operations.
-In order to specify these modes, you must use the @code{recv} and
address@hidden functions instead of the more generic @code{read} and
address@hidden functions.  The @code{recv} and @code{send} functions
-take an additional argument that you can use to specify various flags
-to control special I/O modes.  For example, you can specify the
address@hidden flag to read or write out-of-band data, the
address@hidden flag to peek at input, or the @code{MSG_DONTROUTE}
-flag to control inclusion of routing information on output.
-
address@hidden Sending Data
address@hidden Sending Data
-
address@hidden sys/socket.h
-The @code{send} function is declared in the header file
address@hidden/socket.h}.  If your @var{flags} argument is 0, you can just
-as well use @code{write} instead of @code{send} (@pxref{I/O
-Primitives}).  If the socket was connected but the connection has broken,
-you get a @code{SIGPIPE} signal for any use of @code{send} or
address@hidden (@pxref{Miscellaneous Signals}).
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int send (int @var{socket}, void address@hidden, size_t 
@var{size}, int @var{flags})
-The @code{send} function is like @code{write}, but with the additional
-flags @var{flags}.  The possible values of @var{flags} are described
-in @ref{Socket Data Options}.
-
-This function returns the number of bytes transmitted or @code{-1} on
-failure.  If the socket is nonblocking, then @code{send} (like
address@hidden) can return after sending just part of the data
-(@pxref{File Status Flags}, for information about nonblocking mode).
-
-Note, however, that a successful return value merely indicates that
-the message has been sent without error, not necessarily that it has
-been received without error.
-
-The following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{socket} argument is not a valid file-descriptor.
-
address@hidden EINTR
-The operation was interrupted by a signal before any data was sent
-(@pxref{Interrupted Primitives}).
-
address@hidden ENOTSOCK
-The descriptor @var{socket} is not a socket.
-
address@hidden EMSGSIZE
-The socket type requires that the message be sent atomically, but the
-message is too large for this to be possible.
-
address@hidden EWOULDBLOCK
-Nonblocking mode has been set on the socket, and the write operation
-would block.  Normally, @code{send} blocks until the operation can be
-completed.
-
address@hidden ENOBUFS
-There is not enough internal buffer space available.
-
address@hidden ENOTCONN
-You never connected this socket.
-
address@hidden EPIPE
-This socket was connected, but the connection is now broken.  In this
-case, @code{send} generates a @code{SIGPIPE} signal first; if that
-signal is ignored or blocked, or if its handler returns, then
address@hidden fails with @code{EPIPE}.
address@hidden table
-
-This function is defined as a cancellation point in multithreaded
-programs, so you have to be prepared for this and make sure that
-allocated resources (like memory, files descriptors, semaphores, etc.)
-are freed even if the thread is canceled.
address@hidden @xref{pthread_cleanup_push}, for a method how to do this.
address@hidden deftypefun
-
address@hidden Receiving Data
address@hidden Receiving Data
-
address@hidden sys/socket.h
-The @code{recv} function is declared in the header file
address@hidden/socket.h}.  If your @var{flags} argument is 0, you can
-just as well use @code{read} instead of @code{recv} (@pxref{I/O
-Primitives}).
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int recv (int @var{socket}, void address@hidden, size_t 
@var{size}, int @var{flags})
-The @code{recv} function is like @code{read}, but with the additional
-flags @var{flags}.  The possible values of @var{flags} are described
-in @ref{Socket Data Options}.
-
-If nonblocking mode is set for @var{socket}, and no data are available
-to be read, @code{recv} fails immediately rather than waiting
-(@pxref{File Status Flags}, for information about nonblocking mode).
-
-This function returns the number of bytes received or @code{-1} on
-failure.  The following @code{errno} error conditions are defined for
-this function:
-
address@hidden @code
address@hidden EBADF
-The @var{socket} argument is not a valid file-descriptor.
-
address@hidden ENOTSOCK
-The descriptor @var{socket} is not a socket.
-
address@hidden EWOULDBLOCK
-Nonblocking mode has been set on the socket, and the read operation
-would block.  Normally, @code{recv} blocks until there is input
-available to be read.
-
address@hidden EINTR
-The operation was interrupted by a signal before any data was read
-(@pxref{Interrupted Primitives}).
-
address@hidden ENOTCONN
-You never connected this socket.
address@hidden table
-
-This function is defined as a cancellation point in multithreaded
-programs, so you have to be prepared for this and make sure that
-allocated resources (like memory, files descriptors, semaphores, etc.)
-are freed even if the thread is canceled.
address@hidden @xref{pthread_cleanup_push}, for a method how to do this.
address@hidden deftypefun
-
address@hidden Socket Data Options
address@hidden Socket Data Options
-
address@hidden sys/socket.h
-The @var{flags} argument to @code{send} and @code{recv} is a bit
-mask.  You can address@hidden the values of the following macros together
-to obtain a value for this argument.  All are defined in the header
-file @file{sys/socket.h}.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden Macro int MSG_OOB
-Send or receive out-of-band data (@pxref{Out-of-Band Data}).
address@hidden deftypevr
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden Macro int MSG_PEEK
-Look at the data, but don't remove it from the input queue.  This is
-only meaningful with input functions such as @code{recv}, not with
address@hidden
address@hidden deftypevr
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden Macro int MSG_DONTROUTE
-Don't include routing information in the message.  This is only
-meaningful with output operations, and is usually only of interest for
-diagnostic or routing programs.  We don't try to explain it here.
address@hidden deftypevr
-
address@hidden Byte-Stream Example
address@hidden Byte-Stream Socket Example
-
-Here is an example client program that makes a connection for a
-byte-stream socket in the Internet namespace.  It doesn't do anything
-particularly interesting once it has connected to the server; it just
-sends a text string to the server and exits.
-
-This program uses @code{init_sockaddr} to set up the socket address
-(@pxref{Inet Example}).
-
address@hidden
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-
-#define PORT            5555
-#define MESSAGE         "Yow!!! Are we having fun yet?!?"
-#define SERVERHOST      "mescaline.gnu.org"
-
-void 
-write_to_server (int filedes)
address@hidden
-  int nbytes;
-
-  nbytes = write (filedes, MESSAGE, strlen (MESSAGE) + 1);
-  if (nbytes < 0)
-    @{
-      perror ("write");
-      exit (EXIT_FAILURE);
-    @}
address@hidden
-
-
-int
-main (void)
address@hidden
-  extern void init_sockaddr (struct sockaddr_in *name,
-                             const char *hostname,
-                             uint16_t port);
-  int sock;
-  struct sockaddr_in servername;
-
-  /* @r{Create the socket.} */
-  sock = socket (PF_INET, SOCK_STREAM, 0);
-  if (sock < 0)
-    @{
-      perror ("socket (client)");
-      exit (EXIT_FAILURE);
-    @}
-
-  /* @r{Connect to the server.} */
-  init_sockaddr (&servername, SERVERHOST, PORT);
-  if (0 > connect (sock,
-                   (struct sockaddr *) &servername,
-                   sizeof (servername)))
-    @{
-      perror ("connect (client)");
-      exit (EXIT_FAILURE);
-    @}
-
-  /* @r{Send data to the server.} */
-  write_to_server (sock);
-  close (sock);
-  exit (EXIT_SUCCESS);
address@hidden
-
address@hidden smallexample
-
address@hidden Server Example
address@hidden Byte-Stream Connection Server Example
-
-The server end is much more complicated.  Since we want to allow
-multiple clients to be connected to the server at the same time, it
-would be incorrect to wait for input from a single client by simply
-calling @code{read} or @code{recv}.  Instead, the right thing to do is
-to use @code{select} to wait for input on
-all of the open sockets (@pxref{Waiting for I/O}).  This also allows the 
server to deal with
-additional connection requests.
-
-This particular server doesn't do anything interesting once it has
-gotten a message from a client.  It does close the socket for that
-client when it detects an end-of-file condition (resulting from the
-client shutting down its end of the connection).
-
-This program uses @code{make_socket} to set up the socket address
-(@pxref{Inet Example}).
-
address@hidden
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <netdb.h>
-
-#define PORT    5555
-#define MAXMSG  512
-
-int
-read_from_client (int filedes)
address@hidden
-  char buffer[MAXMSG];
-  int nbytes;
-
-  nbytes = read (filedes, buffer, MAXMSG);
-  if (nbytes < 0)
-    @{
-      /* @r{Read error} */
-      perror ("read");
-      exit (EXIT_FAILURE);
-    @}
-  else if (nbytes == 0)
-    /* @r{End of file} */
-    return -1;
-  else
-    @{
-      /* @r{Data read} */
-      fprintf (stderr, "Server: got message: `%s'\n", buffer);
-      return 0;
-    @}
address@hidden
-
-int
-main (void)
address@hidden
-  extern int make_socket (uint16_t port);
-  int sock;
-  fd_set active_fd_set, read_fd_set;
-  int i;
-  struct sockaddr_in clientname;
-  size_t size;
-
-  /* @r{Create the socket and set it up to accept connections.} */
-  sock = make_socket (PORT);
-  if (listen (sock, 1) < 0)
-    @{
-      perror ("listen");
-      exit (EXIT_FAILURE);
-    @}
-
-  /* @r{Initialize the set of active sockets.} */
-  FD_ZERO (&active_fd_set);
-  FD_SET (sock, &active_fd_set);
-
-  while (1)
-    @{
-      /* @r{Block until input arrives on one or more active sockets.} */
-      read_fd_set = active_fd_set;
-      if (select (FD_SETSIZE, &read_fd_set, NULL, NULL, NULL) < 0)
-        @{
-          perror ("select");
-          exit (EXIT_FAILURE);
-        @}
-
-      /* @r{Service all the sockets with input pending.} */
-      for (i = 0; i < FD_SETSIZE; ++i)
-        if (FD_ISSET (i, &read_fd_set))
-          @{
-            if (i == sock)
-              @{
-                /* @r{Connection request on original socket} */
-                int new;
-                size = sizeof (clientname);
-                new = accept (sock,
-                              (struct sockaddr *) &clientname,
-                              &size);
-                if (new < 0)
-                  @{
-                    perror ("accept");
-                    exit (EXIT_FAILURE);
-                  @}
-                fprintf (stderr,
-                         "Server: connect from host %s, port %hd.\n",
-                         inet_ntoa (clientname.sin_addr),
-                         ntohs (clientname.sin_port));
-                FD_SET (new, &active_fd_set);
-              @}
-            else
-              @{
-                /* @r{Data arriving on an already connected socket} */
-                if (read_from_client (i) < 0)
-                  @{
-                    close (i);
-                    FD_CLR (i, &active_fd_set);
-                  @}
-              @}
-          @}
-    @}
address@hidden
-
address@hidden smallexample
-
address@hidden Out-of-Band Data
address@hidden Out-of-Band Data
-
address@hidden out-of-band data
address@hidden high-priority data
-Streams with connections permit @dfn{out-of-band} data that is
-delivered with higher priority than ordinary data.  Typically, the
-reason for sending out-of-band data is to send notice of an
-exceptional condition.  To send out-of-band data, use @code{send},
-specifying the flag @code{MSG_OOB} (@pxref{Sending Data}).
-
-Out-of-band data are received with higher priority because the
-receiving process need not read it in sequence; to read the next
-available out-of-band data, use @code{recv} with the @code{MSG_OOB}
-flag (@pxref{Receiving Data}).  Ordinary read operations do not read
-out-of-band data; they read only ordinary data.
-
address@hidden urgent socket condition
-When a socket finds that out-of-band data are on their way, it sends a
address@hidden signal to the owner process or process group of the
-socket.  You can specify the owner using the @code{F_SETOWN} command
-to the @code{fcntl} function (@pxref{Interrupt Input}).  You must
-also establish a handler for this signal, as described in @ref{Signal
-Handling}, in order to take appropriate action such as reading the
-out-of-band data.
-
-Alternatively, you can test for pending out-of-band data, or wait
-until there is out-of-band data, using the @code{select} function; it
-can wait for an exceptional condition on the socket (@pxref{Waiting
-for I/O}).
-
-Notification of out-of-band data (whether with @code{SIGURG} or with
address@hidden) indicates that out-of-band data are on the way; the data
-may not actually arrive until later.  If you try to read the
-out-of-band data before it arrives, @code{recv} fails with an
address@hidden error.
-
-Sending out-of-band data automatically places a ``mark'' in the stream
-of ordinary data, showing where in the sequence the out-of-band data
-``would have been''.  This is useful when the meaning of out-of-band
-data is ``cancel everything sent so far''.  Here is how you can test,
-in the receiving process, whether any ordinary data was sent before
-the mark:
-
address@hidden
-success = ioctl (socket, SIOCATMARK, &atmark);
address@hidden smallexample
-
-The @code{integer} variable @var{atmark} is set to a nonzero value if
-the socket's read pointer has reached the ``mark''.
-
address@hidden Posix  1.g specifies sockatmark for this ioctl.  sockatmark is 
not
address@hidden implemented yet.
-
-Here's a function to discard any ordinary data preceding the
-out-of-band mark:
-
address@hidden
-int
-discard_until_mark (int socket)
address@hidden
-  while (1)
-    @{
-      /* @r{This is not an arbitrary limit; any size will do.}  */
-      char buffer[1024];
-      int atmark, success;
-
-      /* @r{If we have reached the mark, return.}  */
-      success = ioctl (socket, SIOCATMARK, &atmark);
-      if (success < 0)
-        perror ("ioctl");
-      if (result)
-        return;
-
-      /* @r{Otherwise, read a bunch of ordinary data and discard it.}
-         @r{This is guaranteed not to read past the mark}
-         @r{if it starts before the mark.}  */
-      success = read (socket, buffer, sizeof buffer);
-      if (success < 0)
-        perror ("read");
-    @}
address@hidden
address@hidden smallexample
-
-If you don't want to discard the ordinary data preceding the mark, you
-may need to read some of it anyway, to make room in internal system
-buffers for the out-of-band data.  If you try to read out-of-band data
-and get an @code{EWOULDBLOCK} error, try reading some ordinary data
-(saving it so that you can use it when you want it) and see if that
-makes room.  Here is an example:
-
address@hidden
-struct buffer
address@hidden
-  char *buf;
-  int size;
-  struct buffer *next;
address@hidden;
-
-/* @r{Read the out-of-band data from SOCKET and return it}
-   @r{as a `struct buffer', which records the address of the data}
-   @r{and its size.}
-
-   @r{It may be necessary to read some ordinary data}
-   @r{in order to make room for the out-of-band data.}
-   @r{If so, the ordinary data are saved as a chain of buffers}
-   @r{found in the `next' field of the value.}  */
-
-struct buffer *
-read_oob (int socket)
address@hidden
-  struct buffer *tail = 0;
-  struct buffer *list = 0;
-
-  while (1)
-    @{
-      /* @r{This is an arbitrary limit.}
-         @r{Does anyone know how to do this without a limit?}  */
-#define BUF_SZ 1024
-      char *buf = (char *) xmalloc (BUF_SZ);
-      int success;
-      int atmark;
-
-      /* @r{Try again to read the out-of-band data.}  */
-      success = recv (socket, buf, BUF_SZ, MSG_OOB);
-      if (success >= 0)
-        @{
-          /* @r{We got it, so return it.}  */
-          struct buffer *link
-            = (struct buffer *) xmalloc (sizeof (struct buffer));
-          link->buf = buf;
-          link->size = success;
-          link->next = list;
-          return link;
-        @}
-
-      /* @r{If we fail, see if we are at the mark.}  */
-      success = ioctl (socket, SIOCATMARK, &atmark);
-      if (success < 0)
-        perror ("ioctl");
-      if (atmark)
-        @{
-          /* @r{At the mark; skipping past more ordinary data cannot help.}
-             @r{So just wait a while.}  */
-          sleep (1);
-          continue;
-        @}
-
-      /* @r{Otherwise, read a bunch of ordinary data and save it.}
-         @r{This is guaranteed not to read past the mark}
-         @r{if it starts before the mark.}  */
-      success = read (socket, buf, BUF_SZ);
-      if (success < 0)
-        perror ("read");
-
-      /* @r{Save this data in the buffer list.}  */
-      @{
-        struct buffer *link
-          = (struct buffer *) xmalloc (sizeof (struct buffer));
-        link->buf = buf;
-        link->size = success;
-
-        /* @r{Add the new link to the end of the list.}  */
-        if (tail)
-          tail->next = link;
-        else
-          list = link;
-        tail = link;
-      @}
-    @}
address@hidden
address@hidden smallexample
-
address@hidden Datagrams
address@hidden Datagram Socket Operations
-
address@hidden datagram socket
-This section describes how to use communication styles that don't use
-connections (styles @code{SOCK_DGRAM} and @code{SOCK_RDM}).  Using
-these styles, you group data into packets, and each packet is an
-independent communication.  You specify the destination for each
-packet individually.
-
-Datagram packets are like letters---you send each one independently
-with its own destination address, and they may arrive in the wrong
-order or not at all.
-
-The @code{listen} and @code{accept} functions are not allowed for
-sockets using connectionless communication styles.
-
address@hidden Sending Datagrams
address@hidden Sending Datagrams
address@hidden sending a datagram
address@hidden transmitting datagrams
address@hidden datagrams, transmitting
-
address@hidden sys/socket.h
-The normal way of sending data on a datagram socket is by using the
address@hidden function, declared in @file{sys/socket.h}.
-
-You can call @code{connect} on a datagram socket, but this only
-specifies a default destination for further data transmission on the
-socket.  When a socket has a default destination, you can use
address@hidden (@pxref{Sending Data}) or even @code{write} (@pxref{I/O
-Primitives}) to send a packet there.  You can cancel the default
-destination by calling @code{connect} using an address format of
address@hidden in the @var{addr} argument (@pxref{Connecting}, for
-more information about the @code{connect} function).
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int sendto (int @var{socket}, void address@hidden size_t 
@var{size}, int @var{flags}, struct sockaddr address@hidden, socklen_t 
@var{length})
-The @code{sendto} function transmits the data in the @var{buffer}
-through the socket @var{socket} to the destination address specified
-by the @var{addr} and @var{length} arguments.  The @var{size} argument
-specifies the number of bytes to be transmitted.
-
-The @var{flags} are interpreted the same way as for @code{send}
-(@pxref{Socket Data Options}).
-
-The return value and error conditions are also the same as for
address@hidden, but you cannot rely on the system to detect errors and
-report them; the most common error is that the packet is lost or there
-is no one at the specified address to receive it, and the operating
-system on your machine usually does not know this.
-
-It is also possible for one call to @code{sendto} to report an error
-owing to a problem related to a previous call.
-
-This function is defined as a cancellation point in multithreaded
-programs, so you have to be prepared for this and make sure that
-allocated resources (like memory, files descriptors, semaphores, etc.)
-are freed even if the thread is canceled.
-
address@hidden @xref{pthread_cleanup_push}, for a method how to do this.
address@hidden deftypefun
-
address@hidden Receiving Datagrams
address@hidden Receiving Datagrams
address@hidden receiving datagrams
-
-The @code{recvfrom} function reads a packet from a datagram socket and
-also tells you where it was sent from.  This function is declared in
address@hidden/socket.h}.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int recvfrom (int @var{socket}, void address@hidden, size_t 
@var{size}, int @var{flags}, struct sockaddr address@hidden, socklen_t 
address@hidden)
-The @code{recvfrom} function reads one packet from the socket
address@hidden into the buffer @var{buffer}.  The @var{size} argument
-specifies the maximum number of bytes to be read.
-
-If the packet is longer than @var{size} bytes, then you get the first
address@hidden bytes of the packet and the rest of the packet is lost.
-There's no way to read the rest of the packet.  Thus, when you use a
-packet protocol, you must always know how long of a packet to expect.
-
-The @var{addr} and @var{length-ptr} arguments are used to return the
-address where the packet came from (@pxref{Socket Addresses}).  For a
-socket in the local domain, the address information won't be
-meaningful, since you can't read the address of such a socket
-(@pxref{Local Namespace}).  You can specify a null pointer as the
address@hidden argument if you are not interested in this information.
-
-The @var{flags} are interpreted the same way as for @code{recv}
-(@pxref{Socket Data Options}).  The return value and error conditions
-are also the same as for @code{recv}.
-
-This function is defined as a cancellation point in multithreaded
-programs, so you have to be prepared for this and make sure that
-allocated resources (like memory, files descriptors, semaphores, etc.)
-are freed even if the thread is canceled.
address@hidden @xref{pthread_cleanup_push}, for a method how to do this.
address@hidden deftypefun
-
-You can use plain @code{recv} (@pxref{Receiving Data}) instead of
address@hidden if you don't need to find out who sent the packet
-(either because you know where it should come from or because you
-treat all possible senders alike).  Even @code{read} can be used if
-you don't want to specify @var{flags} (@pxref{I/O Primitives}).
-
address@hidden
address@hidden sendmsg and recvmsg are like readv and writev in that they
address@hidden use a series of buffers.  It's not clear this is worth
address@hidden supporting or that we support them.
address@hidden !!! they can do more; it is hairy
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden {Data Type} {struct msghdr}
address@hidden deftp
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int sendmsg (int @var{socket}, const struct msghdr 
address@hidden, int @var{flags})
-
-This function is defined as a cancellation point in multithreaded
-programs, so you have to be prepared for this and make sure that
-allocated resources (like memory, files descriptors, semaphores or
-whatever) are freed even if the thread is cancel.
address@hidden @xref{pthread_cleanup_push}, for a method how to do this.
address@hidden deftypefun
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int recvmsg (int @var{socket}, struct msghdr address@hidden, int 
@var{flags})
-
-This function is defined as a cancellation point in multithreaded
-programs, so you have to be prepared for this and make sure that
-allocated resources (like memory, files descriptors, semaphores or
-whatever) are freed even if the thread is canceled.
address@hidden @xref{pthread_cleanup_push}, for a method how to do this.
address@hidden deftypefun
address@hidden ignore
-
address@hidden Datagram Example
address@hidden Datagram Socket Example
-
-Here is a set of example programs that send messages over a datagram
-stream in the local namespace.  Both the client and server programs use
-the @code{make_named_socket} function that was presented in @ref{Local
-Socket Example}, to create and name their sockets.
-
-First, here is the server program.  It sits in a loop waiting for
-messages to arrive, bouncing each message back to the sender.
-Obviously this isn't a particularly useful program, but it does show
-the general ideas involved.
-
address@hidden
-#include <stdio.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#define SERVER  "/tmp/serversocket"
-#define MAXMSG  512
-
-int
-main (void)
address@hidden
-  int sock;
-  char message[MAXMSG];
-  struct sockaddr_un name;
-  size_t size;
-  int nbytes;
-
-  /* @r{Remove the file name first; it's ok if the call fails} */
-  unlink (SERVER);
-
-  /* @r{Make the socket, then loop endlessly.} */
-  sock = make_named_socket (SERVER);
-  while (1)
-    @{
-      /* @r{Wait for a datagram.} */
-      size = sizeof (name);
-      nbytes = recvfrom (sock, message, MAXMSG, 0,
-                         (struct sockaddr *) & name, &size);
-      if (nbytes < 0)
-        @{
-          perror ("recfrom (server)");
-          exit (EXIT_FAILURE);
-        @}
-
-      /* @r{Give a diagnostic message.} */
-      fprintf (stderr, "Server: got message: %s\n", message);
-
-      /* @r{Bounce the message back to the sender.} */
-      nbytes = sendto (sock, message, nbytes, 0,
-                       (struct sockaddr *) & name, size);
-      if (nbytes < 0)
-        @{
-          perror ("sendto (server)");
-          exit (EXIT_FAILURE);
-        @}
-    @}
address@hidden
-
address@hidden smallexample
-
address@hidden Example Receiver
address@hidden Example of Reading Datagrams
-
-Here is the client program corresponding to the server above.
-
-It sends a datagram to the server and then waits for a reply.  Notice
-that the socket for the client (as well as for the server) in this
-example has to be given a name.  This is so that the server can direct
-a message back to the client.  Since the socket has no associated
-connection state, the only way the server can do this is by
-referencing the name of the client.
-
address@hidden
-#include <stdio.h>
-#include <errno.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <sys/socket.h>
-#include <sys/un.h>
-
-#define SERVER  "/tmp/serversocket"
-#define CLIENT  "/tmp/mysocket"
-#define MAXMSG  512
-#define MESSAGE "Yow!!! Are we having fun yet?!?"
-
-int
-main (void)
address@hidden
-  extern int make_named_socket (const char *name);
-  int sock;
-  char message[MAXMSG];
-  struct sockaddr_un name;
-  size_t size;
-  int nbytes;
-
-  /* @r{Make the socket.} */
-  sock = make_named_socket (CLIENT);
-
-  /* @r{Initialize the server socket address.} */
-  name.sun_family = AF_LOCAL;
-  strcpy (name.sun_path, SERVER);
-  size = strlen (name.sun_path) + sizeof (name.sun_family);
-
-  /* @r{Send the datagram.} */
-  nbytes = sendto (sock, MESSAGE, strlen (MESSAGE) + 1, 0,
-                   (struct sockaddr *) & name, size);
-  if (nbytes < 0)
-    @{
-      perror ("sendto (client)");
-      exit (EXIT_FAILURE);
-    @}
-
-  /* @r{Wait for a reply.} */
-  nbytes = recvfrom (sock, message, MAXMSG, 0, NULL, 0);
-  if (nbytes < 0)
-    @{
-      perror ("recfrom (client)");
-      exit (EXIT_FAILURE);
-    @}
-
-  /* @r{Print a diagnostic message.} */
-  fprintf (stderr, "Client: got message: %s\n", message);
-
-  /* @r{Clean up.} */
-  remove (CLIENT);
-  close (sock);
address@hidden
-
address@hidden smallexample
-
-Keep in mind that datagram socket communications are unreliable.  In
-this example, the client program waits indefinitely if the message
-never reaches the server or if the server's response never comes back.
-It's up to the user running the program to kill and restart it if
-desired.  A more automatic solution could be to use @code{select}
-(@pxref{Waiting for I/O}), to establish a time-out period for the
-reply, and in case of time-out either resend the message or shut down
-the socket and exit.
-
address@hidden Inetd
address@hidden The @code{inetd} Daemon
-
-We've explained above how to write a server program that does its own
-listening.  Such a server must already be running in order for anyone
-to connect to it.
-
-Another way to provide a service on an Internet port is to let the daemon
-program @code{inetd} do the listening.  @code{inetd} is a program that
-runs all the time and waits (using @code{select}) for messages on a
-specified set of ports.  When it receives a message, it accepts the
-connection (if the socket style calls for connections) and then forks a
-child process to run the corresponding server program.  You specify the
-ports and their programs in the file @file{/etc/inetd.conf}.
-
address@hidden Inetd Servers
address@hidden @code{inetd} Servers
-
-Writing a server program to be run by @code{inetd} is very simple.  Each time
-someone requests a connection to the appropriate port, a new server
-process starts.  The connection already exists at this time; the
-socket is available as the standard input descriptor and as the
-standard output descriptor (descriptors 0 and 1) in the server
-process.  Thus the server program can begin reading and writing data
-right away.  Often the program needs only the ordinary I/O facilities;
-in fact, a general-purpose filter program that knows nothing about
-sockets can work as a byte-stream server run by @code{inetd}.
-
-You can also use @code{inetd} for servers that use connectionless
-communication styles.  For these servers, @code{inetd} does not try to accept
-a connection since no connection is possible.  It just starts the
-server program, which can read the incoming datagram packet from
-descriptor 0.  The server program can handle one request and then
-exit, or you can choose to write it to keep reading more requests
-until no more arrive, and then exit.  You must specify which of these
-two techniques the server uses when you configure @code{inetd}.
-
address@hidden Configuring Inetd
address@hidden Configuring @code{inetd}
-
-The file @file{/etc/inetd.conf} tells @code{inetd} which ports to
-listen to and what server programs to run for them.  Normally, each
-entry in the file is one line, but you can split it onto multiple
-lines provided all but the first line of the entry start with white
-space.  Lines that start with @samp{#} are comments.
-
-Here are two standard entries in @file{/etc/inetd.conf}:
-
address@hidden
-ftp    stream  tcp     nowait  root    /libexec/ftpd   ftpd
-talk   dgram   udp     wait    root    /libexec/talkd  talkd
address@hidden smallexample
-
-An entry has this format:
-
address@hidden
address@hidden @var{style} @var{protocol} @var{wait} @var{user} @var{program} 
@var{arguments}
address@hidden smallexample
-
-The @var{service} field says which service this program provides.  It
-should be the name of a service defined in @file{/etc/services}.
address@hidden uses @var{service} to decide which port to listen on for
-this entry.
-
-The fields @var{style} and @var{protocol} specify the communication
-style and the protocol to use for the listening socket.  The style
-should be the name of a communication style, converted to lower case
-and with @samp{SOCK_} deleted---for example, @samp{stream} or
address@hidden  @var{protocol} should be one of the protocols listed in
address@hidden/etc/protocols}.  The typical protocol names are @samp{tcp} for
-byte-stream connections and @samp{udp} for unreliable datagrams.
-
-The @var{wait} field should be either @samp{wait} or @samp{nowait}.
-Use @samp{wait} if @var{style} is a connectionless style and the
-server, once started, handles multiple requests as they come in.
-Use @samp{nowait} if @code{inetd} should start a new process for each message
-or request that comes in.  If @var{style} uses connections, then
address@hidden @strong{must} be @samp{nowait}.
-
address@hidden is the user name that the server should run as.  @code{inetd} 
runs
-as root, so it can set the user @acronym{ID} of its children arbitrarily.  It's
-best to avoid using @samp{root} for @var{user} if you can; but some
-servers, such as Telnet and @acronym{FTP}, read a username and password
-themselves.  These servers need to be root initially so they can log
-in as commanded by the data coming over the network.
-
address@hidden together with @var{arguments} specifies the command to
-run to start the server.  @var{program} should be an absolute file
-name specifying the executable file to run.  @var{arguments} consists
-of any number of white-space-separated words, which become the
-command-line arguments of @var{program}.  The first word in
address@hidden is argument zero, which should by convention be the
-program name itself (sans directories).
-
-If you edit @file{/etc/inetd.conf}, you can tell @code{inetd} to
-reread the file and obey its new contents by sending the @code{inetd}
-process the @code{SIGHUP} signal.  You'll have to use @code{ps} to
-determine the process @acronym{ID} of the @code{inetd} process, since
-it is not fixed.
-
address@hidden !!! could document /etc/inetd.sec
-
address@hidden Socket Options
address@hidden Socket Options
address@hidden socket options
-
-This section describes how to read or set various options that modify
-the behavior of sockets and their underlying communications protocols.
-
address@hidden level, for socket options
address@hidden socket option level
-When you are manipulating a socket option, you must specify which
address@hidden the option pertains to.  This describes whether the option
-applies to the socket interface, or to a lower-level communications
-protocol interface.
-
address@hidden Socket Option Functions
address@hidden Socket Option Functions
-
address@hidden sys/socket.h
-Here are the functions for examining and modifying socket options.
-They are declared in @file{sys/socket.h}.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int getsockopt (int @var{socket}, int @var{level}, int 
@var{optname}, void address@hidden, socklen_t address@hidden)
-The @code{getsockopt} function gets information about the value of
-option @var{optname} at level @var{level} for socket @var{socket}.
-
-The option value is stored in a buffer that @var{optval} points to.
-Before the call, you should supply in @address@hidden the
-size of this buffer. On return, it contains the number of bytes of
-information actually stored in the buffer.
-
-Most options interpret the @var{optval} buffer as a single @code{int}
-value.
-
-The actual return value of @code{getsockopt} is @code{0} on success
-and @code{-1} on failure.  The following @code{errno} error conditions
-are defined:
-
address@hidden @code
address@hidden EBADF
-The @var{socket} argument is not a valid file-descriptor.
-
address@hidden ENOTSOCK
-The descriptor @var{socket} is not a socket.
-
address@hidden ENOPROTOOPT
-The @var{optname} doesn't make sense for the given @var{level}.
address@hidden table
address@hidden deftypefun
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden int setsockopt (int @var{socket}, int @var{level}, int 
@var{optname}, void address@hidden, socklen_t @var{optlen})
-This function is used to set the socket option @var{optname} at level
address@hidden for socket @var{socket}.  The value of the option is passed
-in the buffer @var{optval} of size @var{optlen}.
-
address@hidden Argh. -zw
address@hidden
address@hidden 6pt
-The return value and error codes for @code{setsockopt} are the same as
-for @code{getsockopt}.
address@hidden iftex
address@hidden
-The return value and error codes for @code{setsockopt} are the same as
-for @code{getsockopt}.
address@hidden ifinfo
-
address@hidden deftypefun
-
address@hidden Socket-Level Options
address@hidden Socket-Level Options
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden Constant int SOL_SOCKET
-Use this constant as the @var{level} argument to @code{getsockopt} or
address@hidden to manipulate the socket-level options described in
-this section.
address@hidden deftypevr
-
address@hidden sys/socket.h
address@hidden
-Here is a table of socket-level option names; all are defined in the
-header file @file{sys/socket.h}.
-
address@hidden @code
address@hidden sys/socket.h
address@hidden BSD
address@hidden SO_DEBUG
address@hidden Extra blank line here makes the table look better.
-
-This option toggles recording of debugging information in the underlying
-protocol modules.  The value has type @code{int}; a nonzero value means
-``yes''.
address@hidden !!! should say how this is used
address@hidden OK, anyone who knows, please explain.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden SO_REUSEADDR
-This option controls whether @code{bind} (@pxref{Setting Address})
-should permit reuse of local addresses for this socket.  If you enable
-this option, you can actually have two sockets with the same Internet
-port number; but the system won't allow you to use the two identically
-named sockets in a way that would confuse the Internet.  The reason
-for this option is that some higher-level Internet protocols,
-including @acronym{FTP}, require you to keep reusing the same port
-number.
-
-The value has type @code{int}; a nonzero value means ``yes''.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden SO_KEEPALIVE
-This option controls whether the underlying protocol should
-periodically transmit messages on a connected socket.  If the peer
-fails to respond to these messages, the connection is considered
-broken.  The value has type @code{int}; a nonzero value means
-``yes''.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden SO_DONTROUTE
-This option controls whether outgoing messages bypass the normal
-message routing facilities.  If set, messages are sent directly to the
-network interface instead.  The value has type @code{int}; a nonzero
-value means ``yes''.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden SO_LINGER
-This option specifies what should happen when the socket of a type
-that promises reliable delivery still has untransmitted messages when
-it is closed (@pxref{Closing a Socket}).  The value has type
address@hidden linger}.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden {Data Type} {struct linger}
-This structure type has the following members:
-
address@hidden @code
address@hidden int l_onoff
-This field is interpreted as a Boolean.  If nonzero, @code{close}
-blocks until the data are transmitted, or the time-out period has
-expired.
-
address@hidden int l_linger
-This specifies the time-out period, in seconds.
address@hidden table
address@hidden deftp
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden SO_BROADCAST
-This option controls whether datagrams may be broadcast from the socket.
-The value has type @code{int}; a nonzero value means ``yes''.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden SO_OOBINLINE
-If this option is set, out-of-band data received on the socket is
-placed in the normal input queue.  This permits it to be read using
address@hidden or @code{recv} without specifying the @code{MSG_OOB}
-flag (@pxref{Out-of-Band Data}).  The value has type @code{int}; a
-nonzero value means ``yes''.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden SO_SNDBUF
-This option gets or sets the size of the output buffer.  The value is a
address@hidden, which is the size in bytes.
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden SO_RCVBUF
-This option gets or sets the size of the input buffer.  The value is a
address@hidden, which is the size in bytes.
-
address@hidden sys/socket.h
address@hidden GNU
address@hidden SO_STYLE
address@hidden sys/socket.h
address@hidden BSD
address@hidden SO_TYPE
-This option can be used with @code{getsockopt} only.  It is used to
-get the socket's communication style.  @code{SO_TYPE} is the
-historical name, and @code{SO_STYLE} is the preferred name in @acronym{GNU}.
-The value has type @code{int} and its value designates a communication
-style (@pxref{Communication Styles}).
-
address@hidden sys/socket.h
address@hidden BSD
address@hidden SO_ERROR
address@hidden Extra blank line here makes the table look better.
-
-This option can be used with @code{getsockopt} only.  It is used to reset
-the error status of the socket.  The value is an @code{int}, which represents
-the previous error status.
address@hidden !!! what is "socket error status"?  this is never defined.
address@hidden table
-
address@hidden Networks Database
address@hidden Networks Database
address@hidden networks database
address@hidden converting network-number to network-name
address@hidden converting network-name to network-number
-
address@hidden /etc/networks
address@hidden netdb.h
-Many systems come with a database that records a list of networks
-known to the system developer.  This is usually kept either in the
-file @file{/etc/networks} or in an equivalent from a name server.
-This database is useful for routing programs such as @code{route}, but
-it is not useful for programs that simply communicate over the
-network.  We provide functions to access this database, which are
-declared in @file{netdb.h}.
-
address@hidden netdb.h
address@hidden BSD
address@hidden {Data Type} {struct netent}
-This data type is used to represent information about entries in the
-networks database.  It has the following members:
-
address@hidden @code
address@hidden char *n_name
-This is the ``official'' name of the network.
-
address@hidden char **n_aliases
-These are alternative names for the network, represented as a vector
-of strings.  A null pointer terminates the array.
-
address@hidden int n_addrtype
-This is the type of the network number; this is always equal to
address@hidden for Internet networks.
-
address@hidden unsigned long int n_net
-This is the network number.  Network numbers are returned in host
-byte order (@pxref{Byte Order}).
address@hidden table
address@hidden deftp
-
-Use the @code{getnetbyname} or @code{getnetbyaddr} functions to search
-the networks database for information about a specific network.  The
-information is returned in a statically allocated structure; you must
-copy the information if you need to save it.
-
address@hidden netdb.h
address@hidden BSD
address@hidden {struct netent *} getnetbyname (const char address@hidden)
-The @code{getnetbyname} function returns information about the network
-named @var{name}.  It returns a null pointer if there is no such
-network.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden BSD
address@hidden {struct netent *} getnetbyaddr (unsigned long int @var{net}, int 
@var{type})
-The @code{getnetbyaddr} function returns information about the network
-of type @var{type} with number @var{net}.  You should specify a value of
address@hidden for the @var{type} argument for Internet networks.
-
address@hidden returns a null pointer if there is no such
-network.
address@hidden deftypefun
-
-You can also scan the networks database using @code{setnetent},
address@hidden and @code{endnetent}.  Be careful when using these
-functions, because they are not reentrant.
-
address@hidden netdb.h
address@hidden BSD
address@hidden void setnetent (int @var{stayopen})
-This function opens and rewinds the networks database.
-
-If the @var{stayopen} argument is nonzero, this sets a flag so that
-subsequent calls to @code{getnetbyname} or @code{getnetbyaddr} will
-not close the database (as they usually would).  This makes for more
-efficiency if you call those functions several times, by avoiding
-reopening the database for each call.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden BSD
address@hidden {struct netent *} getnetent (void)
-This function returns the next entry in the networks database.  It
-returns a null pointer if there are no more entries.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden BSD
address@hidden void endnetent (void)
-This function closes the networks database.
address@hidden deftypefun
-
address@hidden Low-Level Terminal Interface
address@hidden %MENU% How to change the characteristics of a terminal device
address@hidden Low-Level Terminal Interface
-
-This chapter describes functions that are specific to terminal
-devices.  You can use these functions to do things like turn off input
-echoing; set serial-line characteristics, such as line speed and flow
-control; and change which characters are used for end of file,
-command-line editing, sending signals and similar control functions.
-
-Most of the functions in this chapter operate on file descriptors.
address@hidden I/O}, for more information about what a file
-descriptor is and how to open a file descriptor for a terminal device.
-
address@hidden Is It a Terminal
address@hidden Identifying Terminals
address@hidden terminal identification
address@hidden identifying terminals
-
-The functions described in this chapter only work on files that
-correspond to terminal devices.  You can find out whether a file
-descriptor is associated with a terminal by using the @code{isatty}
-function.
-
address@hidden unistd.h
-Prototypes for the functions in this section are declared in the header
-file @file{unistd.h}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int isatty (int @var{filedes})
-This function returns @code{1} if @var{filedes} is a file descriptor
-associated with an open terminal device and @math{0} otherwise.
address@hidden deftypefun
-
-If a file descriptor is associated with a terminal, you can get its
-associated file-name using the @code{ttyname} function.  See also the
address@hidden function, described in @ref{Identifying the Terminal}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden {char *} ttyname (int @var{filedes})
-If the file descriptor @var{filedes} is associated with a terminal
-device, the @code{ttyname} function returns a pointer to a
-statically allocated, null-terminated string containing the file name of
-the terminal file.  The value is a null pointer if the file descriptor
-isn't associated with a terminal, or if the file name cannot be determined.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int ttyname_r (int @var{filedes}, char address@hidden, size_t 
@var{len})
-The @code{ttyname_r} function is similar to the @code{ttyname} function
-except that it places its result into the user-specified buffer starting
-at @var{buf} with length @var{len}.
-
-The normal return value from @code{ttyname_r} is @math{0}.  Otherwise,
-an error number is returned to indicate the error.  The following
address@hidden error conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden ENOTTY
-The @var{filedes} is not associated with a terminal.
-
address@hidden ERANGE
-The buffer length @var{len} is too small to store the string to be
-returned.
address@hidden table
address@hidden deftypefun
-
address@hidden I/O Queues
address@hidden I/O Queues
-
-Many of the remaining functions in this section refer to the input and
-output queues of a terminal device.  These queues implement a form of
-buffering @emph{within the kernel} independent of the buffering
-implemented by I/O address@hidden Loosemore, et al.,
-``Input/Output on Streams'' (see chap. 1, n. 1).}
-
address@hidden terminal input queue
address@hidden typeahead buffer
-The @dfn{terminal input queue} is also sometimes referred to as its
address@hidden buffer}.  It holds the characters that have been received
-from the terminal but not yet read by any process.
-
-The size of the input queue is described by the @code{MAX_INPUT} and
address@hidden@code{_POSIX_MAX_INPUT}} parameters (@pxref{Limits for Files}).
-You are guaranteed a queue size of at least @code{MAX_INPUT}, but the
-queue might be larger, and might even dynamically change size.  If
-input flow control is enabled by setting the @code{IXOFF} input-mode
-bit (@pxref{Input Modes}), the terminal driver transmits STOP and
-START characters to the terminal when necessary to prevent the queue
-from overflowing.  Otherwise, input may be lost if it comes in too
-fast from the terminal.  In canonical mode, all input stays in the
-queue until a newline character is received, so the terminal input
-queue can fill up when you type a very long line (@pxref{Canonical or
-Not}).
-
address@hidden terminal output queue
-The @dfn{terminal output queue} is like the input queue, but for
-output; it contains characters that have been written by processes,
-but not yet transmitted to the terminal.  If output flow control is
-enabled by setting the @code{IXON} input-mode bit (@pxref{Input
-Modes}), the terminal driver obeys START and STOP characters sent by
-the terminal to stop and restart transmission of output.
-
address@hidden the terminal input queue means discarding any characters
-that have been received but not yet read.  Similarly, clearing the
-terminal output queue means discarding any characters that have been
-written but not yet transmitted.
-
address@hidden Canonical or Not
address@hidden Two Styles of Input: Canonical or Not
-
address@hidden systems support two basic modes of input: canonical and
-noncanonical.
-
address@hidden canonical-input processing
-In @dfn{canonical-input processing} mode, terminal input is processed
-in lines terminated by newline (@code{'\n'}), @acronym{EOF}, or
address@hidden characters.  No input can be read until an entire line
-has been typed by the user, and the @code{read} function (@pxref{I/O
-Primitives}) returns at most a single line of input, no matter how
-many bytes are requested.
-
-In canonical-input mode, the operating system provides input-editing
-facilities---some characters are interpreted specially to perform
-editing operations within the current line of text, such as ERASE and
-KILL (@pxref{Editing Characters}).
-
-The constants @code{_POSIX_MAX_CANON} and @code{MAX_CANON}
-parameterize the maximum number of bytes that may appear in a single
-line of canonical input (@pxref{Limits for Files}).  You are
-guaranteed a maximum line length of at least @code{MAX_CANON} bytes,
-but the maximum might be larger, and might even dynamically change
-size.
-
address@hidden noncanonical-input processing
-In @dfn{noncanonical-input processing} mode, characters are not
-grouped into lines, and ERASE and KILL processing is not performed.
-The granularity with which bytes are read in noncanonical input mode
-is controlled by the MIN and TIME settings (@pxref{Noncanonical
-Input}).
-
-Most programs use canonical-input mode, because this gives the user a
-way to edit input line by line.  The usual reason to use noncanonical
-mode is when the program accepts single-character commands or provides
-its own editing facilities.
-
-The choice of canonical- or noncanonical- input is controlled by the
address@hidden flag in the @code{c_lflag} member of @code{struct termios}
-(@pxref{Local Modes}).
-
address@hidden Terminal Modes
address@hidden Terminal Modes
-
address@hidden termios.h
-This section describes the various terminal attributes that control
-how input and output are done.  The functions, data structures and
-symbolic constants are all declared in the header file
address@hidden
-
-Don't confuse terminal attributes with file attributes.  A device
-special file that is associated with a terminal has file attributes as
-described in @ref{File Attributes}.  These are unrelated to the
-attributes of the terminal device itself, which are discussed in this
-section.
-
address@hidden Mode Data Types
address@hidden Terminal Mode Data Types
address@hidden terminal mode data types
-
-The entire collection of attributes of a terminal is stored in a
-structure of type @code{struct termios}.  This structure is used
-with the functions @code{tcgetattr} and @code{tcsetattr} to read
-and set the attributes.
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden {Data Type} {struct termios}
-This is a structure that records all the I/O attributes of a terminal.  The
-structure includes at least the following members:
-
address@hidden @code
address@hidden tcflag_t c_iflag
-This is a bit mask specifying flags for input modes (@pxref{Input Modes}).
-
address@hidden tcflag_t c_oflag
-This is a bit mask specifying flags for output modes (@pxref{Output Modes}).
-
address@hidden tcflag_t c_cflag
-This is a bit mask specifying flags for control modes (@pxref{Control Modes}).
-
address@hidden tcflag_t c_lflag
-This is a bit mask specifying flags for local modes (@pxref{Local Modes}).
-
address@hidden cc_t c_cc[NCCS]
-This is an array specifying which characters are associated with various
-control functions (@pxref{Special Characters}).
address@hidden table
-
-The @code{struct termios} structure also contains members that encode
-input and output transmission speeds, but the representation is not
-specified.  @xref{Line Speed}, for how to examine and store the speed
-values.
address@hidden deftp
-
-The following sections describe the details of the members of the
address@hidden termios} structure:
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden {Data Type} tcflag_t
-This is an unsigned integer type used to represent the various
-bit masks for terminal flags.
address@hidden deftp
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden {Data Type} cc_t
-This is an unsigned integer type used to represent characters
-associated with various terminal-control functions.
address@hidden deftp
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro int NCCS
-The value of this macro is the number of elements in the @code{c_cc}
-array.
address@hidden deftypevr
-
address@hidden Mode Functions
address@hidden Terminal Mode Functions
address@hidden terminal mode functions
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden int tcgetattr (int @var{filedes}, struct termios address@hidden)
-This function is used to examine the attributes of the terminal
-device with file descriptor @var{filedes}.  The attributes are returned
-in the structure that @var{termios-p} points to.
-
-If successful, @code{tcgetattr} returns @math{0}.  A return value of @math{-1}
-indicates an error.  The following @code{errno} error conditions are
-defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden ENOTTY
-The @var{filedes} is not associated with a terminal.
address@hidden table
address@hidden deftypefun
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden int tcsetattr (int @var{filedes}, int @var{when}, const struct 
termios address@hidden)
-This function sets the attributes of the terminal device with file
-descriptor @var{filedes}.  The new attributes are taken from the
-structure that @var{termios-p} points to.
-
-The @var{when} argument specifies how to deal with input and output
-already queued.  It can be one of the following values:
-
address@hidden @code
address@hidden termios.h
address@hidden POSIX.1
address@hidden TCSANOW
address@hidden TCSANOW
-Make the change immediately.
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden TCSADRAIN
address@hidden TCSADRAIN
-Make the change after waiting until all queued output has been written.
-You should usually use this option when changing parameters that affect
-output.
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden TCSAFLUSH
address@hidden TCSAFLUSH
-This is like @code{TCSADRAIN}, but also discards any queued input.
-
address@hidden termios.h
address@hidden BSD
address@hidden TCSASOFT
address@hidden TCSASOFT
-This is a flag bit that you can add to any of the above alternatives.
-Its meaning is to inhibit alteration of the state of the terminal
-hardware.  It is a @acronym{BSD} extension; it is only supported on 
@acronym{BSD} systems
-and the @acronym{GNU} system.
-
-Using @code{TCSASOFT} is exactly the same as setting the @code{CIGNORE}
-bit in the @code{c_cflag} member of the structure @var{termios-p} points
-to.  @xref{Control Modes}, for a description of @code{CIGNORE}.
address@hidden table
-
-If this function is called from a background process on its controlling
-terminal, normally all processes in the process group are sent a
address@hidden signal, in the same way as if the process were trying to
-write to the terminal.  The exception is if the calling process itself
-is ignoring or blocking @code{SIGTTOU} signals, in which case the
-operation is performed and no signal is sent (@pxref{Job Control}).
-
-If successful, @code{tcsetattr} returns @math{0}.  A return value of
address@hidden indicates an error.  The following @code{errno} error
-conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden ENOTTY
-The @var{filedes} is not associated with a terminal.
-
address@hidden EINVAL
-Either the value of the @code{when} argument is not valid, or there is
-something wrong with the data in the @var{termios-p} argument.
address@hidden table
address@hidden deftypefun
-
-Although @code{tcgetattr} and @code{tcsetattr} specify the terminal
-device with a file descriptor, the attributes are those of the
-terminal device itself and not of the file descriptor.  This means
-that the effects of changing terminal attributes are persistent; if
-another process opens the terminal file later on, it will see the
-changed attributes, even though it doesn't have anything to do with
-the open file descriptor you originally specified in changing the
-attributes.
-
-Similarly, if a single process has multiple or duplicated file
-descriptors for the same terminal device, changing the terminal
-attributes affects input and output to all of these file
-descriptors.  This means, for example, that you can't open one file
-descriptor or stream to read from a terminal in the normal
-line-buffered, echoed mode; and simultaneously have another file
-descriptor for the same terminal that you use to read from it in
-single-character, nonechoed mode.  Instead, you have to explicitly
-switch the terminal back and forth between the two modes.
-
address@hidden Setting Modes
address@hidden Setting Terminal Modes Properly
-
-When you set terminal modes, you should call @code{tcgetattr} first to
-get the current modes of the particular terminal device, modify only
-those modes that you are really interested in, and store the result with
address@hidden
-
-It's a bad idea to simply initialize a @code{struct termios} structure
-to a chosen set of attributes and pass it directly to @code{tcsetattr}.
-Your program may be run years from now, on systems that support members
-not documented in this manual.  The way to avoid setting these members
-to unreasonable values is to avoid changing them.
-
-What's more, different terminal devices may require different mode
-settings in order to function properly.  So you should avoid blindly
-copying attributes from one terminal device to another.
-
-When a member contains a collection of independent flags, as the
address@hidden, @code{c_oflag} and @code{c_cflag} members do, even
-setting the entire member is a bad idea, because particular operating
-systems have their own flags.  Instead, you should start with the
-current value of the member and alter only the flags whose values matter
-in your program, leaving any other flags unchanged.
-
-Here is an example of how to set one flag (@code{ISTRIP}) in the
address@hidden termios} structure while properly preserving all the other
-data in the structure:
-
address@hidden
-
-int
-set_istrip (int desc, int value)
address@hidden
-  struct termios settings;
-  int result;
-
-
-
-  result = tcgetattr (desc, &settings);
-  if (result < 0)
-    @{
-      perror ("error in tcgetattr");
-      return 0;
-    @}
-
-
-  settings.c_iflag &= ~ISTRIP;
-  if (value)
-    settings.c_iflag |= ISTRIP;
-
-
-  result = tcsetattr (desc, TCSANOW, &settings);
-  if (result < 0)
-    @{
-      perror ("error in tcsetattr");
-      return 0;
-   @}
-  return 1;
address@hidden
-
address@hidden smallexample
-
address@hidden Input Modes
address@hidden Input Modes
-
-This section describes the terminal attribute flags that control
-fairly low-level aspects of input processing: handling of parity errors,
-break signals, flow control and @sc{ret} and @sc{lfd} characters.
-
-All of these flags are bits in the @code{c_iflag} member of the
address@hidden termios} structure.  The member is an integer, and you
-change flags using the operators @code{&}, @code{|} and @code{^}.  Don't
-try to specify the entire value for @code{c_iflag}---instead, change
-only specific flags and leave the rest untouched (@pxref{Setting
-Modes}).
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t INPCK
address@hidden parity checking
-If this bit is set, input parity-checking is enabled.  If it is not set,
-no checking at all is done for parity errors on input; the
-characters are simply passed through to the application.
-
-Parity checking on input processing is independent of whether parity
-detection and generation on the underlying terminal hardware is enabled
-(@pxref{Control Modes}).  For example, you could clear the @code{INPCK}
-input-mode flag and set the @code{PARENB} control-mode flag to ignore
-parity errors on input, but still generate parity on output.
-
-If this bit is set, what happens when a parity error is detected depends
-on whether the @code{IGNPAR} or @code{PARMRK} bits are set.  If neither
-of these bits are set, a byte with a parity error is passed to the
-application as a @code{'\0'} character.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t IGNPAR
-If this bit is set, any byte with a framing or parity error is ignored.
-This is only useful if @code{INPCK} is also set.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t PARMRK
-If this bit is set, input bytes with parity or framing errors are marked
-when passed to the program.  This bit is meaningful only when
address@hidden is set and @code{IGNPAR} is not set.
-
-The way erroneous bytes are marked is with 2 preceding bytes,
address@hidden and @code{0}.  Thus, the program actually reads 3 bytes for
-1 erroneous byte received from the terminal.
-
-If a valid byte has the value @code{0377} and @code{ISTRIP} (see
-below) is not set, the program might confuse it with the prefix that
-marks a parity error.  So a valid byte @code{0377} is passed to the
-program as 2 bytes, @code{0377} @code{0377}, in this case.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t ISTRIP
-If this bit is set, valid input bytes are stripped to 7 bits.
-Otherwise, all 8 bits are available for programs to read.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t IGNBRK
-If this bit is set, break conditions are ignored.
-
address@hidden break condition, detecting
-A @dfn{break condition} is defined in the context of asynchronous
-serial data transmission as a series of 0-value bits longer than a
-single byte.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t BRKINT
-If this bit is set and @code{IGNBRK} is not set, a break condition
-clears the terminal input and output queues and raises a @code{SIGINT}
-signal for the foreground process group associated with the terminal.
-
-If neither @code{BRKINT} nor @code{IGNBRK} are set, a break condition
-is passed to the application as a single @samp{\0} character if
address@hidden is not set, or otherwise as a three-character sequence
address@hidden, @samp{\0}, @samp{\0}.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t IGNCR
-If this bit is set, carriage-return characters (@samp{\r}) are
-discarded on input.  Discarding carriage return may be useful on
-terminals that send both carriage return and linefeed when you type the
address@hidden key.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t ICRNL
-If this bit is set and @code{IGNCR} is not set, carriage-return
-characters (@samp{\r}) received as input are passed to the application
-as newline characters (@samp{\n}).
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t INLCR
-If this bit is set, newline characters (@samp{\n}) received as input
-are passed to the application as carriage-return characters
-(@samp{\r}).
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t IXOFF
-If this bit is set, start/stop control on input is enabled.  In other
-words, the computer sends STOP and START characters as necessary to
-prevent input from coming in faster than programs are reading it.  The
-idea is that the actual terminal hardware that is generating the input
-data responds to a STOP character by suspending transmission and to a
-START character by resuming transmission (@pxref{Start/Stop
-Characters}).
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t IXON
-If this bit is set, start/stop control on output is enabled.  In other
-words, if the computer receives a STOP character, it suspends output
-until a START character is received.  In this case, the STOP and START
-characters are never passed to the application program.  If this bit
-is not set, then START and STOP can be read as ordinary characters
-(@pxref{Start/Stop Characters}).
address@hidden !!! mention this interferes with using C-s and C-q for programs 
like emacs
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t IXANY
-If this bit is set, any input character restarts output when output has
-been suspended with the STOP character.  Otherwise, only the START
-character restarts output.
-
-This is a @acronym{BSD} extension; it exists only on @acronym{BSD} systems and 
the @acronym{GNU} system.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t IMAXBEL
-If this bit is set, then filling up the terminal input buffer sends a
-BEL character (code @code{007}) to the terminal to ring the bell.
-
-This is a @acronym{BSD} extension.
address@hidden deftypevr
-
address@hidden Output Modes
address@hidden Output Modes
-
-This section describes the terminal flags and fields that control how
-output characters are translated and padded for display.  All of these
-are contained in the @code{c_oflag} member of the @address@hidden termios}}
-structure.
-
-The @code{c_oflag} member itself is an integer, and you change the
-flags and fields using the operators @code{&}, @code{|} and @code{^}.
-Don't try to specify the entire value for @code{c_oflag}---instead,
-change only specific flags and leave the rest untouched
-(@pxref{Setting Modes}).
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t OPOST
-If this bit is set, output data is processed in some unspecified way so
-that it is displayed appropriately on the terminal device.  This
-typically includes mapping newline characters (@code{'\n'}) onto
-carriage return and linefeed pairs.
-
-If this bit isn't set, the characters are transmitted as-is.
address@hidden deftypevr
-
-The following 3 bits are @acronym{BSD} features, and they exist only
-on @acronym{BSD} systems and the @acronym{GNU} system.  They are
-effective only if @code{OPOST} is set.
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t ONLCR
-If this bit is set, convert the newline character on output into a pair
-of characters, carriage return followed by linefeed.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t OXTABS
-If this bit is set, convert tab characters on output into the appropriate
-number of spaces to emulate a tab stop every eight columns.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t ONOEOT
-If this bit is set, discard @kbd{C-d} characters (code @code{004}) on
-output.  These characters cause many dial-up terminals to disconnect.
address@hidden deftypevr
-
address@hidden Control Modes
address@hidden Control Modes
-
-This section describes the terminal flags and fields that control
-parameters usually associated with asynchronous serial data
-transmission.  These flags may not make sense for other kinds of
-terminal ports (such as a network connection pseudoterminal).  All of
-these are contained in the @code{c_cflag} member of the @code{struct
-termios} structure.
-
-The @code{c_cflag} member itself is an integer, and you change the
-flags and fields using the operators @code{&}, @code{|} and @code{^}.
-Don't try to specify the entire value for @code{c_cflag}---instead,
-change only specific flags and leave the rest untouched
-(@pxref{Setting Modes}).
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t CLOCAL
-If this bit is set, it indicates that the terminal is connected
-``locally'' and that the modem status lines (such as carrier detect)
-should be ignored.
address@hidden modem status lines
address@hidden carrier detect
-
-On many systems, if this bit is not set and you call @code{open}
-without the @code{O_NONBLOCK} flag set, @code{open} blocks until a
-modem connection is established.
-
-If this bit is not set and a modem disconnect is detected, a
address@hidden signal is sent to the controlling process group for the
-terminal (if it has one).  Normally, this causes the process to exit
-(@pxref{Signal Handling}).  Reading from the terminal after a disconnect
-causes an end-of-file condition, and writing causes an @code{EIO} error
-to be returned.  The terminal device must be closed and reopened to
-clear the condition.
address@hidden modem disconnect
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t HUPCL
-If this bit is set, a modem disconnect is generated when all processes
-that have the terminal device open have either closed the file or exited.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t CREAD
-If this bit is set, input can be read from the terminal.  Otherwise,
-input is discarded when it arrives.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t CSTOPB
-If this bit is set, 2 stop bits are used.  Otherwise, only 1 stop bit
-is used.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t PARENB
-If this bit is set, generation and detection of a parity bit are enabled.
address@hidden Modes}, for information on how input parity errors are handled.
-
-If this bit is not set, no parity bit is added to output characters, and
-input characters are not checked for correct parity.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t PARODD
-This bit is only useful if @code{PARENB} is set.  If @code{PARODD} is
-set, odd parity is used. Otherwise, even parity is used.
address@hidden deftypevr
-
-The control-mode flags also include a field for the number of bits per
-character.  You can use the @code{CSIZE} macro as a mask to extract
-the value, like this: @code{settings.c_cflag & CSIZE}.
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t CSIZE
-This is a mask for the number of bits per character.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t CS5
-This specifies 5 bits per byte.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t CS6
-This specifies 6 bits per byte.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t CS7
-This specifies 7 bits per byte.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t CS8
-This specifies 8 bits per byte.
address@hidden deftypevr
-
-The following 4 bits are @acronym{BSD} extensions; this exists only on
address@hidden systems and the @acronym{GNU} system.
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t CCTS_OFLOW
-If this bit is set, enable flow control of output based on the @acronym{CTS} 
wire
-(RS232 protocol).
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t CRTS_IFLOW
-If this bit is set, enable flow control of input based on the @acronym{RTS} 
wire
-(RS232 protocol).
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t MDMBUF
-If this bit is set, enable carrier-based flow control of output.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t CIGNORE
-If this bit is set, it says to ignore the control modes and line-speed
-values entirely.  This is only meaningful in a call to
address@hidden
-
-The @code{c_cflag} member and the line-speed values returned by
address@hidden and @code{cfgetospeed} will be unaffected by the
-call.  @code{CIGNORE} is useful if you want to set all the software
-modes in the other members, but leave the hardware details in
address@hidden unchanged.  (This is how the @code{TCSASOFT} flag to
address@hidden works.)
-
-This bit is never set in the structure filled in by @code{tcgetattr}.
address@hidden deftypevr
-
address@hidden Local Modes
address@hidden Local Modes
-
-This section describes the flags for the @code{c_lflag} member of the
address@hidden termios} structure.  These flags generally control
-higher-level aspects of input processing than the input-modes flags
-described in @ref{Input Modes}, such as echoing, signals and the
-choice of canonical- or noncanonical- input.
-
-The @code{c_lflag} member itself is an integer, and you change the
-flags and fields using the operators @code{&}, @code{|} and @code{^}.
-Don't try to specify the entire value for @code{c_lflag}---instead,
-change only specific flags and leave the rest untouched
-(@pxref{Setting Modes}).
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t ICANON
-This bit, if set, enables canonical-input processing mode.  Otherwise,
-input is processed in noncanonical mode (@pxref{Canonical or Not}).
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t ECHO
-If this bit is set, echoing of input characters back to the terminal
-is enabled.
address@hidden echo of terminal input
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t ECHOE
-If this bit is set, echoing indicates erasure of input with the ERASE
-character by erasing the last character in the current line from the
-screen.  Otherwise, the character erased is re-echoed to show what has
-happened (suitable for a printing terminal).
-
-This bit only controls the display behavior; the @code{ICANON} bit by
-itself controls actual recognition of the ERASE character and erasure of
-input, without which @code{ECHOE} is simply irrelevant.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t ECHOPRT
-This bit is like @code{ECHOE}---it enables display of the ERASE
-character in a way that is geared to a hard copy terminal.  When you
-type the ERASE character, a @samp{\} character is printed followed by
-the first character erased.  Typing the ERASE character again just
-prints the next character erased.  Then, the next time you type a
-normal character, a @samp{/} character is printed before the character
-echoes.
-
-This is a @acronym{BSD} extension, and exists only in @acronym{BSD} systems 
and the
address@hidden system.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t ECHOK
-This bit enables special display of the KILL character by moving to a
-new line after echoing the KILL character normally.  The behavior of
address@hidden (below) is nicer to look at.
-
-If this bit is not set, the KILL character echoes just as it would if it
-were not the KILL character.  Then it is up to the user to remember that
-the KILL character has erased the preceding input; there is no
-indication of this on the screen.
-
-This bit only controls the display behavior; the @code{ICANON} bit by
-itself controls actual recognition of the KILL character and erasure of
-input, without which @code{ECHOK} is simply irrelevant.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t ECHOKE
-This bit is similar to @code{ECHOK}.  It enables special display of the
-KILL character by erasing on the screen the entire line that has been
-killed.  This is a @acronym{BSD} extension, and exists only in @acronym{BSD} 
systems and the
address@hidden system.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t ECHONL
-If this bit is set and the @code{ICANON} bit is also set, then the
-newline (@code{'\n'}) character is echoed even if the @code{ECHO} bit
-is not set.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t ECHOCTL
-If this bit is set and the @code{ECHO} bit is also set, echo control
-characters with @samp{^} followed by the corresponding text character.
-Thus, @kbd{Control-A} echoes as @samp{^A}.  This is usually the
-preferred mode for interactive input, because echoing a control
-character back to the terminal could have some undesired effect on the
-terminal.
-
-This is a @acronym{BSD} extension, and exists only in @acronym{BSD}
-systems and the @acronym{GNU} system.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t ISIG
-This bit controls whether the INTR, QUIT and SUSP characters are
-recognized.  The functions associated with these characters are
-performed if and only if this bit is set.  Being in canonical- or
-noncanonical- input mode has no effect on the interpretation of these
-characters.
-
-You should use caution when disabling recognition of these characters.
-Programs that cannot be interrupted interactively are very
-user-unfriendly.  If you clear this bit, your program should provide
-some alternate interface that allows the user to interactively send
-the signals associated with these characters, or to escape from the
-program (@pxref{Signal Characters}).
address@hidden interactive signals, from terminal
-
-
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t IEXTEN
address@hidden gives @code{IEXTEN} implementation-defined meaning,
-so you cannot rely on this interpretation on all systems.
-
-On @acronym{BSD} systems and the @acronym{GNU} system, it enables the LNEXT 
and DISCARD characters
-(@pxref{Other Special}).
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t NOFLSH
-Normally, the INTR, QUIT and SUSP characters cause input and output
-queues for the terminal to be cleared.  If this bit is set, the queues
-are not cleared.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro tcflag_t TOSTOP
-If this bit is set and the system supports job control, then
address@hidden signals are generated by background processes that
-attempt to write to the terminal (@pxref{Access to the Terminal}).
address@hidden deftypevr
-
-The following bits are @acronym{BSD} extensions; they exist only in 
@acronym{BSD} systems
-and the @acronym{GNU} system.
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t ALTWERASE
-This bit determines how far the WERASE character should erase.  The
-WERASE character erases back to the beginning of a word; the question
-is, where do words begin?
-
-If this bit is clear, then the beginning of a word is a
-non-white-space character following a white-space character.  If the
-bit is set, then the beginning of a word is an alphanumeric character
-or underscore following a character which is none of those.
-
address@hidden Characters}, for more information about the WERASE character.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t FLUSHO
-This is the bit that toggles when the user types the DISCARD character.
-While this bit is set, all output is discarded (@pxref{Other Special}).
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t NOKERNINFO
-Setting this bit disables handling of the STATUS character
-(@pxref{Other Special}).
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro tcflag_t PENDIN
-If this bit is set, it indicates that there is a line of input that
-needs to be reprinted.  Typing the REPRINT character sets this bit;
-the bit remains set until reprinting is finished (@pxref{Editing
-Characters}).
address@hidden deftypevr
-
address@hidden EXTPROC is too obscure to document now.  --roland
-
address@hidden Line Speed
address@hidden Line Speed
address@hidden line speed
address@hidden baud rate
address@hidden terminal line speed
address@hidden terminal line speed
-
-The terminal line speed tells the computer how fast to read and write
-data on the terminal.
-
-If the terminal is connected to a real serial line, the terminal speed
-you specify actually controls the line---if it doesn't match the
-terminal's own idea of the speed, communication does not work.  Real
-serial ports accept only certain standard speeds.  Also, particular
-hardware may not support even all the standard speeds.  Specifying a
-speed of 0 hangs up a dial-up connection and turns off modem control
-signals.
-
-If the terminal is not a real serial line (for example, if it is a
-network connection), then the line speed won't really affect
-data-transmission speed, but some programs will use it to determine
-the amount of padding needed.  It's best to specify a line-speed value
-that matches the actual speed of the actual terminal, but you can
-safely experiment with different values to vary the amount of padding.
-
-There are actually two line speeds for each terminal---one for input
-and one for output.  You can set them independently, but most often
-terminals use the same speed for both directions.
-
-The speed values are stored in the @code{struct termios} structure, but
-don't try to access them in the @code{struct termios} structure
-directly.  Instead, you should use the following functions to read and
-store them:
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden speed_t cfgetospeed (const struct termios address@hidden)
-This function returns the output line-speed stored in the structure
address@hidden@var{termios-p}}.
address@hidden deftypefun
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden speed_t cfgetispeed (const struct termios address@hidden)
-This function returns the input line-speed stored in the structure
address@hidden@var{termios-p}}.
address@hidden deftypefun
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden int cfsetospeed (struct termios address@hidden, speed_t 
@var{speed})
-This function stores @var{speed} in @address@hidden as the output
-speed.  The normal return value is @math{0}; a value of @math{-1}
-indicates an error.  If @var{speed} is not a speed, @code{cfsetospeed}
-returns @math{-1}.
address@hidden deftypefun
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden int cfsetispeed (struct termios address@hidden, speed_t 
@var{speed})
-This function stores @var{speed} in @address@hidden as the input
-speed.  The normal return value is @math{0}; a value of @math{-1}
-indicates an error.  If @var{speed} is not a speed, @code{cfsetospeed}
-returns @math{-1}.
address@hidden deftypefun
-
address@hidden termios.h
address@hidden BSD
address@hidden int cfsetspeed (struct termios address@hidden, speed_t 
@var{speed})
-This function stores @var{speed} in @address@hidden as both the
-input and output speeds.  The normal return value is @math{0}; a value
-of @math{-1} indicates an error.  If @var{speed} is not a speed,
address@hidden returns @math{-1}.  This function is an extension in
-4.4 @acronym{BSD}.
address@hidden deftypefun
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden {Data Type} speed_t
-The @code{speed_t} type is an unsigned-integer data type used to
-represent line speeds.
address@hidden deftp
-
-The functions @code{cfsetospeed} and @code{cfsetispeed} report errors
-only for speed values that the system simply cannot handle.  If you
-specify a speed value that is basically acceptable, then those functions
-will succeed.  But they do not check that a particular hardware device
-can actually support the specified speeds---in fact, they don't know
-which device you plan to set the speed for.  If you use @code{tcsetattr}
-to set the speed of a particular device to a value that it cannot
-handle, @code{tcsetattr} returns @math{-1}.
-
address@hidden Note:} In the @acronym{GNU} library, the functions
-above accept speeds measured in bits per second as input, and they
-return speed values measured in bits per second.  Other libraries
-require speeds to be indicated by special codes.  For
address@hidden portability, you must use one of the following
-symbols to represent the speed; their precise numeric values are
-system dependent, but each name has a fixed meaning: @code{B110}
-stands for 110 bps, @code{B300} for 300 bps, and so on.  There is no
-portable way to represent any speed but these, but these are the only
-speeds that typical serial lines can support.
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden B0
address@hidden termios.h
address@hidden POSIX.1
address@hidden B50
address@hidden termios.h
address@hidden POSIX.1
address@hidden B75
address@hidden termios.h
address@hidden POSIX.1
address@hidden B110
address@hidden termios.h
address@hidden POSIX.1
address@hidden B134
address@hidden termios.h
address@hidden POSIX.1
address@hidden B150
address@hidden termios.h
address@hidden POSIX.1
address@hidden B200
address@hidden termios.h
address@hidden POSIX.1
address@hidden B300
address@hidden termios.h
address@hidden POSIX.1
address@hidden B600
address@hidden termios.h
address@hidden POSIX.1
address@hidden B1200
address@hidden termios.h
address@hidden POSIX.1
address@hidden B1800
address@hidden termios.h
address@hidden POSIX.1
address@hidden B2400
address@hidden termios.h
address@hidden POSIX.1
address@hidden B4800
address@hidden termios.h
address@hidden POSIX.1
address@hidden B9600
address@hidden termios.h
address@hidden POSIX.1
address@hidden B19200
address@hidden termios.h
address@hidden POSIX.1
address@hidden B38400
address@hidden termios.h
address@hidden GNU
address@hidden B57600
address@hidden termios.h
address@hidden GNU
address@hidden B115200
address@hidden termios.h
address@hidden GNU
address@hidden B230400
address@hidden termios.h
address@hidden GNU
address@hidden B460800
address@hidden
-B0  B50  B75  B110  B134  B150  B200
-B300  B600  B1200  B1800  B2400  B4800
-B9600  B19200  B38400  B57600  B115200
-B230400  B460800
address@hidden smallexample
-
address@hidden EXTA
address@hidden EXTB
address@hidden defines two additional speed symbols as aliases: @code{EXTA} is 
an
-alias for @code{B19200} and @code{EXTB} is an alias for @code{B38400}.
-These aliases are obsolete.
-
address@hidden Special Characters
address@hidden Special Characters
-
-In canonical input, the terminal driver recognizes a number of special
-characters that perform various control functions.  These include the
-ERASE character (usually @key{DEL}) for editing input, and other
-editing characters.  The INTR character (normally @kbd{C-c}) for
-sending a @code{SIGINT} signal, and other signal-raising characters,
-may be available in either canonical- or noncanonical- input mode.
-All these characters are described in this section.
-
-The particular characters used are specified in the @code{c_cc} member
-of the @code{struct termios} structure.  This member is an array; each
-element specifies the character for a particular role.  Each element has
-a symbolic constant that stands for the index of that element---for
-example, @code{VINTR} is the index of the element that specifies the INTR
-character, so storing @code{'='} in @address@hidden
-specifies @samp{=} as the INTR character.
-
address@hidden _POSIX_VDISABLE
-On some systems, you can disable a particular special-character
-function by specifying the value @code{_POSIX_VDISABLE} for that role.
-This value is unequal to any possible character code.  @xref{Options
-for Files}, for more information about how to tell whether the
-operating system you are using supports @code{_POSIX_VDISABLE}.
-
address@hidden Editing Characters
address@hidden Characters for Input Editing
-
-These special characters are active only in canonical-input mode
-(@pxref{Canonical or Not}).
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro int VEOF
address@hidden EOF character
-This is the subscript for the EOF character in the special control
-character array.  @address@hidden holds the character
-itself.
-
-The EOF character is recognized only in canonical-input mode.  It acts
-as a line terminator in the same way as a newline character, but if
-the EOF character is typed at the beginning of a line, it causes
address@hidden to return a byte count of 0, indicating end of file.  The
-EOF character itself is discarded.
-
-Usually, the EOF character is @kbd{C-d}.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro int VEOL
address@hidden @sc{eol} character
-This is the subscript for the @sc{eol} character in the special
-control character array.  @address@hidden holds the
-character itself.
-
-The @sc{eol} character is recognized only in canonical-input mode.  It
-acts as a line terminator, just like a newline character.  The
address@hidden character is not discarded; it is read as the last character
-in the input line.
-
address@hidden !!! example: this is set to ESC by 4.3 csh with "set filec" so 
it can
address@hidden complete partial lines without using cbreak or raw mode.
-
-You don't need to use the @sc{eol} character to make @key{RET} end a
-line.  Just set the @sc{icrnl} flag.  In fact, this is the default
-state of affairs.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro int VEOL2
address@hidden @sc{eol2} character
-This is the subscript for the @sc{EOL2} character in the special
-control character array.  @address@hidden holds the
-character itself.
-
-The @sc{EOL2} character works just like the @sc{eol} character (see
-above), but it can be a different character.  Thus, you can specify
-two characters to terminate an input line, by setting @sc{eol} to one
-of them and @sc{eol2} to the other.
-
-The @sc{eol2} character is a @acronym{BSD} extension; it exists only
-on @acronym{BSD} systems and the @acronym{GNU} system.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro int VERASE
address@hidden ERASE character
-This is the subscript for the ERASE character in the special control
-character array.  @address@hidden holds the
-character itself.
-
-The ERASE character is recognized only in canonical-input mode.  When
-the user types the erase character, the previous character typed is
-discarded. If the terminal generates multibyte character sequences,
-this may cause more than 1 byte of input to be discarded.  This cannot
-be used to erase past the beginning of the current line of text.  The
-ERASE character itself is discarded.
address@hidden !!! mention ECHOE here
-
-Usually, the ERASE character is @key{DEL}.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro int VWERASE
address@hidden WERASE character
-This is the subscript for the WERASE character in the special control
-character array.  @address@hidden holds the character
-itself.
-
-The WERASE character is recognized only in canonical mode.  It erases
-an entire word of prior input and any white space after it;
-white-space characters before the word are not erased.
-
-The definition of a ``word'' depends on the setting of the
address@hidden mode (@pxref{Local Modes}).
-
-If the @code{ALTWERASE} mode is not set, a word is defined as a sequence
-of any characters except space or tab.
-
-If the @code{ALTWERASE} mode is set, a word is defined as a sequence
-of characters containing only letters, numbers and underscores,
-optionally followed by one character that is not a letter, number or
-underscore.
-
-The WERASE character is usually @kbd{C-w}.
-
-This is a @acronym{BSD} extension.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro int VKILL
address@hidden KILL character
-This is the subscript for the KILL character in the special control
-character array.  @address@hidden holds the character
-itself.
-
-The KILL character is recognized only in canonical-input mode.  When
-the user types the kill character, the entire contents of the current
-line of input are discarded.  The kill character itself is discarded
-too.
-
-The KILL character is usually @kbd{C-u}.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro int VREPRINT
address@hidden REPRINT character
-This is the subscript for the REPRINT character in the special control
-character array.  @address@hidden holds the character
-itself.
-
-The REPRINT character is recognized only in canonical mode.  It reprints
-the current input line.  If some asynchronous output has come while you
-are typing, this lets you see the line you are typing clearly again.
-
-The REPRINT character is usually @kbd{C-r}.
-
-This is a @acronym{BSD} extension.
address@hidden deftypevr
-
address@hidden Signal Characters
address@hidden Characters that Cause Signals
-
-These special characters may be active in either canonical- or
-noncanonical-input mode, but only when the @code{ISIG} flag is set
-(@pxref{Local Modes}).
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro int VINTR
address@hidden INTR character
address@hidden interrupt character
-This is the subscript for the INTR character in the special control
-character array.  @address@hidden holds the character
-itself.
-
-The INTR (interrupt) character raises a @code{SIGINT} signal for all
-processes in the foreground job associated with the terminal.  The INTR
-character itself is then discarded.  @xref{Signal Handling}, for more
-information about signals.
-
-Typically, the INTR character is @kbd{C-c}.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro int VQUIT
address@hidden QUIT character
-This is the subscript for the QUIT character in the special control
-character array.  @address@hidden holds the character
-itself.
-
-The QUIT character raises a @code{SIGQUIT} signal for all processes in
-the foreground job associated with the terminal.  The QUIT character
-itself is then discarded.  @xref{Signal Handling}, for more information
-about signals.
-
-Typically, the QUIT character is @kbd{C-\}.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro int VSUSP
address@hidden SUSP character
address@hidden suspend character
-This is the subscript for the SUSP character in the special control
-character array.  @address@hidden holds the character
-itself.
-
-The SUSP (suspend) character is recognized only if the implementation
-supports job control (@pxref{Job Control}).  It causes a @code{SIGTSTP}
-signal to be sent to all processes in the foreground job associated with
-the terminal.  The SUSP character itself is then discarded.
address@hidden Handling}, for more information about signals.
-
-Typically, the SUSP character is @kbd{C-z}.
address@hidden deftypevr
-
-Few applications disable the normal interpretation of the SUSP
-character.  If your program does this, it should provide some other
-mechanism for the user to stop the job.  When the user invokes this
-mechanism, the program should send a @code{SIGTSTP} signal to the
-process group of the process, not just to the process itself (@pxref{Signaling 
Another Process}).
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro int VDSUSP
address@hidden DSUSP character
address@hidden delayed suspend character
-This is the subscript for the DSUSP character in the special control
-character array.  @address@hidden holds the character
-itself.
-
-The DSUSP (suspend) character is recognized only if the implementation
-supports job control (@pxref{Job Control}).  It sends a @code{SIGTSTP}
-signal, like the SUSP character, but not right away---only when the
-program tries to read it as input.  Not all systems with job control
-support DSUSP; only @acronym{BSD}-compatible systems (including the 
@acronym{GNU} system).
-
address@hidden Handling}, for more information about signals.
-
-Typically, the DSUSP character is @kbd{C-y}.
address@hidden deftypevr
-
address@hidden Start/Stop Characters
address@hidden Special Characters for Flow Control
-
-These special characters may be active in either canonical- or
-noncanonical-input mode, but their use is controlled by the flags
address@hidden and @code{IXOFF} (@pxref{Input Modes}).
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro int VSTART
address@hidden START character
-This is the subscript for the START character in the special control
-character array.  @address@hidden holds the
-character itself.
-
-The START character is used to support the @code{IXON} and
address@hidden input modes.  If @code{IXON} is set, receiving a START
-character resumes suspended output; the START character itself is
-discarded.  If @code{IXANY} is set, receiving any character at all
-resumes suspended output; the resuming character is not discarded
-unless it is the START character.  If @code{IXOFF} is set, the system
-may also transmit START characters to the terminal.
-
-The usual value for the START character is @kbd{C-q}.  You may not be
-able to change this value---the hardware may insist on using @kbd{C-q}
-regardless of what you specify.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro int VSTOP
address@hidden STOP character
-This is the subscript for the STOP character in the special control
-character array.  @address@hidden holds the character
-itself.
-
-The STOP character is used to support the @code{IXON} and @code{IXOFF}
-input modes.  If @code{IXON} is set, receiving a STOP character causes
-output to be suspended; the STOP character itself is discarded.  If
address@hidden is set, the system may also transmit STOP characters to the
-terminal, to prevent the input queue from overflowing.
-
-The usual value for the STOP character is @kbd{C-s}.  You may not be
-able to change this value---the hardware may insist on using @kbd{C-s}
-regardless of what you specify.
address@hidden deftypevr
-
address@hidden Other Special
address@hidden Other Special Characters
-
-These special characters exist only in @acronym{BSD} systems and the 
@acronym{GNU} system.
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro int VLNEXT
address@hidden LNEXT character
-This is the subscript for the LNEXT character in the special control
-character array.  @address@hidden holds the character
-itself.
-
-The LNEXT character is recognized only when @code{IEXTEN} is set, but
-in both canonical and noncanonical mode.  It disables any special
-significance of the next character the user types.  Even if the
-character would normally perform some editing function or generate a
-signal, it is read as a plain character.  This is the analog of the
address@hidden command in Emacs.  ``LNEXT'' stands for ``literal next.''
-
-The LNEXT character is usually @kbd{C-v}.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro int VDISCARD
address@hidden DISCARD character
-This is the subscript for the DISCARD character in the special control
-character array.  @address@hidden holds the character
-itself.
-
-The DISCARD character is recognized only when @code{IEXTEN} is set, but
-in both canonical and noncanonical mode.  Its effect is to toggle the
-discard-output flag.  When this flag is set, all program output is
-discarded.  Setting the flag also discards all output currently in the
-output buffer.  Typing any other character resets the flag.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden BSD
address@hidden Macro int VSTATUS
address@hidden STATUS character
-This is the subscript for the STATUS character in the special control
-character array.  @address@hidden holds the character
-itself.
-
-The STATUS character's effect is to print out a status message about how
-the current process is running.
-
-The STATUS character is recognized only in canonical mode, and only if
address@hidden is not set.
address@hidden deftypevr
-
address@hidden Noncanonical Input
address@hidden Noncanonical Input
-
-In noncanonical-input mode, the special editing characters such as
-ERASE and KILL are ignored.  The system facilities for the user to
-edit input are disabled in noncanonical mode, so that all input
-characters (unless they are special for signal or flow-control
-purposes) are passed to the application program exactly as typed.  It
-is up to the application program to give the user ways to edit the
-input, if appropriate.
-
-Noncanonical mode offers special parameters called MIN and TIME for
-controlling whether and how long to wait for input to be available.  You
-can even use them to avoid ever waiting---to return immediately with
-whatever input is available, or with no input.
-
-The MIN and TIME are stored in elements of the @code{c_cc} array, which
-is a member of the @address@hidden termios}} structure.  Each element of
-this array has a particular role, and each element has a symbolic
-constant that stands for the index of that element.  @code{VMIN} and
address@hidden are the names for the indices in the array of the MIN and
-TIME slots.
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro int VMIN
address@hidden MIN termios slot
-This is the subscript for the MIN slot in the @code{c_cc} array.  Thus,
address@hidden@var{termios}.c_cc[VMIN]} is the value itself.
-
-The MIN slot is only meaningful in noncanonical-input mode; it
-specifies the minimum number of bytes that must be available in the
-input queue in order for @code{read} to return.
address@hidden deftypevr
-
address@hidden termios.h
address@hidden POSIX.1
address@hidden Macro int VTIME
address@hidden TIME termios slot
-This is the subscript for the TIME slot in the @code{c_cc} array.  Thus,
address@hidden@var{termios}.c_cc[VTIME]} is the value itself.
-
-The TIME slot is only meaningful in noncanonical-input mode; it
-specifies how long to wait for input before returning, in units of 0.1
-seconds.
address@hidden deftypevr
-
-The MIN and TIME values interact to determine the criterion for when
address@hidden should return; their precise meanings depend on which of
-them are nonzero.  There are four possible cases:
-
address@hidden @bullet
address@hidden
-Both TIME and MIN are nonzero.
-
-In this case, TIME specifies how long to wait after each input character
-to see if more input arrives.  After the first character received,
address@hidden keeps waiting until either MIN bytes have arrived in all, or
-TIME elapses with no further input.
-
address@hidden always blocks until the first character arrives, even if
-TIME elapses first.  @code{read} can return more than MIN characters if
-more than MIN happen to be in the queue.
-
address@hidden
-Both MIN and TIME are 0.
-
-In this case, @code{read} always returns immediately with as many
-characters as are available in the queue, up to the number requested.
-If no input is immediately available, @code{read} returns a value of
-0.
-
address@hidden
-MIN is 0 but TIME has a nonzero value.
-
-In this case, @code{read} waits for time TIME for input to become
-available; the availability of a single byte is enough to satisfy the
-read request and cause @code{read} to return.  When it returns, it
-returns as many characters as are available, up to the number requested.
-If no input is available before the timer expires, @code{read} returns a
-value of 0.
-
address@hidden
-TIME is 0 but MIN has a nonzero value.
-
-In this case, @code{read} waits until at least MIN bytes are available
-in the queue.  At that time, @code{read} returns as many characters as
-are available, up to the number requested.  @code{read} can return more
-than MIN characters if more than MIN happen to be in the queue.
address@hidden itemize
-
-What happens if MIN is 50 and you ask to read just 10 bytes?
-Normally, @code{read} waits until there are 50 bytes in the buffer
-(or, more generally, until the wait condition described above is
-satisfied), and then reads 10 of them, leaving the other 40 buffered
-in the operating system for a subsequent call to @code{read}.
-
address@hidden Note:} On some systems, the MIN and TIME slots are
-actually the same as the @sc{eof} and @sc{eol} slots.  This causes no
-serious problem because the MIN and TIME slots are used only in
-noncanonical input and the @sc{eof} and @sc{eol} slots are used only
-in canonical input, but it isn't very clean.  The @acronym{GNU}
-library allocates separate slots for these uses.
-
address@hidden termios.h
address@hidden BSD
address@hidden void cfmakeraw (struct termios address@hidden)
-This function provides an easy way to set up @address@hidden for
-what has traditionally been called ``raw mode'' in @acronym{BSD}.  This uses
-noncanonical input, and turns off most processing to give an unmodified
-channel to the terminal.
-
-It does exactly this:
address@hidden
-  @var{termios-p}->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP
-                                |INLCR|IGNCR|ICRNL|IXON);
-  @var{termios-p}->c_oflag &= ~OPOST;
-  @var{termios-p}->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
-  @var{termios-p}->c_cflag &= ~(CSIZE|PARENB);
-  @var{termios-p}->c_cflag |= CS8;
address@hidden smallexample
address@hidden deftypefun
-
-
address@hidden BSD Terminal Modes
address@hidden @acronym{BSD} Terminal Modes
address@hidden terminal modes, @acronym{BSD}
-
-The usual way to get and set terminal modes is with the functions
-described in @ref{Terminal Modes}.  However, on some systems you can
-use the @acronym{BSD}-derived functions in this section to do some of
-the same things.  On many systems, these functions do not exist.  Even
-with the @acronym{GNU} C Library, the functions simply fail with
address@hidden = @code{ENOSYS} with many kernels, including Linux.
-
-The symbols used in this section are declared in @file{sgtty.h}.
-
address@hidden termios.h
address@hidden BSD
address@hidden {Data Type} {struct sgttyb}
-This structure is an input or output parameter list for @code{gtty} and
address@hidden
-
address@hidden @code
address@hidden char sg_ispeed
-Line speed for input
address@hidden char sg_ospeed
-Line speed for output
address@hidden char sg_erase
-Erase character
address@hidden char sg_kill
-Kill character
address@hidden int sg_flags
-Various flags
address@hidden table
address@hidden deftp
-
address@hidden sgtty.h
address@hidden BSD
address@hidden int gtty (int @var{filedes}, struct sgttyb address@hidden)
-This function gets the attributes of a terminal.
-
address@hidden sets address@hidden to describe the terminal attributes
-of the terminal that is open with file descriptor @var{filedes}.
address@hidden deftypefun
-
address@hidden sgtty.h
address@hidden BSD
address@hidden int stty (int @var{filedes}, struct sgttyb * attributes)
-
-This function sets the attributes of a terminal.
-
address@hidden sets the terminal attributes of the terminal that is open
-with file descriptor @var{filedes} to those described by
address@hidden
address@hidden deftypefun
-
address@hidden Line Control
address@hidden Line Control Functions
address@hidden terminal line control functions
-
-These functions perform miscellaneous control actions on terminal
-devices.  As regards terminal access, they are treated like doing
-output: if any of these functions is used by a background process on its
-controlling terminal, normally all processes in the process group are
-sent a @code{SIGTTOU} signal.  The exception is if the calling process
-itself is ignoring or blocking @code{SIGTTOU} signals, in which case the
-operation is performed and no signal is sent (@pxref{Job Control}).
-
address@hidden break condition, generating
address@hidden termios.h
address@hidden POSIX.1
address@hidden int tcsendbreak (int @var{filedes}, int @var{duration})
-This function generates a break condition by transmitting a stream of
-zero bits on the terminal associated with the file descriptor
address@hidden  The duration of the break is controlled by the
address@hidden argument.  If zero, the duration is between 0.25 and 0.5
-seconds.  The meaning of a nonzero value depends on the operating system.
-
-This function does nothing if the terminal is not an asynchronous serial
-data port.
-
-The return value is normally 0.  In the event of an error, a value
-of @math{-1} is returned.  The following @code{errno} error conditions
-are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} is not a valid file-descriptor.
-
address@hidden ENOTTY
-The @var{filedes} is not associated with a terminal device.
address@hidden table
address@hidden deftypefun
-
-
address@hidden flushing terminal output queue
address@hidden terminal output queue, flushing
address@hidden termios.h
address@hidden POSIX.1
address@hidden int tcdrain (int @var{filedes})
-The @code{tcdrain} function waits until all queued
-output to the terminal @var{filedes} has been transmitted.
-
-This function is a cancellation point in multithreaded programs.  This
-is a problem if the thread allocates some resources (like memory, file
-descriptors, semaphores or whatever) at the time @code{tcdrain} is
-called.  If the thread gets canceled, these resources stay allocated
-until the program ends.  To avoid this, calls to @code{tcdrain} should
-be protected using cancellation handlers.
address@hidden ref pthread_cleanup_push / pthread_cleanup_pop
-
-The return value is normally 0.  In the event of an error, a value
-of @math{-1} is returned.  The following @code{errno} error conditions
-are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} is not a valid file-descriptor.
-
address@hidden ENOTTY
-The @var{filedes} is not associated with a terminal device.
-
address@hidden EINTR
-The operation was interrupted by delivery of a signal
-(@pxref{Interrupted Primitives}).
address@hidden table
address@hidden deftypefun
-
-
address@hidden clearing terminal input queue
address@hidden terminal input queue, clearing
address@hidden termios.h
address@hidden POSIX.1
address@hidden int tcflush (int @var{filedes}, int @var{queue})
-The @code{tcflush} function is used to clear the input and/or output
-queues associated with the terminal file @var{filedes}.  The @var{queue}
-argument specifies which queue(s) to clear, and can be one of the
-following values:
-
address@hidden Extra blank lines here make it look better.
address@hidden @code
address@hidden TCIFLUSH
address@hidden TCIFLUSH
-
-Clear any input data received but not yet read.
-
address@hidden TCOFLUSH
address@hidden TCOFLUSH
-
-Clear any output data written  but not yet transmitted.
-
address@hidden TCIOFLUSH
address@hidden TCIOFLUSH
-
-Clear both queued input and output.
address@hidden table
-
-The return value is normally 0.  In the event of an error, a value
-of @math{-1} is returned.  The following @code{errno} error conditions
-are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} is not a valid file-descriptor.
-
address@hidden ENOTTY
-The @var{filedes} is not associated with a terminal device.
-
address@hidden EINVAL
-A bad value was supplied as the @var{queue} argument.
address@hidden table
-
-It is unfortunate that this function is named @code{tcflush}, because
-the term ``flush'' is normally used for quite another operation---waiting
-until all output is transmitted---and using it for discarding input or
-output would be confusing.  Unfortunately, the name @code{tcflush} comes
-from @acronym{POSIX} and we cannot change it.
address@hidden deftypefun
-
address@hidden flow control, terminal
address@hidden terminal flow control
address@hidden termios.h
address@hidden POSIX.1
address@hidden int tcflow (int @var{filedes}, int @var{action})
-The @code{tcflow} function is used to perform operations relating to
address@hidden/@sc{xoff} flow control on the terminal file specified by
address@hidden
-
-The @var{action} argument specifies what operation to perform, and can
-be one of the following values:
-
address@hidden @code
address@hidden TCOOFF
address@hidden TCOOFF
-Suspend transmission of output.
-
address@hidden TCOON
address@hidden TCOON
-Restart transmission of output.
-
address@hidden TCIOFF
address@hidden TCIOFF
-Transmit a STOP character.
-
address@hidden TCION
address@hidden TCION
-Transmit a START character.
address@hidden table
-
-For more information about the STOP and START characters, see @ref{Special
-Characters}.
-
-The return value is normally 0.  In the event of an error, a value
-of @math{-1} is returned.  The following @code{errno} error conditions
-are defined for this function:
-
address@hidden @code
address@hidden EBADF
address@hidden EBADF
-The @var{filedes} is not a valid file-descriptor.
-
address@hidden ENOTTY
address@hidden ENOTTY
-The @var{filedes} is not associated with a terminal device.
-
address@hidden EINVAL
address@hidden EINVAL
-A bad value was supplied as the @var{action} argument.
address@hidden table
address@hidden deftypefun
-
address@hidden Noncanon Example
address@hidden Noncanonical-Mode Example
-
-Here is an example program that shows how you can set up a terminal
-device to read single characters in noncanonical-input mode, without
-echo.
-
address@hidden
-#include <unistd.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <termios.h>
-
-/* @r{Use this variable to remember original terminal attributes.} */
-
-struct termios saved_attributes;
-
-void 
-reset_input_mode (void)
address@hidden
-  tcsetattr (STDIN_FILENO, TCSANOW, &saved_attributes);
address@hidden
-
-void 
-set_input_mode (void)
address@hidden
-  struct termios tattr;
-  char *name;
-
-  /* @r{Make sure stdin is a terminal.} */
-  if (!isatty (STDIN_FILENO))
-    @{
-      fprintf (stderr, "Not a terminal.\n");
-      exit (EXIT_FAILURE);
-    @}
-
-  /* @r{Save the terminal attributes so we can restore them later.} */
-  tcgetattr (STDIN_FILENO, &saved_attributes);
-  atexit (reset_input_mode);
-
-
-  /* @r{Set the funny terminal modes.} */
-  tcgetattr (STDIN_FILENO, &tattr);
-  tattr.c_lflag &= ~(ICANON|ECHO); /* @r{Clear ICANON and ECHO.} */
-  tattr.c_cc[VMIN] = 1;
-  tattr.c_cc[VTIME] = 0;
-  tcsetattr (STDIN_FILENO, TCSAFLUSH, &tattr);
address@hidden
-
-
-int
-main (void)
address@hidden
-  char c;
-
-  set_input_mode ();
-
-  while (1)
-    @{
-      read (STDIN_FILENO, &c, 1);
-      if (c == '\004')          /* @address@hidden */
-        break;
-      else
-        putchar (c);
-    @}
-
-  return EXIT_SUCCESS;
address@hidden
-
address@hidden smallexample
-
-This program is careful to restore the original terminal modes before
-exiting or terminating with a signal.  It uses the @code{atexit}
address@hidden Loosemore, et al., ``Clean-Ups on Exit'' (see
-chap. 1, n. 1).} to make sure this is done by @code{exit}.
-
address@hidden
address@hidden !!!! the example doesn't handle any signals!
-The signals handled in the example are the ones that typically occur due
-to actions of the user.  It might be desirable to handle other signals
-such as SIGSEGV that can result from bugs in the program.
address@hidden ignore
-
-The shell is supposed to take care of resetting the terminal modes when
-a process is stopped or continued (@pxref{Job Control}).  But some
-existing shells do not actually do this, so you may wish to establish
-handlers for job control signals that reset terminal modes.  The above
-example does so.
-
-
address@hidden Pseudoterminals
address@hidden Pseudoterminals
address@hidden pseudoterminals
-
-A @dfn{pseudoterminal} is a special interprocess-communication channel
-that acts like a terminal.  One end of the channel is called the
address@hidden side or @dfn{master pseudoterminal device}, the other
-side is called the @dfn{slave} side.  Data written to the master side
-is received by the slave side as if it was the result of a user typing
-at an ordinary terminal, and data written to the slave side is sent to
-the master side as if it was written on an ordinary terminal.
-
-Pseudoterminals are the way programs like @code{xterm} and
address@hidden implement their terminal-emulation functionality.
-
address@hidden Allocation
address@hidden Allocating Pseudoterminals
address@hidden allocating pseudoterminals
-
address@hidden stdlib.h
-This subsection describes functions for allocating a pseudoterminal,
-and for making this pseudoterminal available for actual use.  These
-functions are declared in the header file @file{stdlib.h}.
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int getpt (void)
-The @code{getpt} function returns a new file-descriptor for the next
-available master pseudoterminal.  The normal return value from
address@hidden is a nonnegative-integer file-descriptor.  In the case of
-an error, a value of @math{-1} is returned instead.  The following
address@hidden condition is defined for this function:
-
address@hidden @code
address@hidden ENOENT
-There are no free master pseudoterminals available.
address@hidden table
-
-This function is a @acronym{GNU} extension.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden SVID, XPG4.2
address@hidden int grantpt (int @var{filedes})
-The @code{grantpt} function changes the ownership and access permission
-of the slave pseudoterminal device corresponding to the master
-pseudoterminal device associated with the file descriptor
address@hidden  The owner is set from the real address@hidden of the calling
-process (@pxref{Process Persona}), and the group is set to a special
-group (typically @dfn{tty}) or from the real address@hidden of the calling
-process.  The access permission is set such that the file is both
-readable and writable by the owner and only writable by the group.
-
-On some systems, this function is implemented by invoking a special
address@hidden root program (@pxref{How to Change Persona}).  As a
-consequence, installing a signal handler for the @code{SIGCHLD} signal
-(@pxref{Job Control Signals}) may interfere with a call to
address@hidden
-
-The normal return value from @code{grantpt} is @math{0}; a value of
address@hidden is returned in case of failure.  The following @code{errno}
-error conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden EINVAL
-The @var{filedes} argument is not associated with a master pseudoterminal
-device.
-
address@hidden EACCES
-The slave pseudoterminal device corresponding to the master associated
-with @var{filedes} could not be accessed.
address@hidden table
-
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden SVID, XPG4.2
address@hidden int unlockpt (int @var{filedes})
-The @code{unlockpt} function unlocks the slave pseudoterminal device
-corresponding to the master pseudoterminal device associated with the
-file descriptor @var{filedes}.  On many systems, the slave can only be
-opened after unlocking, so portable applications should always call
address@hidden before trying to open the slave.
-
-The normal return value from @code{unlockpt} is @math{0}; a value of
address@hidden is returned in case of failure.  The following @code{errno}
-error conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden EINVAL
-The @var{filedes} argument is not associated with a master pseudoterminal
-device.
address@hidden table
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden SVID, XPG4.2
address@hidden {char *} ptsname (int @var{filedes})
-If the file descriptor @var{filedes} is associated with a
-master pseudoterminal device, the @code{ptsname} function returns a
-pointer to a statically allocated, null-terminated string containing the
-file name of the associated slave pseudoterminal file.  This string
-might be overwritten by subsequent calls to @code{ptsname}.
address@hidden deftypefun
-
address@hidden stdlib.h
address@hidden GNU
address@hidden int ptsname_r (int @var{filedes}, char address@hidden, size_t 
@var{len})
-The @code{ptsname_r} function is similar to the @code{ptsname}
-function, except that it places its result into the user-specified
-buffer starting at @var{buf} with length @var{len}.
-
-This function is a @acronym{GNU} extension.
address@hidden deftypefun
-
address@hidden Note:} On @w{System V} derived systems, the file
-returned by the @code{ptsname} and @code{ptsname_r} functions may be
-STREAMS-based, and therefore require additional processing after
-opening before it actually behaves as a pseudoterminal.
address@hidden FIXME: xref STREAMS
-
-Typical usage of these functions is illustrated by the following example:
address@hidden
-int
-open_pty_pair (int *amaster, int *aslave)
address@hidden
-  int master, slave;
-  char *name;
-
-  master = getpt ();
-  if (master < 0)
-    return 0;
-
-  if (grantpt (master) < 0 || unlockpt (master) < 0)
-    goto close_master;
-  name = ptsname (master);
-  if (name == NULL)
-    goto close_master;
-
-  slave = open (name, O_RDWR);
-  if (slave == -1)
-    goto close_master;
-
-  if (isastream (slave))
-    @{
-      if (ioctl (slave, I_PUSH, "ptem") < 0
-          || ioctl (slave, I_PUSH, "ldterm") < 0)
-        goto close_slave;
-    @}
-
-  *amaster = master;
-  *aslave = slave;
-  return 1;
-
-close_slave:
-  close (slave);
-
-close_master:
-  close (master);
-  return 0;
address@hidden
address@hidden smallexample
-
address@hidden Pseudoterminal Pairs
address@hidden Opening a Pseudoterminal Pair
address@hidden opening a pseudoterminal pair
-
-These functions, derived from @acronym{BSD}, are available in the separate
address@hidden library, and declared in @file{pty.h}.
-
address@hidden pty.h
address@hidden BSD
address@hidden int openpty (int address@hidden, int address@hidden, char 
address@hidden, struct termios address@hidden, struct winsize address@hidden)
-This function allocates and opens a pseudoterminal pair, returning the
-file descriptor for the master in @var{*amaster}, and the file
-descriptor for the slave in @var{*aslave}.  If the argument @var{name}
-is not a null pointer, the file name of the slave pseudoterminal
-device is stored in @code{*name}.  If @var{termp} is not a null pointer,
-the terminal attributes of the slave are set to the ones specified in
-the structure that @var{termp} points to (@pxref{Terminal Modes}).
-Likewise, if the @var{winp} is not a null pointer, the screen size of
-the slave is set to the values specified in the structure that
address@hidden points to.
-
-The normal return value from @code{openpty} is @math{0}; a value of
address@hidden is returned in case of failure.  The following @code{errno}
-condition is defined for this function:
-
address@hidden @code
address@hidden ENOENT
-There are no free pseudoterminal pairs available.
address@hidden table
-
address@hidden:} Using the @code{openpty} function with @var{name} not
-set to @code{NULL} is @emph{very dangerous} because it provides no
-protection against overflowing the string @var{name}.  You should use
-the @code{ttyname} function on the file descriptor returned in
address@hidden to find out the file name of the slave pseudoterminal
-device instead.
address@hidden deftypefun
-
address@hidden pty.h
address@hidden BSD
address@hidden int forkpty (int address@hidden, char address@hidden, struct 
termios address@hidden, struct winsize address@hidden)
-This function is similar to the @code{openpty} function, but in
-addition, it forks a new process (@pxref{Creating a Process}) and makes the
-newly opened slave pseudoterminal device the controlling terminal
-(@pxref{Controlling Terminal}) for the child process.
-
-If the operation is successful, there are then both parent and child
-processes, and both see @code{forkpty} return, but with different
-values---it returns a value of @math{0} in the child process and
-returns the child's process @acronym{ID} in the parent process.
-
-If the allocation of a pseudoterminal pair or the process creation
-failed, @code{forkpty} returns a value of @math{-1} in the parent
-process.
-
address@hidden:} The @code{forkpty} function has the same problems with
-respect to the @var{name} argument as @code{openpty}.
address@hidden deftypefun
-
address@hidden Processes
address@hidden %MENU% How to create processes and run other programs
address@hidden Processes
-
address@hidden process
address@hidden are the primitive units for allocation of system
-resources.  Each process has its own address space and (usually) one
-thread of control.  A process executes a program; you can have multiple
-processes executing the same program, but each process has its own copy
-of the program within its own address space and executes it
-independently of the other copies.
-
address@hidden child process
address@hidden parent process
-Processes are organized hierarchically.  Each process has a
address@hidden process} that explicitly arranged to create it.  The
-processes created by a given parent are called its @dfn{child
-processes}.  A child inherits many of its attributes from the parent
-process.
-
-This chapter describes how a program can create, terminate and control
-child processes.  Actually, there are three distinct operations
-involved: creating a new child process, causing the new process to
-execute a program and coordinating the completion of the child process
-with the original program.
-
-The @code{system} function provides a simple, portable mechanism for
-running another program; it does all three steps automatically.  If you
-need more control over the details of how this is done, you can use the
-primitive functions to do each step individually instead.
-
-
address@hidden Running a Command
address@hidden Running a Command
address@hidden running a command
-
-The easy way to run another program is to use the @code{system}
-function.  This function does all the work of running a subprogram, but
-it doesn't give you much control over the details: you have to wait
-until the subprogram terminates before you can do anything else.
-
address@hidden stdlib.h
address@hidden ISO
address@hidden int system (const char address@hidden)
address@hidden sh
-This function executes @var{command} as a shell command.  In the
address@hidden C Library, it always uses the default shell @code{sh} to
-run the command.  In particular, it searches the directories in
address@hidden to find programs to execute.  The return value is
address@hidden if it wasn't possible to create the shell process, and
-otherwise is the status of the shell process (@pxref{Process
-Completion}, for details on how this status code can be interpreted).
-
-If the @var{command} argument is a null pointer, a return value of 0
-indicates that no command processor is available.
-
-This function is a cancellation point in multithreaded programs.  This
-is a problem if the thread allocates some resources (like memory, file
-descriptors, semaphores, etc.) at the time @code{system} is called.
-If the thread gets canceled, these resources stay allocated until the
-program ends.  To avoid this, calls to @code{system} should be
-protected using cancellation handlers.
address@hidden ref pthread_cleanup_push / pthread_cleanup_pop
-
address@hidden stdlib.h
-The @code{system} function is declared in the header file
address@hidden
address@hidden deftypefun
-
address@hidden Note:} Some C implementations may not have any
-notion of a command processor that can execute other programs.  You can
-determine whether a command processor exists by executing
address@hidden@code{system (NULL)}}; if the return value is nonzero, a command
-processor is available.
-
-The @code{popen} and @code{pclose} functions (@pxref{Pipe to a
-Subprocess}) are closely related to the @code{system} function.  They
-allow the parent process to communicate with the standard input and
-output channels of the command being executed.
-
address@hidden Process-Creation Concepts
address@hidden Process-Creation Concepts
-
-This section gives an overview of processes and of the steps involved in
-creating a process and making it run another program.
-
address@hidden process @sc{ID}
address@hidden process lifetime
-Each process is named by a @dfn{process ID} number.  A unique
address@hidden is allocated to each process when it is created.
-The @dfn{lifetime} of a process ends when its termination is reported
-to its parent process; at that time, all of the process resources,
-including its process @acronym{ID}, are freed.
-
address@hidden creating a process
address@hidden forking a process
address@hidden child process
address@hidden parent process
-Processes are created with the @code{fork} system call (so the operation
-of creating a new process is sometimes called @dfn{forking} a process).
-The @dfn{child process} created by @code{fork} is a copy of the original
address@hidden process}, except that it has its own process @acronym{ID}.
-
-After forking a child process, both the parent and child processes
-continue to execute normally.  If you want your program to wait for a
-child process to finish executing before continuing, you must do this
-explicitly after the fork operation, by calling @code{wait} or
address@hidden (@pxref{Process Completion}).  These functions give you
-limited information about why the child terminated---for example, its
-exit status code.
-
-A newly forked child process continues to execute the same program as
-its parent process, at the point where the @code{fork} call returns.
-You can use the return value from @code{fork} to tell whether the program
-is running in the parent process or the child.
-
address@hidden process image
-Having several processes run the same program is only occasionally
-useful.  But the child can execute another program using one of the
address@hidden functions (@pxref{Executing a File}).  The program that the
-process is executing is called its @dfn{process image}.  Starting
-execution of a new program causes the process to forget all about its
-previous process image; when the new program exits, the process exits
-too, instead of returning to the previous process image.
-
address@hidden Process Identification
address@hidden Process Identification
-
-The @code{pid_t} data type represents process @acronym{ID}s.  You can get the
-process @acronym{ID} of a process by calling @code{getpid}.  The function
address@hidden returns the process @acronym{ID} of the parent of the current
-process (this is also known as the @dfn{parent process ID}).  Your
-program should include the header files @file{unistd.h} and
address@hidden/types.h} to use these functions.
address@hidden sys/types.h
address@hidden unistd.h
-
address@hidden sys/types.h
address@hidden POSIX.1
address@hidden {Data Type} pid_t
-The @code{pid_t} data type is a signed-integer type that is capable of
-representing a process @acronym{ID}.  In the @acronym{GNU} library,
-this is an @code{int}.
address@hidden deftp
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden pid_t getpid (void)
-The @code{getpid} function returns the process @acronym{ID} of the current 
process.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden pid_t getppid (void)
-The @code{getppid} function returns the process @acronym{ID} of the parent of 
the
-current process.
address@hidden deftypefun
-
address@hidden Creating a Process
address@hidden Creating a Process
-
-The @code{fork} function is the primitive for creating a process.
-It is declared in the header file @file{unistd.h}.
address@hidden unistd.h
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden pid_t fork (void)
-The @code{fork} function creates a new process.
-
-If the operation is successful, there are then both parent and child
-processes. Both see @code{fork} return, but with different values---it
-returns a value of @code{0} in the child process and returns the
-child's process @acronym{ID} in the parent process.
-
-If process creation failed, @code{fork} returns a value of @code{-1} in
-the parent process.  The following @code{errno} error conditions are
-defined for @code{fork}:
-
address@hidden @code
address@hidden EAGAIN
-There aren't enough system resources to create another process, or the
-user already has too many processes running.  This means exceeding the
address@hidden resource limit, which can usually be increased
-(@pxref{Limits on Resources}).
-
address@hidden ENOMEM
-The process requires more space than the system can supply.
address@hidden table
address@hidden deftypefun
-
-The specific attributes of the child process that differ from the
-parent process are
-
address@hidden @bullet
address@hidden
-The child process has its own unique address@hidden
-
address@hidden
-The parent process @acronym{ID} of the child process is the process 
@acronym{ID} of its
-parent process.
-
address@hidden
-The child process gets its own copies of the parent process's open
-file-descriptors.  Subsequently changing attributes of the file
-descriptors in the parent process won't affect the file descriptors in
-the child, and vice versa (@pxref{Control Operations}).  However, the
-file position associated with each descriptor is shared by both
address@hidden Loosemore et al., ``File Position'' (see
-chap. 1, n.1).}
-
address@hidden
-The elapsed processor times for the child process are set to
address@hidden, ``Processor Time Inquiry''.}
-
address@hidden
-The child doesn't inherit file locks set by the parent process
-(@pxref{Control Operations}).
address@hidden !!! flock locks shared
-
-
address@hidden
-The child doesn't inherit alarms set by the parent
address@hidden, ``Setting an Alarm''.}
-
address@hidden
-The set of pending signals (@pxref{Delivery of Signal}) for the child
-process is cleared.  The child process inherits its mask of blocked
-signals and signal actions from the parent process.
address@hidden itemize
-
-
address@hidden unistd.h
address@hidden BSD
address@hidden pid_t vfork (void)
-The @code{vfork} function is similar to @code{fork}, but on some
-systems it is more efficient. However, there are restrictions you must
-follow to use it safely.
-
-While @code{fork} makes a complete copy of the calling process's address
-space and allows both the parent and child to execute independently,
address@hidden does not make this copy.  Instead, the child process
-created with @code{vfork} shares its parent's address space until it
-calls @code{_exit} or one of the @code{exec} functions.  In the
-meantime, the parent process suspends execution.
-
-You must be very careful not to allow the child process created with
address@hidden to modify any global data or even local variables shared
-with the parent.  Furthermore, the child process cannot return from (or
-do a long jump out of) the function that called @code{vfork}!  This
-would leave the parent process's control information very confused.  If
-in doubt, use @code{fork} instead.
-
-Some operating systems don't really implement @code{vfork}.  The
address@hidden C Library permits you to use @code{vfork} on all
-systems, but actually executes @code{fork} if @code{vfork} isn't
-available.  If you follow the proper precautions for using
address@hidden, your program will still work even if the system uses
address@hidden instead.
address@hidden deftypefun
-
address@hidden Executing a File
address@hidden Executing a File
address@hidden executing a file
address@hidden @code{exec} functions
-
-This section describes the @code{exec} family of functions, for
-executing a file as a process image.  You can use these functions to
-make a child process execute a new program after it has been
address@hidden see the effects of @code{exec} from the point of
-view of the called program, see Loosemore et al., ``The Basic
-Program/System Interface''.}
-
address@hidden unistd.h
-The functions in this family differ in how you specify the arguments,
-but otherwise they all do the same thing.  They are declared in the
-header file @file{unistd.h}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int execv (const char address@hidden, char *const 
@address@hidden)
-The @code{execv} function executes the file named by @var{filename} as a
-new process image.
-
-The @var{argv} argument is an array of null-terminated strings that is
-used to provide a value for the @code{argv} argument to the
address@hidden function of the program to be executed.  The last element
-of this array must be a null pointer.  By convention, the first
-element of this array is the file name of the program sans directory
address@hidden full details on how programs can access these
-arguments, see Loosemore et al., ``Program Arguments''.}
-
-The environment for the new process image is taken from the
address@hidden variable of the current process address@hidden,
-``Environment Variables''.}
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int execl (const char address@hidden, const char address@hidden, 
@dots{})
-This is similar to @code{execv}, but the @var{argv} strings are
-specified individually instead of as an array.  A null pointer must be
-passed as the last such argument.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int execve (const char address@hidden, char *const 
@address@hidden, char *const @address@hidden)
-This is similar to @code{execv}, but it permits you to specify the environment
-for the new program explicitly as the @var{env} argument.  This should
-be an array of strings in the same format as for the @code{environ}
address@hidden, ``Environment Access''.}
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int execle (const char address@hidden, const char 
address@hidden, char *const @address@hidden, @dots{})
-This is similar to @code{execl}, but it permits you to specify the
-environment for the new program explicitly.  The environment argument
-is passed following the null pointer that marks the last @var{argv}
-argument, and should be an array of strings in the same format as for
-the @code{environ} variable.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int execvp (const char address@hidden, char *const 
@address@hidden)
-The @code{execvp} function is similar to @code{execv}, except that it
-searches the directories listed in the @code{PATH} environment
address@hidden, ``Standard Environment Variables''.} to find
-the full file-name of a file from @var{filename} if @var{filenambe}
-does not contain a slash.
-
-This function is useful for executing system utility programs, because
-it looks for them in the places that the user has chosen.  Shells use it
-to run the commands that users type.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int execlp (const char address@hidden, const char 
address@hidden, @dots{})
-This function is like @code{execl}, except that it performs the same
-file-name searching as the @code{execvp} function.
address@hidden deftypefun
-
-The size of the argument list and environment list taken together must
-not be greater than @code{ARG_MAX} bytes (@pxref{General Limits}).  In
-the @acronym{GNU} system, the size (which compares against @code{ARG_MAX})
-includes, for each string, the number of characters in the string, plus
-the size of a @code{char *}, plus 1, rounded up to a multiple of the
-size of a @code{char *}.  Other systems may have somewhat different
-rules for counting.
-
-These functions normally don't return, since execution of a new
-program causes the currently executing program to go away completely.
-A value of @code{-1} is returned in the event of a failure.  In
-addition to the usual file-name errors, the following @code{errno}
-error conditions are defined for these functions:@footnote{Ibid.,
-``File-Name Errors''.}
-
address@hidden @code
address@hidden E2BIG
-The combined size of the new program's argument list and environment
-list is larger than @code{ARG_MAX} bytes.  The @acronym{GNU} system has no
-specific limit on the argument list size, so this error code cannot
-result, but you may get @code{ENOMEM} instead if the arguments are too
-big for available memory.
-
address@hidden ENOEXEC
-The specified file can't be executed, because it isn't in the right format.
-
address@hidden ENOMEM
-Executing the specified file requires more storage than is available.
address@hidden table
-
-If execution of the new file succeeds, it updates the access-time field
-of the file as if the file had been read (@pxref{File Times}).
-
-The point at which the file is closed again is not specified, but
-is at some point before the process exits or before another process
-image is executed.
-
-Executing a new process image completely changes the contents of memory,
-copying only the argument and environment strings to new locations.  But
-many other attributes of the process are unchanged:
-
address@hidden @bullet
address@hidden
-The process @acronym{ID} and the parent address@hidden 
(@pxref{Process-Creation Concepts})
-
address@hidden
-Session and process group membership (@pxref{Concepts of Job Control})
-
address@hidden
-Real address@hidden and address@hidden, and supplementary group
address@hidden (@pxref{Process Persona})
-
address@hidden
-Pending address@hidden, ``Setting an Alarm''.}
-
address@hidden
-Current working directory and root directory (@pxref{Working
-Directory})@footnote{In the @acronym{GNU} system, the root directory
-is not copied when executing a setuid program; instead, the system
-default root directory is used for the new program.}
-
address@hidden
-File mode creation mask (@pxref{Setting Permissions})
-
address@hidden
-Process signal-mask (@pxref{Process Signal-Mask})
-
address@hidden
-Pending signals (@pxref{Blocking Signals})
-
address@hidden
-Elapsed processor time associated with the address@hidden,
-``Processor Time Inquiry''.}
address@hidden itemize
-
-If the address@hidden and address@hidden mode bits of
-the process-image file are set, this affects the effective user
address@hidden and effective address@hidden, respectively, of the
-process.  These concepts are discussed in detail in @ref{Process
-Persona}.
-
-Signals that are set to be ignored in the existing process image are
-also set to be ignored in the new process image.  All other signals are
-set to the default action in the new process image.  For more
-information about signals, see @ref{Signal Handling}.
-
-File descriptors open in the existing process image remain open in the
-new process image, unless they have the @code{FD_CLOEXEC}
-(close-on-exec) flag set.  The files that remain open inherit all
-attributes of the open file description from the existing process image,
-including file locks.  File descriptors are discussed in @ref{Low-Level I/O}.
-
-Streams, by contrast, cannot survive through @code{exec} functions,
-because they are located in the memory of the process itself.  The new
-process image has no streams except those it creates afresh.  Each of
-the streams in the address@hidden process image has a descriptor inside
-it, and these descriptors do survive through @code{exec} (provided that
-they do not have @code{FD_CLOEXEC} set).  The new process image can
-reconnect these to new streams using @code{fdopen} (@pxref{Descriptors
-and Streams}).
-
address@hidden Process Completion
address@hidden Process Completion
address@hidden process completion
address@hidden waiting for completion of child process
address@hidden testing exit status of child process
-
-The functions described in this section are used to wait for a child
-process to terminate or stop, and determine its status.  These functions
-are declared in the header file @file{sys/wait.h}.
address@hidden sys/wait.h
-
address@hidden sys/wait.h
address@hidden POSIX.1
address@hidden pid_t waitpid (pid_t @var{pid}, int address@hidden, int 
@var{options})
-The @code{waitpid} function is used to request status information from a
-child process whose process @acronym{ID} is @var{pid}.  Normally, the calling
-process is suspended until the child process makes status information
-available by terminating.
-
-Other values for the @var{pid} argument have special interpretations.
-A value of @code{-1} or @code{WAIT_ANY} requests status information
-for any child process; a value of @code{0} or @code{WAIT_MYPGRP}
-requests information for any child process in the same process group
-as the calling process; and any other negative address@hidden
-requests information for any child process whose process group
address@hidden is @var{pgid}.
-
-If status information for a child process is available immediately, this
-function returns immediately without waiting.  If more than one eligible
-child process has status information available, one of them is chosen
-randomly, and its status is returned immediately.  To get the status
-from the other eligible child processes, you need to call @code{waitpid}
-again.
-
-The @var{options} argument is a bit mask.  Its value should be the
-bit-wise @sc{or} (that is, the @samp{|} operator) of zero or more of the
address@hidden and @code{WUNTRACED} flags.  You can use the
address@hidden flag to indicate that the parent process shouldn't wait;
-and the @code{WUNTRACED} flag to request status information from stopped
-processes as well as processes that have terminated.
-
-The status information from the child process is stored in the object
-that @var{status-ptr} points to, unless @var{status-ptr} is a null pointer.
-
-This function is a cancellation point in multithreaded programs.  This
-is a problem if the thread allocates some resources (like memory, file
-descriptors, semaphores, etc.) at the time @code{waitpid} is called.
-If the thread gets canceled, these resources stay allocated until the
-program ends.  To avoid this, calls to @code{waitpid} should be
-protected using cancellation handlers.
address@hidden ref pthread_cleanup_push / pthread_cleanup_pop
-
-The return value is normally the process @acronym{ID} of the child process 
whose
-status is reported.  If there are child processes but none of them is
-waiting to be noticed, @code{waitpid} will block until one is.  However,
-if the @code{WNOHANG} option was specified, @code{waitpid} will return
-0 instead of blocking.
-
-If a specific @acronym{PID} to wait for was given to @code{waitpid}, it will
-ignore all other children (if any).  Therefore if there are children
-waiting to be noticed but the child whose @acronym{PID} was specified is not 
one
-of them, @code{waitpid} will block or return 0 as described above.
-
-A value of @code{-1} is returned in case of error.  The following
address@hidden error conditions are defined for this function:
-
address@hidden @code
address@hidden EINTR
-The function was interrupted by delivery of a signal to the calling
-process (@pxref{Interrupted Primitives}).
-
address@hidden ECHILD
-There are no child processes to wait for, or the specified @var{pid}
-is not a child of the calling process.
-
address@hidden EINVAL
-An invalid value was provided for the @var{options} argument.
address@hidden table
address@hidden deftypefun
-
-These symbolic constants are defined as values for the @var{pid} argument
-to the @code{waitpid} function.
-
address@hidden Extra blank lines make it look better.
address@hidden @code
address@hidden WAIT_ANY
-
-This constant macro (whose value is @code{-1}) specifies that
address@hidden should return status information about any child process.
-
-
address@hidden WAIT_MYPGRP
-This constant (with value @code{0}) specifies that @code{waitpid} should
-return status information about any child process in the same process
-group as the calling process.
address@hidden table
-
-These symbolic constants are defined as flags for the @var{options}
-argument to the @code{waitpid} function.  You can address@hidden the flags
-together to obtain a value to use as the argument.
-
address@hidden @code
address@hidden WNOHANG
-
-This flag specifies that @code{waitpid} should return immediately
-instead of waiting, if there is no child process ready to be noticed.
-
address@hidden WUNTRACED
-
-This flag specifies that @code{waitpid} should report the status of any
-child processes that have been stopped as well as those that have
-terminated.
address@hidden table
-
address@hidden sys/wait.h
address@hidden POSIX.1
address@hidden pid_t wait (int address@hidden)
-This is a simplified version of @code{waitpid}, and is used to wait
-until any one child process terminates.  The call:
-
address@hidden
-wait (&status)
address@hidden smallexample
-
address@hidden
-is exactly equivalent to:
-
address@hidden
-waitpid (-1, &status, 0)
address@hidden smallexample
-
-This function is a cancellation point in multithreaded programs.  This
-is a problem if the thread allocates some resources (like memory, file
-descriptors, semaphores, etc.) at the time @code{wait} is called.  If
-the thread gets canceled, these resources stay allocated until the
-program ends.  To avoid this, calls to @code{wait} should be protected
-using cancellation handlers.
address@hidden ref pthread_cleanup_push / pthread_cleanup_pop
address@hidden deftypefun
-
address@hidden sys/wait.h
address@hidden BSD
address@hidden pid_t wait4 (pid_t @var{pid}, int address@hidden, int 
@var{options}, struct rusage address@hidden)
-If @var{usage} is a null pointer, @code{wait4} is equivalent to
address@hidden (@var{pid}, @var{status-ptr}, @var{options})}.
-
-If @var{usage} is not null, @code{wait4} stores usage figures for the
-child process in @address@hidden (but only if the child has
-terminated, not if it has stopped) (@pxref{Resource Usage}).
-
-This function is a @acronym{BSD} extension.
address@hidden deftypefun
-
-Here's an example of how to use @code{waitpid} to get the status from
-all child processes that have terminated, without ever waiting.  This
-function is designed to be a handler for @code{SIGCHLD}, the signal that
-indicates that at least one child process has terminated.
-
address@hidden
-
-void
-sigchld_handler (int signum)
address@hidden
-  int pid, status, serrno;
-  serrno = errno;
-  while (1)
-    @{
-      pid = waitpid (WAIT_ANY, &status, WNOHANG);
-      if (pid < 0)
-        @{
-          perror ("waitpid");
-          break;
-        @}
-      if (pid == 0)
-        break;
-      notice_termination (pid, status);
-    @}
-  errno = serrno;
address@hidden
-
address@hidden smallexample
-
address@hidden Process-Completion Status
address@hidden Process-Completion Status
-
-If the exit status address@hidden, ``Program Termination''.} of the child
-process is 0, then the status value reported by @code{waitpid} or
address@hidden is also 0.  You can test for other kinds of information
-encoded in the returned status value using the following macros.
-These macros are defined in the header file @file{sys/wait.h}.
address@hidden sys/wait.h
-
address@hidden sys/wait.h
address@hidden POSIX.1
address@hidden Macro int WIFEXITED (int @var{status})
-This macro returns a nonzero value if the child process terminated
-normally with @code{exit} or @code{_exit}.
address@hidden deftypefn
-
address@hidden sys/wait.h
address@hidden POSIX.1
address@hidden Macro int WEXITSTATUS (int @var{status})
-If @code{WIFEXITED} is true of @var{status}, this macro returns the
-low-order 8 bits of the exit-status value from the child
address@hidden, ``Exit Status''.}
address@hidden deftypefn
-
address@hidden sys/wait.h
address@hidden POSIX.1
address@hidden Macro int WIFSIGNALED (int @var{status})
-This macro returns a nonzero value if the child process terminated
-because it received a signal that was not handled
-(@pxref{Signal Handling}).
address@hidden deftypefn
-
address@hidden sys/wait.h
address@hidden POSIX.1
address@hidden Macro int WTERMSIG (int @var{status})
-If @code{WIFSIGNALED} is true of @var{status}, this macro returns the
-signal number of the signal that terminated the child process.
address@hidden deftypefn
-
address@hidden sys/wait.h
address@hidden BSD
address@hidden Macro int WCOREDUMP (int @var{status})
-This macro returns a nonzero value if the child process terminated
-and produced a core dump.
address@hidden deftypefn
-
address@hidden sys/wait.h
address@hidden POSIX.1
address@hidden Macro int WIFSTOPPED (int @var{status})
-This macro returns a nonzero value if the child process is stopped.
address@hidden deftypefn
-
address@hidden sys/wait.h
address@hidden POSIX.1
address@hidden Macro int WSTOPSIG (int @var{status})
-If @code{WIFSTOPPED} is true of @var{status}, this macro returns the
-signal number of the signal that caused the child process to stop.
address@hidden deftypefn
-
-
address@hidden BSD Wait Functions
address@hidden @acronym{BSD} Process Wait Functions
-
-The @acronym{GNU} library also provides these related facilities for 
compatibility
-with @acronym{BSD} Unix.  @acronym{BSD} uses the @code{union wait} data type 
to represent
-status values rather than an @code{int}.  The two representations are
-actually interchangeable; they describe the same bit patterns.  The 
@acronym{GNU}
-C Library defines macros such as @code{WEXITSTATUS} so that they will
-work on either kind of object, and the @code{wait} function is defined
-to accept either type of pointer as its @var{status-ptr} argument.
-
-These functions are declared in @file{sys/wait.h}.
address@hidden sys/wait.h
-
address@hidden sys/wait.h
address@hidden BSD
address@hidden {Data Type} {union wait}
-This data type represents program-termination status values.  It has
-the following members:
-
address@hidden @code
address@hidden int w_termsig
-The value of this member is the same as that of the
address@hidden macro.
-
address@hidden int w_coredump
-The value of this member is the same as that of the
address@hidden macro.
-
address@hidden int w_retcode
-The value of this member is the same as that of the
address@hidden macro.
-
address@hidden int w_stopsig
-The value of this member is the same as that of the
address@hidden macro.
address@hidden table
-
-Instead of accessing these members directly, you should use the
-equivalent macros.
address@hidden deftp
-
-The @code{wait3} function is the predecessor to @code{wait4}, which is
-more flexible.  @code{wait3} is now obsolete.
-
address@hidden sys/wait.h
address@hidden BSD
address@hidden pid_t wait3 (union wait address@hidden, int @var{options}, 
struct rusage address@hidden)
-If @var{usage} is a null pointer, @code{wait3} is equivalent to
address@hidden (-1, @var{status-ptr}, @var{options})}.
-
-If @var{usage} is not null, @code{wait3} stores usage figures for the
-child process in @address@hidden (but only if the child has
-terminated, not if it has stopped) (@pxref{Resource Usage}).
address@hidden deftypefun
-
address@hidden Process-Creation Example
address@hidden Process-Creation Example
-
-Here is an example program showing how you might write a function
-similar to the built-in @code{system}.  It executes its @var{command}
-argument using the equivalent of @samp{sh -c @var{command}}.
-
address@hidden
-#include <stddef.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-
-/* @r{Execute the command using this shell program.}  */
-#define SHELL "/bin/sh"
-
-
-int
-my_system (const char *command)
address@hidden
-  int status;
-  pid_t pid;
-
-
-  pid = fork ();
-  if (pid == 0)
-    @{
-      /* @r{This is the child process.  Execute the shell command.} */
-      execl (SHELL, SHELL, "-c", command, NULL);
-      _exit (EXIT_FAILURE);
-    @}
-  else if (pid < 0)
-    /* @r{The fork failed.  Report failure.}  */
-    status = -1;
-  else
-    /* @r{This is the parent process.  Wait for the child to complete.}  */
-    if (waitpid (pid, &status, 0) != pid)
-      status = -1;
-  return status;
address@hidden
address@hidden smallexample
-
address@hidden Yes, this example has been tested.
-
-There are a couple of things you should pay attention to in this
-example.
-
-Remember that the first @code{argv} argument supplied to the program
-represents the name of the program being executed.  That is why, in the
-call to @code{execl}, @code{SHELL} is supplied once to name the program
-to execute and a second time to supply a value for @code{argv[0]}.
-
-The @code{execl} call in the child process doesn't return if it is
-successful.  If it fails, you must do something to make the child
-process terminate.  Just returning a bad status code with @code{return}
-would leave two processes running the original program.  Instead, the
-right behavior is for the child process to report failure to its parent
-process.
-
-Call @code{_exit} to accomplish this.  The reason for using
address@hidden instead of @code{exit} is to avoid flushing fully
-buffered streams such as @code{stdout}.  The buffers of these streams
-probably contain data that was copied from the parent process by the
address@hidden, data that will be output eventually by the parent
-process.  Calling @code{exit} in the child would output the data
address@hidden, ``Termination Internals''.}
-
address@hidden Job Control, Name Service Switch, Processes, Top
address@hidden %MENU% All about process groups and sessions
address@hidden Job Control
-
address@hidden process groups
address@hidden job control
address@hidden job
address@hidden session
address@hidden control} refers to the protocol for allowing a user to move
-between multiple @dfn{process groups} (or @dfn{jobs}) within a single
address@hidden session}.  The job control facilities are set up so that
-appropriate behavior for most programs happens automatically and they
-need not do anything special about job control.  So you can probably
-ignore the material in this chapter unless you are writing a shell or
-login program.
-
-You need to be familiar with concepts relating to process creation
-(@pxref{Process-Creation Concepts}) and signal handling (@pxref{Signal
-Handling}) in order to understand the material presented in this
-chapter.
-
address@hidden Concepts of Job Control
address@hidden Concepts of Job Control
-
address@hidden shell
-The fundamental purpose of an interactive shell is to read
-commands from the user's terminal and create processes to execute the
-programs specified by those commands.  It can do this using the
address@hidden (@pxref{Creating a Process}) and @code{exec}
-(@pxref{Executing a File}) functions.
-
-A single command may run just one process---but often one command uses
-several processes.  If you use the @samp{|} operator in a shell command,
-you explicitly request several programs in their own processes.  But
-even if you run just one program, it can use multiple processes
-internally.  For example, a single compilation command such as @samp{cc
--c foo.c} typically uses four processes (though normally only two at any
-given time).  If you run @code{make}, its job is to run other programs
-in separate processes.
-
-The processes belonging to a single command are called a @dfn{process
-group} or @dfn{job}.  This is so that you can operate on all of them at
-once.  For example, typing @kbd{C-c} sends the signal @code{SIGINT} to
-terminate all the processes in the foreground process group.
-
address@hidden session
-A @dfn{session} is a larger group of processes.  Normally, all the
-processes that stem from a single login belong to the same session.
-
-Every process belongs to a process group.  When a process is created, it
-becomes a member of the same process group and session as its parent
-process.  You can put it in another process group using the
address@hidden function, provided the process group belongs to the same
-session.
-
address@hidden session leader
-The only way to put a process in a different session is to make it the
-initial process of a new session, or a @dfn{session leader}, using the
address@hidden function.  This also puts the session leader into a new
-process group, and you can't move it out of that process group again.
-
-Usually, new sessions are created by the system login program, and the
-session leader is the process running the user's login shell.
-
address@hidden controlling terminal
-A shell that supports job control must arrange to control which job
-can use the terminal at any particular time.  Otherwise, there might
-be multiple jobs trying to read from the terminal at once and
-confusion about which process should receive the input typed by the
-user.  To prevent this, the shell must cooperate with the terminal
-driver using the protocol described in this chapter.
-
address@hidden foreground job
address@hidden background job
-The shell can give unlimited access to the controlling terminal to only
-one process group at a time.  This is called the @dfn{foreground job} on
-that controlling terminal.  Other process groups managed by the shell
-that are executing without such access to the terminal are called
address@hidden jobs}.
-
address@hidden stopped job
-If a background job needs to read from its controlling
-terminal, it is @dfn{stopped} by the terminal driver; if the
address@hidden mode is set, likewise for writing.  The user can stop
-a foreground job by typing the SUSP character (@pxref{Special
-Characters}) and a program can stop any job by sending it a
address@hidden signal.  It's the responsibility of the shell to notice
-when jobs stop, to notify the user about them, and to provide mechanisms
-for allowing the user to interactively continue stopped jobs and switch
-jobs between foreground and background.
-
address@hidden to the Terminal}, for more information about I/O to the
-controlling terminal,
-
address@hidden Job Control Is Optional, Controlling Terminal, Concepts of Job 
Control , Job Control
address@hidden Job Control Is Optional
address@hidden job control is optional
-
-Not all operating systems support job control.  The @acronym{GNU} system does
-support job control, but if you are using the @acronym{GNU} library on some 
other
-system, that system may not support job control itself.
-
-You can use the @code{_POSIX_JOB_CONTROL} macro to test at compile-time
-whether the system supports job control (@pxref{System Options}).
-
-If job control is not supported, then there can be only one process
-group per session, which behaves as if it were always in the foreground.
-The functions for creating additional process groups simply fail with
-the error code @code{ENOSYS}.
-
-The macros naming the various job-control signals (@pxref{Job Control
-Signals}) are defined even if job control is not supported.  However,
-the system never generates these signals, and attempts to send a
-job-control signal or examine or specify their actions report errors
-or do nothing.
-
-
address@hidden Controlling Terminal, Access to the Terminal, Job Control Is 
Optional, Job Control
address@hidden Controlling Terminal of a Process
-
-One of the attributes of a process is its controlling terminal.  Child
-processes created with @code{fork} inherit the controlling terminal from
-their parent process.  In this way, all the processes in a session
-inherit the controlling terminal from the session leader.  A session
-leader that has control of a terminal is called the @dfn{controlling
-process} of that terminal.
-
address@hidden controlling process
-You generally do not need to worry about the exact mechanism used to
-allocate a controlling terminal to a session, since it is done for you
-by the system when you log in.
address@hidden ??? How does GNU system let a process get a ctl terminal.
-
-An individual process disconnects from its controlling terminal when it
-calls @code{setsid} to become the leader of a new session
-(@pxref{Process Group Functions}).
-
address@hidden !!! explain how it gets a new one (by opening any terminal)
address@hidden ??? How you get a controlling terminal is system-dependent.
address@hidden We should document how this will work in the GNU system when it 
is decided.
address@hidden What Unix does is not clean and I don't think GNU should use 
that.
-
address@hidden Access to the Terminal, Orphaned Process Groups, Controlling 
Terminal, Job Control
address@hidden Access to the Controlling Terminal
address@hidden controlling-terminal, access to
-
-Processes in the foreground job of a controlling terminal have
-unrestricted access to that terminal; background processes do not.  This
-section describes in more detail what happens when a process in a
-background job tries to access its controlling terminal.
-
address@hidden @code{SIGTTIN}, from background job
-When a process in a background job tries to read from its controlling
-terminal, the process group is usually sent a @code{SIGTTIN} signal.
-This normally causes all of the processes in that group to stop (unless
-they handle the signal and don't stop themselves).  However, if the
-reading process is ignoring or blocking this signal, then @code{read}
-fails with an @code{EIO} error instead.
-
address@hidden @code{SIGTTOU}, from background job
-Similarly, when a process in a background job tries to write to its
-controlling terminal, the default behavior is to send a @code{SIGTTOU}
-signal to the process group.  However, the behavior is modified by the
address@hidden bit of the local-modes flags (@pxref{Local Modes}).  If
-this bit is not set (which is the default), then writing to the
-controlling terminal is always permitted without sending a signal.
-Writing is also permitted if the @code{SIGTTOU} signal is being
-ignored or blocked by the writing process.
-
-Most other terminal operations that a program can do are treated as
-reading or as writing.  The description of each operation should say
-which.
-
-For more information about the primitive @code{read} and @code{write}
-functions, see @ref{I/O Primitives}.
-
-
address@hidden Orphaned Process-Groups
address@hidden Orphaned Process-Groups
address@hidden orphaned process-group
-
-When a controlling process terminates, its terminal becomes free and a
-new session can be established on it.  (In fact, another user could log
-in on the terminal.)  This could cause a problem if any processes from
-the old session are still trying to use that terminal.
-
-To prevent problems, process groups that continue running even after the
-session leader has terminated are marked as @dfn{orphaned process-groups}.
-
-When a process group becomes an orphan, its processes are sent a
address@hidden signal.  Ordinarily, this causes the processes to
-terminate.  However, if a program ignores this signal or establishes a
-handler for it (@pxref{Signal Handling}), it can continue running as in
-the orphan process group even after its controlling process terminates;
-but it still cannot access the terminal any more.
-
address@hidden Implementing a Shell
address@hidden Implementing a Job-Control Shell
-
-This section describes what a shell must do to implement job control, by
-presenting an extensive sample program to illustrate the concepts
-involved.
-
address@hidden
address@hidden @bullet
address@hidden
address@hidden Structures}, introduces the example and presents its primary
-data structures.
-
address@hidden
address@hidden the Shell}, discusses actions that the shell must
-perform to prepare for job control.
-
address@hidden
address@hidden Jobs}, includes information about how to create jobs
-to execute commands.
-
address@hidden
address@hidden and Background}, discusses what the shell should do
-differently when launching a job in the foreground as opposed to a
-background job.
-
address@hidden
address@hidden and Terminated Jobs}, discusses reporting of job status
-back to the shell.
-
address@hidden
address@hidden Stopped Jobs}, tells you how to continue jobs that
-have been stopped.
-
address@hidden
address@hidden Pieces}, discusses other parts of the shell.
address@hidden itemize
address@hidden iftex
-
address@hidden Data Structures, Initializing the Shell,  , Implementing a Shell
address@hidden Data Structures for the Shell
-
-All of the program examples included in this chapter are part of
-a simple shell program.  This section presents data structures
-and utility functions that are used throughout the example.
-
-The sample shell deals mainly with two data structures.  The
address@hidden type contains information about a job, which is a set of
-subprocesses linked together with pipes.  The @code{process} type
-holds information about a single subprocess.  Here are the relevant
-data-structure declarations:
-
address@hidden
-
-/* @r{A process is a single process.}  */
-typedef struct process
address@hidden
-  struct process *next;       /* @r{next process in pipeline} */
-  char **argv;                /* @r{for exec} */
-  pid_t pid;                  /* @r{process @acronym{ID}} */
-  char completed;             /* @r{true if process has completed} */
-  char stopped;               /* @r{true if process has stopped} */
-  int status;                 /* @r{reported status value} */
address@hidden process;
-
-
-
-/* @r{A job is a pipeline of processes.}  */
-typedef struct job
address@hidden
-  struct job *next;           /* @r{next active job} */
-  char *command;              /* @r{command line, used for messages} */
-  process *first_process;     /* @r{list of processes in this job} */
-  pid_t pgid;                 /* @r{process-group @acronym{id}} */
-  char notified;              /* @r{true if user told about stopped job} */
-  struct termios tmodes;      /* @r{saved terminal modes} */
-  int stdin, stdout, stderr;  /* @r{standard i/o channels} */
address@hidden job;
-
-/* @r{The active jobs are linked into a list.  This is its head.}   */
-job *first_job = NULL;
-
address@hidden smallexample
-
-Here are some utility functions that are used for operating on @code{job}
-objects:
-
address@hidden
-
-/* @r{Find the active job with the indicated @var{pgid}.}  */
-job *
-find_job (pid_t pgid)
address@hidden
-  job *j;
-
-  for (j = first_job; j; j = j->next)
-    if (j->pgid == pgid)
-      return j;
-  return NULL;
address@hidden
-
-
-
-/* @r{Return true if all processes in the job have stopped or completed.}  */
-int
-job_is_stopped (job *j)
address@hidden
-  process *p;
-
-  for (p = j->first_process; p; p = p->next)
-    if (!p->completed && !p->stopped)
-      return 0;
-  return 1;
address@hidden
-
-
-
-/* @r{Return true if all processes in the job have completed.}  */
-int
-job_is_completed (job *j)
address@hidden
-  process *p;
-
-  for (p = j->first_process; p; p = p->next)
-    if (!p->completed)
-      return 0;
-  return 1;
address@hidden
-
address@hidden smallexample
-
-
address@hidden Initializing the Shell, Launching Jobs, Data Structures, 
Implementing a Shell
address@hidden Initializing the Shell
address@hidden job control, enabling
address@hidden subshell
-
-When a shell program that normally performs job control is started, it
-has to be careful, in case it has been invoked from another shell that
-is already doing its own job control.
-
-A subshell that runs interactively has to ensure that it has been placed
-in the foreground by its parent shell before it can enable job control
-itself.  It does this by getting its initial process-group @acronym{id} with 
the
address@hidden function, and comparing it to the process-group @acronym{id} of 
the
-current foreground job associated with its controlling terminal (which
-can be retrieved using the @code{tcgetpgrp} function).
-
-If the subshell is not running as a foreground job, it must stop itself
-by sending a @code{SIGTTIN} signal to its own process group.  It may not
-arbitrarily put itself into the foreground; it must wait for the user to
-tell the parent shell to do this.  If the subshell is continued again,
-it should repeat the check and stop itself again if it is still not in
-the foreground.
-
address@hidden job control, enabling
-Once the subshell has been placed into the foreground by its parent
-shell, it can enable its own job control.  It does this by calling
address@hidden to put itself into its own process group, and then
-calling @code{tcsetpgrp} to place this process group into the
-foreground.
-
-When a shell enables job control, it should set itself to ignore all the
-job control stop signals so that it doesn't accidentally stop itself.
-You can do this by setting the action for all the stop signals to
address@hidden
-
-A subshell that runs noninteractively cannot and should not support
-job control.  It must leave all processes it creates in the same
-process group as the shell itself; this allows the noninteractive
-shell and its child processes to be treated as a single job by the
-parent shell.  This is easy to do---just don't use any of the
-job-control primitives---but you must remember to make the shell do
-it.
-
-
-Here is the initialization code for the sample shell that shows how to
-do all of this:
-
address@hidden
-/* @r{Keep track of attributes of the shell.}  */
-
-#include <sys/types.h>
-#include <termios.h>
-#include <unistd.h>
-
-pid_t shell_pgid;
-struct termios shell_tmodes;
-int shell_terminal;
-int shell_is_interactive;
-
-
-/* @r{Make sure the shell is running interactively as the foreground job}
-   @r{before proceeding.} */
-
-void
-init_shell ()
address@hidden
-
-  /* @r{See if we are running interactively.}  */
-  shell_terminal = STDIN_FILENO;
-  shell_is_interactive = isatty (shell_terminal);
-
-  if (shell_is_interactive)
-    @{
-      /* @r{Loop until we are in the foreground.}  */
-      while (tcgetpgrp (shell_terminal) != (shell_pgid = getpgrp ()))
-        kill (- shell_pgid, SIGTTIN);
-
-      /* @r{Ignore interactive and job-control signals.}  */
-      signal (SIGINT, SIG_IGN);
-      signal (SIGQUIT, SIG_IGN);
-      signal (SIGTSTP, SIG_IGN);
-      signal (SIGTTIN, SIG_IGN);
-      signal (SIGTTOU, SIG_IGN);
-      signal (SIGCHLD, SIG_IGN);
-
-      /* @r{Put ourselves in our own process group.}  */
-      shell_pgid = getpid ();
-      if (setpgid (shell_pgid, shell_pgid) < 0)
-        @{
-          perror ("Couldn't put the shell in its own process group");
-          exit (1);
-        @}
-
-      /* @r{Grab control of the terminal.}  */
-      tcsetpgrp (shell_terminal, shell_pgid);
-
-      /* @r{Save default terminal attributes for the shell.}  */
-      tcgetattr (shell_terminal, &shell_tmodes);
-    @}
address@hidden
address@hidden smallexample
-
-
address@hidden Launching Jobs
address@hidden Launching Jobs
address@hidden launching jobs
-
-Once the shell has taken responsibility for performing job control on
-its controlling terminal, it can launch jobs in response to commands
-typed by the user.
-
-To create the processes in a process group, you use the same @code{fork}
-and @code{exec} functions described in @ref{Process-Creation Concepts}.
-Since there are multiple child processes involved, though, things are a
-little more complicated and you must be careful to do things in the
-right order.  Otherwise, nasty race conditions can result.
-
-You have two choices for how to structure the tree of parent-child
-relationships among the processes.  You can either make all the
-processes in the process group be children of the shell process, or
-you can make one process in a group be the ancestor of all the other
-processes in that group.  The sample shell program presented in this
-chapter uses the first approach because it makes bookkeeping somewhat
-simpler.
-
address@hidden process-group leader
address@hidden process-group @sc{ID}
-As each process is forked, it should put itself in the new process group
-by calling @code{setpgid} (@pxref{Process Group Functions}).  The first
-process in the new group becomes its @dfn{process group leader}, and its
-process @acronym{ID} becomes the @dfn{process group ID} for the group.
-
address@hidden race conditions, relating to job control
-The shell should also call @code{setpgid} to put each of its child
-processes into the new process group.  This is because there is a
-potential timing problem: each child process must be put in the process
-group before it begins executing a new program, and the shell depends on
-having all the child processes in the group before it continues
-executing.  If both the child processes and the shell call
address@hidden, this ensures that the right things happen no matter which
-process gets to it first.
-
-If the job is being launched as a foreground job, the new process group
-also needs to be put into the foreground on the controlling terminal
-using @code{tcsetpgrp}.  Again, this should be done by the shell as well
-as by each of its child processes, to avoid race conditions.
-
-The next thing each child process should do is to reset its signal
-actions.
-
-During initialization, the shell process set itself to ignore
-job-control signals (@pxref{Initializing the Shell}).  As a result,
-any child processes it creates also ignore these signals by
-inheritance.  This is definitely undesirable, so each child process
-should explicitly set the actions for these signals back to
address@hidden just after it is forked.
-
-Since shells follow this convention, applications can assume that they
-inherit the correct handling of these signals from the parent process.
-But every application has a responsibility not to mess up the handling
-of stop signals.  Applications that disable the normal interpretation of
-the SUSP character should provide some other mechanism for the user to
-stop the job.  When the user invokes this mechanism, the program should
-send a @code{SIGTSTP} signal to the process group of the process, not
-just to the process itself (@pxref{Signaling Another Process}).
-
-Finally, each child process should call @code{exec} in the normal way.
-This is also the point at which redirection of the standard input and
-output channels should be handled (@pxref{Duplicating Descriptors}).
-
-Here is the function from the sample shell program that is responsible
-for launching a program.  The function is executed by each child process
-immediately after it has been forked by the shell, and never returns.
-
address@hidden
-void
-launch_process (process *p, pid_t pgid,
-                int infile, int outfile, int errfile,
-                int foreground)
address@hidden
-  pid_t pid;
-
-  if (shell_is_interactive)
-    @{
-      /* @r{Put the process into the process group and give the process group}
-         @r{the terminal, if appropriate.}
-         @r{This has to be done both by the shell and in the individual}
-         @r{child processes because of potential race conditions.}  */
-      pid = getpid ();
-      if (pgid == 0) pgid = pid;
-      setpgid (pid, pgid);
-      if (foreground)
-        tcsetpgrp (shell_terminal, pgid);
-
-      /* @r{Set the handling for job control signals back to the default.}  */
-      signal (SIGINT, SIG_DFL);
-      signal (SIGQUIT, SIG_DFL);
-      signal (SIGTSTP, SIG_DFL);
-      signal (SIGTTIN, SIG_DFL);
-      signal (SIGTTOU, SIG_DFL);
-      signal (SIGCHLD, SIG_DFL);
-    @}
-
-  /* @r{Set the standard input/output channels of the new process.}  */
-  if (infile != STDIN_FILENO)
-    @{
-      dup2 (infile, STDIN_FILENO);
-      close (infile);
-    @}
-  if (outfile != STDOUT_FILENO)
-    @{
-      dup2 (outfile, STDOUT_FILENO);
-      close (outfile);
-    @}
-  if (errfile != STDERR_FILENO)
-    @{
-      dup2 (errfile, STDERR_FILENO);
-      close (errfile);
-    @}
-
-  /* @r{Exec the new process.  Make sure we exit.}  */
-  execvp (p->argv[0], p->argv);
-  perror ("execvp");
-  exit (1);
address@hidden
address@hidden smallexample
-
-If the shell is not running interactively, this function does not do
-anything with process groups or signals.  Remember that a shell not
-performing job control must keep all of its subprocesses in the same
-process group as the shell itself.
-
-Next, here is the function that actually launches a complete job.
-After creating the child processes, this function calls some other
-functions to put the newly created job into the foreground or
-background (@pxref{Foreground and Background}).
-
address@hidden
-void
-launch_job (job *j, int foreground)
address@hidden
-  process *p;
-  pid_t pid;
-  int mypipe[2], infile, outfile;
-
-  infile = j->stdin;
-  for (p = j->first_process; p; p = p->next)
-    @{
-      /* @r{Set up pipes, if necessary.}  */
-      if (p->next)
-        @{
-          if (pipe (mypipe) < 0)
-            @{
-              perror ("pipe");
-              exit (1);
-            @}
-          outfile = mypipe[1];
-        @}
-      else
-        outfile = j->stdout;
-
-      /* @r{Fork the child processes.}  */
-      pid = fork ();
-      if (pid == 0)
-        /* @r{This is the child process.}  */
-        launch_process (p, j->pgid, infile,
-                        outfile, j->stderr, foreground);
-      else if (pid < 0)
-        @{
-          /* @r{The fork failed.}  */
-          perror ("fork");
-          exit (1);
-        @}
-      else
-        @{
-          /* @r{This is the parent process.}  */
-          p->pid = pid;
-          if (shell_is_interactive)
-            @{
-              if (!j->pgid)
-                j->pgid = pid;
-              setpgid (pid, j->pgid);
-            @}
-        @}
-
-      /* @r{Clean up after pipes.}  */
-      if (infile != j->stdin)
-        close (infile);
-      if (outfile != j->stdout)
-        close (outfile);
-      infile = mypipe[0];
-    @}
-
-  format_job_info (j, "launched");
-
-  if (!shell_is_interactive)
-    wait_for_job (j);
-  else if (foreground)
-    put_job_in_foreground (j, 0);
-  else
-    put_job_in_background (j, 0);
address@hidden
address@hidden smallexample
-
-
address@hidden Foreground and Background, Stopped and Terminated Jobs, 
Launching Jobs, Implementing a Shell
address@hidden Foreground and Background
-
-Now let's consider what actions must be taken by the shell when it
-launches a job into the foreground, and how this differs from what
-must be done when a background job is launched.
-
address@hidden foreground job, launching
-When a foreground job is launched, the shell must first give it access
-to the controlling terminal by calling @code{tcsetpgrp}.  Then, the
-shell should wait for processes in that process group to terminate or
-stop (@pxref{Stopped and Terminated Jobs}).
-
-When all of the processes in the group have either completed or stopped,
-the shell should regain control of the terminal for its own process
-group by calling @code{tcsetpgrp} again.  Since stop signals caused by
-I/O from a background process or a SUSP character typed by the user
-are sent to the process group, normally all the processes in the job
-stop together.
-
-The foreground job may have left the terminal in a strange state, so
-the shell should restore its own saved terminal modes before
-continuing.  In case the job is merely stopped, the shell should first
-save the current terminal modes so that it can restore them later if
-the job is continued.  The functions for dealing with terminal modes
-are @code{tcgetattr} and @code{tcsetattr} (@pxref{Terminal Modes}).
-
-Here is the sample shell's function for doing all of this:
-
address@hidden
-
-/* @r{Put job @var{j} in the foreground.  If @var{cont} is nonzero,}
-   @r{restore the saved terminal modes and send the process group a}
-   @address@hidden signal to wake it up before we block.}  */
-
-void
-put_job_in_foreground (job *j, int cont)
address@hidden
-  /* @r{Put the job into the foreground.}  */
-  tcsetpgrp (shell_terminal, j->pgid);
-
-
-
-  /* @r{Send the job a continue signal, if necessary.}  */
-  if (cont)
-    @{
-      tcsetattr (shell_terminal, TCSADRAIN, &j->tmodes);
-      if (kill (- j->pgid, SIGCONT) < 0)
-        perror ("kill (SIGCONT)");
-    @}
-
-
-  /* @r{Wait for it to report.}  */
-  wait_for_job (j);
-
-  /* @r{Put the shell back in the foreground.}  */
-  tcsetpgrp (shell_terminal, shell_pgid);
-
-
-  /* @r{Restore the shell's terminal modes.}  */
-  tcgetattr (shell_terminal, &j->tmodes);
-  tcsetattr (shell_terminal, TCSADRAIN, &shell_tmodes);
address@hidden
-
address@hidden smallexample
-
address@hidden background job, launching
-If the process group is launched as a background job, the shell should
-remain in the foreground itself and continue to read commands from
-the terminal.
-
-In the sample shell, there is not much that needs to be done to put
-a job into the background.  Here is the function it uses:
-
address@hidden
-/* @r{Put a job in the background.  If the cont argument is true, send}
-   @r{the process group a @code{SIGCONT} signal to wake it up.}  */
-
-void
-put_job_in_background (job *j, int cont)
address@hidden
-  /* @r{Send the job a continue signal, if necessary.}  */
-  if (cont)
-    if (kill (-j->pgid, SIGCONT) < 0)
-      perror ("kill (SIGCONT)");
address@hidden
address@hidden smallexample
-
-
address@hidden Stopped and Terminated Jobs, Continuing Stopped Jobs, Foreground 
and Background, Implementing a Shell
address@hidden Stopped and Terminated Jobs
-
address@hidden stopped jobs, detecting
address@hidden terminated jobs, detecting
-When a foreground process is launched, the shell must block until all of
-the processes in that job have either terminated or stopped.  It can do
-this by calling the @code{waitpid} function (@pxref{Process
-Completion}).  Use the @code{WUNTRACED} option so that status is reported
-for processes that stop as well as processes that terminate.
-
-The shell must also check on the status of background jobs so that it
-can report terminated and stopped jobs to the user; this can be done by
-calling @code{waitpid} with the @code{WNOHANG} option.  A good place to
-put a such a check for terminated and stopped jobs is just before
-prompting for a new command.
-
address@hidden @code{SIGCHLD}, handling of
-The shell can also receive asynchronous notification that there is
-status information available for a child process by establishing a
-handler for @code{SIGCHLD} signals (@pxref{Signal Handling}).
-
-In the sample shell program, the @code{SIGCHLD} signal is normally
-ignored.  This is to avoid reentrancy problems involving the global data
-structures the shell manipulates.  But at specific times when the shell
-is not using these data structures---such as when it is waiting for
-input on the terminal---it makes sense to enable a handler for
address@hidden  The same function that is used to do the synchronous
-status checks (@code{do_job_notification}, in this case) can also be
-called from within this handler.
-
-Here are the parts of the sample shell program that deal with checking
-the status of jobs and reporting the information to the user:
-
address@hidden
-
-/* @r{Store the status of the process @var{pid} that was returned by waitpid.}
-   @r{Return 0 if all went well, nonzero otherwise.}  */
-
-int
-mark_process_status (pid_t pid, int status)
address@hidden
-  job *j;
-  process *p;
-
-
-
-  if (pid > 0)
-    @{
-      /* @r{Update the record for the process.}  */
-      for (j = first_job; j; j = j->next)
-        for (p = j->first_process; p; p = p->next)
-          if (p->pid == pid)
-            @{
-              p->status = status;
-              if (WIFSTOPPED (status))
-                p->stopped = 1;
-              else
-                @{
-                  p->completed = 1;
-                  if (WIFSIGNALED (status))
-                    fprintf (stderr, "%d: Terminated by signal %d.\n",
-                             (int) pid, WTERMSIG (p->status));
-                @}
-              return 0;
-             @}
-      fprintf (stderr, "No child process %d.\n", pid);
-      return -1;
-    @}
-
-
-  else if (pid == 0 || errno == ECHILD)
-    /* @r{No processes ready to report}  */
-    return -1;
-  else @{
-    /* @r{Other weird errors}  */
-    perror ("waitpid");
-    return -1;
-  @}
address@hidden
-
-
-
-/* @r{Check for processes that have status information available,}
-   @r{without blocking.}  */
-
-void
-update_status (void)
address@hidden
-  int status;
-  pid_t pid;
-
-  do
-    pid = waitpid (WAIT_ANY, &status, WUNTRACED|WNOHANG);
-  while (!mark_process_status (pid, status));
address@hidden
-
-
-
-/* @r{Check for processes that have status information available,}
-   @r{blocking until all processes in the given job have reported.}  */
-
-void
-wait_for_job (job *j)
address@hidden
-  int status;
-  pid_t pid;
-
-  do
-    pid = waitpid (WAIT_ANY, &status, WUNTRACED);
-  while (!mark_process_status (pid, status)
-         && !job_is_stopped (j)
-         && !job_is_completed (j));
address@hidden
-
-
-
-/* @r{Format information about job status for the user to look at.}  */
-
-void
-format_job_info (job *j, const char *status)
address@hidden
-  fprintf (stderr, "%ld (%s): %s\n", (long)j->pgid, status, j->command);
address@hidden
-
-
-
-/* @r{Notify the user about stopped or terminated jobs.}
-   @r{Delete terminated jobs from the active job list.}  */
-
-void
-do_job_notification (void)
address@hidden
-  job *j, *jlast, *jnext;
-  process *p;
-
-  /* @r{Update status information for child processes.}  */
-  update_status ();
-
-  jlast = NULL;
-  for (j = first_job; j; j = jnext)
-    @{
-      jnext = j->next;
-
-      /* @r{If all processes have completed, tell the user the job has}
-         @r{completed and delete it from the list of active jobs.}  */
-      if (job_is_completed (j)) @{
-        format_job_info (j, "completed");
-        if (jlast)
-          jlast->next = jnext;
-        else
-          first_job = jnext;
-        free_job (j);
-      @}
-
-      /* @r{Notify the user about stopped jobs,}
-         @r{marking them so that we won't do this more than once.}  */
-      else if (job_is_stopped (j) && !j->notified) @{
-        format_job_info (j, "stopped");
-        j->notified = 1;
-        jlast = j;
-      @}
-
-      /* @r{Don't say anything about jobs that are still running.}  */
-      else
-        jlast = j;
-    @}
address@hidden
-
address@hidden smallexample
-
address@hidden Continuing Stopped Jobs, Missing Pieces, Stopped and Terminated 
Jobs, Implementing a Shell
address@hidden Continuing Stopped Jobs
-
address@hidden stopped jobs, continuing
-The shell can continue a stopped job by sending a @code{SIGCONT} signal
-to its process group.  If the job is being continued in the foreground,
-the shell should first invoke @code{tcsetpgrp} to give the job access to
-the terminal, and restore the saved terminal settings.  After continuing
-a job in the foreground, the shell should wait for the job to stop or
-complete, as if the job had just been launched in the foreground.
-
-The sample shell program handles both newly created and continued jobs
-with the same pair of functions, @address@hidden and
address@hidden@code{put_job_in_background}}.  The definitions of these functions
-were given in @ref{Foreground and Background}.  When continuing a
-stopped job, a nonzero value is passed as the @var{cont} argument to
-ensure that the @code{SIGCONT} signal is sent and the terminal modes
-reset, as appropriate.
-
-This leaves only a function for updating the shell's internal bookkeeping
-about the job being continued:
-
address@hidden
-
-/* @r{Mark a stopped job J as running again.}  */
-
-void
-mark_job_as_running (job *j)
address@hidden
-  Process *p;
-
-  for (p = j->first_process; p; p = p->next)
-    p->stopped = 0;
-  j->notified = 0;
address@hidden
-
-
-
-/* @r{Continue the job J.}  */
-
-void
-continue_job (job *j, int foreground)
address@hidden
-  mark_job_as_running (j);
-  if (foreground)
-    put_job_in_foreground (j, 1);
-  else
-    put_job_in_background (j, 1);
address@hidden
-
address@hidden smallexample
-
address@hidden Missing Pieces
address@hidden The Missing Pieces
-
-The code extracts for the sample shell included in this chapter are only
-a part of the entire shell program.  In particular, nothing at all has
-been said about how @code{job} and @code{program} data structures are
-allocated and initialized.
-
-Most real shells provide a complex user interface that has support for
-a command language---variables, abbreviations, substitutions, pattern
-matching on file names, etc.  All of this is far too complicated to
-explain here!  Instead, we have concentrated on showing how to
-implement the core process-creation and job-control functions that can
-be called from such a shell.
-
-Here is a table summarizing the major entry points we have presented:
-
address@hidden @code
address@hidden void init_shell (void)
-Initialize the shell's internal state (@pxref{Initializing the
-Shell}).
-
address@hidden void launch_job (job address@hidden, int @var{foreground})
-Launch the job @var{j} as either a foreground or background job
-(@pxref{Launching Jobs}).
-
address@hidden void do_job_notification (void)
-Check for and report any jobs that have terminated or stopped.  It can
-be called synchronously or within a handler for @code{SIGCHLD} signals
-(@pxref{Stopped and Terminated Jobs}).
-
address@hidden void continue_job (job address@hidden, int @var{foreground})
-Continue the job @var{j} (@pxref{Continuing Stopped Jobs}).
address@hidden table
-
-Of course, a real shell would also want to provide other functions for
-managing jobs.  For example, it would be useful to have commands to list
-all active jobs or to send a signal (such as @code{SIGKILL}) to a job.
-
-
address@hidden Functions for Job Control,  , Implementing a Shell, Job Control
address@hidden Functions for Job Control
address@hidden process-group functions
address@hidden job-control functions
-
-This section contains detailed descriptions of the functions relating
-to job control.
-
-
address@hidden Identifying the Terminal
address@hidden Identifying the Controlling Terminal
address@hidden controlling-terminal, determining
-
-You can use the @code{ctermid} function to get a file name that you can
-use to open the controlling terminal.  In the @acronym{GNU} library, it returns
-the same string all the time: @samp{/dev/tty}.  That is a special
-``magic'' file-name that refers to the controlling terminal of the
-current process (if it has one).  To find the name of the specific
-terminal device, use @code{ttyname} (@pxref{Is It a Terminal}).
-
-The function @code{ctermid} is declared in the header file
address@hidden
address@hidden stdio.h
-
address@hidden stdio.h
address@hidden POSIX.1
address@hidden {char *} ctermid (char address@hidden)
-The @code{ctermid} function returns a string containing the file name of
-the controlling terminal for the current process.  If @var{string} is
-not a null pointer, it should be an array that can hold at least
address@hidden characters; the string is returned in this array.
-Otherwise, a pointer to a string in a static area is returned, which
-might get overwritten on subsequent calls to this function.
-
-An empty string is returned if the file name cannot be determined for
-any reason.  Even if a file name is returned, access to the file it
-represents is not guaranteed.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden POSIX.1
address@hidden Macro int L_ctermid
-The value of this macro is an integer constant expression that
-represents the size of a string large enough to hold the file name
-returned by @code{ctermid}.
address@hidden deftypevr
-
-See also the @code{isatty} and @code{ttyname} functions, in
address@hidden It a Terminal}.
-
-
address@hidden Process Group Functions, Terminal Access Functions, Identifying 
the Terminal, Functions for Job Control
address@hidden Process-Group Functions
-
-Here are descriptions of the functions for manipulating process groups.
-Your program should include the header files @file{sys/types.h} and
address@hidden to use these functions.
address@hidden unistd.h
address@hidden sys/types.h
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden pid_t setsid (void)
-The @code{setsid} function creates a new session.  The calling process
-becomes the session leader, and is put in a new process group whose
-process-group @acronym{id} is the same as the process @acronym{ID} of that 
process.  There
-are initially no other processes in the new process group, and no other
-process groups in the new session.
-
-This function also makes the calling process have no controlling terminal.
-
-The @code{setsid} function returns the new process-group @acronym{id}
-of the calling process if successful.  A return value of @code{-1}
-indicates an error.  The following @code{errno} error condition is
-defined for this function:
-
address@hidden @code
address@hidden EPERM
-The calling process is already a process group leader, or there is
-already another process group around that has the same process-group 
@acronym{id}.
address@hidden table
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden SVID
address@hidden pid_t getsid (pid_t @var{pid})
-
-The @code{getsid} function returns the process-group @acronym{id} of the 
session
-leader of the specified process.  If a @var{pid} is @code{0}, the
-process-group @acronym{id} of the session leader of the current process is
-returned.
-
-In case of error, @code{-1} is returned and @code{errno} is set.  The
-following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden ESRCH
-There is no process with the given process @acronym{ID} @var{pid}.
address@hidden EPERM
-The calling process and the process specified by @var{pid} are in
-different sessions, and the implementation doesn't allow access to the
-process-group @acronym{ID} of the session leader of the process with
address@hidden @var{pid} from the calling process.
address@hidden table
address@hidden deftypefun
-
-The @code{getpgrp} function has two definitions: one derived from @acronym{BSD}
-Unix, and one from the @acronym{POSIX}.1 standard.  The feature-test macros you
-have selected (@pxref{Feature-Test Macros}) determine which definition
-you get.  Specifically, you get the @acronym{BSD} version if you define
address@hidden; otherwise, you get the @acronym{POSIX} version if you define
address@hidden or @code{_GNU_SOURCE}.  Programs written for old
address@hidden systems will not include @file{unistd.h}, which defines
address@hidden specially under @code{_BSD_SOURCE}.  You must link such
-programs with the @code{-lbsd-compat} option to get the @acronym{BSD} 
address@hidden
address@hidden -lbsd-compat
address@hidden bsd-compat
address@hidden @acronym{bsd} compatibility library
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden address@hidden Function} pid_t getpgrp (void)
-The @acronym{POSIX}.1 definition of @code{getpgrp} returns the process-group 
@acronym{id} of
-the calling process.
address@hidden deftypefn
-
address@hidden unistd.h
address@hidden BSD
address@hidden {BSD Function} pid_t getpgrp (pid_t @var{pid})
-The @acronym{BSD} definition of @code{getpgrp} returns the process-group 
@acronym{id} of the
-process @var{pid}.  You can supply a value of @code{0} for the @var{pid}
-argument to get information about the calling process.
address@hidden deftypefn
-
address@hidden unistd.h
address@hidden SVID
address@hidden {System V Function} int getpgid (pid_t @var{pid})
-
address@hidden is the same as the @acronym{BSD} function @code{getpgrp}.  It
-returns the process-group @acronym{id} of the process @var{pid}.  You can 
supply a
-value of @code{0} for the @var{pid} argument to get information about
-the calling process.
-
-In case of error, @code{-1} is returned and @code{errno} is set.  The
-following @code{errno} error condition is defined for this function:
-
address@hidden @code
address@hidden ESRCH
-There is no process with the given process @acronym{ID} @var{pid}.
-The calling process and the process specified by @var{pid} are in
-different sessions, and the implementation doesn't allow access to the
-process-group @acronym{ID} of the process with @acronym{ID} @var{pid}
-from the calling process.
address@hidden table
address@hidden deftypefn
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int setpgid (pid_t @var{pid}, pid_t @var{pgid})
-The @code{setpgid} function puts the process @var{pid} into the process
-group @var{pgid}.  As a special case, either @var{pid} or @var{pgid} can
-be 0 to indicate the process @acronym{ID} of the calling process.
-
-This function fails on a system that does not support job control
-(@pxref{Job Control Is Optional}).
-
-If the operation is successful, @code{setpgid} returns 0.  Otherwise,
-it returns @code{-1}.  The following @code{errno} error conditions are
-defined for this function:
-
address@hidden @code
address@hidden EACCES
-The child process named by @var{pid} has executed an @code{exec}
-function since it was forked.
-
address@hidden EINVAL
-The value of the @var{pgid} is not valid.
-
address@hidden ENOSYS
-The system doesn't support job control.
-
address@hidden EPERM
-The process indicated by the @var{pid} argument is a session leader,
-or is not in the same session as the calling process, or the value of
-the @var{pgid} argument doesn't match a process-group @acronym{id} in the same
-session as the calling process.
-
address@hidden ESRCH
-The process indicated by the @var{pid} argument is not the calling
-process or a child of the calling process.
address@hidden table
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden BSD
address@hidden int setpgrp (pid_t @var{pid}, pid_t @var{pgid})
-This is the @acronym{BSD} Unix name for @code{setpgid}.  Both functions do 
exactly
-the same thing.
address@hidden deftypefun
-
-
address@hidden Terminal Access Functions
address@hidden Functions for Controlling-Terminal Access
-
-These are the functions for reading or setting the foreground
-process group of a terminal.  You should include the header files
address@hidden/types.h} and @file{unistd.h} in your application to use
-these functions.
address@hidden unistd.h
address@hidden sys/types.h
-
-Although these functions take a file-descriptor argument to specify
-the terminal device, the foreground job is associated with the terminal
-file itself and not a particular open file-descriptor.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden pid_t tcgetpgrp (int @var{filedes})
-This function returns the process-group @acronym{id} of the foreground process
-group associated with the terminal open on descriptor @var{filedes}.
-
-If there is no foreground process group, the return value is a number
-greater than @code{1} that does not match the process group
address@hidden of any existing process group.  This can happen if all of
-the processes in the job that was formerly the foreground job have
-terminated and no other job has yet been moved into the foreground.
-
-In case of an error, a value of @code{-1} is returned.  The
-following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden ENOSYS
-The system doesn't support job control.
-
address@hidden ENOTTY
-The terminal file associated with the @var{filedes} argument isn't the
-controlling terminal of the calling process.
address@hidden table
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int tcsetpgrp (int @var{filedes}, pid_t @var{pgid})
-This function is used to set a terminal's foreground process-group
address@hidden  The argument @var{filedes} is a descriptor that
-specifies the terminal; @var{pgid} specifies the process group.  The
-calling process must be a member of the same session as @var{pgid} and
-must have the same controlling terminal.
-
-For terminal-access purposes, this function is treated as output.  If
-it is called from a background process on its controlling terminal,
-normally all processes in the process group are sent a @code{SIGTTOU}
-signal.  The exception is if the calling process itself is ignoring or
-blocking @code{SIGTTOU} signals, in which case the operation is
-performed and no signal is sent.
-
-If successful, @code{tcsetpgrp} returns @code{0}.  A return value of
address@hidden indicates an error.  The following @code{errno} error
-conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden EINVAL
-The @var{pgid} argument is not valid.
-
address@hidden ENOSYS
-The system doesn't support job control.
-
address@hidden ENOTTY
-The @var{filedes} isn't the controlling terminal of the calling process.
-
address@hidden EPERM
-The @var{pgid} isn't a process group in the same session as the calling
-process.
address@hidden table
address@hidden deftypefun
-
address@hidden termios.h
address@hidden Unix98
address@hidden pid_t tcgetsid (int @var{fildes})
-This function is used to obtain the process-group @acronym{id} of the
-session for which the terminal specified by @var{fildes} is the
-controlling terminal.  If the call is successful, the group
address@hidden is returned.  Otherwise, the return value is
address@hidden(pid_t) -1} and the global variable @var{errno} is set to one of
-the following values:
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden ENOTTY
-The calling process does not have a controlling terminal, or the file
-is not the controlling terminal.
address@hidden table
address@hidden deftypefun
-
address@hidden Name Service Switch, Users and Groups, Job Control, Top
address@hidden System Databases and Name-Service Switch
address@hidden %MENU% Accessing system databases
address@hidden Name Service Switch
address@hidden @acronym{NSS}
address@hidden databases
-
-Various functions in the C library need to be configured to work
-correctly in the local environment.  Traditionally, this was done by
-using files (e.g., @file{/etc/passwd}), but other name services (like
-the Network Information Service (@acronym{NIS}) and the Domain Name
-Service (@acronym{DNS})) became popular, and were hacked into the C
-library, usually with a fixed search address@hidden@emph{The Jargon
-File}, version 4.4.7. ``frobnicate'' (December 29, 2003),
address@hidden:// www.catb.org/ ~esr/ jargon/ html/ F/ frobnicate.html}.}
-
-The @acronym{GNU} C Library contains a cleaner solution to this
-problem.  It is designed after a method used by Sun Microsystems in
-the C library of @w{Solaris 2}.  @acronym{GNU} C Library follows their
-name and calls this scheme @dfn{Name Service Switch} (@acronym{NSS}).
-
-Though the interface might be similar to Sun's version, there is no
-common code.  The developers never saw any source code of Sun's
-implementation, and so the internal interface is incompatible.  This
-also manifests in the file names we use as we will see later.
-
-
address@hidden NSS Basics, NSS Configuration File, Name Service Switch, Name 
Service Switch
address@hidden @acronym{NSS} Basics
-
-The basic idea is to put the implementation of the different services
-offered to access the databases in separate modules.  This has some
-advantages:
-
address@hidden
address@hidden
-Contributors can add new services without adding them to @acronym{GNU} C 
Library.
address@hidden
-The modules can be updated separately.
address@hidden
-The C library image is smaller.
address@hidden enumerate
-
-To fulfill the first goal above, the @acronym{ABI} of the modules will
-be described below.  For getting the implementation of a new service
-right, it is important to understand how the functions in the modules
-get called.  They are in no way designed to be used by the programmer
-directly.  Instead, the programmer should only use the documented and
-standardized functions to access the databases.
-
address@hidden
-The databases available in the @acronym{NSS} are
-
address@hidden ethers
address@hidden group
address@hidden hosts
address@hidden netgroup
address@hidden networks
address@hidden protocols
address@hidden passwd
address@hidden rpc
address@hidden services
address@hidden shadow
address@hidden @code
address@hidden aliases
-Mail aliases
address@hidden @pxref{Mail Aliases}.
address@hidden ethers
-Ethernet numbers
address@hidden @pxref{Ethernet Numbers}.
address@hidden group
-Groups of users (@pxref{Group Database})
address@hidden hosts
-Host names and numbers (@pxref{Host Names})
address@hidden netgroup
-Network-wide list of host and users (@pxref{Netgroup Database})
address@hidden networks
-Network names and numbers (@pxref{Networks Database})
address@hidden protocols
-Network protocols (@pxref{Protocols Database})
address@hidden passwd
-User passwords (@pxref{User Database})
address@hidden rpc
-Remote procedure call names and numbers
address@hidden @address@hidden Database}.
address@hidden services
-Network services, @pxref{Services Database}
address@hidden shadow
-Shadow user-passwords
address@hidden @pxref{Shadow Password Database}.
address@hidden vtable
-
address@hidden
-There will be some more added later (@code{automount},
address@hidden, @code{netmasks} and @code{publickey}).
-
address@hidden NSS Configuration File
address@hidden The @acronym{NSS} Configuration File
-
address@hidden @file{/etc/nsswitch.conf}
address@hidden @file{nsswitch.conf}
-Somehow the @acronym{NSS} code must be told about the wishes of the
-user.  For this reason, there is the file @file{/etc/nsswitch.conf}.
-For each database, this file contains a specification for how the
-lookup process should work.  The file could look like this:
-
address@hidden
-# /etc/nsswitch.conf
-#
-# Name Service Switch configuration file.
-#
-
-passwd:     db files nis
-shadow:     files
-group:      db files nis
-
-hosts:      files nisplus nis dns
-networks:   nisplus [NOTFOUND=return] files
-
-ethers:     nisplus [NOTFOUND=return] db files
-protocols:  nisplus [NOTFOUND=return] db files
-rpc:        nisplus [NOTFOUND=return] db files
-services:   nisplus [NOTFOUND=return] db files
-
address@hidden smallexample
-
-The first column is the database, as you can guess from the table
-above.  The rest of the line specifies how the lookup process works.
-You specify the way it works for each database individually.  This
-cannot be done with the old way of a monolithic implementation.
-
-The configuration specification for each database can contain two
-different items:
-
address@hidden @bullet
address@hidden
-The service specification like @code{files}, @code{db} or @code{nis}
address@hidden
-The reaction on lookup result like @code{[NOTFOUND=return]}
address@hidden itemize
-
address@hidden Services in the NSS Configuration
address@hidden Services in the @acronym{NSS} Configuration File
-
-The above example file mentions four different services: @code{files},
address@hidden, @code{nis} and @code{nisplus}.  This does not mean these
-services are available on all sites, nor does it mean these are all
-the services that will ever be available.
-
-In fact, these names are simply strings that the @acronym{NSS} code
-uses to find the implicitly addressed functions.  The internal
-interface will be described later.  Visible to the user are the
-modules that implement an individual service.
-
-Assume the service @var{name} will be used for a lookup.  The code for
-this service is implemented in a module called
address@hidden@var{name}}.  On a system supporting shared libraries,
-this is in fact a shared library with the name (for example)
address@hidden@var{name}.so.2}.  The number at the end is the currently
-used version of the interface, which will not change frequently.
-Normally the user should not have to be cognizant of these files,
-since they should be placed in a directory where they are found
-automatically.  Only the names of all available services are
-important.
-
address@hidden Actions in the NSS Configuration
address@hidden Actions in the @acronym{NSS} Configuration
-
-The second item in the specification gives the user much finer control
-on the lookup process.  Action items are placed between two service
-names and are written within brackets.  The general form is
-
address@hidden
address@hidden ( @code{!}? @var{status} @code{=} @var{action} )+ @code{]}
address@hidden display
-
address@hidden
-where:
-
address@hidden
address@hidden @result{} success | notfound | unavail | tryagain
address@hidden @result{} return | continue
address@hidden smallexample
-
-The case of the keywords is insignificant.  The @var{status}
-values are the results of a call to a lookup function of a specific
-service.  They mean:
-
address@hidden @samp
address@hidden success
-No error occurred and the wanted entry is returned.  The default action
-for this is @code{return}.
-
address@hidden notfound
-The lookup process worked ok, but the needed value was not found.  The
-default action is @code{continue}.
-
address@hidden unavail
address@hidden @acronym{DNS} server unavailable
-The service is permanently unavailable.  This can either mean the needed
-file is not available, or, for @acronym{DNS}, the server is not available or 
does
-not allow queries.  The default action is @code{continue}.
-
address@hidden tryagain
-The service is temporarily unavailable.  This could mean a file is
-locked or a server currently cannot accept more connections.  The
-default action is @code{continue}.
address@hidden ftable
-
address@hidden
-If we have a line like:
-
address@hidden
-ethers: nisplus [NOTFOUND=return] db files
address@hidden smallexample
-
address@hidden
-this is equivalent to:
-
address@hidden
-ethers: nisplus [SUCCESS=return NOTFOUND=return UNAVAIL=continue
-                 TRYAGAIN=continue]
-        db      [SUCCESS=return NOTFOUND=continue UNAVAIL=continue
-                 TRYAGAIN=continue]
-        files
address@hidden smallexample
-
address@hidden
-(except that it would have to be written on one line).  The default
-value for the actions are normally what you want, and only need to be
-changed in exceptional cases.
-
-If the optional @samp{!} is placed before the @var{status}, this means
-the following action is used for all statuses but @var{status} itself.
-In other words, @samp{!} is negation, as it is in the C language (and
-others).
-
-Obviously, it makes no sense to add another action item after the
address@hidden service.  Since there is no other service following, the
-action @emph{always} is @code{return}.
-
address@hidden nisplus, and completeness
-Now, why is this @code{[NOTFOUND=return]} action useful?  To
-understand this, we should know that the @code{nisplus} service is
-often complete; i.e., if an entry is not available in the
address@hidden tables, it is not available anywhere else.  This is
-what is expressed by this action item---it is useless to examine
-further services, since they will not give us a result.
-
address@hidden nisplus, and booting
address@hidden bootstrapping, and services
-The situation would be different if the @acronym{NIS}+ service were
-not available because the machine is booting.  In this case, the
-return value of the lookup function is not @code{notfound} but instead
address@hidden  And as you can see in the complete form above, in
-this situation the @code{db} and @code{files} services are used.  The
-system administrator need not pay special attention to the times when
-the system is not completely ready to work (during booting, shutdown
-or network problems).
-
-
address@hidden Notes on NSS Configuration File
address@hidden Notes on the @acronym{NSS} Configuration File
-
-The @acronym{NSS} implementation is not completely helpless if
address@hidden/etc/nsswitch.conf} does not exist.  For all supported databases
-there is a default value, so it should normally be possible to get the
-system running even if the file is corrupted or missing.
-
address@hidden default value, and @acronym{NSS}
-For the @code{hosts} and @code{networks} databases, the default value
-is @code{dns [!UNAVAIL=return] files}.  The system is prepared for the
address@hidden service not to be available, but if it is available the
-answer it returns is definitive.
-
-The @code{passwd}, @code{group} and @code{shadow} databases are
-traditionally handled in a special way.  The appropriate files in the
address@hidden/etc} directory are read, but if an entry with a name starting
-with a @code{+} character is found, @acronym{NIS} is used.  This kind
-of lookup remains possible by using the special lookup-service
address@hidden, and the default value for the three databases above is
address@hidden [NOTFOUND=return] files}.
-
-For all other databases, the default value is @code{nis
-[NOTFOUND=return] files}.  This solution has the best chance to be
-correct, since @acronym{NIS} and file based lookup is used.
-
address@hidden optimizing @acronym{NSS}
-The user should try to optimize the lookup process.  The different
-services have different response times.  A simple file lookup on a
-local file could be fast, but if the file is long and the needed entry
-is near the end of the file, this may take quite some time.  In this
-case, it might be better to use the @code{db} service, which allows
-fast local access to large data sets.
-
-Often, some global information like @acronym{NIS} must be used, so it
-is unavoidable to use service entries like @code{nis}.  But you
-should avoid slow services like this if possible.
-
-
address@hidden NSS Module Internals
address@hidden @acronym{NSS} Module Internals
-
-The functions contained in a module are identified by their
-names---there is no jump table.  How this is done is of no interest
-here; those interested in this topic should research dynamic linking.
address@hidden @ref{Dynamic Linking}.
-
-
address@hidden NSS Module Names
address@hidden The Naming Scheme of the @acronym{NSS} Modules
-
address@hidden
-The name of each function consist of various parts:
-
address@hidden
-       address@hidden@var{function}
address@hidden quotation
-
address@hidden corresponds to the name of the module this function is
-found address@hidden information is duplicated because we want to
-make it possible to link directly with these shared objects.}  The
address@hidden part is derived from the interface function in the C
-library itself.  If the user calls the function @code{gethostbyname}
-and the service used is @code{files}, the function:
-
address@hidden
-       _nss_files_gethostbyname_r
address@hidden smallexample
-
address@hidden
-in the module:
-
address@hidden
-       libnss_files.so.2
address@hidden smallexample
-
address@hidden
address@hidden reentrant @acronym{NSS} functions
-is used. Actually, the @acronym{NSS} modules only contain reentrant
-versions of the lookup functions---if the user would call the
address@hidden function, this also would end in the above
-function.  For all user interface functions, the C library maps this
-call to a call to the reentrant function.  For reentrant functions,
-this is trivial since the interface is (nearly) the same.  For the
-nonreentrant version, the library keeps internal buffers that are used
-to replace the user-supplied buffer.
-
-In other words, the reentrant functions @emph{can} have counterparts.
-No service module is forced to have functions for all databases and
-all kinds to access them.  If a function is not available, it is
-simply treated as if the function would return @code{unavail}
-(@pxref{Actions in the NSS Configuration}).
-
-The file name @file{libnss_files.so.2} would, on a @w{Solaris 2}
-system, be @file{nss_files.so.2}.  This is the difference mentioned
-above.  Sun's @acronym{NSS} modules are usable only as modules that
-get indirectly loaded.
-
-The @acronym{NSS} modules in the @acronym{GNU} C Library are prepared to be 
used as normal
-libraries themselves.  This is @emph{not} true at the moment, though.
-However,  the organization of the name space in the modules does not make it
-impossible like it is for Solaris.  Now you can see why the modules are
-still libraries.
-
address@hidden NSS Modules Interface
address@hidden The Interface of the Function in @acronym{NSS} Modules
-
-Now we know about the functions contained in the modules.  It is now
-time to describe the types.  Because of the reentrant versions of the
-functions mentioned above, there are some additional arguments
-(compared with the standard, nonreentrant version).  The prototypes
-for the nonreentrant and reentrant versions of our function above are
-
address@hidden
-struct hostent *gethostbyname (const char *name)
-
-int gethostbyname_r (const char *name, struct hostent *result_buf,
-                     char *buf, size_t buflen, struct hostent **result,
-                     int *h_errnop)
address@hidden smallexample
-
address@hidden
-The actual prototype of the function in the @acronym{NSS} modules in this case 
is
-
address@hidden
-enum nss_status _nss_files_gethostbyname_r (const char *name,
-                                            struct hostent *result_buf,
-                                            char *buf, size_t buflen,
-                                            int *errnop, int *h_errnop)
address@hidden smallexample
-
-The interface function is in fact the reentrant function with the
-change of the return value and the omission of the @var{result}
-parameter.  While the user-level function returns a pointer to the
-result, the reentrant function returns an @code{enum nss_status}
-value:
-
address@hidden @code
address@hidden NSS_STATUS_TRYAGAIN
-Numeric value @code{-2}
-
address@hidden NSS_STATUS_UNAVAIL
-Numeric value @code{-1}
-
address@hidden NSS_STATUS_NOTFOUND
-Numeric value @code{0}
-
address@hidden NSS_STATUS_SUCCESS
-Numeric value @code{1}
address@hidden vtable
-
address@hidden
-Now you see where the action items of the @file{/etc/nsswitch.conf} file
-are used.
-
-If you study the source code, you will find there is a fifth value,
address@hidden  This is an internal-use-only value, used by
-a few functions in places where none of the above values can be used.
-If necessary, the source code should be examined to learn about the
-details.
-
-In case the interface function has to return an error, it is important
-that the correct error code is stored in @address@hidden  Some
-return status values have only one associated error code, others have
-more.
-
address@hidden @columnfractions .3 .2 .50
address@hidden
address@hidden @tab @code{EAGAIN} @tab One of the
-functions used ran temporarily out of resources, or a service is
-currently not available.
address@hidden
address@hidden
-        @code{ERANGE} @tab The provided buffer is not large enough.
-The function should be called again with a larger buffer.
address@hidden
address@hidden @tab
-        @code{ENOENT} @tab A necessary input file cannot be found.
address@hidden
address@hidden @tab
-        @code{ENOENT} @tab The requested entry is not available.
address@hidden multitable
-
-These are proposed values.  There can be other error codes, and the
-described error codes can have different meaning.  There is one
-exception: when returning @code{NSS_STATUS_TRYAGAIN}, the error code
address@hidden @emph{must} mean that the user-provided buffer is too
-small.  Everything is noncritical.
-
-The above function has something special that is missing from almost
-all the other module functions---there is an argument @var{h_errnop}.
-This points to a variable that will be filled with the error code if
-the execution of the function fails for some reason.  The reentrant
-function cannot use the global variable @var{h_errno};
address@hidden calls @code{gethostbyname_r} with the last
-argument set to @code{&h_errno}.
-
-The @address@hidden@var{YYY}} functions are the most important
-functions in the @acronym{NSS} modules.  But there are others that
-implement the different ways to access system databases. For the
-password database, for example, there is @code{setpwent},
address@hidden and @code{endpwent}).  These will be described in more
-detail later.  Here we give a general way to determine the signature
-of the module function:
-
address@hidden @bullet
address@hidden
-The return value is @code{int}.
address@hidden
-The name is as explained in @ref{NSS Module Names}.
address@hidden
-The first arguments are identical to the arguments of the nonreentrant
-function.
address@hidden
-The next three arguments are
-
address@hidden @code
address@hidden STRUCT_TYPE *result_buf
-This is a pointer to the buffer where the result is stored.
address@hidden is normally a struct that corresponds to the
-database.
address@hidden char *buffer
-This is a pointer to a buffer where the function can store additional
-data for the result.
address@hidden size_t buflen
-This is the length of the buffer pointed to by @var{buffer}.
address@hidden table
-
address@hidden
-There could also be a last argument, @var{h_errnop}, for the host name
-and network-name lookup functions.
address@hidden itemize
-
address@hidden
-This table is correct for all functions except the @address@hidden
-and @address@hidden functions.
-
-
address@hidden Extending NSS
address@hidden Extending @acronym{NSS}
-
-One of the advantages of @acronym{NSS} mentioned above is that it can
-be extended quite easily.  There are two ways in which the extension
-can happen: adding another database or adding another service.  The
-former is normally done only by the C library developers.  It is here
-only important to remember that adding another database is independent
-from adding another service, because a service need not support all
-databases or lookup functions.
-
-A designer/implementor of a new service is therefore free to choose the
-databases she is interested in and leave the rest for later (or
-completely aside).
-
address@hidden Adding Another Service to NSS
address@hidden Adding Another Service to @acronym{NSS}
-
-The sources for a new service need not (and should not) be part of the
address@hidden C Library itself.  The developer retains complete
-control over the sources and its development.  The links between the C
-library and the new service module consist solely of the interface
-functions.
-
-Each module is designed following a certain interface specification.
-For now, the version is 2 (the interface in version 1 was not
-adequate), and this manifests in the version number of the shared
-library object of the @acronym{NSS} modules---they have the extension
address@hidden  If the interface changes again in an incompatible way,
-this number will be increased.  Modules using the old interface will
-still be usable.
-
-Developers of a new service will have to make sure that their module is
-created using the correct interface number.  This means the file itself
-must have the correct name and on @acronym{ELF} systems the @dfn{soname} 
(Shared
-Object Name) must also have this number.  Building a module from a bunch
-of object files on an @acronym{ELF} system using @acronym{GNU} CC could be 
done like this:
-
address@hidden
-gcc -shared -o libnss_NAME.so.2 -Wl,-soname,libnss_NAME.so.2 OBJECTS
address@hidden smallexample
-@
-noindent
-See Richard M. Stallman and the GCC Developer Community, ``Options for
-Linking'' in @emph{Using GCC: The GNU Compiler Collection Reference
-Manual} (Boston, MA: GNU Press, October 2003),
address@hidden:// gcc.gnu.org/ onlinedocs/ gcc-3.3.2/ gcc/}, to learn more
-about this command line.
-
-To use the new module, the library must be able to find it.  This can
-be achieved by using options for the dynamic linker so that it will
-search the directory where the binary is placed.  For an @acronym{ELF}
-system, this could be done by adding the wanted directory to the value
-of @address@hidden
-
-But this is not always possible since some programs (those that run
-under @acronym{ID}s that do not belong to the user) ignore this
-variable.  Therefore, the stable version of the module should be
-placed into a directory that is searched by the dynamic linker.
-Normally, this should be the directory @file{$prefix/lib}, where
address@hidden corresponds to the value given to configure using the
address@hidden option.  But be careful---this should only be done if
-it is clear the module does not cause any harm.  System administrators
-should be careful.
-
-
address@hidden NSS Module Function Internals
address@hidden Internals of the @acronym{NSS} Module Functions
-
-Until now we only provided the syntactic interface for the functions
-in the @acronym{NSS} module.  In fact there is not much more we can
-say, since the implementation obviously is different for each
-function.  But a few general rules must be followed by all functions.
-
-There are four kinds of different functions that may appear in the
-interface.  All derive from the traditional ones for system databases.
address@hidden in the following table is normally an abbreviation for the
-database (e.g., it is @code{pw} for the password database).
-
address@hidden @code
address@hidden enum nss_status address@hidden@var{db}ent (void)
-This function prepares the service for operations that will follow..
-For a simple file-based lookup, this means files could be opened. For
-other services, this function is simply a no-op.
-
-One special case for this function is that it takes an additional
-argument for some @var{database}s (i.e., the interface is
address@hidden address@hidden (int)}).  @xref{Host Names}, which describes the
address@hidden function.
-
-The return value should be @var{NSS_STATUS_SUCCESS}, or according to
-the table above in case of an error (@pxref{NSS Modules Interface}).
-
address@hidden enum nss_status address@hidden@var{db}ent (void)
-This function simply closes all files that are still open or removes
-buffer caches.  If there are no files or buffers to remove, this is
-again a simple noop.
-
-There normally is no return value other than @var{NSS_STATUS_SUCCESS}.
-
address@hidden enum nss_status address@hidden@var{db}ent_r (@var{STRUCTURE} 
*result, char *buffer, size_t buflen, int *errnop)
-Since this function will be called several times in a row to retrieve
-one entry after the other, it must keep some kind of state.  But this
-also means the functions are not really reentrant.  They are reentrant
-only in that simultaneous calls to this function will not try to write
-the retrieved data in the same place (as would be the case for the
-nonreentrant functions); instead, they write to the structure pointed
-to by the @var{result} parameter.  But the calls share a common state,
-and in the case of a file access this means they return neighboring
-entries in the file.
-
-The buffer of length @var{buflen} pointed to by @var{buffer} can be
-used for storing some additional data for the result.  It is
address@hidden guaranteed that the same buffer will be passed for the next
-call of this function, so you must not misuse this buffer to save some
-state information from one call to another.
-
-Before the function returns, the implementation should store the value
-of the local @var{errno} variable in the variable pointed to be
address@hidden  This is important to guarantee the module working in
-statically linked programs.
-
-As explained above, this function could also have an additional last
-argument.  This depends on the database used; it happens only for
address@hidden and @code{networks}.
-
-The function shall return @code{NSS_STATUS_SUCCESS} as long as there
-are more entries.  When the last entry was read, it should return
address@hidden  When the buffer given as an argument is
-too small for the data to be returned, @code{NSS_STATUS_TRYAGAIN}
-should be returned.  When the service was not formerly initialized by
-a call to @address@hidden@var{db}ent}, any return values
-allowed for this function can also be returned here.
-
address@hidden enum nss_status address@hidden@address@hidden (@var{PARAMS}, 
@var{STRUCTURE} *result, char *buffer, size_t buflen, int *errnop)
-This function will return the entry from the database that is
-addressed by the @var{PARAMS}.  The type and number of these arguments
-vary.  It must be individually determined by looking to the user-level
-interface functions.  All arguments given to the nonreentrant version
-are here described by @var{PARAMS}.
-
-The result must be stored in the structure pointed to by @var{result}.
-If there is additional data to return (such as strings, where the
address@hidden structure only contains pointers), the function must use
-the @var{buffer} or length @var{buflen}.  There must not be any
-references to nonconstant global data.
-
-The implementation of this function should honor the @var{stayopen}
-flag set by the @address@hidden function whenever this makes sense.
-
-Before the function returns, the implementation should store the value
-of the local @var{errno} variable in the variable pointed to by
address@hidden  This is important to guarantee that the module work in
-statically linked programs.
-
-Again, this function takes an additional last argument for the
address@hidden and @code{networks} database.
-
-The return value should, as always, follow the rules given above
-(@pxref{NSS Modules Interface}).
-
address@hidden table
-
address@hidden Users and Groups, System Management, Name Service Switch, Top
address@hidden %MENU% How users are identified and classified
address@hidden Users and Groups
-
-Every user who can log in on the system is identified by a unique
-number called the @dfn{user ID}.  Each process has an effective
address@hidden that says which user's access-permissions it has.
-
-Users are classified into @dfn{groups} for access-control purposes.
-Each process has one or more @dfn{group-ID values} that say which
-groups the process can use for access to files.
-
-The effective user and address@hidden of a process collectively
-form its @dfn{persona}.  This determines which files the process can
-access.  Normally, a process inherits its persona from the parent
-process, but under special circumstances a process can change its
-persona, and thus change its access permissions.
-
-Each file in the system also has a user @acronym{ID} and a group @acronym{ID}. 
 Access
-control works by comparing the user- and address@hidden of the file with those
-of the running process.
-
-The system keeps a database of all the registered users, and another
-database of all the defined groups.  There are library functions you
-can use to examine these databases.
-
address@hidden User and Group @acronym{ID}s
address@hidden User- and address@hidden
-
address@hidden login name
address@hidden user name
address@hidden user @acronym{ID}
-Each user account on a computer system is identified by a @dfn{user
-name} (or @dfn{login name}) and @dfn{user ID}.  Normally, each user
-name has a unique address@hidden, but it is possible for several
-login names to have the same address@hidden  The user names and
-corresponding address@hidden are stored in a database that you can
-access as described in @ref{User Database}.
-
address@hidden group name
address@hidden group @acronym{ID}
-Users are classified in @dfn{groups}.  Each user name belongs to one
address@hidden group} and may also belong to any number of
address@hidden groups}. Users who are members of the same group can
-share resources (such as files) that are not accessible to users who are
-not a member of that group.  Each group has a @dfn{group name} and
address@hidden ID}.  @xref{Group Database}, for how to find information
-about a group @acronym{ID} or group name.
-
address@hidden Process Persona
address@hidden The Persona of a Process
address@hidden persona
address@hidden effective address@hidden
address@hidden effective address@hidden
address@hidden supplementary address@hidden
-
address@hidden When Hurd is more widely used, explain multiple effective user 
IDs
address@hidden here. -zw
-At any time, each process has an @dfn{effective user ID}, an
address@hidden group ID}, and a set of @dfn{supplementary group IDs}.
-These @acronym{ID}s determine the privileges of the process.  They are
-collectively called the @dfn{persona} of the process, because they
-determine ``who it is'' for purposes of access control.
-
-Your login shell starts out with a persona that consists of your user
address@hidden, your default address@hidden and your supplementary
address@hidden (if you are in more than one group).  In normal
-circumstances, all your other processes inherit these values.
-
address@hidden real address@hidden
address@hidden real address@hidden
-A process also has a @dfn{real user-ID}, which identifies the user who
-created the process, and a @dfn{real group-ID}, which identifies that
-user's default group.  These values do not play a role in access
-control, so we do not consider them part of the persona.  But they are
-also important.
-
-Both the real and effective address@hidden can be changed during the lifetime
-of a process (@pxref{Why Change Persona}).
-
-For details on how a process's effective address@hidden and address@hidden 
affect
-its permission to access files, see @ref{Access Permission}.
-
-The effective address@hidden of a process also controls permissions for sending
-signals using the @code{kill} function (@pxref{Signaling Another
-Process}).
-
-Finally, there are many operations that can only be performed by a
-process whose effective address@hidden is 0.  A process with this
-user @acronym{ID} is a @dfn{privileged process}.  Commonly, the user
-name @code{root} is associated with user @acronym{ID} 0, but there may
-be other user names with this @acronym{ID}.
address@hidden !!! should mention POSIX capabilities here.
-
address@hidden Why Change Persona
address@hidden Why Change the Persona of a Process?
-
-The most obvious situation where it is necessary for a process to change
-its user- and/or address@hidden is the @code{login} program.  When
address@hidden starts running, its user @acronym{ID} is @code{root}.  Its job 
is to
-start a shell whose user- and address@hidden are those of the user who is
-logging in.  (To accomplish this fully, @code{login} must set the real
-user- and address@hidden as well as its persona.  But this is a special case.)
-
-The more common case of changing persona is when an ordinary user
-program needs access to a resource that wouldn't ordinarily be
-accessible to the user actually running it.
-
-For example, you may have a file that is controlled by your program but
-that shouldn't be read or modified directly by other users, either
-because it implements some kind of locking protocol, or because you want
-to preserve the integrity or privacy of the information it contains.
-This kind of restricted access can be implemented by having the program
-change its effective user or group @acronym{ID} to match that of the resource.
-
-Thus, imagine a game program that saves scores in a file.  The game
-program itself needs to be able to update this file no matter who is
-running it, but if users can write the file without going through the
-game, they can give themselves any scores they like.  Some people
-consider this undesirable, or even reprehensible.  It can be prevented
-by creating a new address@hidden and login name (say, @code{games})
-to own the scores file, and making the file writable only by this
-user.  Then, when the game program wants to update this file, it can
-change its effective address@hidden to be that for @code{games}.
-In effect, the program must adopt the persona of @code{games} so it
-can write the scores file.
-
address@hidden How to Change Persona
address@hidden How an Application Can Change Persona
address@hidden @code{setuid} programs
address@hidden saved address@hidden
address@hidden saved address@hidden
address@hidden @code{_POSIX_SAVED_IDS}
-
-The ability to change the persona of a process can be a source of
-unintentional privacy violations, or even intentional abuse.  Because of
-the potential for problems, changing persona is restricted to special
-circumstances.
-
-You can't arbitrarily set your user @acronym{ID} or group @acronym{ID}
-to anything you want; only privileged processes can do that.  Instead,
-the normal way for a program to change its persona is that it has been
-set up in advance to change to a particular user or group.  This is
-the function of the setuid and setgid bits of a file's access mode
-(@pxref{Permission Bits}).
-
-When the setuid bit of an executable file is on, executing that file
-gives the process a third address@hidden @dfn{file user-ID}.
-This @acronym{ID} is set to the owner @acronym{ID} of the file.  The
-system then changes the effective address@hidden to the file
address@hidden  The real address@hidden remains as it was.
-Likewise, if the setgid bit is on, the process is given a @dfn{file
-group ID} equal to the group @acronym{ID} of the file, and its
-effective address@hidden is changed to the file
address@hidden
-
-If a process has a file @acronym{ID} (user or group), then it can at any time
-change its effective @acronym{ID} to its real @acronym{ID} and back to its 
file @acronym{ID}.
-Programs use this feature to relinquish their special privileges except
-when they actually need them.  This makes it less likely that they can
-be tricked into doing something inappropriate with their privileges.
-
address@hidden Note:} Older systems do not have file @acronym{ID}s.
-To determine if a system has this feature, you can test the compiler
-define @code{_POSIX_SAVED_IDS}.  (In the @acronym{POSIX} standard, file 
@acronym{ID}s are
-known as saved @acronym{ID}s.)
-
address@hidden Attributes}, for a more general discussion of file modes and
-accessibility.
-
address@hidden Reading Persona
address@hidden Reading the Persona of a Process
-
-Here are detailed descriptions of the functions for reading the user- and
address@hidden of a process, both real and effective.  To use these
-facilities, you must include the header files @file{sys/types.h} and
address@hidden
address@hidden unistd.h
address@hidden sys/types.h
-
address@hidden sys/types.h
address@hidden POSIX.1
address@hidden {Data Type} uid_t
-This is an integer data type used to represent user @acronym{ID}s.  In the 
@acronym{GNU}
-library, this is an alias for @code{unsigned int}.
address@hidden deftp
-
address@hidden sys/types.h
address@hidden POSIX.1
address@hidden {Data Type} gid_t
-This is an integer data type used to represent group @acronym{ID}s.  In the 
@acronym{GNU}
-library, this is an alias for @code{unsigned int}.
address@hidden deftp
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden uid_t getuid (void)
-The @code{getuid} function returns the real address@hidden of the process.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden gid_t getgid (void)
-The @code{getgid} function returns the real address@hidden of the process.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden uid_t geteuid (void)
-The @code{geteuid} function returns the effective address@hidden of the 
process.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden gid_t getegid (void)
-The @code{getegid} function returns the effective address@hidden of the 
process.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int getgroups (int @var{count}, gid_t address@hidden)
-The @code{getgroups} function is used to inquire about the supplementary
address@hidden of the process.  Up to @var{count} of these group @acronym{ID}s 
are
-stored in the array @var{groups}; the return value from the function is
-the number of group @acronym{ID}s actually stored.  If @var{count} is smaller 
than
-the total number of supplementary address@hidden, then @code{getgroups}
-returns a value of @code{-1}, and @code{errno} is set to @code{EINVAL}.
-
-If @var{count} is 0, then @code{getgroups} just returns the total
-number of supplementary address@hidden  On systems that do not support
-supplementary groups, this will always be 0.
-
-Here's how to use @code{getgroups} to read all the supplementary group
address@hidden:
-
address@hidden
-
-gid_t *
-read_all_groups (void)
address@hidden
-  int ngroups = getgroups (0, NULL);
-  gid_t *groups
-    = (gid_t *) xmalloc (ngroups * sizeof (gid_t));
-  int val = getgroups (ngroups, groups);
-  if (val < 0)
-    @{
-      free (groups);
-      return NULL;
-    @}
-  return groups;
address@hidden
-
address@hidden smallexample
address@hidden deftypefun
-
address@hidden Setting User ID
address@hidden Setting the User @acronym{ID}
-
-This section describes the functions for altering the user
address@hidden, real and/or effective, of a process.  To use these
-facilities, you must include the header files @file{sys/types.h} and
address@hidden
address@hidden unistd.h
address@hidden sys/types.h
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int seteuid (uid_t @var{neweuid})
-This function sets the effective address@hidden of a process to
address@hidden, provided that the process is allowed to change its
-effective address@hidden  A privileged process (effective
address@hidden zero) can change its effective address@hidden to
-any legal value.  An unprivileged process with a file
address@hidden can change its effective address@hidden to its
-real address@hidden or to its file address@hidden  Otherwise, a
-process may not change its effective address@hidden at all.
-
-The @code{seteuid} function returns a value of @code{0} to indicate
-successful completion, and a value of @code{-1} to indicate an error.
-The following @code{errno} error conditions are defined for this
-function:
-
address@hidden @code
address@hidden EINVAL
-The value of the @var{newuid} argument is invalid.
-
address@hidden EPERM
-The process may not change to the specified @acronym{ID}.
address@hidden table
-
-Older systems (those without the @code{_POSIX_SAVED_IDS} feature) do not
-have this function.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int setuid (uid_t @var{newuid})
-If the calling process is privileged, this function sets both the real
-and effective address@hidden of the process to @var{newuid}.  It
-also deletes the file address@hidden of the process, if any.
address@hidden may be any legal value.  Once this has been done, there
-is no way to recover the old effective address@hidden
-
-If the process is not privileged, and the system supports the
address@hidden feature, then this function behaves like
address@hidden
-
-The return values and error conditions are the same as for @code{seteuid}.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden BSD
address@hidden int setreuid (uid_t @var{ruid}, uid_t @var{euid})
-This function sets the real address@hidden of the process to @var{ruid} and the
-effective address@hidden to @var{euid}.  If @var{ruid} is @code{-1}, it means
-not to change the real address@hidden; likewise if @var{euid} is @code{-1}, it
-means not to change the effective address@hidden
-
-The @code{setreuid} function exists for compatibility with 4.3 @acronym{BSD} 
Unix,
-which does not support file @acronym{ID}s.  You can use this function to swap 
the
-effective and real address@hidden of the process.  (Privileged processes are
-not limited to this particular usage.)  If file @acronym{ID}s are supported, 
you
-should use that feature instead of this function (@pxref{Enable/Disable
-Setuid}).
-
-The return value is @code{0} on success and @code{-1} on failure.  The
-following @code{errno} error condition is defined for this function:
-
address@hidden @code
address@hidden EPERM
-The process does not have the appropriate privileges; you do not
-have permission to change to the specified @acronym{ID}.
address@hidden table
address@hidden deftypefun
-
address@hidden Setting Groups
address@hidden Setting the Group @acronym{ID}s
-
-This section describes the functions for altering the group
address@hidden, real and effective, of a process.  To use these
-facilities, you must include the header files @file{sys/types.h} and
address@hidden
address@hidden unistd.h
address@hidden sys/types.h
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int setegid (gid_t @var{newgid})
-This function sets the effective address@hidden of the process to
address@hidden, provided that the process is allowed to change its group
address@hidden  Just as with @code{seteuid}, if the process is
-privileged, it may change its effective address@hidden to any
-value. If it isn't, but it has a file address@hidden, then it may
-change to its real address@hidden or file address@hidden
-Otherwise, it may not change its effective address@hidden
-
-A process is only privileged if its effective @address@hidden
-is zero.  The effective address@hidden only affects access
-permissions.
-
-The return values and error conditions for @code{setegid} are the same
-as those for @code{seteuid}.
-
-This function is only present if @code{_POSIX_SAVED_IDS} is defined.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int setgid (gid_t @var{newgid})
-This function sets both the real and effective address@hidden of the process
-to @var{newgid}, provided that the process is privileged.  It also
-deletes the file address@hidden, if any.
-
-If the process is not privileged, then @code{setgid} behaves like
address@hidden
-
-The return values and error conditions for @code{setgid} are the same
-as those for @code{seteuid}.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden BSD
address@hidden int setregid (gid_t @var{rgid}, gid_t @var{egid})
-This function sets the real address@hidden of the process to @var{rgid} and
-the effective address@hidden to @var{egid}.  If @var{rgid} is @code{-1}, it
-means not to change the real address@hidden; likewise if @var{egid} is
address@hidden, it means not to change the effective address@hidden
-
-The @code{setregid} function is provided for compatibility with 4.3 
@acronym{BSD}
-Unix, which does not support file @acronym{ID}s.  You can use this function to
-swap the effective and real address@hidden of the process.  (Privileged
-processes are not limited to this usage.)  If file @acronym{ID}s are supported,
-you should use that feature instead of using this function
-(@pxref{Enable/Disable Setuid}).
-
-The return values and error conditions for @code{setregid} are the same
-as those for @code{setreuid}.
address@hidden deftypefun
-
address@hidden and @code{setgid} behave differently depending on
-whether the effective address@hidden at the time is zero.  If it is
-not zero, they behave like @code{seteuid} and @code{setegid}.  If it
-is, they change both effective and real @acronym{ID}s and delete the
-file @acronym{ID}.  To avoid confusion, we recommend you always use
address@hidden and @code{setegid} except when you know the effective
address@hidden is zero, and your intent is to change the persona
-permanently.  This case is rare---most of the programs that need it,
-such as @code{login} and @code{su}, have already been written.
-
-If your program is setuid to some user other than @code{root}, there
-is no way to drop privileges permanently.
-
-The system also lets privileged processes change their supplementary
address@hidden  To use @code{setgroups} or @code{initgroups}, your programs
-should include the header file @file{grp.h}.
address@hidden grp.h
-
address@hidden grp.h
address@hidden BSD
address@hidden int setgroups (size_t @var{count}, gid_t address@hidden)
-This function sets the process's supplementary address@hidden  It can only
-be called from privileged processes.  The @var{count} argument specifies
-the number of group @acronym{ID}s in the array @var{groups}.
-
-This function returns @code{0} if successful and @code{-1} on error.
-The following @code{errno} error condition is defined for this
-function:
-
address@hidden @code
address@hidden EPERM
-The calling process is not privileged.
address@hidden table
address@hidden deftypefun
-
address@hidden grp.h
address@hidden BSD
address@hidden int initgroups (const char address@hidden, gid_t @var{group})
-The @code{initgroups} function sets the process's supplementary group
address@hidden to be the normal default for the user name @var{user}.  The group
address@hidden is automatically included.
-
-This function works by scanning the group database for all the groups
address@hidden belongs to.  It then calls @code{setgroups} with the list it
-has constructed.
-
-The return values and error conditions are the same as for
address@hidden
address@hidden deftypefun
-
-If you are interested in the groups a particular user belongs to, but do
-not want to change the process's supplementary address@hidden, you can use
address@hidden  To use @code{getgrouplist}, your programs should
-include the header file @file{grp.h}.
address@hidden grp.h
-
address@hidden grp.h
address@hidden BSD
address@hidden int getgrouplist (const char address@hidden, gid_t @var{group}, 
gid_t address@hidden, int address@hidden)
-The @code{getgrouplist} function scans the group database for all the
-groups @var{user} belongs to.  Up to address@hidden group @acronym{ID}s
-corresponding to these groups are stored in the array @var{groups}; the
-return value from the function is the number of group @acronym{ID}s actually
-stored.  If address@hidden is smaller than the total number of groups
-found, then @code{getgrouplist} returns a value of @code{-1} and stores
-the actual number of groups in address@hidden  The group @var{group} is
-automatically included in the list of groups returned by
address@hidden
-
-Here's how to use @code{getgrouplist} to read all supplementary groups
-for @var{user}:
-
address@hidden
-
-gid_t *
-supplementary_groups (char *user)
address@hidden
-  int ngroups = 16;
-  gid_t *groups
-    = (gid_t *) xmalloc (ngroups * sizeof (gid_t));
-  struct passwd *pw = getpwnam (user);
-
-  if (pw == NULL)
-    return NULL;
-
-  if (getgrouplist (pw->pw_name, pw->pw_gid, groups, &ngroups) < 0)
-    @{
-      groups = xrealloc (ngroups * sizeof (gid_t));
-      getgrouplist (pw->pw_name, pw->pw_gid, groups, &ngroups);
-    @}
-  return groups;
address@hidden
-
address@hidden smallexample
address@hidden deftypefun
-
address@hidden Enable/Disable Setuid
address@hidden Enabling and Disabling Setuid Access
-
-A typical setuid program does not need its special access all of the
-time.  It's a good idea to turn off this access when it isn't needed,
-to avoid giving unintended access.
-
-If the system supports the @code{_POSIX_SAVED_IDS} feature, you can
-accomplish this with @code{seteuid}.  When the game program starts, its
-real address@hidden is @code{jdoe}, its effective address@hidden is 
@code{games}, and
-its saved address@hidden is also @code{games}.  The program should record both
-user @acronym{ID} values once at the beginning, like this:
-
address@hidden
-user_user_id = getuid ();
-game_user_id = geteuid ();
address@hidden smallexample
-
-Then it can turn off game file access with
-
address@hidden
-seteuid (user_user_id);
address@hidden smallexample
-
address@hidden
-and turn it on with
-
address@hidden
-seteuid (game_user_id);
address@hidden smallexample
-
address@hidden
-Throughout this process, the real address@hidden remains @code{jdoe} and the
-file address@hidden remains @code{games}, so the program can always set its
-effective address@hidden to either one.
-
-On other systems that don't support file address@hidden, you can
-turn setuid access on and off by using @code{setreuid} to swap the real
-and effective address@hidden of the process, as follows:
-
address@hidden
-setreuid (geteuid (), getuid ());
address@hidden smallexample
-
address@hidden
-This special case is always allowed---it cannot fail.
-
-Why does this have the effect of toggling the setuid access?  Suppose a
-game program has just started, and its real address@hidden is @code{jdoe} while
-its effective address@hidden is @code{games}.  In this state, the game can
-write the scores file.  If it swaps the two uids, the real becomes
address@hidden and the effective becomes @code{jdoe}; now the program has
-only @code{jdoe} access.  Another swap brings @code{games} back to
-the effective address@hidden and restores access to the scores file.
-
-In order to handle both kinds of systems, test for the saved address@hidden
-feature with a preprocessor conditional, like this:
-
address@hidden
-#ifdef _POSIX_SAVED_IDS
-  seteuid (user_user_id);
-#else
-  setreuid (geteuid (), getuid ());
-#endif
address@hidden smallexample
-
address@hidden Setuid Program Example
address@hidden Setuid Program Example
-
-Here's an example showing how to set up a program that changes its
-effective address@hidden
-
-This is part of a game program called @code{caber-toss} that manipulates
-a file @file{scores} that should be writable only by the game program
-itself.  The program assumes that its executable file will be installed
-with the setuid bit set and owned by the same user as the @file{scores}
-file.  Typically, a system administrator will set up an account like
address@hidden for this purpose.
-
-The executable file is given mode @code{4755}, so that doing an
address@hidden -l} on it produces output like:
-
address@hidden
--rwsr-xr-x   1 games    184422 Jul 30 15:17 caber-toss
address@hidden smallexample
-
address@hidden
-The setuid bit shows up in the file modes as the @samp{s}.
-
-The scores file is given mode @code{644}, and doing an @samp{ls -l} on
-it shows:
-
address@hidden
--rw-r--r--  1 games           0 Jul 31 15:33 scores
address@hidden smallexample
-
-Here are the parts of the program that show how to set up the changed
address@hidden  This program is conditionalized so that it makes use of the
-file @acronym{ID}s feature if it is supported, and otherwise uses 
@code{setreuid}
-to swap the effective and real address@hidden
-
address@hidden
-#include <stdio.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-
-/* @r{Remember the effective and real @acronym{UID}s.} */
-
-static uid_t euid, ruid;
-
-
-/* @r{Restore the effective @acronym{UID} to its original value.} */
-
-void
-do_setuid (void)
address@hidden
-  int status;
-
-#ifdef _POSIX_SAVED_IDS
-  status = seteuid (euid);
-#else
-  status = setreuid (ruid, euid);
-#endif
-  if (status < 0) @{
-    fprintf (stderr, "Couldn't set uid.\n");
-    exit (status);
-    @}
address@hidden
-
-
-
-/* @r{Set the effective @acronym{UID} to the real @acronym{UID}.} */
-
-void
-undo_setuid (void)
address@hidden
-  int status;
-
-#ifdef _POSIX_SAVED_IDS
-  status = seteuid (ruid);
-#else
-  status = setreuid (euid, ruid);
-#endif
-  if (status < 0) @{
-    fprintf (stderr, "Couldn't set uid.\n");
-    exit (status);
-    @}
address@hidden
-
-
-/* @r{Main program.} */
-
-int
-main (void)
address@hidden
-  /* @r{Remember the real and effective address@hidden  */
-  ruid = getuid ();
-  euid = geteuid ();
-  undo_setuid ();
-
-  /* @r{Do the game and record the score.}  */
-  @dots{}
address@hidden
address@hidden smallexample
-
-Notice that the first thing the @code{main} function does is set the
-effective address@hidden back to the real address@hidden  This
-is so that any other file accesses that are performed while the user
-is playing the game use the real address@hidden for determining
-permissions.  Only when the program needs to open the scores file does
-it switch back to the file address@hidden, like this:
-
address@hidden
-/* @r{Record the score.} */
-
-int
-record_score (int score)
address@hidden
-  FILE *stream;
-  char *myname;
-
-  /* @r{Open the scores file.} */
-  do_setuid ();
-  stream = fopen (SCORES_FILE, "a");
-  undo_setuid ();
-
-
-  /* @r{Write the score to the file.} */
-  if (stream)
-    @{
-      myname = cuserid (NULL);
-      if (score < 0)
-        fprintf (stream, "%10s: Couldn't lift the caber.\n", myname);
-      else
-        fprintf (stream, "%10s: %d feet.\n", myname, score);
-      fclose (stream);
-      return 0;
-    @}
-  else
-    return -1;
address@hidden
-
address@hidden smallexample
-
address@hidden Tips for Setuid
address@hidden Tips for Writing Setuid Programs
-
-It is easy for setuid programs to give the user access that isn't
-intended---in fact, if you want to avoid this, you need to be careful.
-Here are some guidelines for preventing unintended access and
-minimizing its consequences when it does occur:
-
address@hidden @bullet
address@hidden
-Don't have @code{setuid} programs with privileged address@hidden
-such as @code{root} unless it is absolutely necessary.  If the
-resource is specific to your particular program, it's better to define
-a new, nonprivileged address@hidden or group @acronym{ID} just to
-manage that resource.  It's better if you can write your program to
-use a special group rather than a special user.
-
address@hidden
-Be cautious about using the @code{exec} functions in combination with
-changing the effective address@hidden  Don't let users of your program execute
-arbitrary programs under a changed address@hidden  Executing a shell is
-especially bad news. Less obviously, the @code{execlp} and @code{execvp}
-functions are a potential risk (since the program they execute depends
-on the user's @code{PATH} environment variable).
-
-If you must @code{exec} another program under a changed @acronym{ID},
-specify an absolute address@hidden Loosemore et al.,
-``File-Name Resolution'' (see chap. 1, n. 1).} for the executable, and
-make sure that the protections on that executable and @emph{all}
-containing directories are such that ordinary users cannot replace it
-with some other program.
-
-You should also check the arguments passed to the program to make sure
-they do not have unexpected effects.  Likewise, you should examine the
-environment variables.  Decide which arguments and variables are safe,
-and reject all others.
-
-You should never use @code{system} in a privileged program, because it
-invokes a shell.
-
address@hidden
-Only use the user @acronym{ID} controlling the resource in the part of
-the program that actually uses that resource.  When you're finished
-with it, restore the effective address@hidden back to the actual
-user's address@hidden (@pxref{Enable/Disable Setuid}).
-
address@hidden
-If the @code{setuid} part of your program needs to access other files
-besides the controlled resource, it should verify that the real user
-would ordinarily have permission to access those files.  You can use the
address@hidden function (@pxref{Access Permission}) to check this; it
-uses the real user- and address@hidden, rather than the effective 
@acronym{ID}s.
address@hidden itemize
-
address@hidden Who Logged In
address@hidden Identifying Who Is Logged In
address@hidden login name, determining
address@hidden user @acronym{ID}, determining
-
-You can use the functions listed in this section to determine the
-login name of the user who is running a process, and the name of the
-user who is logged in in the current session. See also the function
address@hidden and friends (@pxref{Reading Persona}).  How this
-information is collected by the system and how to control, add and
-remove information from the background storage is described in
address@hidden Database}.
-
-The @code{getlogin} function is declared in @file{unistd.h}, while
address@hidden and @code{L_cuserid} are declared in @file{stdio.h}.
address@hidden stdio.h
address@hidden unistd.h
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden {char *} getlogin (void)
-The @code{getlogin} function returns a pointer to a string containing the
-name of the user logged in on the controlling terminal of the process,
-or a null pointer if this information cannot be determined.  The string
-is statically allocated and might be overwritten on subsequent calls to
-this function or to @code{cuserid}.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden POSIX.1
address@hidden {char *} cuserid (char address@hidden)
-The @code{cuserid} function returns a pointer to a string containing a
-user name associated with the effective @acronym{ID} of the process.  If
address@hidden is not a null pointer, it should be an array that can hold
-at least @code{L_cuserid} characters; the string is returned in this
-array.  Otherwise, a pointer to a string in a static area is returned.
-This string is statically allocated and might be overwritten on
-subsequent calls to this function or to @code{getlogin}.
-
-The use of this function is deprecated since it is marked to be
-withdrawn in @acronym{XPG} 4.2 and has already been removed from newer
-revisions of @acronym{POSIX}.1.
address@hidden deftypefun
-
address@hidden stdio.h
address@hidden POSIX.1
address@hidden Macro int L_cuserid
-An integer constant that indicates how long an array you might need to
-store a user name.
address@hidden deftypevr
-
-These functions let your program identify positively the user who is
-running or the user who is logged in in this session.  These can differ when
-setuid programs are involved (@pxref{Process Persona}).  The user cannot
-do anything to fool these functions.
-
-For most purposes, it is more useful to use the environment variable
address@hidden to find out who the user is.  This is more flexible
-precisely because the user can set @code{LOGNAME}
address@hidden, ``Standard Environment Variables''.}
-
-
address@hidden User-Accounting Database
address@hidden The User-Accounting Database
address@hidden user-accounting database
-
-Most Unix-like operating systems keep track of logged-in users by
-maintaining a user-accounting database.  This user-accounting database
-stores for each terminal, who has logged on, at what time, the process
address@hidden of the user's login shell, etc., but it also stores
-information about the run level of the system, the time of the last
-system reboot, and possibly more.
-The user-accounting database typically lives in @file{/etc/utmp},
address@hidden/var/adm/utmp} or @file{/var/run/utmp}.  However, these files
-should @emph{never} be accessed directly.  For reading information
-from and writing information to the user-accounting database, the
-functions described in this section should be used.
-
-
address@hidden Manipulating the Database
address@hidden Manipulating the User-Accounting Database
-
-These functions and the corresponding data structures are declared in
-the header file @file{utmp.h}.
address@hidden utmp.h
-
address@hidden utmp.h
address@hidden SVID
address@hidden {Data Type} {struct exit_status}
-The @code{exit_status} data structure is used to hold information
-about the exit status of processes marked as @code{DEAD_PROCESS} in
-the user-accounting database.
-
address@hidden @code
address@hidden short int e_termination
-This is the exit status of the process.
-
address@hidden short int e_exit
-This is the exit status of the process.
address@hidden table
address@hidden deftp
-
address@hidden {Data Type} {struct utmp}
-The @code{utmp} data structure is used to hold information about
-entries in the user-accounting database.  On the @acronym{GNU} system,
-it has the following members:
-
address@hidden @code
address@hidden short int ut_type
-This specifies the type of login; one of @code{EMPTY}, @code{RUN_LVL},
address@hidden, @code{OLD_TIME}, @code{NEW_TIME},
address@hidden, @code{LOGIN_PROCESS}, @code{USER_PROCESS},
address@hidden or @code{ACCOUNTING}.
-
address@hidden pid_t ut_pid
-This is the process @acronym{ID}-number of the login process.
-
address@hidden char ut_line[]
-This is the device name of the tty (without @file{/dev/}).
-
address@hidden char ut_id[]
-This is the inittab @acronym{ID} of the process.
-
address@hidden char ut_user[]
-This is the user's login name.
-
address@hidden char ut_host[]
-This is the name of the host from which the user logged in.
-
address@hidden struct exit_status ut_exit
-This is the exit status of a process marked as @code{DEAD_PROCESS}.
-
address@hidden long ut_session
-This is the session @acronym{ID}, used for windowing.
-
address@hidden struct timeval ut_tv
-This is the time the entry was made.  For entries of type
address@hidden, this is the time when the system clock changed. For
-entries of type @code{NEW_TIME}, this is the time the system clock was
-set to.
-
address@hidden int32_t ut_addr_v6[4]
-This is the Internet address of a remote host.
address@hidden table
address@hidden deftp
-
-The @code{ut_type}, @code{ut_pid}, @code{ut_id}, @code{ut_tv} and
address@hidden fields are not available on all systems.  Portable
-applications therefore should be prepared for these situations.  To
-help in this, the @file{utmp.h} header provides macros
address@hidden, @code{_HAVE_UT_PID}, @code{_HAVE_UT_ID},
address@hidden and @code{_HAVE_UT_HOST} if the respective fields
-are available.  The programmer can handle the situations by using
address@hidden in the program code.
-
-The following macros are defined for use as values for the
address@hidden member of the @code{utmp} structure.  The values are
-integer constants.
-
address@hidden @code
address@hidden utmp.h
address@hidden SVID
address@hidden EMPTY
address@hidden EMPTY
-This macro is used to indicate that the entry contains no valid
-user-accounting information.
-
address@hidden utmp.h
address@hidden SVID
address@hidden RUN_LVL
address@hidden RUN_LVL
-This macro is used to identify the system's runlevel.
-
address@hidden utmp.h
address@hidden SVID
address@hidden BOOT_TIME
address@hidden BOOT_TIME
-This macro is used to identify the time of system boot.
-
address@hidden utmp.h
address@hidden SVID
address@hidden OLD_TIME
address@hidden OLD_TIME
-This macro is used to identify the time when the system clock changed.
-
address@hidden utmp.h
address@hidden SVID
address@hidden NEW_TIME
address@hidden NEW_TIME
-This macro is used to identify the time after the system changed.
-
address@hidden utmp.h
address@hidden SVID
address@hidden INIT_PROCESS
address@hidden INIT_PROCESS
-This macro is used to identify a process spawned by the init process.
-
address@hidden utmp.h
address@hidden SVID
address@hidden LOGIN_PROCESS
address@hidden LOGIN_PROCESS
-This macro is used to identify the session leader of a logged-in user.
-
address@hidden utmp.h
address@hidden SVID
address@hidden USER_PROCESS
address@hidden USER_PROCESS
-This macro is used to identify a user process.
-
address@hidden utmp.h
address@hidden SVID
address@hidden DEAD_PROCESS
address@hidden DEAD_PROCESS
-This macro is used to identify a terminated process.
-
address@hidden utmp.h
address@hidden SVID
address@hidden ACCOUNTING
address@hidden ACCOUNTING
-???
address@hidden table
-
-The size of the @code{ut_line}, @code{ut_id}, @code{ut_user} and
address@hidden arrays can be found using the @code{sizeof} operator.
-
-Many older systems have, instead of an @code{ut_tv} member, an
address@hidden member, usually of type @code{time_t}, for representing
-the time associated with the entry.  Therefore, for backward
-compatibility only, @file{utmp.h} defines @code{ut_time} as an alias for
address@hidden
-
address@hidden utmp.h
address@hidden SVID
address@hidden void setutent (void)
-This function opens the user-accounting database to begin scanning it.
-You can then call @code{getutent}, @code{getutid} or @code{getutline} to
-read entries and @code{pututline} to write entries.
-
-If the database is already open, it resets the input to the beginning of
-the database.
address@hidden deftypefun
-
address@hidden utmp.h
address@hidden SVID
address@hidden {struct utmp *} getutent (void)
-The @code{getutent} function reads the next entry from the
-user-accounting database.  It returns a pointer to the entry, which is
-statically allocated and may be overwritten by subsequent calls to
address@hidden  You must copy the contents of the structure if you
-wish to save the information, or you can use the @code{getutent_r}
-function, which stores the data in a user-provided buffer.
-
-A null pointer is returned if no further entry is available.
address@hidden deftypefun
-
address@hidden utmp.h
address@hidden SVID
address@hidden void endutent (void)
-This function closes the user-accounting database.
address@hidden deftypefun
-
address@hidden utmp.h
address@hidden SVID
address@hidden {struct utmp *} getutid (const struct utmp address@hidden)
-This function searches forward from the current point in the database
-for an entry that matches @var{id}.  If the @code{ut_type} member of
-the @var{id} structure is one of @code{RUN_LVL}, @code{BOOT_TIME},
address@hidden or @code{NEW_TIME}, the entries match if the
address@hidden members are identical.  If the @code{ut_type} member of
-the @var{id} structure is @code{INIT_PROCESS}, @code{LOGIN_PROCESS},
address@hidden or @code{DEAD_PROCESS}, the entries match if the
address@hidden member of the entry read from the database is one of
-these four and the @code{ut_id} members match.  However, if the
address@hidden member of either the @var{id} structure or the entry read
-from the database is empty, it checks if the @code{ut_line} members
-match instead.  If a matching entry is found, @code{getutid} returns a
-pointer to the entry, which is statically allocated, and may be
-overwritten by a subsequent call to @code{getutent}, @code{getutid} or
address@hidden  You must copy the contents of the structure if you
-wish to save the information.
-
-A null pointer is returned if the end of the database is reached
-without a match.
-
-The @code{getutid} function may cache the last read entry.  Therefore,
-if you are using @code{getutid} to search for multiple occurrences, it
-is necessary to zero out the static data after each call.  Otherwise,
address@hidden could just return a pointer to the same entry over and
-over again.
address@hidden deftypefun
-
address@hidden utmp.h
address@hidden SVID
address@hidden {struct utmp *} getutline (const struct utmp address@hidden)
-This function searches forward from the current point in the database
-until it finds an entry whose @code{ut_type} value is
address@hidden or @code{USER_PROCESS}, and whose @code{ut_line}
-member matches the @code{ut_line} member of the @var{line} structure.
-If it finds such an entry, it returns a pointer to the entry that is
-statically allocated, and may be overwritten by a subsequent call to
address@hidden, @code{getutid} or @code{getutline}.  You must copy
-the contents of the structure if you wish to save the information.
-
-A null pointer is returned if the end of the database is reached
-without a match.
-
-The @code{getutline} function may cache the last read entry.
-Therefore, if you are using @code{getutline} to search for multiple
-occurrences, it is necessary to zero out the static data after each
-call.  Otherwise, @code{getutline} could just return a pointer to the
-same entry over and over again.
address@hidden deftypefun
-
address@hidden utmp.h
address@hidden SVID
address@hidden {struct utmp *} pututline (const struct utmp address@hidden)
-The @code{pututline} function inserts the entry @address@hidden at
-the appropriate place in the user-accounting database.  If it finds
-that it is not already at the correct place in the database, it uses
address@hidden to search for the position to insert the
-entry. However, this will not modify the static structure returned by
address@hidden, @code{getutid} and @code{getutline}.  If this search
-fails, the entry is appended to the database.
-
-The @code{pututline} function returns a pointer to a copy of the entry
-inserted in the user-accounting database, or a null pointer if the
-entry could not be added.  The following @code{errno} error condition
-is defined for this function:
-
address@hidden @code
address@hidden EPERM
-The process does not have the appropriate privileges---you cannot
-modify the user-accounting database.
address@hidden table
address@hidden deftypefun
-
-All the @code{get*} functions mentioned before store the information
-they return in a static buffer.  This can be a problem in
-multithreaded programs, since the data returned for the request is
-overwritten by the return-value data in another thread.  Therefore,
-the @acronym{GNU} C Library provides as extensions three more
-functions that return the data in a user-provided buffer.
-
address@hidden utmp.h
address@hidden GNU
address@hidden int getutent_r (struct utmp address@hidden, struct utmp 
address@hidden)
-The @code{getutent_r} is equivalent to the @code{getutent} function.
-It returns the next entry from the database.  But instead of storing
-the information in a static buffer, it stores it in the buffer pointed
-to by the parameter @var{buffer}.
-
-If the call was successful, the function returns @code{0} and the
-pointer variable pointed to by the parameter @var{result} contains a
-pointer to the buffer that contains the result (probably the same
-value as @var{buffer}).  If something went wrong during the execution
-of @code{getutent_r}, the function returns @code{-1}.
-
-This function is a @acronym{GNU} extension.
address@hidden deftypefun
-
address@hidden utmp.h
address@hidden GNU
address@hidden int getutid_r (const struct utmp address@hidden, struct utmp 
address@hidden, struct utmp address@hidden)
-This function retrieves, just like @code{getutid}, the next entry
-matching the information stored in @var{id}.  But the result is stored
-in the buffer pointed to by the parameter @var{buffer}.
-
-If successful, the function returns @code{0} and the pointer variable
-pointed to by the parameter @var{result} contains a pointer to the
-buffer with the result (probably the same as @var{result}).  If not
-successful, the function returns @code{-1}.
-
-This function is a @acronym{GNU} extension.
address@hidden deftypefun
-
address@hidden utmp.h
address@hidden GNU
address@hidden int getutline_r (const struct utmp address@hidden, struct utmp 
address@hidden, struct utmp address@hidden)
-This function retrieves, just like @code{getutline}, the next entry
-matching the information stored in @var{line}.  But the result is
-stored in the buffer pointed to by the parameter @var{buffer}.
-
-If successful, the function returns @code{0} and the pointer variable
-pointed to by the parameter @var{result} contains a pointer to the
-buffer with the result (probably the same as @var{result}).  If not
-successful, the function returns @code{-1}.
-
-This function is a @acronym{GNU} extension.
address@hidden deftypefun
-
-
-In addition to the user-accounting database, most systems keep a
-number of similar databases.  For example, most systems keep a log
-file with all previous logins (usually in @file{/etc/wtmp} or
address@hidden/var/log/wtmp}).
-
-For specifying which database to examine, the following function
-should be used:
-
address@hidden utmp.h
address@hidden SVID
address@hidden int utmpname (const char address@hidden)
-The @code{utmpname} function changes the name of the database to be
-examined to @var{file}, and closes any previously opened database.  By
-default, @code{getutent}, @code{getutid}, @code{getutline} and
address@hidden read from and write to the user-accounting database.
-
-The following macros are defined for use as the @var{file} argument:
-
address@hidden Macro {char *} _PATH_UTMP
-This macro is used to specify the user-accounting database.
address@hidden deftypevr
-
address@hidden Macro {char *} _PATH_WTMP
-This macro is used to specify the user-accounting log file.
address@hidden deftypevr
-
-The @code{utmpname} function returns a value of @code{0} if the new
-name was successfully stored, and a value of @code{-1} to indicate an
-error.  @code{utmpname} does not try to open the database, and
-therefore the return value does not say anything about whether the
-database can be successfully opened.
address@hidden deftypefun
-
-For maintaining log-like databases, the @acronym{GNU} C Library
-provides the following function:
-
address@hidden utmp.h
address@hidden SVID
address@hidden void updwtmp (const char address@hidden, const struct utmp 
address@hidden)
-The @code{updwtmp} function appends the entry address@hidden to the
-database specified by @var{wtmp_file}.  For possible values for the
address@hidden argument, see the @code{utmpname} function.
address@hidden deftypefun
-
address@hidden Note:} Although many operating systems provide a
-subset of these functions, they are not standardized.  There are often
-subtle differences in the return types, and there are considerable
-differences between the various definitions of @code{struct utmp}.
-When programming for the @acronym{GNU} system, it is probably best to
-stick with the functions described in this section.  If however, you
-want your program to be portable, consider using the @acronym{XPG}
-functions described in @ref{XPG Functions}, or take a look
-at the @acronym{BSD}-compatible functions in @ref{Logging In and Out}.
-
-
address@hidden XPG Functions
address@hidden @acronym{XPG} User-Accounting Database Functions
-
-These functions, described in the @emph{X/Open Portability Guide}, are
-declared in the header file @address@hidden/Open Company,
address@hidden/Open Portability Guide,} Issue 4 (Reading, UK: X/Open Company,
-Ltd., 1992).}
address@hidden utmpx.h
-
address@hidden {Data Type} {struct utmpx}
-The @code{utmpx} data structure contains at least the following members:
-
address@hidden @code
address@hidden short int ut_type
-This specifies the type of login; one of @code{EMPTY}, @code{RUN_LVL},
address@hidden, @code{OLD_TIME}, @code{NEW_TIME}, @code{INIT_PROCESS},
address@hidden, @code{USER_PROCESS} or @code{DEAD_PROCESS}.
-
address@hidden pid_t ut_pid
-This is the address@hidden number of the login process.
-
address@hidden char ut_line[]
-This is the device name of the tty (without @file{/dev/}).
-
address@hidden char ut_id[]
-This is the inittab @acronym{ID} of the process.
-
address@hidden char ut_user[]
-This is the user's login name.
-
address@hidden struct timeval ut_tv
-This is the time the entry was made.  For entries of type
address@hidden, this is the time when the system clock changed. For
-entries of type @code{NEW_TIME}, this is the time the system clock was
-set to.
address@hidden table
-On the @acronym{GNU} system, @code{struct utmpx} is identical to
address@hidden utmp}, except that including @file{utmpx.h} does not make
-visible the declaration of @code{struct exit_status}.
address@hidden deftp
-
-The following macros are defined for use as values for the
address@hidden member of the @code{utmpx} structure.  The values are
-integer constants and are, on the @acronym{GNU} system, identical to the
-definitions in @file{utmp.h}.
-
address@hidden @code
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden EMPTY
address@hidden EMPTY
-This macro is used to indicate that the entry contains no valid
-user-accounting information.
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden RUN_LVL
address@hidden RUN_LVL
-This macro is used to identify the system's runlevel.
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden BOOT_TIME
address@hidden BOOT_TIME
-This macro is used to identify the time of system boot.
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden OLD_TIME
address@hidden OLD_TIME
-This macro is used to identify the time when the system clock changed.
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden NEW_TIME
address@hidden NEW_TIME
-This macro is used to identify the time after the system changed.
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden INIT_PROCESS
address@hidden INIT_PROCESS
-This macro is used to identify a process spawned by the init process.
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden LOGIN_PROCESS
address@hidden LOGIN_PROCESS
-This macro is used to identify the session leader of a logged-in user.
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden USER_PROCESS
address@hidden USER_PROCESS
-This macro is used to identify a user process.
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden DEAD_PROCESS
address@hidden DEAD_PROCESS
-This macro is used to identify a terminated process.
address@hidden table
-
-The size of the @code{ut_line}, @code{ut_id} and @code{ut_user} arrays
-can be found using the @code{sizeof} operator.
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden void setutxent (void)
-This function is similar to @code{setutent}.  On the @acronym{GNU}
-system, it is simply an alias for @code{setutent}.
address@hidden deftypefun
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden {struct utmpx *} getutxent (void)
-The @code{getutxent} function is similar to @code{getutent}, but
-returns a pointer to a @code{struct utmpx} instead of @code{struct
-utmp}.  On the @acronym{GNU} system, it simply is an alias for
address@hidden
address@hidden deftypefun
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden void endutxent (void)
-This function is similar to @code{endutent}.  On the @acronym{GNU}
-system, it is simply an alias for @code{endutent}.
address@hidden deftypefun
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden {struct utmpx *} getutxid (const struct utmpx address@hidden)
-This function is similar to @code{getutid}, but uses @code{struct
-utmpx} instead of @code{struct utmp}.  On the @acronym{GNU} system, it
-is simply an alias for @code{getutid}.
address@hidden deftypefun
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden {struct utmpx *} getutxline (const struct utmpx address@hidden)
-This function is similar to @code{getutid}, but uses @code{struct
-utmpx} instead of @code{struct utmp}.  On the @acronym{GNU} system, it
-is simply an alias for @code{getutline}.
address@hidden deftypefun
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden {struct utmpx *} pututxline (const struct utmpx address@hidden)
-The @code{pututxline} function is functionally identical to
address@hidden, but uses @code{struct utmpx} instead of @code{struct
-utmp}.  On the @acronym{GNU} system, @code{pututxline} is simply an
-alias for @code{pututline}.
address@hidden deftypefun
-
address@hidden utmpx.h
address@hidden XPG4.2
address@hidden int utmpxname (const char address@hidden)
-The @code{utmpxname} function is functionally identical to
address@hidden  On the @acronym{GNU} system, @code{utmpxname} is simply an
-alias for @code{utmpname}.
address@hidden deftypefun
-
-You can translate between a traditional @code{struct utmp} and an @acronym{XPG}
address@hidden utmpx} with the following functions.  On the @acronym{GNU} 
system,
-these functions are merely copies, since the two structures are
-identical.
-
address@hidden utmpx.h
address@hidden utmp.h
address@hidden GNU
address@hidden int getutmp (const struct utmpx *utmpx, struct utmp *utmp)
address@hidden copies the information, insofar as the structures are
-compatible, from @var{utmpx} to @var{utmp}.
address@hidden deftypefun
-
address@hidden utmpx.h
address@hidden utmp.h
address@hidden GNU
address@hidden int getutmpx (const struct utmp *utmp, struct utmpx *utmpx)
address@hidden copies the information, insofar as the structures are
-compatible, from @var{utmp} to @var{utmpx}.
address@hidden deftypefun
-
-
address@hidden Logging In and Out
address@hidden Logging In and Out
-
-These functions, derived from @acronym{BSD}, are available in the
-separate @file{libutil} library, and are declared in @file{utmp.h}.
address@hidden utmp.h
-
-The @code{ut_user} member of @code{struct utmp} is called
address@hidden in @acronym{BSD}.  Therefore, @code{ut_name} is defined
-as an alias for @code{ut_user} in @file{utmp.h}.
-
address@hidden utmp.h
address@hidden BSD
address@hidden int login_tty (int @var{filedes})
-This function makes @var{filedes} the controlling terminal of the
-current process, redirects standard input, standard output and
-standard error output to this terminal, and closes @var{filedes}.
-
-This function returns @code{0} on successful completion and @code{-1}
-on error.
address@hidden deftypefun
-
address@hidden utmp.h
address@hidden BSD
address@hidden void login (const struct utmp address@hidden)
-The @code{login} functions inserts an entry into the user-accounting
-database.  The @code{ut_line} member is set to the name of the
-terminal on standard input.  If standard input is not a terminal,
address@hidden uses standard output or standard error output to
-determine the name of the terminal.  If @code{struct utmp} has a
address@hidden member, @code{login} sets it to @code{USER_PROCESS},
-and if there is an @code{ut_pid} member, it will be set to the process
address@hidden of the current process.  The remaining entries are copied
-from @var{entry}.
-
-A copy of the entry is written to the user-accounting log file.
address@hidden deftypefun
-
address@hidden utmp.h
address@hidden BSD
address@hidden int logout (const char address@hidden)
-This function modifies the user-accounting database to indicate that the
-user on @var{ut_line} has logged out.
-
-The @code{logout} function returns @code{1} if the entry was
-successfully written to the database and @code{0} on error.
address@hidden deftypefun
-
address@hidden utmp.h
address@hidden BSD
address@hidden void logwtmp (const char address@hidden, const char 
address@hidden, const char address@hidden)
-The @code{logwtmp} function appends an entry to the user-accounting
-log file, for the current time and the information provided in the
address@hidden, @var{ut_name} and @var{ut_host} arguments.
address@hidden deftypefun
-
address@hidden Note:} The @acronym{BSD} @code{struct utmp} only has the
address@hidden, @code{ut_name}, @code{ut_host} and @code{ut_time}
-members.  Older systems do not even have the @code{ut_host} member.
-
-
address@hidden User Database
address@hidden User Database
address@hidden user database
address@hidden password database
address@hidden /etc/passwd
-
-This section describes how to search and scan the database of registered
-users.  The database itself is kept in the file @file{/etc/passwd} on
-most systems, but on some systems a special network server gives access
-to it.
-
address@hidden User Data Structure
address@hidden The Data Structure That Describes a User
-
-The functions and data structures for accessing the system
-user-database are declared in the header file @file{pwd.h}.
address@hidden pwd.h
-
address@hidden pwd.h
address@hidden POSIX.1
address@hidden {Data Type} {struct passwd}
-The @code{passwd} data-structure is used to hold information about
-entries in the system user-database.  It has at least the following
-members:
-
address@hidden @code
address@hidden char *pw_name
-This is the user's login name.
-
address@hidden char *pw_passwd.
-This is the encrypted password string.
-
address@hidden uid_t pw_uid
-This is the user @acronym{ID} number.
-
address@hidden gid_t pw_gid
-This is the user's default address@hidden number.
-
address@hidden char *pw_gecos
-This is a string typically containing the user's real name and
-possibly other information, such as a phone number.
-
address@hidden char *pw_dir
-This is the user's home directory, or initial working directory.  This
-might be a null pointer, in which case the interpretation is system
-dependent.
-
address@hidden char *pw_shell
-This is the user's default shell, or the initial program run when the
-user logs in.  This might be a null pointer, indicating that the
-system default should be used.
address@hidden table
address@hidden deftp
-
address@hidden Lookup User
address@hidden Looking Up One User
address@hidden converting address@hidden to user-name
address@hidden converting user-name to address@hidden
-
-You can search the system user-database for information about a
-specific user using @code{getpwuid} or @code{getpwnam}.  These
-functions are declared in @file{pwd.h}.
-
address@hidden pwd.h
address@hidden POSIX.1
address@hidden {struct passwd *} getpwuid (uid_t @var{uid})
-This function returns a pointer to a statically allocated structure
-containing information about the user whose user @acronym{ID} is @var{uid}.  
This
-structure may be overwritten on subsequent calls to @code{getpwuid}.
-
-A null pointer value indicates there is no user in the database with
-user @acronym{ID} @var{uid}.
address@hidden deftypefun
-
address@hidden pwd.h
address@hidden POSIX.1c
address@hidden int getpwuid_r (uid_t @var{uid}, struct passwd address@hidden, 
char address@hidden, size_t @var{buflen}, struct passwd address@hidden)
-This function is similar to @code{getpwuid} in that it returns
-information about the user whose user @acronym{ID} is @var{uid}.
-However, it fills the user-supplied structure pointed to by
address@hidden with the information instead of using a static
-buffer.  The first @var{buflen} bytes of the additional buffer pointed
-to by @var{buffer} are used to contain additional information,
-normally strings which are pointed to by the elements of the result
-structure.
-
-If a user with @acronym{ID} @var{uid} is found, the pointer returned
-in @var{result} points to the record that contains the wanted data
-(i.e., @var{result} contains the value @var{result_buf}).  If no user
-is found or if an error occurred, the pointer returned in @var{result}
-is a null pointer.  The function returns 0 or an error code.  If the
-buffer @var{buffer} is too small to contain all the needed
-information, the error code @code{ERANGE} is returned and @var{errno}
-is set to @code{ERANGE}.
address@hidden deftypefun
-
-
address@hidden pwd.h
address@hidden POSIX.1
address@hidden {struct passwd *} getpwnam (const char address@hidden)
-This function returns a pointer to a statically allocated structure
-containing information about the user whose user name is @var{name}.
-This structure may be overwritten on subsequent calls to
address@hidden
-
-A null pointer return indicates there is no user named @var{name}.
address@hidden deftypefun
-
address@hidden pwd.h
address@hidden POSIX.1c
address@hidden int getpwnam_r (const char address@hidden, struct passwd 
address@hidden, char address@hidden, size_t @var{buflen}, struct passwd 
address@hidden)
-This function is similar to @code{getpwnam} in that is returns
-information about the user whose user name is @var{name}.  However, like
address@hidden, it fills the user-supplied buffers in
address@hidden and @var{buffer} with the information instead of using
-a static buffer.
-
-The return values are the same as for @code{getpwuid_r}.
address@hidden deftypefun
-
-
address@hidden Scanning All Users
address@hidden Scanning the List of All Users
address@hidden scanning the user list
-
-This section explains how a program can read the list of all users in
-the system, one user at a time.  The functions described here are
-declared in @file{pwd.h}.
-
-You can use the @code{fgetpwent} function to read user entries from a
-particular file.
-
address@hidden pwd.h
address@hidden SVID
address@hidden {struct passwd *} fgetpwent (FILE address@hidden)
-This function reads the next user entry from @var{stream} and returns a
-pointer to the entry.  The structure is statically allocated and is
-rewritten on subsequent calls to @code{fgetpwent}.  You must copy the
-contents of the structure if you wish to save the information.
-
-The stream must correspond to a file in the same format as the standard
-password database file.
address@hidden deftypefun
-
address@hidden pwd.h
address@hidden GNU
address@hidden int fgetpwent_r (FILE address@hidden, struct passwd 
address@hidden, char address@hidden, size_t @var{buflen}, struct passwd 
address@hidden)
-This function is similar to @code{fgetpwent} in that it reads the next
-user entry from @var{stream}, but the result is returned in the
-structure pointed to by @var{result_buf}.  The first @var{buflen}
-bytes of the additional buffer pointed to by @var{buffer} are used to
-contain additional information, normally strings that are pointed to
-by the elements of the result structure.
-
-The stream must correspond to a file in the same format as the
-standard password-database file.
-
-If the function returns 0, @var{result} points to the structure with
-the wanted data (normally this is in @var{result_buf}).  If errors
-occurred, the return value is nonzero and @var{result} contains a null
-pointer.
address@hidden deftypefun
-
-The way to scan all the entries in the user database is with
address@hidden, @code{getpwent} and @code{endpwent}.
-
address@hidden pwd.h
address@hidden SVID, BSD
address@hidden void setpwent (void)
-This function initializes a stream that @code{getpwent} and
address@hidden use to read the user database.
address@hidden deftypefun
-
address@hidden pwd.h
address@hidden POSIX.1
address@hidden {struct passwd *} getpwent (void)
-The @code{getpwent} function reads the next entry from the stream
-initialized by @code{setpwent}.  It returns a pointer to the entry.  The
-structure is statically allocated and is rewritten on subsequent calls
-to @code{getpwent}.  You must copy the contents of the structure if you
-wish to save the information.
-
-A null pointer is returned when no more entries are available.
address@hidden deftypefun
-
address@hidden pwd.h
address@hidden GNU
address@hidden int getpwent_r (struct passwd address@hidden, char 
address@hidden, int @var{buflen}, struct passwd address@hidden)
-This function is similar to @code{getpwent} in that it returns the next
-entry from the stream initialized by @code{setpwent}.  Like
address@hidden, it uses the user-supplied buffers in
address@hidden and @var{buffer} to return the information requested.
-
-The return values are the same as for @code{fgetpwent_r}.
-
address@hidden deftypefun
-
address@hidden pwd.h
address@hidden SVID, BSD
address@hidden void endpwent (void)
-This function closes the internal stream used by @code{getpwent} or
address@hidden
address@hidden deftypefun
-
address@hidden Writing a User Entry
address@hidden Writing a User Entry
-
address@hidden pwd.h
address@hidden SVID
address@hidden int putpwent (const struct passwd address@hidden, FILE 
address@hidden)
-This function writes the user entry @address@hidden to the stream
address@hidden, in the format used for the standard user-database file.
-The return value is 0 on success and nonzero on failure.
-
-This function exists for compatibility with @acronym{SVID}.  We
-recommend that you avoid using it, because it makes sense only on the
-assumption that the @code{struct passwd} structure has no members
-except the standard ones; on a system that merges the traditional Unix
-database with other extended information about users, adding an entry
-using this function would inevitably leave out much of the important
-information.
address@hidden Then how are programmers to modify the password file? -zw
-
-The function @code{putpwent} is declared in @file{pwd.h}.
address@hidden deftypefun
-
address@hidden Group Database
address@hidden Group Database
address@hidden group database
address@hidden /etc/group
-
-This section describes how to search and scan the database of
-registered groups.  The database itself is kept in the file
address@hidden/etc/group} on most systems, but on some systems a special network
-service provides access to it.
-
address@hidden Group Data Structure
address@hidden The Data Structure for a Group
-
-The functions and data structures for accessing the system
-group-database are declared in the header file @file{grp.h}.
address@hidden grp.h
-
address@hidden grp.h
address@hidden POSIX.1
address@hidden {Data Type} {struct group}
-The @code{group} structure is used to hold information about an entry
-in the system group-database.  It has at least the following members:
-
address@hidden @code
address@hidden char *gr_name
-This is the name of the group.
-
address@hidden gid_t gr_gid
-This is the group @acronym{ID} of the group.
-
address@hidden char **gr_mem
-This is a vector of pointers to the names of users in the group.  Each
-user name is a null-terminated string, and the vector itself is
-terminated by a null pointer.
address@hidden table
address@hidden deftp
-
address@hidden Lookup Group
address@hidden Looking Up One Group
address@hidden converting group-name to address@hidden
address@hidden converting address@hidden to group-name
-
-You can search the group database for information about a specific
-group using @code{getgrgid} or @code{getgrnam}.  These functions are
-declared in @file{grp.h}.
-
address@hidden grp.h
address@hidden POSIX.1
address@hidden {struct group *} getgrgid (gid_t @var{gid})
-This function returns a pointer to a statically allocated structure
-containing information about the group whose group @acronym{ID} is @var{gid}.
-This structure may be overwritten by subsequent calls to
address@hidden
-
-A null pointer indicates there is no group with @acronym{ID} @var{gid}.
address@hidden deftypefun
-
address@hidden grp.h
address@hidden POSIX.1c
address@hidden int getgrgid_r (gid_t @var{gid}, struct group address@hidden, 
char address@hidden, size_t @var{buflen}, struct group address@hidden)
-This function is similar to @code{getgrgid} in that it returns
-information about the group whose group @acronym{ID} is @var{gid}.
-However, it fills the user-supplied structure pointed to by
address@hidden with the information instead of using a static
-buffer.  The first @var{buflen} bytes of the additional buffer pointed
-to by @var{buffer} are used to contain additional information,
-normally strings that are pointed to by the elements of the result
-structure.
-
-If a group with @acronym{ID} @var{gid} is found, the pointer returned
-in @var{result} points to the record that contains the wanted data
-(i.e., @var{result} contains the value @var{result_buf}).  If no group
-is found or if an error occurred, the pointer returned in @var{result}
-is a null pointer.  The function returns 0 or an error code.  If the
-buffer @var{buffer} is too small to contain all the needed
-information, the error code @code{ERANGE} is returned and @var{errno}
-is set to @code{ERANGE}.
address@hidden deftypefun
-
address@hidden grp.h
address@hidden SVID, BSD
address@hidden {struct group *} getgrnam (const char address@hidden)
-This function returns a pointer to a statically allocated structure
-containing information about the group whose group name is @var{name}.
-This structure may be overwritten by subsequent calls to
address@hidden
-
-A null pointer indicates there is no group named @var{name}.
address@hidden deftypefun
-
address@hidden grp.h
address@hidden POSIX.1c
address@hidden int getgrnam_r (const char address@hidden, struct group 
address@hidden, char address@hidden, size_t @var{buflen}, struct group 
address@hidden)
-This function is similar to @code{getgrnam} in that is returns
-information about the group whose group name is @var{name}.  Like
address@hidden, it uses the user-supplied buffers in
address@hidden and @var{buffer}, not a static buffer.
-
-The return values are the same as for @code{getgrgid_r}
address@hidden
address@hidden deftypefun
-
address@hidden Scanning All Groups
address@hidden Scanning the List of All Groups
address@hidden scanning the group list
-
-This section explains how a program can read the list of all groups in
-the system, one group at a time.  The functions described here are
-declared in @file{grp.h}.
-
-You can use the @code{fgetgrent} function to read group entries from a
-particular file.
-
address@hidden grp.h
address@hidden SVID
address@hidden {struct group *} fgetgrent (FILE address@hidden)
-The @code{fgetgrent} function reads the next entry from @var{stream}.
-It returns a pointer to the entry.  The structure is statically
-allocated and is overwritten on subsequent calls to @code{fgetgrent}.  You
-must copy the contents of the structure if you wish to save the
-information.
-
-The stream must correspond to a file in the same format as the
-standard group-database file.
address@hidden deftypefun
-
address@hidden grp.h
address@hidden GNU
address@hidden int fgetgrent_r (FILE address@hidden, struct group 
address@hidden, char address@hidden, size_t @var{buflen}, struct group 
address@hidden)
-This function is similar to @code{fgetgrent} in that it reads the next
-user entry from @var{stream}, but the result is returned in the
-structure pointed to by @var{result_buf}.  The first @var{buflen}
-bytes of the additional buffer pointed to by @var{buffer} are used to
-contain additional information, normally strings that are pointed to
-by the elements of the result structure.
-
-This stream must correspond to a file in the same format as the
-standard group-database file.
-
-If the function returns 0, @var{result} points to the structure with
-the wanted data (normally this is in @var{result_buf}).  If errors
-occurred, the return value is nonzero and @var{result} contains a null
-pointer.
address@hidden deftypefun
-
-The way to scan all the entries in the group database is with
address@hidden, @code{getgrent} and @code{endgrent}.
-
address@hidden grp.h
address@hidden SVID, BSD
address@hidden void setgrent (void)
-This function initializes a stream for reading from the group database.
-You use this stream by calling @code{getgrent} or @code{getgrent_r}.
address@hidden deftypefun
-
address@hidden grp.h
address@hidden SVID, BSD
address@hidden {struct group *} getgrent (void)
-The @code{getgrent} function reads the next entry from the stream
-initialized by @code{setgrent}.  It returns a pointer to the entry.  The
-structure is statically allocated and is overwritten on subsequent calls
-to @code{getgrent}.  You must copy the contents of the structure if you
-wish to save the information.
address@hidden deftypefun
-
address@hidden grp.h
address@hidden GNU
address@hidden int getgrent_r (struct group address@hidden, char 
address@hidden, size_t @var{buflen}, struct group address@hidden)
-This function is similar to @code{getgrent} in that it returns the next
-entry from the stream initialized by @code{setgrent}.  Like
address@hidden, it places the result in user-supplied buffers
-pointed to @var{result_buf} and @var{buffer}.
-
-If the function returns 0, @var{result} contains a pointer to the data
-(normally equal to @var{result_buf}).  If errors occurred, the return
-value is nonzero and @var{result} contains a null pointer.
address@hidden deftypefun
-
address@hidden grp.h
address@hidden SVID, BSD
address@hidden void endgrent (void)
-This function closes the internal stream used by @code{getgrent} or
address@hidden
address@hidden deftypefun
-
address@hidden Database Example
address@hidden User- and Group- Database Example
-
-Here is an example program showing the use of the system
-database-inquiry functions.  The program prints some information about
-the user running the program.
-
address@hidden
-#include <grp.h>
-#include <pwd.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <stdlib.h>
-
-int
-main (void)
address@hidden
-  uid_t me;
-  struct passwd *my_passwd;
-  struct group *my_group;
-  char **members;
-
-  /* @r{Get information about the user @acronym{ID}.} */
-  me = getuid ();
-  my_passwd = getpwuid (me);
-  if (!my_passwd)
-    @{
-      printf ("Couldn't find out about user %d.\n", (int) me);
-      exit (EXIT_FAILURE);
-    @}
-
-  /* @r{Print the information.} */
-  printf ("I am %s.\n", my_passwd->pw_gecos);
-  printf ("My login name is %s.\n", my_passwd->pw_name);
-  printf ("My uid is %d.\n", (int) (my_passwd->pw_uid));
-  printf ("My home directory is %s.\n", my_passwd->pw_dir);
-  printf ("My default shell is %s.\n", my_passwd->pw_shell);
-
-  /* @r{Get information about the default group @acronym{ID}.} */
-  my_group = getgrgid (my_passwd->pw_gid);
-  if (!my_group)
-    @{
-      printf ("Couldn't find out about group %d.\n",
-              (int) my_passwd->pw_gid);
-      exit (EXIT_FAILURE);
-    @}
-
-  /* @r{Print the information.} */
-  printf ("My default group is %s (%d).\n",
-          my_group->gr_name, (int) (my_passwd->pw_gid));
-  printf ("The members of this group are:\n");
-  members = my_group->gr_mem;
-  while (*members)
-    @{
-      printf ("  %s\n", *(members));
-      members++;
-    @}
-
-  return EXIT_SUCCESS;
address@hidden
-
address@hidden smallexample
-
-Here is some output from this program:
-
address@hidden
-I am Throckmorton Snurd.
-My login name is snurd.
-My uid is 31093.
-My home directory is /home/fsg/snurd.
-My default shell is /bin/sh.
-My default group is guest (12).
-The members of this group are:
-  friedman
-  tami
address@hidden smallexample
-
address@hidden Netgroup Database
address@hidden Netgroup Database
-
address@hidden Netgroup Data
address@hidden Netgroup Data
-
address@hidden Netgroup
-Sometimes it is useful to group users according to other criteria
-(@pxref{Group Database}).  It is useful to associate a certain group
-of users with a certain machine.  But grouping of host names is not
-yet supported.
-
-In Sun Microsystems address@hidden, a new kind of database
-appeared---the netgroup database.  It allows grouping hosts, users and
-domains freely, giving them individual names.  To be more concrete, a
-netgroup is a list of triples consisting of a host name, a user name,
-and a domain name where any of the entries can be a wild-card entry
-matching all inputs.  A last possibility is that names of other
-netgroups can also be given in the list specifying a netgroup.  So you
-can construct arbitrary hierarchies without loops.
-
-Sun's implementation allows netgroups only for the @code{nis} or
address@hidden service (@pxref{Services in the NSS Configuration}).  The
-implementation in the @acronym{GNU} C Library has no such restriction.  An 
entry
-in either of the input services must have the following form:
-
address@hidden
address@hidden ( @var{groupname} | 
@code{(address@hidden@code{,address@hidden@code{,address@hidden@code{)} )+
address@hidden smallexample
-
-Any of the fields in the triple can be empty, which means anything
-matches.  While describing the functions, we will see that the
-opposite case is useful as well---there may be entries that will not
-match any input.  For entries like this, a name consisting of the
-single character @samp{-} will be used.
-
address@hidden Lookup Netgroup
address@hidden Looking Up One Netgroup
-
-The lookup functions for netgroups are a bit different from all other
-system database-handling functions.  Since a single netgroup can
-contain many entries, a two-step process is needed.  First you select
-a single netgroup, and then you can iterate over all entries in this
-netgroup.  These functions are declared in @file{netdb.h}.
-
address@hidden netdb.h
address@hidden BSD
address@hidden int setnetgrent (const char address@hidden)
-A call to this function initializes the internal state of the library
-to allow calls of the @code{getnetgrent} to iterate over all entries
-in the netgroup with name @var{netgroup}.
-
-When the call is successful (when a netgroup with this name exists)
-the return value is @code{1}.  When the return value is @code{0}, no
-netgroup of this name is known or some other error occurred.
address@hidden deftypefun
-
-It is important to remember that there is only one single state for
-iterating the netgroups.  Even if the programmer uses the
address@hidden function, the result is not really reentrant,
-since only one single netgroup at a time can ever be processed.  If
-the program needs to process more than one netgroup simultaneously,
-the programmer must protect this by using external locking.  This
-problem was introduced in the original netgroups implementation in
address@hidden, and since the @sc{gnu} C Library must stay
-compatible, it is not possible to change this.
-
-Some other functions also use the netgroups state.  Currently, these
-are the @code{innetgr} function and parts of the implementation of the
address@hidden service part of the @acronym{NSS} implementation.
-
address@hidden netdb.h
address@hidden BSD
address@hidden int getnetgrent (char address@hidden, char address@hidden, char 
address@hidden)
-This function returns the next unprocessed entry of the currently
-selected netgroup.  The string pointers, in which addresses are passed
-in the arguments @var{hostp}, @var{userp} and @var{domainp}, will
-contain after a successful call pointers to appropriate strings.  If
-the string in the next entry is empty, the pointer has the value
address@hidden  The returned string-pointers are only valid if none of
-the netgroup-related functions are called.
-
-The return value is @code{1} if the next entry was successfully read.  A
-value of @code{0} means no further entries exist or internal errors occurred.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden GNU
address@hidden int getnetgrent_r (char address@hidden, char address@hidden, 
char address@hidden, char address@hidden, int @var{buflen})
-This function is similar to @code{getnetgrent} with only one
-exception---the strings the three string pointers @var{hostp},
address@hidden and @var{domainp} point to are placed in the buffer of
address@hidden bytes starting at @var{buffer}.  This means the returned
-values are valid even after other netgroup-related functions are
-called.
-
-The return value is @code{1} if the next entry was successfully read
-and the buffer contains enough room to place the strings in it.
address@hidden is returned in case no more entries are found, the buffer is
-too small or internal errors occurred.
-
-This function is a @acronym{GNU} extension.  The original implementation in the
address@hidden libc does not provide this function.
address@hidden deftypefun
-
address@hidden netdb.h
address@hidden BSD
address@hidden void endnetgrent (void)
-This function frees all buffers that were allocated to process the
-last selected netgroup.  As a result, all string pointers returned by
-calls to @code{getnetgrent} are invalid afterward.
address@hidden deftypefun
-
address@hidden Netgroup Membership
address@hidden Testing for Netgroup Membership
-
-It is often not necessary to scan the whole netgroup, since often the
-only interesting question is whether a given entry is part of the
-selected netgroup.
-
address@hidden netdb.h
address@hidden BSD
address@hidden int innetgr (const char address@hidden, const char 
address@hidden, const char address@hidden, const char address@hidden)
-This function tests whether the triple specified by the parameters
address@hidden, @var{userp} and @var{domainp} is part of the netgroup
address@hidden  Using this function has these two advantages:
-
address@hidden
address@hidden
-No other netgroup function can use the global netgroup state since
-internal locking is used.
address@hidden
-The function is implemented more efficiently than successive calls
-to the other @code{set}/@code{get}/@code{endnetgrent} functions.
address@hidden enumerate
-
-Any of the pointers @var{hostp}, @var{userp} or @var{domainp} can be
address@hidden, which means any value is accepted in this position.  This
-is also true for the name @samp{-} which should not match any other
-string otherwise.
-
-The return value is @code{1} if an entry matching the given triple is
-found in the netgroup.  The return value is @code{0} if the netgroup
-itself is not found, the netgroup does not contain the triple or
-internal errors occurred.
address@hidden deftypefun
-
address@hidden System Management
address@hidden %MENU% Controlling the system and getting information about it
address@hidden System Management
-
-This chapter describes facilities for controlling the system that
-underlies a process, including the operating system and hardware, and
-for getting information about it.  Anyone can generally use the
-informational facilities, but usually only a properly privileged
-process can make changes.
-
-
-To get information on parameters of the system that are built into the
-system, such as the maximum length of a file name, @ref{System
-Configuration}.
-
address@hidden Host Identification
address@hidden Host Identification
-
-This section explains how to identify the particular system on which your
-program is running.  First, let's review the various ways computer systems
-are named, which is a little complicated because of the history of the
-development of the Internet.
-
-Every Unix system (also known as a host) has a host name, whether it's
-connected to a network or not.  In its simplest form, as used before
-computer networks were an issue, it's just a word like @samp{chicken}.
address@hidden host name
-
-But any system attached to the Internet or any network like it
-conforms to a more rigorous naming convention as part of the Domain
-Name System (@acronym{DNS}).  In @acronym{DNS}, every host name is
-composed of both a hostname and a domain name:
address@hidden @acronym{DNS}
address@hidden Domain Name System
address@hidden hostname
address@hidden domain name
-
-You will note that ``hostname'' looks a lot like ``host name'', but it
-is not the same thing. People often incorrectly refer to entire host
-names as ``domain names.''
-
-In @acronym{DNS}, the full host name is properly called the @acronym{FQDN} 
(Fully Qualified
-Domain Name) and consists of the hostname, then a period, then the
-domain name.  The domain name itself usually has multiple components
-separated by periods.  So for example, a system's hostname may be
address@hidden and its domain name might be @samp{ai.mit.edu}, so
-its @acronym{FQDN} (which is its host name) is @samp{chicken.ai.mit.edu}.
address@hidden @acronym{FQDN}
-
-Adding to the confusion, though, is that @acronym{DNS} is not the only
-namespace in which a computer needs to be known.  Another namespace is
-the @acronym{NIS} (aka @acronym{YP}) namespace.  For @acronym{NIS}
-purposes, there is another domain name, which is called the
address@hidden domain name or the @acronym{YP} domain name.  It need
-not have anything to do with the @acronym{DNS} domain name.
address@hidden @acronym{YP}
address@hidden @acronym{NIS}
address@hidden @acronym{NIS} domain name
address@hidden @acronym{YP} domain name
-
-Confusing things even more is the fact that in @acronym{DNS}, it is possible 
for
-multiple @acronym{FQDN}s to refer to the same system.  However, there is always
-exactly one of them that is the true host name, and it is called the
-canonical @acronym{FQDN}.
-
-In some contexts, the host name is called a ``node name.''
-
-For more information on @acronym{DNS} host naming, see @ref{Host Names}.
-
address@hidden hostname
address@hidden hostid
address@hidden unistd.h
-Prototypes for these functions appear in @file{unistd.h}.
-
-The programs @code{hostname}, @code{hostid} and @code{domainname} work
-by calling these functions.
-
address@hidden unistd.h
address@hidden BSD
address@hidden int gethostname (char address@hidden, size_t @var{size})
-This function returns the host name of the system on which it is
-called, in the array @var{name}.  The @var{size} argument specifies
-the size of this array, in bytes.  This is @emph{not} the
address@hidden hostname.  If the system participates in @acronym{DNS},
-this is the @acronym{FQDN} (see above).
-
-The return value is @code{0} on success and @code{-1} on failure.  In
-the @acronym{GNU} C Library, @code{gethostname} fails if @var{size} is not 
large
-enough; then you can try again with a larger array.  The following
address@hidden error condition is defined for this function:
-
address@hidden @code
address@hidden ENAMETOOLONG
-The @var{size} argument is less than the size of the host name plus 1.
address@hidden table
-
address@hidden sys/param.h
-On some systems, there is a symbol for the maximum possible host name
-length, @code{MAXHOSTNAMELEN}.  It is defined in @file{sys/param.h}.
-But you can't count on this to exist, so it is cleaner to handle
-failure and try again.
-
address@hidden stores the beginning of the host name in @var{name}
-even if the host name won't entirely fit.  For some purposes, a
-truncated host name is good enough.  If it is, you can ignore the
-error code.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden BSD
address@hidden int sethostname (const char address@hidden, size_t @var{length})
-The @code{sethostname} function sets the host name of the system that
-calls it to @var{name}, a string with length @var{length}.  Only
-privileged processes are permitted to do this.
-
-Usually @code{sethostname} gets called just once, at system boot time.
-Often, the program that calls it sets it to the value it finds in the
-file @code{/etc/hostname}.
address@hidden /etc/hostname
-
-Be sure to set the host name to the full host name, not just the @acronym{DNS}
-hostname (see above).
-
-The return value is @code{0} on success and @code{-1} on failure.
-The following @code{errno} error condition is defined for this function:
-
address@hidden @code
address@hidden EPERM
-This process cannot set the host name because it is not privileged.
address@hidden table
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden ???
address@hidden int getdomainnname (char address@hidden, size_t @var{length})
address@hidden @acronym{NIS} domain name
address@hidden @acronym{YP} domain name
-
address@hidden returns the @acronym{NIS} (aka @acronym{YP})
-domain name of the system on which it is called.  This is not the more
-popular @acronym{DNS} domain name.  Get that with @code{gethostname}.
-
-The specifics of this function are analogous to @code{gethostname}, above.
-
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden ???
address@hidden int setdomainname (const char address@hidden, size_t 
@var{length})
address@hidden @acronym{NIS} domain name
address@hidden @acronym{YP} domain name
-
address@hidden sets the @acronym{NIS} (aka @acronym{YP}) domain
-name of the system on which it is called.  This is not the more
-popular @acronym{DNS} domain name.  Set that with @code{sethostname}.
-
-The specifics of this function are analogous to @code{sethostname}, above.
-
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden BSD
address@hidden {long int} gethostid (void)
-This function returns the ``host @acronym{ID}'' of the machine the
-program is running on.  By convention, this is usually the primary
-Internet @acronym{IP} address of that machine, converted to a
address@hidden@code{long int}}.  However, on some systems it is a meaningless 
but
-unique number that is hard coded for each machine.
-
-This is not widely used.  It arose in @acronym{BSD} 4.2, but was dropped in 
@acronym{BSD} 4.4.
-It is not required by @acronym{POSIX}.
-
-The proper way to query the @acronym{IP} address is to use @code{gethostbyname}
-on the results of @code{gethostname}.  For more information on @acronym{IP} 
addresses,
-see @ref{Host Addresses}.
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden BSD
address@hidden int sethostid (long int @var{id})
-The @code{sethostid} function sets the ``host @acronym{ID}'' of the host 
machine
-to @var{id}.  Only privileged processes are permitted to do this.  Usually
-it happens just once, at system boot time.
-
-The proper way to establish the primary @acronym{IP} address of a system
-is to configure the @acronym{IP} address resolver to associate that 
@acronym{IP} address with
-the system's host name as returned by @code{gethostname}.  For example,
-put a record for the system in @file{/etc/hosts}.
-
-See @code{gethostid} above for more information on host ids.
-
-The return value is @code{0} on success and @code{-1} on failure.
-The following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden EPERM
-This process cannot set the host name because it is not privileged.
-
address@hidden ENOSYS
-The operating system does not support setting the host @acronym{ID}.
-On some systems, the host @acronym{ID} is a meaningless but unique
-number hard coded for each machine.
address@hidden table
address@hidden deftypefun
-
address@hidden Platform Type
address@hidden Platform-Type Identification
-
-You can use the @code{uname} function to find out some information about
-the type of computer your program is running on.  This function and the
-associated data type are declared in the header file
address@hidden/utsname.h}.
address@hidden sys/utsname.h
-
-As a bonus, @code{uname} also gives some information identifying the
-particular system your program is running on.  This is the same
-information that you can get with functions targetted to this purpose
-described in @ref{Host Identification}.
-
-
address@hidden sys/utsname.h
address@hidden POSIX.1
address@hidden {Data Type} {struct utsname}
-The @code{utsname} structure is used to hold information returned
-by the @code{uname} function.  It has the following members:
-
address@hidden @code
address@hidden char sysname[]
-This is the name of the operating system in use.
-
address@hidden char release[]
-This is the current release level of the operating system implementation.
-
address@hidden char version[]
-This is the current version level within the release of the operating
-system.
-
address@hidden char machine[]
-This is a description of the type of hardware that is in use.
-
-Some systems provide a mechanism to interrogate the kernel directly for
-this information.  On systems without such a mechanism, the @acronym{GNU} C
-library fills in this field based on the configuration name that was
-specified when building and installing the library.
-
address@hidden uses a three-part name to describe a system configuration; the 
three
-parts are @var{cpu}, @var{manufacturer} and @var{system-type}, and they
-are separated with dashes.  Any possible combination of three names is
-potentially meaningful, but most such combinations are meaningless in
-practice and even the meaningful ones are not necessarily supported by
-any particular @acronym{GNU} program.
-
-Since the value in @code{machine} is supposed to describe just the
-hardware, it consists of the first two parts of the configuration name:
address@hidden@address@hidden  For example, it might be one of these:
-
address@hidden
address@hidden"sparc-sun"},
address@hidden"address@hidden"},
address@hidden"m68k-hp"},
address@hidden"m68k-sony"},
address@hidden"m68k-sun"},
address@hidden"mips-dec"}
address@hidden quotation
-
address@hidden char nodename[]
-This is the host name of this particular computer.  In the @acronym{GNU} C
-library, the value is the same as that returned by @code{gethostname}
-(@pxref{Host Identification}).
-
-@ gethostname() is implemented with a call to uname().
-
address@hidden char domainname[]
-This is the @acronym{NIS} or @acronym{YP} domain name.  It is the same value 
returned by
address@hidden (@pxref{Host Identification}).  This element
-is a relatively recent invention and use of it is not as portable as
-use of the rest of the structure.
-
address@hidden getdomainname() is implemented with a call to uname().
-
address@hidden table
address@hidden deftp
-
address@hidden sys/utsname.h
address@hidden POSIX.1
address@hidden int uname (struct utsname address@hidden)
-The @code{uname} function fills in the structure pointed to by
address@hidden with information about the operating system and host machine.
-A nonnegative value indicates that the data was successfully stored.
-
address@hidden as the value indicates an error.  The only error possible is
address@hidden, which we normally don't mention as it is always a
-possibility.
address@hidden deftypefun
-
-
address@hidden File-System Handling
address@hidden Controlling and Querying Mounts
-
-All files are in file systems, and before you can access any file, its
-file system must be mounted.  Because of Unix's concept of
address@hidden is a file}, mounting of file systems is central to
-doing almost anything.  This section explains how to find out what
-file systems are currently mounted, what file systems are available
-for mounting and how to change what is mounted.
-
-The classic file-system is the contents of a disk drive.  The concept is
-considerably more abstract, though, and lots of things other than disk
-drives can be mounted.
-
-Some block devices don't correspond to traditional devices like disk
-drives.  For example, a loop device is a block device whose driver
-uses a regular file in another file-system as its medium.  So if that
-regular file contains appropriate data for a file system, you can
-essentially mount a regular file by mounting the loop device.
-
-Some file systems aren't based on a device of any kind.  The ``proc''
-file-system, for example, contains files whose data is made up by the
-file-system driver on the fly whenever you ask for it.  And when you
-write to it, the data you write causes changes in the system.  No data
-gets stored.
-
address@hidden It would be good to mention NFS mounts here.
-
address@hidden Mount Information
address@hidden Mount Information
-
-For some programs, it is desirable and necessary to access information
-about whether a certain file-system is mounted and, if it is, where, or
-simply to get lists of all the available file-systems.  The @acronym{GNU} libc
-provides some functions to retrieve this information portably.
-
-Traditionally, Unix systems have a file named @file{/etc/fstab} that
-describes all possibly mounted file-systems.  The @code{mount} program
-uses this file to mount at start-up time of the system all the
-necessary file-systems.  The information about all the file systems
-actually mounted is normally kept in a file named either
address@hidden/var/run/mtab} or @file{/etc/mtab}.  Both files share the same
-syntax and it is crucial that this syntax is followed all the time.
-Therefore it is best to never directly write the files.  The functions
-described in this section can do this, and they also provide the
-functionality to convert the external textual representation to the
-internal representation.
-
-The @file{fstab} and @file{mtab} files are maintained on a system by
address@hidden  It is possible for the files not to exist or not
-to be consistent with what is really mounted or available to mount, if
-the system's administration policy allows it.  But programs that mount
-and unmount file systems typically maintain and use these files as
-described herein.
-
address@hidden _PATH_FSTAB
address@hidden _PATH_MNTTAB
address@hidden _PATH_MOUNTED
address@hidden FSTAB
address@hidden MNTTAB
address@hidden MOUNTED
-The filenames given above should never be used directly.  The portable
-way to handle these files is to use the macro @code{_PATH_FSTAB},
-defined in @file{fstab.h}, or @code{_PATH_MNTTAB}, defined in
address@hidden and @file{paths.h}, for @file{fstab}; and the macro
address@hidden, also defined in @file{mntent.h} and
address@hidden, for @file{mtab}.  The alternate macro names
address@hidden, @code{MNTTAB} and @code{MOUNTED} are also defined, but
-these names are deprecated and kept only for backward compatibility.
-The names @code{_PATH_MNTTAB} and @code{_PATH_MOUNTED} should always
-be used.
-
address@hidden fstab
address@hidden The @file{fstab} File
-
-The internal representation for entries of the file is @address@hidden
-fstab}}, defined in @file{fstab.h}.
-
address@hidden fstab.h
address@hidden BSD
address@hidden {Data Type} {struct fstab}
-This structure is used with the @code{getfsent}, @code{getfsspec}, and
address@hidden functions.
-
address@hidden @code
address@hidden char *fs_spec
-This element describes the device from which the file system is
-mounted.  Normally, this is the name of a special device, such as a
-hard-disk partition, but it could also be a more or less generic
-string.  For @dfn{NFS} it would be a hostname and directory-name
-combination.
-
-Even though the element is not declared @code{const}, it shouldn't be
-modified.  The missing @code{const} has historic reasons, since this
-function predates @address@hidden C}.  The same is true for the other
-string elements of this structure.
-
address@hidden char *fs_file
-This describes the mount point on the local system.  Accessing any
-file in this file system has this string implicitly or explicitly as a
-prefix.
-
address@hidden char *fs_vfstype
-This is the type of the file system.  Depending on what the underlying
-kernel understands, it can be any string.
-
address@hidden char *fs_mntops
-This is a string containing options passed to the kernel with the
address@hidden call.  Again, this can be almost anything.  There can be
-more than one option, separated from the others by a comma.  Each
-option consists of a name and an optional value part, introduced by an
address@hidden character.
-
-If the value of this element must be processed it should ideally be
-done using the @code{getsubopt} address@hidden Loosemore et
-al., ``Parsing of Suboptions'' (see chap. 1, n. 1).}
-
address@hidden const char *fs_type
-This name is poorly chosen.  This element points to a string (possibly
-in the @code{fs_mntops} string) that describes the modes with which
-the file system is mounted.  @file{fstab} defines five macros to
-describe the possible values:
-
address@hidden @code
address@hidden FSTAB_RW
-The file system gets mounted with read and write enabled.
address@hidden FSTAB_RQ
-The file system gets mounted with read and write enabled.  Write
-access is restricted by quotas.
address@hidden FSTAB_RO
-The file system gets mounted read-only.
address@hidden FSTAB_SW
-This is not a real file-system, it is a swap device.
address@hidden FSTAB_XX
-This entry from the @file{fstab} file is totally ignored.
address@hidden vtable
-
-Testing for equality with these values must happen using
address@hidden, since these are all strings.  Comparing the pointer
-will probably always fail.
-
address@hidden int fs_freq
-This element describes the dump frequency in days.
-
address@hidden int fs_passno
-This element describes the pass number on parallel dumps.  It is closely
-related to the @code{dump} utility used on Unix systems.
address@hidden table
address@hidden deftp
-
-
-To read the entire content of the of the @file{fstab} file, the @acronym{GNU} 
libc
-contains a set of three functions which are designed in the usual way.
-
address@hidden fstab.h
address@hidden BSD
address@hidden int setfsent (void)
-This function makes sure that the internal read pointer for the
address@hidden file is at the beginning of the file.  This is done by
-either opening the file or resetting the read pointer.
-
-Since the file handle is internal to the libc, this function is not
-threadsafe.
-
-This function returns a nonzero value if the operation was successful
-and the @code{getfs*} functions can be used to read the entries of the
-file.
address@hidden deftypefun
-
address@hidden fstab.h
address@hidden BSD
address@hidden void endfsent (void)
-This function makes sure that all resources acquired by a prior call to
address@hidden (explicitly or implicitly by calling @code{getfsent}) are
-freed.
address@hidden deftypefun
-
address@hidden fstab.h
address@hidden BSD
address@hidden {struct fstab *} getfsent (void)
-This function returns the next entry of the @file{fstab} file.  If this
-is the first call to any of the functions handling @file{fstab} since
-program start or the last call of @code{endfsent}, the file will be
-opened.
-
-The function returns a pointer to a variable of type @code{struct
-fstab}.  This variable is shared by all threads, and therefore this
-function is not threadsafe.  If an error occurred, @code{getfsent}
-returns a @code{NULL} pointer.
address@hidden deftypefun
-
address@hidden fstab.h
address@hidden BSD
address@hidden {struct fstab *} getfsspec (const char address@hidden)
-This function returns the next entry of the @file{fstab} file that has
-a string equal to @var{name} pointed to by the @code{fs_spec} element.
-Since there is normally exactly one entry for each special device, it
-makes no sense to call this function more than once for the same
-argument.  If this is the first call to any of the functions handling
address@hidden since program start or the last call of @code{endfsent},
-the file will be opened.
-
-The function returns a pointer to a variable of type @code{struct
-fstab}.  This variable is shared by all threads, and therefore this
-function is not threadsafe.  If an error occurred, @code{getfsent}
-returns a @code{NULL} pointer.
address@hidden deftypefun
-
address@hidden fstab.h
address@hidden BSD
address@hidden {struct fstab *} getfsfile (const char address@hidden)
-This function returns the next entry of the @file{fstab} file that has
-a string equal to @var{name} pointed to by the @code{fs_file} element.
-Since there is normally exactly one entry for each mount point, it
-makes no sense to call this function more than once for the same
-argument.  If this is the first call to any of the functions handling
address@hidden since program start or the last call of @code{endfsent},
-the file will be opened.
-
-The function returns a pointer to a variable of type @code{struct
-fstab}.  This variable is shared by all threads, and therefore this
-function is not threadsafe.  If an error occurred, @code{getfsent}
-returns a @code{NULL} pointer.
address@hidden deftypefun
-
-
address@hidden mtab
address@hidden The @file{mtab} File
-The following functions and data structure access the @file{mtab} file.
-
address@hidden mntent.h
address@hidden BSD
address@hidden {Data Type} {struct mntent}
-This structure is used with the @code{getmntent}, @code{getmntent_t},
address@hidden and @code{hasmntopt} functions.
-
address@hidden @code
address@hidden char *mnt_fsname
-This element contains a pointer to a string describing the name of the
-special device from which the file system is mounted.  It corresponds to
-the @code{fs_spec} element in @code{struct fstab}.
-
address@hidden char *mnt_dir
-This element points to a string describing the mount point of the
-file system.  It corresponds to the @code{fs_file} element in
address@hidden fstab}.
-
address@hidden char *mnt_type
address@hidden describes the file-system type, and is therefore
-equivalent to @code{fs_vfstype} in @code{struct fstab}.
address@hidden defines a few symbolic names for some of the values
-this string can have.  But since the kernel can support arbitrary
-file-systems, it does not make much sense to give them symbolic names.
-If you know the symbol name, you also know the file-system name.
-Nevertheless, here is the list of the symbols provided in
address@hidden:
-
address@hidden @code
address@hidden MNTTYPE_IGNORE
-This symbol expands to @code{"ignore"}.  The value is sometime used in
address@hidden files to make sure entries are not used without removing them.
address@hidden MNTTYPE_NFS
-This symbol expands to @code{"nfs"}.  Using this macro sometimes could
-make sense since it names the default @acronym{NFS} implementation, in
-case both version 2 and 3 are supported.
address@hidden MNTTYPE_SWAP
-This symbol expands to @code{"swap"}.  It names the special
address@hidden entry that names one of the possibly multiple swap
-partitions.
address@hidden vtable
-
address@hidden char *mnt_opts
-The element contains a string describing the options used while
-mounting the file system.  As for the equivalent element
address@hidden of @code{struct fstab}, it is best to use the
-function @code{getsubopt} to access the parts of this
address@hidden, ``Parsing of Suboptions''.}
-
-The @file{mntent.h} file defines a number of macros with string values
-that correspond to some of the options understood by the kernel.
-There might be many more possible options, so it doesn't make much
-sense to rely on these macros, but to be consistent here is the list:
-
address@hidden @code
address@hidden MNTOPT_DEFAULTS
-This symbol expands to @code{"defaults"}.  This option should be used
-alone since it indicates all values for the customizable values are
-chosen to be the default.
address@hidden MNTOPT_RO
-This symbol expands to @code{"ro"}.  See the @code{FSTAB_RO} value; it
-means the file system is mounted read-only.
address@hidden MNTOPT_RW
-This symbol expands to @code{"rw"}.  See the @code{FSTAB_RW} value; it
-means the file system is mounted with read and write permissions.
address@hidden MNTOPT_SUID
-This symbol expands to @code{"suid"}.  This means that the @sc{suid}
-bit (@pxref{How to Change Persona}) is respected when a program from
-the file system is started.
address@hidden MNTOPT_NOSUID
-This symbol expands to @code{"nosuid"}.  This is the opposite of
address@hidden The @sc{suid} bit for all files from the file
-system is ignored.
address@hidden MNTOPT_NOAUTO
-This symbol expands to @code{"noauto"}.  At start-up time, the
address@hidden program will ignore this entry if it is started with the
address@hidden option to mount all file-systems mentioned in the
address@hidden file.
address@hidden vtable
-
-As for the @code{FSTAB_*} entries introduced above, it is important to
-use @code{strcmp} to check for equality.
-
address@hidden mnt_freq
-This element corresponds to @code{fs_freq} and also specifies the
-frequency in days in which dumps are made.
-
address@hidden mnt_passno
-This element is equivalent to @code{fs_passno} with the same meaning,
-which is uninteresting for all programs beside @code{dump}.
address@hidden table
address@hidden deftp
-
-For the @file{mtab} file, there is again a set of three functions to
-access all entries in a row.  Unlike the functions to handle
address@hidden, these functions do not access a fixed file, and there is
-even a threadsafe variant of the get function.  Besides this, the
address@hidden libc contains functions to alter the file and test for
-specific options.
-
address@hidden mntent.h
address@hidden BSD
address@hidden {FILE *} setmntent (const char address@hidden, const char 
address@hidden)
-The @code{setmntent} function prepares the file named @var{FILE},
-which must be in the format of an @file{fstab} and @file{mtab} file,
-for the upcoming processing through the other functions of the family.
-The @var{mode} parameter can be chosen in the way the @var{opentype}
-parameter for @code{fopen} can be address@hidden, ``Opening
-Streams''.} If the file is opened for writing, the file is also
-allowed to be empty.
-
-If the file was successfully opened, @code{setmntent} returns a file
-descriptor for future use.  Otherwise, the return value is @code{NULL}
-and @code{errno} is set accordingly.
address@hidden deftypefun
-
address@hidden mntent.h
address@hidden BSD
address@hidden int endmntent (FILE address@hidden)
-This function takes for the @var{stream} parameter a file handle that
-was previously returned from the @code{setmntent} call.
address@hidden closes the stream and frees all resources.
-
-The return value is @math{1} unless an error occurred, in which case
-it is @math{0}.
address@hidden deftypefun
-
address@hidden mntent.h
address@hidden BSD
address@hidden {struct mntent *} getmntent (FILE address@hidden)
-The @code{getmntent} function takes as the parameter a file handle
-previously returned by successful call to @code{setmntent}.  It
-returns a pointer to a static variable of type @code{struct mntent}
-that is filled with the information from the next entry from the file
-currently read.
-
-The file format used prescribes the use of spaces or tab characters to
-separate the fields.  This makes it harder to use names containing one
-of these characters (e.g., mount points using spaces).  Therefore,
-these characters are encoded in the files and the @code{getmntent}
-function takes care of the decoding while reading the entries back in.
address@hidden is used to encode a space character, @samp{\012} to encode
-a tab character and @samp{\\} to encode a backslash.
-
-If there was an error or the end of the file is reached, the return
-value is @code{NULL}.
-
-This function is not threadsafe, since all calls to this function
-return a pointer to the same static variable.  @code{getmntent_r}
-should be used in situations where multiple threads access the file.
address@hidden deftypefun
-
address@hidden mntent.h
address@hidden BSD
address@hidden {struct mntent *} getmntent_r (FILE address@hidden, struct 
mentent address@hidden, char address@hidden, int @var{bufsize})
-The @code{getmntent_r} function is the reentrant variant of
address@hidden  It also returns the next entry from the file and
-returns a pointer.  The actual variable the values are stored in is
-not static, though.  Instead, the function stores the values in the
-variable pointed to by the @var{result} parameter.  Additional
-information (e.g., the strings pointed to by the elements of the
-result) are kept in the buffer of size @var{bufsize} pointed to by
address@hidden
-
-Escaped characters (space, tab, backslash) are converted back in the
-same way as for @code{getmentent}.
-
-The function returns a @code{NULL} pointer in error cases.  Errors could be
address@hidden @bullet
address@hidden
-There was an error while reading the file.
address@hidden
-End of file was reached.
address@hidden
address@hidden is too small for reading a complete new entry.
address@hidden itemize
address@hidden deftypefun
-
address@hidden mntent.h
address@hidden BSD
address@hidden int addmntent (FILE address@hidden, const struct mntent 
address@hidden)
-The @code{addmntent} function allows the addition of a new entry to
-the file previously opened with @code{setmntent}.  The new entries are
-always appended---even if the position of the file descriptor is not
-at the end of the file, this function does not overwrite an existing
-entry following the current position.
-
-The implication of this is that to remove an entry from a file, you
-have to create a new file while leaving out the entry to be removed,
-and after closing the file, remove the old one and rename the new file
-to the chosen name.
-
-This function takes care of spaces and tab characters in the names to be
-written to the file.  It converts them and the backslash character into
-the format describe in the @code{getmntent} description above.
-
-This function returns @math{0} if the operation was successful.
-Otherwise, the return value is @math{1} and @code{errno} is set
-appropriately.
address@hidden deftypefun
-
address@hidden mntent.h
address@hidden BSD
address@hidden {char *} hasmntopt (const struct mntent address@hidden, const 
char address@hidden)
-This function can be used to check whether the string pointed to by
-the @code{mnt_opts} element of the variable pointed to by @var{mnt}
-contains the option @var{opt}.  If this is true, a pointer to the
-beginning of the option in the @code{mnt_opts} element is returned.
-If no such option exists, the function returns @code{NULL}.
-
-This function is useful to test whether a specific option is present,
-but when all options have to be processed, one is better off with
-using the @code{getsubopt} function to iterate over all options in the
-string.
address@hidden deftypefun
-
address@hidden Other Mount Information
address@hidden Other (Non-libc) Sources of Mount Information
-
-On a system with a Linux kernel and the @code{proc} file-system, you can
-get information on currently mounted file-systems from the file
address@hidden in the @code{proc} file-system.  Its format is similar to
-that of the @file{mtab} file, but represents what is truly mounted
-without relying on facilities outside the kernel to keep @file{mtab} up
-to date.
-
-
address@hidden Mount-Unmount-Remount
address@hidden Mount, Unmount, Remount
-
-This section describes the functions for mounting, unmounting and
-remounting file systems.
-
-Only the superuser can mount, unmount or remount a file system.
-
-These functions do not access the @file{fstab} and @file{mtab} files.  You
-should maintain and use these separately (@pxref{Mount Information}).
-
-The symbols in this section are declared in @file{sys/mount.h}.
-
address@hidden sys/mount.h
address@hidden SVID, BSD
address@hidden {int} mount (const char address@hidden, const char 
address@hidden, const char address@hidden, unsigned long int @var{options}, 
const void address@hidden)
-
address@hidden mounts or remounts a file system.  The two operations are
-quite different and are merged rather unnaturally into this one function.
-The @code{MS_REMOUNT} option, explained below, determines whether
address@hidden mounts or remounts.
-
-For a mount, the file system on the block device represented by the
-device special file named @var{special_file} gets mounted over the mount
-point @var{dir}.  This means that the directory @var{dir} (along with any
-files in it) is no longer visible; in its place (and still with the name
address@hidden) is the root directory of the file system on the device.
-
-As an exception, if the file-system type (see below) is one that is
-not based on a device (e.g. ``proc''), @code{mount} instantiates a
-file system and mounts it over @var{dir} and ignores
address@hidden
-
-For a remount, @var{dir} specifies the mount point where the file
-system to be remounted is (and remains) mounted, and
address@hidden is ignored.  Remounting a file system means
-changing the options that control operations on the file system while
-it is mounted.  It does not mean unmounting and mounting again.
-
-For a mount, you must identify the type of the file system as
address@hidden  This type tells the kernel how to access the file
-system and can be thought of as the name of a file-system driver.  The
-acceptable values are system dependent.  On a system with a Linux
-kernel and the @code{proc} file-system, the list of possible values is
-in the file @file{filesystems} in the @code{proc} file-system (type
address@hidden /proc/filesystems} to see the list).  With a Linux kernel,
-the types of file systems that @code{mount} can mount and their type
-names depend on what file-system drivers are configured into the
-kernel or loaded as loadable kernel modules.  An example of a common
-value for @var{fstype} is @code{ext2}.
-
-For a remount, @code{mount} ignores @var{fstype}.
-
address@hidden This is traditionally called "rwflag" for historical reasons.
address@hidden No point in confusing people today, though.
address@hidden specifies a variety of options that apply until the
-file system is unmounted or remounted.  The precise meaning of an option
-depends on the file system and with some file-systems, an option may have
-no effect at all.  Furthermore, for some file-systems, some of these
-options (but never @code{MS_RDONLY}) can be overridden for individual
-file accesses via @code{ioctl}.
-
address@hidden is a bit string with bit fields defined using the
-following mask and masked value macros:
-
address@hidden @code
address@hidden MS_MGC_MASK
-This multibit field contains a magic number.  If it does not have the value
address@hidden, @code{mount} assumes all the following bits are zero and
-the @var{data} argument is a null string, regardless of their actual values.
-
address@hidden MS_REMOUNT
-This bit on means to remount the file system.  Off means to mount it.
address@hidden There is a mask MS_RMT_MASK in mount.h that says only two of the 
options
address@hidden can be reset by remount.  But the Linux kernel has its own 
version of
address@hidden MS_RMT_MASK that says they all can be reset.  As far as I can 
tell,
address@hidden libc just passes the arguments straight through to the kernel.
-
address@hidden MS_RDONLY
-When this bit is on, it specifies that no writing to the file system
-will be allowed while it is mounted.  This cannot be overridden by
address@hidden  This option is available on nearly all file systems.
-
address@hidden S_IMMUTABLE
-When this bit is on, it specifies that no writing to the files in the
-file system will be allowed while it is mounted.  This can be
-overridden for a particular file access by a properly privileged call
-to @code{ioctl}.  This option is a relatively new invention and is not
-available on many file systems.
-
address@hidden S_APPEND
-When this bit is on. it specifies that the only file-writing that will
-be allowed while the file system is mounted is appending.  Some file
-systems allow this to be overridden for a particular process by a
-properly privileged call to @code{ioctl}.  This is a relatively new
-invention and is not available on many file systems.
-
address@hidden MS_NOSUID
-When this bit is on, it specifies that Setuid and Setgid permissions
-on files in the file system will be ignored while it is mounted.
-
address@hidden MS_NOEXEC
-When this bit is on, it specifies that no files in the file system
-will be executed while the file system is mounted.
-
address@hidden MS_NODEV
-When this bit is on, it specifies that no device special files in the
-file system will be accessible while the file system is mounted.
-
address@hidden MS_SYNCHRONOUS
-When this bit is on, it specifies that all writes to the file system
-while it is mounted will be synchronous---data will be synced before
-each write completes rather than be held in the buffer cache.
-
address@hidden MS_MANDLOCK
-When this bit is on, it specifies that mandatory locks on files will
-be permitted while the file system is mounted.
-
address@hidden MS_NOATIME
-When this bit is on, it specifies that access times of files will not
-be updated when the files are accessed while the file system is
-mounted.
-
address@hidden MS_NODIRATIME
-When this bit is on, it specifies that access times of directories
-will not be updated when the directories are accessed while the file
-system in mounted.
-
address@hidden there is also S_QUOTA Linux fs.h (mount.h still uses its former 
name
address@hidden S_WRITE), but I can't see what it does.  Turns on quotas, I 
guess.
-
address@hidden table
-
-Any bits not covered by the above masks should be set off; otherwise,
-results are undefined.
-
-The meaning of @var{data} depends on the file system type and is
-controlled entirely by the file-system driver in the kernel.
-
-Here is an example:
-
address@hidden
-
-#include <sys/mount.h>
-
-mount("/dev/hdb", "/cdrom", MS_MGC_VAL | MS_RDONLY | MS_NOSUID, "");
-
-mount("/dev/hda2", "/mnt", MS_MGC_VAL | MS_REMOUNT, "");
-
-
address@hidden smallexample
-
-Appropriate arguments for @code{mount} are conventionally recorded in
-the @file{fstab} table (@pxref{Mount Information}).
-
-The return value is 0 if the mount or remount is successful.
-Otherwise, it is @code{-1} and @code{errno} is set appropriately.  The
-values of @code{errno} are file-system dependent, but here is a
-general list:
-
address@hidden @code
address@hidden EPERM
address@hidden @bullet
address@hidden
-The process is not superuser.
address@hidden itemize
-
address@hidden ENODEV
address@hidden @bullet
address@hidden
-The file-system type @var{fstype} is not known to the kernel.
address@hidden itemize
-
address@hidden ENOTBLK
address@hidden @bullet
address@hidden
-The file @var{dev} is not a block device special file.
address@hidden itemize
-
address@hidden EBUSY
-
address@hidden @bullet
-
address@hidden
-The device is already mounted.
-
address@hidden
-The mount point is busy---it is some process's working directory or
-has a file system mounted on it already.
-
address@hidden
-The request is to remount read-only, but there are files open for write.
address@hidden itemize
-
address@hidden EINVAL
address@hidden @bullet
-
address@hidden
-A remount was attempted, but there is no file system mounted over the
-specified mount point.
-
address@hidden
-The supposed file system has an invalid superblock.
-
address@hidden itemize
-
address@hidden EACCES
address@hidden @bullet
-
address@hidden
-The file system is inherently read-only (possibly due to a switch on the
-device) and the process attempted to mount it read/write (by setting the
address@hidden bit off).
-
address@hidden
address@hidden or @var{dir} is not accessible due to file permissions.
-
address@hidden
address@hidden is not accessible because it is in a file system that is
-mounted with the @code{MS_NODEV} option.
-
address@hidden itemize
-
address@hidden EM_FILE
address@hidden @bullet
address@hidden
-The table of dummy devices is full.  @code{mount} needs to create a
-dummy device (aka ``unnamed'' device) if the file system being mounted is
-not one that uses a device.
address@hidden itemize
-
address@hidden table
-
address@hidden deftypefun
-
-
address@hidden sys/mount.h
address@hidden GNU
address@hidden {int} umount2 (const char address@hidden, int @var{flags})
-
address@hidden unmounts a file system.
-
-You can identify the file system to unmount either by the device special
-file that contains the file system or by the mount point.  The effect is
-the same.  Specify either as the string @var{file}.
-
address@hidden contains the 1-bit field identified by the following
-mask macro:
-
address@hidden @code
-
address@hidden MNT_FORCE
-This bit on means to force the unmounting even if the file system is
-busy, by making it unbusy first.  If the bit is off and the file system is
-busy, @code{umount2} fails with @code{errno} = @code{EBUSY}.  Depending
-on the file system, this may override all, some, or no busy conditions.
-
address@hidden table
-
-All other bits in @var{flags} should be set to zero; otherwise, the result
-is undefined.
-
-Here is an example:
-
address@hidden
-
-#include <sys/mount.h>
-
-umount2("/mnt", MNT_FORCE);
-
-umount2("/dev/hdd1", 0);
-
-
address@hidden smallexample
-
-After the file system is unmounted, the directory that was the mount point
-is visible, as are any files in it.
-
-As part of unmounting, @code{umount2} syncs the file system.
-
-If the unmounting is successful, the return value is 0.  Otherwise, it
-is @code{-1} and @code{errno} is set accordingly:
-
address@hidden @code
address@hidden EPERM
-The process is not superuser.
address@hidden EBUSY
-The file system cannot be unmounted because it is busy---it contains a
-directory that is some process's working directory or a file that some
-process has open.  With some file-systems in some cases, you can avoid
-this failure with the @code{MNT_FORCE} option.
-
address@hidden EINVAL
address@hidden validly refers to a file, but that file is neither a mount
-point nor a device special file of a currently mounted file-system.
-
address@hidden table
-
-This function is not available on all systems.
address@hidden deftypefun
-
address@hidden sys/mount.h
address@hidden SVID, GNU
address@hidden {int} umount (const char address@hidden)
-
address@hidden does the same thing as @code{umount2} with @var{flags}
-set to zeroes.  It is more widely available than @code{umount2}, but
-since it lacks the ability to forcefully unmount a file system, it is
-deprecated when @code{umount2} is also available.
address@hidden deftypefun
-
-
-
address@hidden System Parameters
address@hidden System Parameters
-
-This section describes the @code{sysctl} function, which gets and sets
-a variety of system parameters.
-
-The symbols used in this section are declared in the file @file{sysctl.h}.
-
address@hidden sysctl.h
address@hidden BSD
address@hidden int sysctl (int address@hidden, int @var{nlen}, void 
address@hidden,
-        size_t address@hidden, void address@hidden, size_t @var{newlen})
-
address@hidden gets or sets a specified system parameter.  There are so
-many of these parameters that it is not practical to list them all here,
-but here are some examples:
-
address@hidden @bullet
address@hidden Network domain name
address@hidden Paging parameters
address@hidden Network Address Resolution Protocol time-out time
address@hidden Maximum number of files that may be open
address@hidden Root file-system device
address@hidden When the kernel was built
address@hidden itemize
-
-The set of available parameters depends on the kernel configuration and
-can change while the system is running, particularly when you load and
-unload loadable kernel modules.
-
-The system parameters with which @code{syslog} is concerned are arranged
-in a hierarchical structure like a hierarchical file-system.  To identify
-a particular parameter, you specify a path through the structure in a
-way analogous to specifying the pathname of a file.  Each component of
-the path is specified by an integer and each of these integers has a
-macro defined for it by @file{sysctl.h}.  @var{names} is the path, in
-the form of an array of integers.  Each component of the path is one
-element of the array, in order.  @var{nlen} is the number of components
-in the path.
-
-For example, the first component of the path for all the paging
-parameters is the value @code{CTL_VM}.  For the free-page thresholds,
-the second component of the path is @code{VM_FREEPG}.  So to get the
-free-page threshold values, make @var{names} an array containing the
-two elements @code{CTL_VM} and @code{VM_FREEPG}, and make @var{nlen} =
-2.
-
-
-The format of the value of a parameter depends on the parameter.
-Sometimes it is an integer, sometimes it is an @acronym{ASCII} string;
-sometimes it is an elaborate structure.  In the case of the free-page
-thresholds used in the example above, the parameter value is a
-structure containing several integers.
-
-In any case, you identify a place to return the parameter's value with
address@hidden and specify the amount of storage available at that
-location as address@hidden  address@hidden does double-duty because
-it is also the output location that contains the actual length of the
-returned value.
-
-If you don't want the parameter value returned, specify a null pointer
-for @var{oldval}.
-
-To set the parameter, specify the address and length of the new value
-as @var{newval} and @var{newlen}.  If you don't want to set the parameter,
-specify a null pointer as @var{newval}.
-
-If you get and set a parameter in the same @code{sysctl} call, the value
-returned is the value of the parameter before it was set.
-
-Each system parameter has a set of permissions similar to the
-permissions for a file (including the permissions on directories in
-its path) that determine whether you may get or set it.  For the
-purposes of these permissions, every parameter is considered to be
-owned by the superuser and Group 0 so processes with that effective
-uid or gid may have more access to system parameters.  Unlike with
-files, the superuser does not invariably have full permission to all
-system parameters, because some of them are designed never to be
-changed.
-
-
address@hidden returns a zero return value if it succeeds.  Otherwise, it
-returns @code{-1} and sets @code{errno} appropriately.  Besides the
-failures that apply to all system calls, the following are the
address@hidden codes for all possible failures:
-
address@hidden @code
address@hidden EPERM
-The process is not permitted to access one of the components of the
-path of the system parameter or is not permitted to access the system parameter
-itself in the way (read or write) that it requested.
address@hidden There is some indication in the Linux 2.2 code that the code is 
trying to
address@hidden return EACCES here, but the EACCES value never actually makes it 
to the
address@hidden user.
-
address@hidden ENOTDIR
-There is no system parameter corresponding to @var{name}.
-
address@hidden EFAULT
address@hidden is not null, which means the process wanted to read the 
parameter,
-but address@hidden is 0, so there is no place to return it.
-
address@hidden EINVAL
-
-The process attempted to set a system parameter to a value that is not valid
-for that parameter.
-
-Or, the space provided for the return of the system parameter is not
-the right size for that parameter.
-
address@hidden ENOMEM
-This value may be returned instead of the more correct @code{EINVAL} in some
-cases where the space provided for the return of the system parameter is too
-small.
-
address@hidden table
address@hidden deftypefun
-
-If you have a Linux kernel with the @code{proc} file-system, you can
-get and set most of the same parameters by reading and writing to
-files in the @code{sys} directory of the @code{proc} file-system.  In
-the @code{sys} directory, the directory structure represents the
-hierarchical structure of the parameters, so you can display the
-free-page thresholds with:
address@hidden
-cat /proc/sys/vm/freepages
address@hidden smallexample
address@hidden In Linux, the sysctl() and /proc instances of the parameter are 
created
address@hidden together.  The proc file-system accesses the same data structure 
as
address@hidden sysctl(), which has special fields in it for /proc.  But it is 
still
address@hidden possible to create a sysctl-only parameter.
-
-Some more traditional and more widely available, though less general,
address@hidden C Library functions for getting and setting some of the
-same system parameters are
-
address@hidden @bullet
address@hidden
address@hidden, @code{setdomainname}
address@hidden
address@hidden, @code{sethostname} (@pxref{Host Identification})
address@hidden
address@hidden (@pxref{Platform Type})
address@hidden
address@hidden
address@hidden itemize
-
address@hidden System Configuration
address@hidden %MENU% Parameters describing operating system limits
address@hidden System-Configuration Parameters
-
-The functions and macros listed in this chapter give information about
-configuration parameters of the operating system---for example,
-capacity limits, presence of optional @acronym{POSIX} features and the
-default path for executable files (@pxref{String Parameters}).
-
address@hidden General Limits
address@hidden General Capacity-Limits
address@hidden @acronym{POSIX} capacity-limits
address@hidden limits, @acronym{POSIX}
address@hidden capacity-limits, @acronym{POSIX}
-
-The @acronym{POSIX}.1 and @acronym{POSIX}.2 standards specify a number
-of parameters that describe capacity limitations of the system.  These
-limits can be fixed constants for a given operating system, or they
-can vary from machine to machine.  For example, some limit values may
-be configurable by the system administrator, either at run time or by
-rebuilding the kernel, and this should not require recompiling
-application programs.
-
address@hidden limits.h
-Each of the following limit parameters has a macro that is defined in
address@hidden only if the system has a fixed, uniform limit for the
-parameter in question.  If the system allows different file-systems or
-files to have different limits, then the macro is undefined; use
address@hidden to find out the limit that applies at a particular time
-on a particular machine (@pxref{Sysconf}).
-
-Each of these parameters also has another macro, with a name starting
-with @samp{_POSIX}, which gives the lowest value that the limit is
-allowed to have on @emph{any} @acronym{POSIX} system (@pxref{Minimums}).
-
address@hidden limits, program argument size
address@hidden limits.h
address@hidden POSIX.1
address@hidden Macro int ARG_MAX
-If defined, this is the unvarying maximum combined length of the
address@hidden and @var{environ} arguments that can be passed to the
address@hidden functions.
address@hidden deftypevr
-
address@hidden limits, number of processes
address@hidden limits.h
address@hidden POSIX.1
address@hidden Macro int CHILD_MAX
-If defined, this is the unvarying maximum number of processes that can
-exist with the same real address@hidden at any one time.  In
address@hidden and @acronym{GNU}, this is controlled by the
address@hidden resource limit (@pxref{Limits on Resources}).
address@hidden deftypevr
-
address@hidden limits, number of open files
address@hidden limits.h
address@hidden POSIX.1
address@hidden Macro int OPEN_MAX
-If defined, this is the unvarying maximum number of files that a
-single process can have open simultaneously.  In @acronym{BSD} and
address@hidden, this is controlled by the @code{RLIMIT_NOFILE} resource
-limit (@pxref{Limits on Resources}).
address@hidden deftypevr
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden Macro int STREAM_MAX
-If defined, this is the unvarying maximum number of streams that a
-single process can have open address@hidden Loosemore et
-al., ``Opening Streams'' (see chap. 1, n.1).}
address@hidden deftypevr
-
address@hidden limits, time zone name length
address@hidden limits.h
address@hidden POSIX.1
address@hidden Macro int TZNAME_MAX
-If defined, this is the unvarying maximum length of a time zone
address@hidden, ``Functions and Variables for Time Zones''.}
address@hidden deftypevr
-
-These limit macros are always defined in @file{limits.h}.
-
address@hidden limits, number of supplementary address@hidden
address@hidden limits.h
address@hidden POSIX.1
address@hidden Macro int NGROUPS_MAX
-This is the maximum number of supplementary address@hidden that
-one process can have.
-
-The value of this macro is actually a lower bound for the
-maximum---that is, you can count on being able to have that many
-supplementary address@hidden, but a particular machine might let
-you have even more.  You can use @code{sysconf} to see whether a
-particular machine will let you have more (@pxref{Sysconf}).
address@hidden deftypevr
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden Macro int SSIZE_MAX
-This is the largest value that can fit in an object of type
address@hidden  Effectively, this is the limit on the number of bytes
-that can be read or written in a single operation.
-
-This macro is defined in all @acronym{POSIX} systems because this limit is 
never
-configurable.
address@hidden deftypevr
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden Macro int RE_DUP_MAX
-This is the largest number of repetitions guaranteed to be allowed in
-the construct @address@hidden@var{min},@address@hidden in a regular
-expression.
-
-The value of this macro is actually a lower bound for the
-maximum---that is, you can count on being able to have that many
-repetitions, but a particular machine might let you have even more.
-You can use @code{sysconf} to see whether a particular machine will
-let you have more (@pxref{Sysconf}).  Even the value that
address@hidden tells you is just a lower bound---larger values might
-work.
-
-This macro is defined in all @acronym{POSIX}.2 systems, because 
@acronym{POSIX}.2 says it
-should always be defined even if there is no specific imposed limit.
address@hidden deftypevr
-
address@hidden System Options
address@hidden Overall System Options
address@hidden @acronym{POSIX} optional features
address@hidden optional @acronym{POSIX} features
-
address@hidden defines certain system-specific options that not all
address@hidden systems support.  Since these options are provided in
-the kernel, not in the library, simply using the @acronym{GNU} C
-Library does not guarantee that any of these features will be
-supported; it will depend on the system you are using.
-
address@hidden unistd.h
-You can test for the availability of a given option using the macros in
-this section, together with the function @code{sysconf}.  The macros are
-defined only if you include @file{unistd.h}.
-
-For the following macros, if the macro is defined in @file{unistd.h},
-then the option is supported.  Otherwise, the option may or may not be
-supported; use @code{sysconf} to find out (@pxref{Sysconf}).
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden Macro int _POSIX_JOB_CONTROL
-If this symbol is defined, it indicates that the system supports job
-control.  Otherwise, the implementation behaves as if all processes
-within a session belong to a single process-group.  (@xref{Job
-Control}.)
address@hidden deftypevr
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden Macro int _POSIX_SAVED_IDS
-If this symbol is defined, it indicates that the system remembers the
-effective user- and address@hidden of a process before it
-executes an executable file with the address@hidden or
address@hidden bits set, and that explicitly changing the
-effective user- or address@hidden back to these values is
-permitted.  If this option is not defined, then if a nonprivileged
-process changes its effective user- or address@hidden to the real
-user- or address@hidden of the process, it can't change it back
-again (@pxref{Enable/Disable Setuid}).
address@hidden deftypevr
-
-For the following macros, if the macro is defined in @file{unistd.h},
-then its value indicates whether the option is supported.  A value of
address@hidden means no, and any other value means yes.  If the macro is not
-defined, then the option may or may not be supported; use @code{sysconf}
-to find out (@pxref{Sysconf}).
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden Macro int _POSIX2_C_DEV
-If this symbol is defined, it indicates that the system has the 
@acronym{POSIX}.2
-C compiler command, @code{c89}.  The @acronym{GNU} C Library always defines 
this
-as @code{1}, on the assumption that you would not have installed it if
-you didn't have a C compiler.
address@hidden deftypevr
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden Macro int _POSIX2_FORT_DEV
-If this symbol is defined, it indicates that the system has the 
@acronym{POSIX}.2
-Fortran compiler command, @code{fort77}.  The @acronym{GNU} C Library never
-defines this, because we don't know what the system has.
address@hidden deftypevr
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden Macro int _POSIX2_FORT_RUN
-If this symbol is defined, it indicates that the system has the 
@acronym{POSIX}.2
address@hidden command to interpret Fortran carriage control.  The 
@acronym{GNU} C
-library never defines this, because we don't know what the system has.
address@hidden deftypevr
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden Macro int _POSIX2_LOCALEDEF
-If this symbol is defined, it indicates that the system has the 
@acronym{POSIX}.2
address@hidden command.  The @acronym{GNU} C Library never defines this, because
-we don't know what the system has.
address@hidden deftypevr
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden Macro int _POSIX2_SW_DEV
-If this symbol is defined, it indicates that the system has the
address@hidden commands @code{ar}, @code{make} and @code{strip}.
-The @acronym{GNU} C Library always defines this as @code{1}, on the
-assumption that you had to have @code{ar} and @code{make} to install
-the library, and it's unlikely that @code{strip} would be absent when
-those are present.
address@hidden deftypevr
-
address@hidden Version Supported
address@hidden Which Version of @acronym{POSIX} is Supported
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden Macro {long int} _POSIX_VERSION
-This constant represents the version of the @acronym{POSIX}.1 standard
-to which the implementation conforms.  For an implementation
-conforming to the 1995 @acronym{POSIX}.1 standard, the value is the
-integer @code{199506L}.
-
address@hidden is always defined (in @file{unistd.h}) in any
address@hidden system.
-
-Don't try to test whether the system supports @acronym{POSIX} by
-including @file{unistd.h} and then checking whether
address@hidden is defined.  On a address@hidden system,
-this will probably fail because there is no @file{unistd.h}.  We do
-not know of @emph{any} way you can reliably test at compilation time
-whether your target system supports @acronym{POSIX} or whether
address@hidden exists.
-
-The @acronym{GNU} C Compiler predefines the symbol @code{__POSIX__} if the 
target
-system is a @acronym{POSIX} system.  Provided you do not use any other 
compilers
-on @acronym{POSIX} systems, testing @code{defined (__POSIX__)} will reliably
-detect such systems.
address@hidden deftypevr
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden Macro {long int} _POSIX2_C_VERSION
-This constant represents the version of the @acronym{POSIX}.2 standard
-that the library and system kernel support.  We don't know what value
-this will be for the first version of the @acronym{POSIX}.2 standard,
-because the value is based on the year and month in which the standard
-is officially adopted.
-
-The value of this symbol says nothing about the utilities installed on
-the system.
-
-You can use this macro to tell whether a @acronym{POSIX}.1 system
-library supports @acronym{POSIX}.2 as well.  Any @acronym{POSIX}.1
-system contains @file{unistd.h}, so include that file and then test
address@hidden (_POSIX2_C_VERSION)}.
address@hidden deftypevr
-
address@hidden Sysconf
address@hidden Using @code{sysconf}
-
-When your system has configurable system-limits, you can use the
address@hidden function to find out the value that applies to any
-particular machine.  The function and the associated @var{parameter}
-constants are declared in the header file @file{unistd.h}.
-
address@hidden Sysconf Definition
address@hidden Definition of @code{sysconf}
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden {long int} sysconf (int @var{parameter})
-This function is used to inquire about run-time system parameters.
-The @var{parameter} argument should be one of the @samp{_SC_} symbols
-listed below.
-
-The normal return value from @code{sysconf} is the value you
-requested.  A value of @code{-1} is returned both if the
-implementation does not impose a limit and in case of an error.
-
-The following @code{errno} error condition is defined for this
-function:
-
address@hidden @code
address@hidden EINVAL
-The value of the @var{parameter} is invalid.
address@hidden table
address@hidden deftypefun
-
address@hidden Constants for Sysconf
address@hidden Constants for @code{sysconf} Parameters
-
-Here are the symbolic constants for use as the @var{parameter} argument
-to @code{sysconf}.  The values are all integer constants (more
-specifically, enumeration type values).
-
address@hidden @code
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_ARG_MAX
-Inquire about the parameter corresponding to @code{ARG_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_CHILD_MAX
-Inquire about the parameter corresponding to @code{CHILD_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_OPEN_MAX
-Inquire about the parameter corresponding to @code{OPEN_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_STREAM_MAX
-Inquire about the parameter corresponding to @code{STREAM_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_TZNAME_MAX
-Inquire about the parameter corresponding to @code{TZNAME_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_NGROUPS_MAX
-Inquire about the parameter corresponding to @code{NGROUPS_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_JOB_CONTROL
-Inquire about the parameter corresponding to @code{_POSIX_JOB_CONTROL}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_SAVED_IDS
-Inquire about the parameter corresponding to @code{_POSIX_SAVED_IDS}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_VERSION
-Inquire about the parameter corresponding to @code{_POSIX_VERSION}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_CLK_TCK
-Inquire about the parameter corresponding to
address@hidden@footnote{Ibid., address@hidden Time Inquiry''.}
-
address@hidden unistd.h
address@hidden GNU
address@hidden _SC_CHARCLASS_NAME_MAX
-Inquire about the parameter corresponding to maximum length allowed
-for a character-class name in an extended locale specification.  These
-extensions are not yet standardized, so this option is not
-standardized either.
-
address@hidden unistdh.h
address@hidden POSIX.1
address@hidden _SC_REALTIME_SIGNALS
-Inquire about the parameter corresponding to @code{_POSIX_REALTIME_SIGNALS}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_PRIORITY_SCHEDULING
-Inquire about the parameter corresponding to @code{_POSIX_PRIORITY_SCHEDULING}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_TIMERS
-Inquire about the parameter corresponding to @code{_POSIX_TIMERS}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_ASYNCHRONOUS_IO
-Inquire about the parameter corresponding to @code{_POSIX_ASYNCHRONOUS_IO}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_PRIORITIZED_IO
-Inquire about the parameter corresponding to @code{_POSIX_PRIORITIZED_IO}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_SYNCHRONIZED_IO
-Inquire about the parameter corresponding to @code{_POSIX_SYNCHRONIZED_IO}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_FSYNC
-Inquire about the parameter corresponding to @code{_POSIX_FSYNC}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_MAPPED_FILES
-Inquire about the parameter corresponding to @code{_POSIX_MAPPED_FILES}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_MEMLOCK
-Inquire about the parameter corresponding to @code{_POSIX_MEMLOCK}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_MEMLOCK_RANGE
-Inquire about the parameter corresponding to @code{_POSIX_MEMLOCK_RANGE}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_MEMORY_PROTECTION
-Inquire about the parameter corresponding to @code{_POSIX_MEMORY_PROTECTION}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_MESSAGE_PASSING
-Inquire about the parameter corresponding to @code{_POSIX_MESSAGE_PASSING}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_SEMAPHORES
-Inquire about the parameter corresponding to @code{_POSIX_SEMAPHORES}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_SHARED_MEMORY_OBJECTS
-Inquire about the parameter corresponding address@hidden
address@hidden
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_AIO_LISTIO_MAX
-Inquire about the parameter corresponding to @code{_POSIX_AIO_LISTIO_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_AIO_MAX
-Inquire about the parameter corresponding to @code{_POSIX_AIO_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_AIO_PRIO_DELTA_MAX
-Inquire about the value by which a process can decrease its
-asynchronous I/O priority level from its own scheduling priority.
-This corresponds to the run-time invariant value
address@hidden
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_DELAYTIMER_MAX
-Inquire about the parameter corresponding to @code{_POSIX_DELAYTIMER_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_MQ_OPEN_MAX
-Inquire about the parameter corresponding to @code{_POSIX_MQ_OPEN_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_MQ_PRIO_MAX
-Inquire about the parameter corresponding to @code{_POSIX_MQ_PRIO_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_RTSIG_MAX
-Inquire about the parameter corresponding to @code{_POSIX_RTSIG_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_SEM_NSEMS_MAX
-Inquire about the parameter corresponding to @code{_POSIX_SEM_NSEMS_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_SEM_VALUE_MAX
-Inquire about the parameter corresponding to @code{_POSIX_SEM_VALUE_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_SIGQUEUE_MAX
-Inquire about the parameter corresponding to @code{_POSIX_SIGQUEUE_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_TIMER_MAX
-Inquire about the parameter corresponding to @code{_POSIX_TIMER_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _SC_PII
-Inquire about the parameter corresponding to @code{_POSIX_PII}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _SC_PII_XTI
-Inquire about the parameter corresponding to @code{_POSIX_PII_XTI}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _SC_PII_SOCKET
-Inquire about the parameter corresponding to @code{_POSIX_PII_SOCKET}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _SC_PII_INTERNET
-Inquire about the parameter corresponding to @code{_POSIX_PII_INTERNET}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _SC_PII_OSI
-Inquire about the parameter corresponding to @code{_POSIX_PII_OSI}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _SC_SELECT
-Inquire about the parameter corresponding to @code{_POSIX_SELECT}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _SC_UIO_MAXIOV
-Inquire about the parameter corresponding to @code{_POSIX_UIO_MAXIOV}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _SC_PII_INTERNET_STREAM
-Inquire about the parameter corresponding to @code{_POSIX_PII_INTERNET_STREAM}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _SC_PII_INTERNET_DGRAM
-Inquire about the parameter corresponding to @code{_POSIX_PII_INTERNET_DGRAM}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _SC_PII_OSI_COTS
-Inquire about the parameter corresponding to @code{_POSIX_PII_OSI_COTS}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _SC_PII_OSI_CLTS
-Inquire about the parameter corresponding to @code{_POSIX_PII_OSI_CLTS}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _SC_PII_OSI_M
-Inquire about the parameter corresponding to @code{_POSIX_PII_OSI_M}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _SC_T_IOV_MAX
-Inquire about the value of the value associated with the
address@hidden variable.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_THREADS
-Inquire about the parameter corresponding to @code{_POSIX_THREADS}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_THREAD_SAFE_FUNCTIONS
-Inquire about the parameter corresponding address@hidden
address@hidden
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_GETGR_R_SIZE_MAX
-Inquire about the parameter corresponding to @code{_POSIX_GETGR_R_SIZE_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_GETPW_R_SIZE_MAX
-Inquire about the parameter corresponding to @code{_POSIX_GETPW_R_SIZE_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_LOGIN_NAME_MAX
-Inquire about the parameter corresponding to @code{_POSIX_LOGIN_NAME_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_TTY_NAME_MAX
-Inquire about the parameter corresponding to @code{_POSIX_TTY_NAME_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_THREAD_DESTRUCTOR_ITERATIONS
-Inquire about the parameter corresponding to
address@hidden
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_THREAD_KEYS_MAX
-Inquire about the parameter corresponding to @code{_POSIX_THREAD_KEYS_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_THREAD_STACK_MIN
-Inquire about the parameter corresponding to @code{_POSIX_THREAD_STACK_MIN}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_THREAD_THREADS_MAX
-Inquire about the parameter corresponding to @code{_POSIX_THREAD_THREADS_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_THREAD_ATTR_STACKADDR
-Inquire about the parameter corresponding address@hidden
address@hidden
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_THREAD_ATTR_STACKSIZE
-Inquire about the parameter corresponding address@hidden
address@hidden
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_THREAD_PRIORITY_SCHEDULING
-Inquire about the parameter corresponding to
address@hidden
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_THREAD_PRIO_INHERIT
-Inquire about the parameter corresponding to @code{_POSIX_THREAD_PRIO_INHERIT}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_THREAD_PRIO_PROTECT
-Inquire about the parameter corresponding to @code{_POSIX_THREAD_PRIO_PROTECT}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _SC_THREAD_PROCESS_SHARED
-Inquire about the parameter corresponding to
address@hidden
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_2_C_DEV
-Inquire about whether the system has the @acronym{POSIX}.2 C compiler command,
address@hidden
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_2_FORT_DEV
-Inquire about whether the system has the @acronym{POSIX}.2 Fortran compiler
-command, @code{fort77}.
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_2_FORT_RUN
-Inquire about whether the system has the @acronym{POSIX}.2 @code{asa}
-command to interpret Fortran carriage-control.
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_2_LOCALEDEF
-Inquire about whether the system has the @acronym{POSIX}.2 @code{localedef}
-command.
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_2_SW_DEV
-Inquire about whether the system has the @acronym{POSIX}.2 commands
address@hidden, @code{make} and @code{strip}.
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_BC_BASE_MAX
-Inquire about the maximum value of @code{obase} in the @code{bc}
-utility.
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_BC_DIM_MAX
-Inquire about the maximum size of an array in the @code{bc}
-utility.
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_BC_SCALE_MAX
-Inquire about the maximum value of @code{scale} in the @code{bc}
-utility.
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_BC_STRING_MAX
-Inquire about the maximum size of a string constant in the
address@hidden utility.
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_COLL_WEIGHTS_MAX
-Inquire about the maximum number of weights that can necessarily
-be used in defining the collating sequence for a locale.
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_EXPR_NEST_MAX
-Inquire about the maximum number of expressions nested within
-parentheses when using the @code{expr} utility.
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_LINE_MAX
-Inquire about the maximum size of a text line that the @acronym{POSIX}.2 text
-utilities can handle.
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_EQUIV_CLASS_MAX
-Inquire about the maximum number of weights that can be assigned to an
-entry of the @code{LC_COLLATE} category @samp{order} keyword in a locale
-definition.  The @acronym{GNU} C Library does not presently support locale
-definitions.
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_VERSION
-Inquire about the version number of @acronym{POSIX}.1 that the library and 
kernel
-support.
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _SC_2_VERSION
-Inquire about the version number of @acronym{POSIX}.2 that the system utilities
-support.
-
address@hidden unistd.h
address@hidden GNU
address@hidden _SC_PAGESIZE
-Inquire about the virtual-memory page size of the machine.
address@hidden returns the same value (@pxref{Query Memory
-Parameters}).
-
address@hidden unistd.h
address@hidden GNU
address@hidden _SC_NPROCESSORS_CONF
-Inquire about the number of configured processors.
-
address@hidden unistd.h
address@hidden GNU
address@hidden _SC_NPROCESSORS_ONLN
-Inquire about the number of processors online.
-
address@hidden unistd.h
address@hidden GNU
address@hidden _SC_PHYS_PAGES
-Inquire about the number of physical pages in the system.
-
address@hidden unistd.h
address@hidden GNU
address@hidden _SC_AVPHYS_PAGES
-Inquire about the number of available physical pages in the system.
-
address@hidden unistd.h
address@hidden GNU
address@hidden _SC_ATEXIT_MAX
-Inquire about the number of functions that can be registered as
-termination functions for @address@hidden, ``Clean-Ups
-on Exit''.}
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_XOPEN_VERSION
-Inquire about the parameter corresponding to @code{_XOPEN_VERSION}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_XOPEN_XCU_VERSION
-Inquire about the parameter corresponding to @code{_XOPEN_XCU_VERSION}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_XOPEN_UNIX
-Inquire about the parameter corresponding to @code{_XOPEN_UNIX}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_XOPEN_REALTIME
-Inquire about the parameter corresponding to @code{_XOPEN_REALTIME}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_XOPEN_REALTIME_THREADS
-Inquire about the parameter corresponding to @code{_XOPEN_REALTIME_THREADS}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_XOPEN_LEGACY
-Inquire about the parameter corresponding to @code{_XOPEN_LEGACY}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_XOPEN_CRYPT
-Inquire about the parameter corresponding to @code{_XOPEN_CRYPT}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_XOPEN_ENH_I18N
-Inquire about the parameter corresponding to @code{_XOPEN_ENH_I18N}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_XOPEN_SHM
-Inquire about the parameter corresponding to @code{_XOPEN_SHM}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_XOPEN_XPG2
-Inquire about the parameter corresponding to @code{_XOPEN_XPG2}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_XOPEN_XPG3
-Inquire about the parameter corresponding to @code{_XOPEN_XPG3}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_XOPEN_XPG4
-Inquire about the parameter corresponding to @code{_XOPEN_XPG4}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_CHAR_BIT
-Inquire about the number of bits in a variable of type @code{char}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_CHAR_MAX
-Inquire about the maximum value that can be stored in a variable of type
address@hidden
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_CHAR_MIN
-Inquire about the minimum value that can be stored in a variable of type
address@hidden
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_INT_MAX
-Inquire about the maximum value that can be stored in a variable of type
address@hidden
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_INT_MIN
-Inquire about the minimum value that can be stored in a variable of type
address@hidden
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_LONG_BIT
-Inquire about the number of bits in a variable of type @code{long int}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_WORD_BIT
-Inquire about the number of bits in a variable of a register word.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_MB_LEN_MAX
-Inquire about the maximum length of a multibyte representation of a
-wide-character value.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_NZERO
-Inquire about the value used to internally represent the zero priority level 
for
-the process execution.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden SC_SSIZE_MAX
-Inquire about the maximum value that can be stored in a variable of type
address@hidden
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_SCHAR_MAX
-Inquire about the maximum value that can be stored in a variable of type
address@hidden char}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_SCHAR_MIN
-Inquire about the minimum value that can be stored in a variable of type
address@hidden char}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_SHRT_MAX
-Inquire about the maximum value that can be stored in a variable of type
address@hidden int}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_SHRT_MIN
-Inquire about the minimum value that can be stored in a variable of type
address@hidden int}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_UCHAR_MAX
-Inquire about the maximum value that can be stored in a variable of type
address@hidden char}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_UINT_MAX
-Inquire about the maximum value that can be stored in a variable of type
address@hidden int}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_ULONG_MAX
-Inquire about the maximum value that can be stored in a variable of type
address@hidden long int}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_USHRT_MAX
-Inquire about the maximum value that can be stored in a variable of type
address@hidden short int}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_NL_ARGMAX
-Inquire about the parameter corresponding to @code{NL_ARGMAX}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_NL_LANGMAX
-Inquire about the parameter corresponding to @code{NL_LANGMAX}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_NL_MSGMAX
-Inquire about the parameter corresponding to @code{NL_MSGMAX}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_NL_NMAX
-Inquire about  the parameter corresponding to @code{NL_NMAX}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_NL_SETMAX
-Inquire about the parameter corresponding to @code{NL_SETMAX}.
-
address@hidden unistd.h
address@hidden X/Open
address@hidden _SC_NL_TEXTMAX
-Inquire about the parameter corresponding to @code{NL_TEXTMAX}.
address@hidden vtable
-
address@hidden Examples of Sysconf
address@hidden Examples of @code{sysconf}
-
-We recommend that you first test for a macro definition for the
-parameter you are interested in, and call @code{sysconf} only if the
-macro is not defined.  For example, here is how to test whether job
-control is supported:
-
address@hidden
-
-int
-have_job_control (void)
address@hidden
-#ifdef _POSIX_JOB_CONTROL
-  return 1;
-#else
-  int value = sysconf (_SC_JOB_CONTROL);
-  if (value < 0)
-    /* @r{If the system is that badly wedged,}
-       @r{there's no use trying to go on.}  */
-    fatal (strerror (errno));
-  return value;
-#endif
address@hidden
-
address@hidden smallexample
-
-Here is how to get the value of a numeric limit:
-
address@hidden
-int
-get_child_max ()
address@hidden
-#ifdef CHILD_MAX
-  return CHILD_MAX;
-#else
-  int value = sysconf (_SC_CHILD_MAX);
-  if (value < 0)
-    fatal (strerror (errno));
-  return value;
-#endif
address@hidden
address@hidden smallexample
-
address@hidden Minimums
address@hidden Minimum Values for General Capacity-Limits
-
-Here are the names for the @acronym{POSIX} minimum upper bounds for the system
-limit parameters.  The significance of these values is that you can
-safely push to these limits without checking whether the particular
-system you are using can go that far.
-
address@hidden @code
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_AIO_LISTIO_MAX
-The value of this macro is the most restrictive limit permitted by
address@hidden for the maximum number of I/O operations that can be
-specified in a list I/O call.  The value of this constant is @code{2};
-thus you can add up to two new entries to the list of outstanding
-operations.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_AIO_MAX
-The value of this macro is the most restrictive limit permitted by
address@hidden for the maximum number of outstanding asynchronous I/O
-operations.  The value of this constant is @code{1}.  So you cannot
-expect that you can issue more than one operation and immediately
-continue with the normal work, receiving the notifications
-asynchronously.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_ARG_MAX
-The value of this macro is the most restrictive limit permitted by 
@acronym{POSIX}
-for the maximum combined length of the @var{argv} and @var{environ}
-arguments that can be passed to the @code{exec} functions.
-Its value is @code{4096}.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_CHILD_MAX
-The value of this macro is the most restrictive limit permitted by 
@acronym{POSIX}
-for the maximum number of simultaneous processes per real address@hidden  Its
-value is @code{6}.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_NGROUPS_MAX
-The value of this macro is the most restrictive limit permitted by 
@acronym{POSIX}
-for the maximum number of supplementary address@hidden per process.  Its
-value is @code{0}.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_OPEN_MAX
-The value of this macro is the most restrictive limit permitted by 
@acronym{POSIX}
-for the maximum number of files that a single process can have open
-simultaneously.  Its value is @code{16}.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_SSIZE_MAX
-The value of this macro is the most restrictive limit permitted by 
@acronym{POSIX}
-for the maximum value that can be stored in an object of type
address@hidden  Its value is @code{32767}.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_STREAM_MAX
-The value of this macro is the most restrictive limit permitted by 
@acronym{POSIX}
-for the maximum number of streams that a single process can have open
-simultaneously.  Its value is @code{8}.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_TZNAME_MAX
-The value of this macro is the most restrictive limit permitted by 
@acronym{POSIX}
-for the maximum length of a time zone name.  Its value is @code{3}.
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden _POSIX2_RE_DUP_MAX
-The value of this macro is the most restrictive limit permitted by 
@acronym{POSIX}
-for the numbers used in the @address@hidden@var{min},@address@hidden construct
-in a regular expression.  Its value is @code{255}.
address@hidden table
-
address@hidden Limits for Files
address@hidden Limits on File-System Capacity
-
-The @acronym{POSIX}.1 standard specifies a number of parameters that describe 
the
-limitations of the file system.  It's possible for the system to have a
-fixed, uniform limit for a parameter, but this isn't the usual case.  On
-most systems, it's possible for different file systems (and, for some
-parameters, even different files) to have different maximum limits.  For
-example, this is very likely if you use @acronym{NFS} to mount some of the file
-systems from other machines.
-
address@hidden limits.h
-Each of the following macros is defined in @file{limits.h} only if the
-system has a fixed, uniform limit for the parameter in question.  If the
-system allows different file systems or files to have different limits,
-then the macro is undefined; use @code{pathconf} or @code{fpathconf} to
-find out the limit that applies to a particular file (@pxref{Pathconf}).
-
-Each parameter also has another macro, with a name starting with
address@hidden, that gives the lowest value that the limit is allowed
-to have on @emph{any} @acronym{POSIX} system (@pxref{File Minimums}).
-
address@hidden limits, link count of files
address@hidden limits.h
address@hidden POSIX.1
address@hidden Macro int LINK_MAX
-This is the uniform system-limit, if any, for the number of names for
-a given file (@pxref{Hard Links}).
address@hidden deftypevr
-
address@hidden limits, terminal input queue
address@hidden limits.h
address@hidden POSIX.1
address@hidden Macro int MAX_CANON
-This is the uniform system-limit, if any, for the amount of text in a line of
-input when input editing is enabled (@pxref{Canonical or Not}).
address@hidden deftypevr
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden Macro int MAX_INPUT
-This is the uniform system-limit, if any, for the total number of characters
-typed ahead as input (@pxref{I/O Queues}).
address@hidden deftypevr
-
address@hidden limits, file-name length
address@hidden limits.h
address@hidden POSIX.1
address@hidden Macro int NAME_MAX
-This is the uniform system-limit, if any, for the length of a file-name 
component.
address@hidden deftypevr
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden Macro int PATH_MAX
-This is the uniform system-limit, if any, for the length of an entire 
file-name (that
-is, the argument given to system calls such as @code{open}).
address@hidden deftypevr
-
address@hidden limits, pipe buffer size
address@hidden limits.h
address@hidden POSIX.1
address@hidden Macro int PIPE_BUF
-This is the uniform system-limit, if any, for the number of bytes that
-can be written atomically to a pipe.  If multiple processes are
-writing to the same pipe simultaneously, output from different
-processes might be interleaved in chunks of this size (@pxref{Pipes
-and FIFOs}).
address@hidden deftypevr
-
-These are alternative macro names for some of the same information.
-
address@hidden dirent.h
address@hidden BSD
address@hidden Macro int MAXNAMLEN
-This is the @acronym{BSD} name for @code{NAME_MAX}.  It is defined in
address@hidden
address@hidden deftypevr
-
address@hidden stdio.h
address@hidden ISO
address@hidden Macro int FILENAME_MAX
-The value of this macro is an integer constant expression that
-represents the maximum length of a file-name string.  It is defined in
address@hidden
-
-Unlike @code{PATH_MAX}, this macro is defined even if there is no
-actual limit imposed.  In such a case, its value is typically a very
-large number.  @emph{This is always the case on the @acronym{GNU}
-system.}
-
-Don't use @code{FILENAME_MAX} as the size of an array in which to
-store a file name, because you can't possibly make an array that big.
-Use dynamic allocation address@hidden, ``Allocating Storage
-for Program Data''.}
address@hidden deftypevr
-
address@hidden Options for Files
address@hidden Optional Features in File Support
-
address@hidden defines certain system-specific options in the system calls for
-operating on files.  Some systems support these options and others do
-not.  Since these options are provided in the kernel, not in the
-library, simply using the @acronym{GNU} C Library does not guarantee that any 
of these
-features is supported; it depends on the system you are using.  They can
-also vary between file systems on a single machine.
-
address@hidden unistd.h
-This section describes the macros you can test to determine whether a
-particular option is supported on your machine.  If a given macro is
-defined in @file{unistd.h}, then its value says whether the
-corresponding feature is supported.  A value of @code{-1} indicates
-no; any other value indicates yes.  If the macro is undefined, it
-means particular files may or may not support the feature.
-
-Since all the machines that support the @acronym{GNU} C Library also
-support @acronym{NFS}, one can never make a general statement about
-whether all file systems support the @code{_POSIX_CHOWN_RESTRICTED}
-and @code{_POSIX_NO_TRUNC} features.  So these names are never defined
-as macros in the @acronym{GNU} C Library.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden Macro int _POSIX_CHOWN_RESTRICTED
-If this option is in effect, the @code{chown} function is restricted
-so that the only change permitted to nonprivileged processes is to
-change the group owner of a file to be either the effective
address@hidden of the process, or one of its supplementary
address@hidden (@pxref{File Owner}).
address@hidden deftypevr
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden Macro int _POSIX_NO_TRUNC
-If this option is in effect, file-name components longer than
address@hidden generate an @code{ENAMETOOLONG} error.  Otherwise,
-file-name components that are too long are silently truncated.
address@hidden deftypevr
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden Macro {unsigned char} _POSIX_VDISABLE
-This option is only meaningful for files that are terminal devices.
-If it is enabled, then handling for special control-characters can be
-disabled individually (@pxref{Special Characters}).
address@hidden deftypevr
-
address@hidden unistd.h
-If one of these macros is undefined, that means that the option might be
-in effect for some files and not for others.  To inquire about a
-particular file, call @code{pathconf} or @code{fpathconf}
-(@pxref{Pathconf}).
-
address@hidden File Minimums
address@hidden Minimum Values for File-System Limits
-
-Here are the names for the @acronym{POSIX} minimum upper bounds for
-some of the above parameters.  The significance of these values is
-that you can safely push to these limits without checking whether the
-particular system you are using can go that far.  In most cases,
address@hidden systems do not have these strict limitations.  The
-actual limit should be requested if necessary.
-
address@hidden @code
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_LINK_MAX
-This is the most restrictive limit permitted by @acronym{POSIX} for
-the maximum value of a file's link count.  The value of this constant
-is @code{8}; thus, you can always make up to eight names for a file
-without running into a system limit.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_MAX_CANON
-This is the most restrictive limit permitted by @acronym{POSIX} for
-the maximum number of bytes in a canonical-input line from a terminal
-device.  The value of this constant is @code{255}.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_MAX_INPUT
-This is the most restrictive limit permitted by @acronym{POSIX} for
-the maximum number of bytes in a terminal-device input queue (or
-type-ahead buffer) (@pxref{Input Modes}).  The value of this constant
-is @code{255}.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_NAME_MAX
-This is the most restrictive limit permitted by @acronym{POSIX} for
-the maximum number of bytes in a file-name component.  The value of
-this constant is @code{14}.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_PATH_MAX
-This is the most restrictive limit permitted by @acronym{POSIX} for
-the maximum number of bytes in a file name.  The value of this
-constant is @code{256}.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden _POSIX_PIPE_BUF
-This is the most restrictive limit permitted by @acronym{POSIX} for
-the maximum number of bytes that can be written atomically to a pipe.
-The value of this constant is @code{512}.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden SYMLINK_MAX
-This is the maximum number of bytes in a symbolic link.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden POSIX_REC_INCR_XFER_SIZE
-This is the recommended increment for file-transfer sizes between the
address@hidden and @code{POSIX_REC_MAX_XFER_SIZE}
-values.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden POSIX_REC_MAX_XFER_SIZE
-This is the maximum recommended file-transfer size.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden POSIX_REC_MIN_XFER_SIZE
-This is the minimum recommended file-transfer size.
-
address@hidden limits.h
address@hidden POSIX.1
address@hidden POSIX_REC_XFER_ALIGN
-This is recommended file-transfer buffer alignment.
address@hidden table
-
address@hidden Pathconf
address@hidden Using @code{pathconf}
-
-When your machine allows different files to have different values for
-a file-system parameter, you can use the functions in this section to
-find out the value that applies to any particular file.
-
-These functions and the associated constants for the @var{parameter}
-argument are declared in the header file @file{unistd.h}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden {long int} pathconf (const char address@hidden, int 
@var{parameter})
-This function is used to inquire about the limits that apply to
-the file named @var{filename}.
-
-The @var{parameter} argument should be one of the @samp{_PC_} constants
-listed below.
-
-The normal return value from @code{pathconf} is the value you
-requested.  A value of @code{-1} is returned both if the
-implementation does not impose a limit and in case of an error.  In
-the former case, @code{errno} is not set, while in the latter case,
address@hidden is set to indicate the cause of the problem.  So the only
-way to use this function robustly is to store @code{0} into
address@hidden just before calling it.
-
-Besides the usual file-name errors, the following error condition is
-defined for this function:@footnote{Ibid., ``File-Name Errors''.}
-
address@hidden @code
address@hidden EINVAL
-The value of @var{parameter} is invalid, or the implementation doesn't
-support the @var{parameter} for the specific file.
address@hidden table
address@hidden deftypefun
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden {long int} fpathconf (int @var{filedes}, int @var{parameter})
-This is just like @code{pathconf}, except that an open file-descriptor
-is used to specify the file for which information is requested,
-instead of a file name.
-
-The following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden EBADF
-The @var{filedes} argument is not a valid file-descriptor.
-
address@hidden EINVAL
-The value of @var{parameter} is invalid, or the implementation doesn't
-support the @var{parameter} for the specific file.
address@hidden table
address@hidden deftypefun
-
-Here are the symbolic constants that you can use as the @var{parameter}
-argument to @code{pathconf} and @code{fpathconf}.  The values are all
-integer constants.
-
address@hidden @code
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_LINK_MAX
-Inquire about the value of @code{LINK_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_MAX_CANON
-Inquire about the value of @code{MAX_CANON}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_MAX_INPUT
-Inquire about the value of @code{MAX_INPUT}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_NAME_MAX
-Inquire about the value of @code{NAME_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_PATH_MAX
-Inquire about the value of @code{PATH_MAX}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_PIPE_BUF
-Inquire about the value of @code{PIPE_BUF}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_CHOWN_RESTRICTED
-Inquire about the value of @code{_POSIX_CHOWN_RESTRICTED}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_NO_TRUNC
-Inquire about the value of @code{_POSIX_NO_TRUNC}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_VDISABLE
-Inquire about the value of @code{_POSIX_VDISABLE}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_SYNC_IO
-Inquire about the value of @code{_POSIX_SYNC_IO}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_ASYNC_IO
-Inquire about the value of @code{_POSIX_ASYNC_IO}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_PRIO_IO
-Inquire about the value of @code{_POSIX_PRIO_IO}.
-
address@hidden unistd.h
address@hidden POSIX.1g
address@hidden _PC_SOCK_MAXBUF
-Inquire about the value of @code{_POSIX_PIPE_BUF}.
-
address@hidden unistd.h
address@hidden LFS
address@hidden _PC_FILESIZEBITS
-Inquire about the availability of large files on the file system.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_REC_INCR_XFER_SIZE
-Inquire about the value of @code{POSIX_REC_INCR_XFER_SIZE}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_REC_MAX_XFER_SIZE
-Inquire about the value of @code{POSIX_REC_MAX_XFER_SIZE}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_REC_MIN_XFER_SIZE
-Inquire about the value of @code{POSIX_REC_MIN_XFER_SIZE}.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden _PC_REC_XFER_ALIGN
-Inquire about the value of @code{POSIX_REC_XFER_ALIGN}.
address@hidden table
-
address@hidden Utility Limits
address@hidden Utility Program Capacity-Limits
-
-The @acronym{POSIX}.2 standard specifies certain system-limits that
-you can access through @code{sysconf} that apply to utility behavior
-rather than the behavior of the library or the operating system.
-
-The @acronym{GNU} C Library defines macros for these limits, and @code{sysconf}
-returns values for them if you ask; but these values convey no
-meaningful information.  They are simply the smallest values that
address@hidden permits.
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden Macro int BC_BASE_MAX
-This is the largest value of @code{obase} that the @code{bc} utility
-is guaranteed to support.
address@hidden deftypevr
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden Macro int BC_DIM_MAX
-This is the largest number of elements in one array that the @code{bc}
-utility is guaranteed to support.
address@hidden deftypevr
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden Macro int BC_SCALE_MAX
-This is the largest value of @code{scale} that the @code{bc} utility
-is guaranteed to support.
address@hidden deftypevr
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden Macro int BC_STRING_MAX
-This is the largest number of characters in one string constant that the
address@hidden utility is guaranteed to support.
address@hidden deftypevr
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden Macro int COLL_WEIGHTS_MAX
-This is the largest number of weights that can for certain be used in
-defining the collating sequence for a locale.
address@hidden deftypevr
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden Macro int EXPR_NEST_MAX
-This is the maximum number of expressions that can be nested within
-parentheses by the @code{expr} utility.
address@hidden deftypevr
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden Macro int LINE_MAX
-This is the largest text line that the text-oriented @acronym{POSIX}.2
-utilities can support.  If you are using the @acronym{GNU} versions of
-these utilities, then there is no actual limit except that imposed by
-the available virtual memory, but there is no way that the library can
-tell you this.
address@hidden deftypevr
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden Macro int EQUIV_CLASS_MAX
-This is the maximum number of weights that can be assigned to an entry
-of the @code{LC_COLLATE} category @samp{order} keyword in a locale
-definition.  The @acronym{GNU} C Library does not presently support
-locale definitions.
address@hidden deftypevr
-
address@hidden Utility Minimums
address@hidden Minimum Values for Utility Limits
-
address@hidden @code
address@hidden limits.h
address@hidden POSIX.2
address@hidden _POSIX2_BC_BASE_MAX
-This is the most restrictive limit permitted by @acronym{POSIX}.2 for
-the maximum value of @code{obase} in the @code{bc} utility.  Its value
-is @code{99}.
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden _POSIX2_BC_DIM_MAX
-This is the most restrictive limit permitted by @acronym{POSIX}.2 for
-the maximum size of an array in the @code{bc} utility.  Its value is
address@hidden
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden _POSIX2_BC_SCALE_MAX
-This is the most restrictive limit permitted by @acronym{POSIX}.2 for
-the maximum value of @code{scale} in the @code{bc} utility.  Its value
-is @code{99}.
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden _POSIX2_BC_STRING_MAX
-This is the most restrictive limit permitted by @acronym{POSIX}.2 for
-the maximum size of a string constant in the @code{bc} utility.  Its
-value is @code{1000}.
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden _POSIX2_COLL_WEIGHTS_MAX
-This is the most restrictive limit permitted by @acronym{POSIX}.2 for
-the maximum number of weights that can necessarily be used in defining
-the collating sequence for a locale.  Its value is @code{2}.
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden _POSIX2_EXPR_NEST_MAX
-This is the most restrictive limit permitted by @acronym{POSIX}.2 for
-the maximum number of expressions nested within parentheses when using
-the @code{expr} utility.  Its value is @code{32}.
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden _POSIX2_LINE_MAX
-This is the most restrictive limit permitted by @acronym{POSIX}.2 for
-the maximum size of a text line that the text utilities can handle.
-Its value is @code{2048}.
-
address@hidden limits.h
address@hidden POSIX.2
address@hidden _POSIX2_EQUIV_CLASS_MAX
-This is the most restrictive limit permitted by @acronym{POSIX}.2 for
-the maximum number of weights that can be assigned to an entry of the
address@hidden category @samp{order} keyword in a locale
-definition.  Its value is @code{2}.  The @acronym{GNU} C Library does
-not presently support locale definitions.
address@hidden table
-
address@hidden String Parameters
address@hidden String-Valued Parameters
-
address@hidden defines a way to get string-valued parameters from the operating
-system with the function @code{confstr}:
-
address@hidden unistd.h
address@hidden POSIX.2
address@hidden size_t confstr (int @var{parameter}, char address@hidden, size_t 
@var{len})
-This function reads the value of a string-valued system parameter,
-storing the string into @var{len} bytes of memory space starting at
address@hidden  The @var{parameter} argument should be one of the
address@hidden symbols listed below.
-
-The normal return value from @code{confstr} is the length of the string
-value that you asked for.  If you supply a null pointer for @var{buf},
-then @code{confstr} does not try to store the string; it just returns
-its length.  A value of @code{0} indicates an error.
-
-If the string you asked for is too long for the buffer (that is, longer
-than @address@hidden - 1}), then @code{confstr} stores just that much
-(leaving room for the terminating null character).  You can tell that
-this has happened because @code{confstr} returns a value greater than or
-equal to @var{len}.
-
-The following @code{errno} error condition is defined for this
-function:
-
address@hidden @code
address@hidden EINVAL
-The value of the @var{parameter} is invalid.
address@hidden table
address@hidden deftypefun
-
-Currently there is just one parameter you can read with @code{confstr}:
-
address@hidden @code
address@hidden unistd.h
address@hidden POSIX.2
address@hidden _CS_PATH
-This parameter's value is the recommended default path for searching for
-executable files.  This is the path that a user has by default just
-after logging in.
-
address@hidden unistd.h
address@hidden Unix98
address@hidden _CS_LFS_CFLAGS
-The returned string specifies which additional flags must be given to
-the C compiler if a source is compiled using the
address@hidden feature-select macro (@pxref{Feature-Test
-Macros}).
-
address@hidden unistd.h
address@hidden Unix98
address@hidden _CS_LFS_LDFLAGS
-The returned string specifies which additional flags must be given to
-the linker if a source is compiled using the @code{_LARGEFILE_SOURCE}
-feature-select macro (@pxref{Feature-Test Macros}).
-
address@hidden unistd.h
address@hidden Unix98
address@hidden _CS_LFS_LIBS
-The returned string specifies which additional libraries must be linked
-to the application if a source is compiled using the
address@hidden feature-select macro (@pxref{Feature-Test Macros}).
-
address@hidden unistd.h
address@hidden Unix98
address@hidden _CS_LFS_LINTFLAGS
-The returned string specifies which additional flags must be given to
-the lint tool if a source is compiled using the
address@hidden feature-select macro (@pxref{Feature-Test Macros}).
-
address@hidden unistd.h
address@hidden Unix98
address@hidden _CS_LFS64_CFLAGS
-The returned string specifies which additional flags must be given to
-the C compiler if a source is compiled using the
address@hidden feature-select macro (@pxref{Feature-Test Macros}).
-
address@hidden unistd.h
address@hidden Unix98
address@hidden _CS_LFS64_LDFLAGS
-The returned string specifies which additional flags must be given to
-the linker if a source is compiled using the
address@hidden feature-select macro (@pxref{Feature-Test Macros}).
-
address@hidden unistd.h
address@hidden Unix98
address@hidden _CS_LFS64_LIBS
-The returned string specifies which additional libraries must be linked
-to the application if a source is compiled using the
address@hidden feature-select macro (@pxref{Feature-Test Macros}).
-
address@hidden unistd.h
address@hidden Unix98
address@hidden _CS_LFS64_LINTFLAGS
-The returned string specifies which additional flags must be given to
-the lint tool if a source is compiled using the
address@hidden feature-select macro (@pxref{Feature-Test Macros}).
address@hidden table
-
-The way to use @code{confstr} without any arbitrary limit on string size
-is to call it twice: first call it to get the length, allocate the
-buffer accordingly, and then call @code{confstr} again to fill the
-buffer, like this:
-
address@hidden
-
-char *
-get_default_path (void)
address@hidden
-  size_t len = confstr (_CS_PATH, NULL, 0);
-  char *buffer = (char *) xmalloc (len);
-
-  if (confstr (_CS_PATH, buf, len + 1) == 0)
-    @{
-      free (buffer);
-      return NULL;
-    @}
-
-  return buffer;
address@hidden
-
address@hidden smallexample
-
address@hidden This node must have no pointers.
address@hidden Cryptographic Functions
address@hidden @node Cryptographic Functions, Debugging Support, System 
Configuration, Top
address@hidden @acronym{DES} Encryption and Password Handling
address@hidden %MENU% @acronym{DES} encryption and password handling
-
-On many systems, it is unnecessary to have any kind of user
-authentication. For instance, a workstation that is not connected to a
-network probably does not need any user authentication, because to use
-the machine an intruder must have physical access.
-
-Sometimes, however, it is necessary to be sure that a user is
-authorized to use some service a machine provides---for instance, to
-log in as a particular user @sc{id} (@pxref{Users and Groups}).  One
-traditional way of doing this is for each user to choose a secret
address@hidden; then, the system can ask someone claiming to be a user
-what the user's password is, and if the person gives the correct
-password, the system can grant the appropriate privileges.
-
-If all the passwords are just stored in a file somewhere, then this
-file has to be very carefully protected.  To avoid this, passwords are
-run through a @dfn{one-way function}, a function that makes it
-difficult to work out what its input was by looking at its output,
-before being stored in the file.
-
-The @acronym{GNU} C Library provides a one-way function that is compatible with
-the behavior of the @code{crypt} function introduced in address@hidden 2.0.
-It supports two one-way algorithms: one based on the @acronym{MD}5
-message-digest algorithm that is compatible with modern @acronym{BSD} systems,
-and the other based on the Data Encryption Standard (@acronym{DES}) that is
-compatible with Unix systems.
-
-It also provides support for Secure @acronym{RPC}, and some library
-functions that can be used to perform normal @acronym{DES} encryption.
-
address@hidden Legal Problems
address@hidden Legal Problems
-
-Because of the continuously changing state of the law, it's not possible
-to provide a definitive survey of the laws affecting cryptography.
-Instead, this section warns you of some of the known trouble spots; this
-may help you when you try to find out what the laws of your country are.
-
-Some countries require that you have a license to use, possess or
-import cryptography.  These countries are believed to include
-Byelorussia, Burma, India, Indonesia, Israel, Kazakhstan, Pakistan,
-Russia and Saudi Arabia.
-
-Some countries restrict the transmission of encrypted messages by radio;
-some telecommunications carriers restrict the transmission of encrypted
-messages over their network.
-
-Many countries have some form of export control for encryption
-software.  The Wassenaar Arrangement is a multilateral agreement
-between 33 countries (Argentina, Australia, Austria, Belgium,
-Bulgaria, Canada, the Czech Republic, Denmark, Finland, France,
-Germany, Greece, Hungary, Ireland, Italy, Japan, Luxembourg, the
-Netherlands, New Zealand, Norway, Poland, Portugal, the Republic of
-Korea, Romania, the Russian Federation, the Slovak Republic, Spain,
-Sweden, Switzerland, Turkey, Ukraine, the United Kingdom and the
-United States) that restricts some kinds of encryption exports.
-Different countries apply the arrangement in different ways; some do
-not allow the exception for certain kinds of ``public domain''
-software (which would include this library), some only restrict the
-export of software in tangible form, and others impose significant
-additional restrictions.
-
-The United States has additional rules.  This software would generally
-be exportable under 15 CFR 740.13(e), which permits exports of
-``encryption source code'' that is ``publicly available'' and that is
-``not subject to an express agreement for the payment of a licensing
-fee or royalty for commercial production or sale of any product
-developed with the source code'', to most countries.
-
-The rules in this area are continuously changing.  If you know of any
-information in this manual that is out of date, please report it using
-the @code{glibcbug} script (@pxref{Reporting Bugs}).
-
address@hidden getpass
address@hidden Reading Passwords
-
-When reading in a password, it is desirable to avoid displaying it on
-the screen, to help keep it secret.  The following function handles this
-in a convenient way.
-
address@hidden unistd.h
address@hidden BSD
address@hidden {char *} getpass (const char address@hidden)
-
address@hidden outputs @var{prompt}, then reads a string in from the
-terminal without echoing it.  It tries to connect to the real
-terminal, @file{/dev/tty}, if possible, to encourage users not to put
-plaintext passwords in files.  Otherwise, it uses @code{stdin} and
address@hidden  @code{getpass} also disables the INTR, QUIT and SUSP
-characters on the terminal using the @code{ISIG} terminal attribute
-(@pxref{Local Modes}).  The terminal is flushed before and after
address@hidden, so that characters of a mistyped password are not
-accidentally visible.
-
-In other C libraries, @code{getpass} may only return the first
address@hidden bytes of a password.  The @acronym{GNU} C Library has
-no limit, so @code{PASS_MAX} is undefined.
-
-The prototype for this function is in @file{unistd.h}.  @code{PASS_MAX}
-would be defined in @file{limits.h}.
address@hidden deftypefun
-
-This precise set of operations may not suit all possible situations.  In
-this case, it is recommended that users write their own @code{getpass}
-substitute.  For instance, a very simple substitute is as follows:
-
address@hidden
-#include <termios.h>
-#include <stdio.h>
-
-ssize_t
-my_getpass (char **lineptr, size_t *n, FILE *stream)
address@hidden
-  struct termios old, new;
-  int nread;
-
-  /* @r{Turn echoing off and fail if we can't.} */
-  if (tcgetattr (fileno (stream), &old) != 0)
-    return -1;
-  new = old;
-  new.c_lflag &= ~ECHO;
-  if (tcsetattr (fileno (stream), TCSAFLUSH, &new) != 0)
-    return -1;
-  
-  /* @r{Read the password.} */
-  nread = getline (lineptr, n, stream);
-
-  /* @r{Restore terminal.} */
-  (void) tcsetattr (fileno (stream), TCSAFLUSH, &old);
-  
-  return nread;
address@hidden
-
address@hidden smallexample
-
-The substitute takes the same parameters as
address@hidden;@footnote{See Loosemore et al., ``Line-Oriented Input''
-(see chap. 1, n. 1).} the user must print any prompt desired.
-
address@hidden crypt
address@hidden Encrypting Passwords
-
address@hidden crypt.h
address@hidden BSD, SVID
address@hidden {char *} crypt (const char address@hidden, const char 
address@hidden)
-
-The @code{crypt} function takes a password, @var{key}, as a string,
-and a @var{salt} character array, which is described below, and
-returns a printable @acronym{ASCII} string that starts with another
-salt.  It is believed that, given the output of the function, the best
-way to find a @var{key} that will produce that output is to guess
-values of @var{key} until the original value of @var{key} is found.
-
-The @var{salt} parameter does two things.  Firstly, it selects which
-algorithm is used, the @acronym{MD}5-based one or the @acronym{DES}-based one. 
 Secondly, it
-makes life harder for someone trying to guess passwords against a file
-containing many passwords; without a @var{salt}, an intruder can make a
-guess, run @code{crypt} on it once, and compare the result with all the
-passwords.  With a @var{salt}, the intruder must run @code{crypt} once
-for each different salt.
-
-For the @acronym{MD}5-based algorithm, the @var{salt} should consist of the 
string
address@hidden, followed by up to eight characters, terminated by either
-another @code{$} or the end of the string.  The result of @code{crypt}
-will be the @var{salt}, followed by a @code{$} if the salt didn't end
-with 1, followed by 22 characters from the alphabet
address@hidden/0-9A-Za-z}, up to 34 characters total.  Every character in the
address@hidden is significant.
-
-For the @acronym{DES}-based algorithm, the @var{salt} should consist of two
-characters from the alphabet @code{./0-9A-Za-z}, and the result of
address@hidden will be those two characters followed by eleven more from the
-same alphabet, thirteen in total.  Only the first eight characters in the
address@hidden are significant.
-
-The @acronym{MD}5-based algorithm has no limit on the useful length of the
-password used, and is slightly more secure.  It is therefore preferred
-over the @acronym{DES}-based algorithm.
-
-When the user enters her password for the first time, the @var{salt}
-should be set to a new string that is reasonably random.  To verify a
-password against the result of a previous call to @code{crypt}, pass
-the result of the previous call as the @var{salt}.
address@hidden deftypefun
-
-The following short program is an example of how to use @code{crypt}
-the first time a password is entered.  The @var{salt} generation is
-just barely acceptable; in particular, it is not unique between
-machines, and in many applications it would not be acceptable to let
-an attacker know what time the user's password was last set.
-
address@hidden
-#include <stdio.h>
-#include <time.h>
-#include <unistd.h>
-#include <crypt.h>
-
-int 
-main(void)
address@hidden
-  unsigned long seed[2];
-  char salt[] = "$1$........";
-  const char *const seedchars = 
-    "./0123456789ABCDEFGHIJKLMNOPQRST"
-    "UVWXYZabcdefghijklmnopqrstuvwxyz";
-  char *password;
-  int i;
-  
-  /* @r{Generate a (not very) random seed.  
-     You should do it better than this...} */
-  seed[0] = time(NULL);
-  seed[1] = getpid() ^ (seed[0] >> 14 & 0x30000);
-  
-  /* @r{Turn it into printable characters from `seedchars'.} */
-  for (i = 0; i < 8; i++)
-    salt[3+i] = seedchars[(seed[i/5] >> (i%5)*6) & 0x3f];
-  
-  /* @r{Read in the user's password and encrypt it.} */
-  password = crypt(getpass("Password:"), salt);
-  
-  /* @r{Print the results.} */
-  puts(password);
-  return 0;
address@hidden
-
address@hidden smallexample
-
-The next program shows how to verify a password.  It prompts the user
-for a password and prints ``Access granted.'' if the user types
address@hidden libc manual}.
-
address@hidden
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <crypt.h>
-
-int 
-main(void)
address@hidden
-  /* @r{Hashed form of address@hidden libc manual''} */
-  const char *const pass = "$1$/iSaq7rB$EoUw5jJPPvAPECNaaWzMK/";
-
-  char *result;
-  int ok;
-  
-
-  /* @r{Read in the user's password and encrypt it,
-     passing the expected password in as the salt.} */
-  result = crypt(getpass("Password:"), pass);
-
-
-  /* @r{Test the result.} */
-  ok = strcmp (result, pass) == 0;
-
-  puts(ok ? "Access granted." : "Access denied.");
-  return ok ? 0 : 1;
address@hidden
-
address@hidden smallexample
-
address@hidden crypt.h
address@hidden GNU
address@hidden {char *} crypt_r (const char address@hidden, const char 
address@hidden, {struct crypt_data *} @var{data})
-
-The @code{crypt_r} function does the same thing as @code{crypt}, but
-takes an extra parameter that includes space for its result (among
-other things), so it can be reentrant.  @address@hidden>}initialized}
-must be cleared to zero before the first time @code{crypt_r} is
-called.
-
-The @code{crypt_r} function is a @acronym{GNU} extension.
address@hidden deftypefun
-
-The @code{crypt} and @code{crypt_r} functions are prototyped in the
-header @file{crypt.h}.
-
address@hidden DES Encryption
address@hidden @acronym{DES} Encryption
-
-The Data Encryption Standard is described in the US Government Federal
-Information Processing Standards (@acronym{FIPS}) 46-3 published by
-the National Institute of Standards and address@hidden
-Institute of Standards and Technology, @emph{Federal Information
-Processing Standards 46-3} (October 1999), @uref{http://
-csrc.nist.gov/ publications/ fips/ fips46-3/ fips46-3.pdf}.}  The
address@hidden has been very thoroughly analyzed since it was developed
-in the late 1970s, and no new significant flaws have been found.
-
-However, the @acronym{DES} uses only a 56-bit key (plus 8 parity
-bits), and a machine has been built in 1998 that can search through
-all possible keys in about 6 days, which cost about US$200,000; faster
-searches would be possible with more money.  This makes simple
address@hidden insecure for most purposes, and @acronym{NIST} no longer
-permits new US government systems to use simple @acronym{DES}.
-
-For serious encryption functionality, it is recommended that one of the
-many free encryption libraries be used instead of these routines.
-
-The @acronym{DES} is a reversible operation that takes a 64-bit block
-and a 64-bit key and produces another 64-bit block.  Usually, the bits
-are numbered so that the most significant bit, the first bit of each
-block, is numbered 1.
-
-Under that numbering, every eighth bit of the key (the eighth,
-sixteenth, and so on) is not used by the encryption algorithm itself.
-But the key must have odd parity; that is, out of bits one through
-eight, and nine through sixteen, and so on, there must be an odd
-number of `1' bits, and this completely specifies the unused bits.
-
address@hidden crypt.h
address@hidden BSD, SVID
address@hidden void setkey (const char address@hidden)
-
-The @code{setkey} function sets an internal data structure to be an
-expanded form of @var{key}.  @var{key} is specified as an array of 64
-bits each stored in a @code{char}. The first bit is @code{key[0]} and
-the 64th bit is @code{key[63]}.  The @var{key} should have the correct
-parity.
address@hidden deftypefun
-
address@hidden crypt.h
address@hidden BSD, SVID
address@hidden void encrypt (char address@hidden, int @var{edflag})
-
-The @code{encrypt} function encrypts @var{block} if @var{edflag} is 0.
-Otherwise, it decrypts @var{block}, using a key previously set by
address@hidden  The result is placed in @var{block}.
-
-Like @code{setkey}, @var{block} is specified as an array of 64 bits each
-stored in a @code{char}, but there are no parity bits in @var{block}.
address@hidden deftypefun
-
address@hidden crypt.h
address@hidden GNU
address@hidden void setkey_r (const char address@hidden, {struct crypt_data *} 
@var{data})
address@hidden crypt.h
address@hidden GNU
address@hidden void encrypt_r (char address@hidden, int @var{edflag}, {struct 
crypt_data *} @var{data})
-
-These are reentrant versions of @code{setkey} and @code{encrypt}.  The
-only difference is the extra parameter, which stores the expanded
-version of @var{key}.  Before calling @code{setkey_r} the first time,
address@hidden>initialized} must be cleared to zero.
address@hidden deftypefun
-
-The @code{setkey_r} and @code{encrypt_r} functions are @acronym{GNU}
-extensions.  @code{setkey}, @code{encrypt}, @code{setkey_r} and
address@hidden are defined in @file{crypt.h}.
-
address@hidden rpc/des_crypt.h
address@hidden SUNRPC
address@hidden int ecb_crypt (char address@hidden, char address@hidden, 
unsigned @var{len}, unsigned @var{mode})
-
-The function @code{ecb_crypt} encrypts or decrypts one or more blocks
-using @acronym{DES}.  Each block is encrypted independently.
-
-The @var{blocks} and the @var{key} are stored packed in 8-bit bytes,
-so that the first bit of the key is the most significant bit of
address@hidden and the 63rd bit of the key is stored as the least
-significant bit of @code{key[7]}.  The @var{key} should have the
-correct parity.
-
address@hidden is the number of bytes in @var{blocks}.  It should be a
-multiple of 8, so that there is a whole number of blocks to encrypt.
address@hidden is limited to a maximum of @code{DES_MAXDATA} bytes.
-
-The result of the encryption replaces the input in @var{blocks}.
-
-The @var{mode} parameter is the bit-wise @sc{OR} of two of the following:
-
address@hidden @code
address@hidden rpc/des_crypt.h
address@hidden SUNRPC
address@hidden DES_ENCRYPT
-This constant, used in the @var{mode} parameter, specifies that
address@hidden is to be encrypted.
-
address@hidden rpc/des_crypt.h
address@hidden SUNRPC
address@hidden DES_DECRYPT
-This constant, used in the @var{mode} parameter, specifies that
address@hidden is to be decrypted.
-
address@hidden rpc/des_crypt.h
address@hidden SUNRPC
address@hidden DES_HW
-This constant, used in the @var{mode} parameter, asks to use a hardware
-device.  If no hardware device is available, encryption happens anyway,
-but in software.
-
address@hidden rpc/des_crypt.h
address@hidden SUNRPC
address@hidden DES_SW
-This constant, used in the @var{mode} parameter, specifies that no
-hardware device is to be used.
address@hidden vtable
-
-The result of the function will be one of these values:
-
address@hidden @code
address@hidden rpc/des_crypt.h
address@hidden SUNRPC
address@hidden DESERR_NONE
-The encryption succeeded.
-
address@hidden rpc/des_crypt.h
address@hidden SUNRPC
address@hidden DESERR_NOHWDEVICE
-The encryption succeeded, but there was no hardware device available.
-
address@hidden rpc/des_crypt.h
address@hidden SUNRPC
address@hidden DESERR_HWERROR
-The encryption failed because of a hardware problem.
-
address@hidden rpc/des_crypt.h
address@hidden SUNRPC
address@hidden DESERR_BADPARAM
-The encryption failed because of a bad parameter, for instance
address@hidden is not a multiple of eight or @var{len} is larger than
address@hidden
address@hidden vtable
address@hidden deftypefun
-
address@hidden rpc/des_crypt.h
address@hidden SUNRPC
address@hidden int DES_FAILED (int @var{err})
-This macro returns 1 if @var{err} is a `success' result code from
address@hidden or @code{cbc_crypt}, and 0 otherwise.
address@hidden deftypefun
-
address@hidden rpc/des_crypt.h
address@hidden SUNRPC
address@hidden int cbc_crypt (char address@hidden, char address@hidden, 
unsigned @var{len}, unsigned @var{mode}, char address@hidden)
-
-The function @code{cbc_crypt} encrypts or decrypts one or more blocks
-using @acronym{DES} in Cipher Block Chaining mode.
-
-For encryption in @acronym{CBC} mode, each block is
address@hidden with @var{ivec} before being encrypted, then
address@hidden is replaced with the result of the encryption, then the
-next block is processed.  Decryption is the reverse of this process.
-
-This has the advantage that blocks that are the same before being
-encrypted are very unlikely to be the same after being encrypted,
-making it much harder to detect patterns in the data.
-
-Usually, @var{ivec} is set to 8 random bytes before encryption starts.
-Then the 8 random bytes are transmitted along with the encrypted data
-(without themselves being encrypted), and passed back in as @var{ivec}
-for decryption.  Another possibility is to set @var{ivec} to eight
-zeroes initially, and have the first block encrypted consist of 8
-random bytes.
-
-Otherwise, all the parameters are similar to those for @code{ecb_crypt}.
address@hidden deftypefun
-
address@hidden rpc/des_crypt.h
address@hidden SUNRPC
address@hidden void des_setparity (char address@hidden)
-
-The function @code{des_setparity} changes the 64-bit @var{key}, stored
-packed in 8-bit bytes, to have odd parity by altering the low bits of
-each byte.
address@hidden deftypefun
-
-The @code{ecb_crypt}, @code{cbc_crypt} and @code{des_setparity}
-functions and their accompanying macros are all defined in the header
address@hidden/des_crypt.h}.
-
address@hidden Resource Usage and Limitation, Nonlocal Exits, Date and Time, Top
address@hidden %MENU% Functions for examining resource usage and getting and 
setting limits
address@hidden Resource Usage and Limitation
-This chapter describes functions for examining how much of various
-kinds of resources (@acronym{CPU} time, memory, etc.) a process has
-used, and for getting and setting limits on future usage.
-
-
address@hidden Resource Usage
address@hidden Resource Usage
-
address@hidden sys/resource.h
-The function @code{getrusage} and the data-type @code{struct rusage}
-are used to examine the resource usage of a process.  They are
-declared in @file{sys/resource.h}.
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden int getrusage (int @var{processes}, struct rusage address@hidden)
-This function reports resource usage totals for processes specified by
address@hidden, storing the information in @address@hidden
-
-In most systems, @var{processes} has only two valid values:
-
address@hidden @code
address@hidden sys/resource.h
address@hidden BSD
address@hidden RUSAGE_SELF
-This means just the current process.
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden RUSAGE_CHILDREN
-This specifies all child processes, direct and indirect, that have
-already terminated.
address@hidden table
-
-In the @acronym{GNU} system, you can also inquire about a particular
-child-process by specifying its process @acronym{ID}.
-
-The return value of @code{getrusage} is zero for success and @code{-1}
-for failure.
-
address@hidden @code
address@hidden EINVAL
-The argument @var{processes} is not valid.
address@hidden table
address@hidden deftypefun
-
-One way of getting resource usage for a particular child-process is
-with the function @code{wait4}, which returns totals for a child when
-it terminates (@pxref{BSD Wait Functions}).
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden {Data Type} {struct rusage}
-This data type stores various resource usage statistics.  It has the
-following members, and possibly others:
-
address@hidden @code
address@hidden struct timeval ru_utime
-This is the time spent executing user instructions.
-
address@hidden struct timeval ru_stime
-This is the time spent in operating system code on behalf of
address@hidden
-
address@hidden long int ru_maxrss
-This is the maximum resident set size used, in kilobytes.  That is,
-the maximum number of kilobytes of physical memory that
address@hidden used simultaneously.
-
address@hidden long int ru_ixrss
-This is an integral value expressed in kilobytes times ticks of
-execution, which indicates the amount of memory used by text that was
-shared with other processes.
-
address@hidden long int ru_idrss
-This is an integral value expressed the same way, which is the amount of
-unshared memory used for data.
-
address@hidden long int ru_isrss
-This is an integral value expressed the same way, which is the amount of
-unshared memory used for stack space.
-
address@hidden long int ru_minflt
-This is the number of page faults that were serviced without requiring
-any I/O.
-
address@hidden long int ru_majflt
-This is the number of page faults that were serviced by doing I/O.
-
address@hidden long int ru_nswap
-This is the number of times @var{processes} was swapped entirely out of main 
memory.
-
address@hidden long int ru_inblock
-This is the number of times the file system had to read from the disk on behalf
-of @var{processes}.
-
address@hidden long int ru_oublock
-This is the number of times the file system had to write to the disk
-on behalf of @var{processes}.
-
address@hidden long int ru_msgsnd
-This is the number of @acronym{IPC} messages sent.
-
address@hidden long int ru_msgrcv
-This is the number of @acronym{IPC} messages received.
-
address@hidden long int ru_nsignals
-This is the number of signals received.
-
address@hidden long int ru_nvcsw
-This is the number of times @var{processes} voluntarily invoked a
-context switch (usually to wait for some service).
-
address@hidden long int ru_nivcsw
-The number of times an involuntary context switch took place (because
-a time slice expired, or another process of higher priority was
-scheduled).
address@hidden table
address@hidden deftp
-
address@hidden is a historical function that does some of what
address@hidden does.  @code{getrusage} is a better choice.
-
address@hidden and its @code{vtimes} data structure are declared in
address@hidden/vtimes.h}.
address@hidden sys/vtimes.h
address@hidden vtimes.h
-
address@hidden int vtimes (struct vtimes @var{current}, struct vtimes 
@var{child})
-
address@hidden reports resource-usage totals, for a process.
-
-If @var{current} is nonnull, @code{vtimes} stores resource usage
-totals for the invoking process alone, in the structure to which it
-points.  If @var{child} is nonnull, @code{vtimes} stores
-resource-usage totals for all past children (that have terminated) of
-the invoking process in the structure to which it points.
-
address@hidden {Data Type} {struct vtimes}
-This data type contains information about the resource usage of a process.
-Each member corresponds to a member of the @code{struct rusage} data type
-described above.
-
address@hidden @code
address@hidden vm_utime
-This is user @acronym{CPU} time.  It is analogous to @code{ru_utime}
-in @code{struct rusage}.
address@hidden vm_stime
-This is system @acronym{CPU} time.  It is analogous to @code{ru_stime}
-in @code{struct rusage}.
address@hidden vm_idsrss
-This is data and stack memory, the sum of the values that would be
-reported as @code{ru_idrss} and @code{ru_isrss} in @code{struct
-rusage}.
address@hidden vm_ixrss
-This is shared memory.  It is analogous to @code{ru_ixrss} in
address@hidden rusage}.
address@hidden vm_maxrss
-This is maximum resident set size.  It is analogous to
address@hidden in @code{struct rusage}.
address@hidden vm_majflt
-This is major page faults.  It is analogous to @code{ru_majflt} in
address@hidden rusage}.
address@hidden vm_minflt
-This is minor page faults.  It is analogous to @code{ru_minflt} in
address@hidden rusage}.
address@hidden vm_nswap
-This is the swap count.  It is analogous to @code{ru_nswap} in
address@hidden rusage}.
address@hidden vm_inblk
-This is disk reads.  It is analogous to @code{ru_inblk} in
address@hidden rusage}.
address@hidden vm_oublk
-This is disk writes.  It is analogous to @code{ru_oublk} in
address@hidden rusage}.
address@hidden table
address@hidden deftp
-
-
-The return value is 0 if the function succeeds and @code{-1}
-otherwise.
-
-
-
address@hidden deftypefun
-An additional historical function for examining resource usage,
address@hidden, is supported but not documented here.  It is declared in
address@hidden/vtimes.h}.
-
address@hidden Limits on Resources
address@hidden Limiting Resource Usage
address@hidden resource limits
address@hidden limits on resource usage
address@hidden usage limits
-
-You can specify limits for the resource usage of a process.  When the
-process tries to exceed a limit, it may get a signal, or the system call
-by which it tried to do so may fail, depending on the resource.  Each
-process initially inherits its limit values from its parent, but it can
-subsequently change them.
-
-There are two per-process limits associated with a resource:
address@hidden limit
-
address@hidden @dfn
address@hidden current limit
-The current limit is the value the system will not allow usage to
-exceed.  It is also called the ``soft limit'' because the process being
-limited can generally raise the current limit at will.
address@hidden current limit
address@hidden soft limit
-
address@hidden maximum limit
-The maximum limit is the maximum value to which a process is allowed to
-set its current limit.  It is also called the ``hard limit'' because
-there is no way for a process to get around it.  A process may lower
-its own maximum limit, but only the superuser may increase a maximum
-limit.
address@hidden maximum limit
address@hidden hard limit
address@hidden table
-
address@hidden sys/resource.h
-The symbols for use with @code{getrlimit}, @code{setrlimit},
address@hidden and @code{setrlimit64} are defined in
address@hidden/resource.h}.
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden int getrlimit (int @var{resource}, struct rlimit address@hidden)
-Read the current and maximum limits for the resource @var{resource}
-and store them in @address@hidden
-
-The return value is @code{0} on success and @code{-1} on failure.  The
-only possible @code{errno} error condition is @code{EFAULT}.
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit system, this function is in fact @code{getrlimit64}.  Thus, the
address@hidden interface transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden sys/resource.h
address@hidden Unix98
address@hidden int getrlimit64 (int @var{resource}, struct rlimit64 
address@hidden)
-This function is similar to @code{getrlimit}, but its second parameter
-is a pointer to a variable of type @code{struct rlimit64}, which
-allows it to read values that wouldn't fit in the member of a
address@hidden rlimit}.
-
-If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit machine, this function is available under the name
address@hidden and so transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden int setrlimit (int @var{resource}, const struct rlimit 
address@hidden)
-Store the current and maximum limits for the resource @var{resource}
-in @address@hidden
-
-The return value is @code{0} on success and @code{-1} on failure.  The
-following @code{errno} error condition is possible:
-
address@hidden @code
address@hidden EPERM
address@hidden @bullet
address@hidden
-The process tried to raise a current limit beyond the maximum limit.
-
address@hidden
-The process tried to raise a maximum limit, but is not superuser.
address@hidden itemize
address@hidden table
-
-When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit system, this function is in fact @code{setrlimit64}.  Thus, the
address@hidden interface transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden sys/resource.h
address@hidden Unix98
address@hidden int setrlimit64 (int @var{resource}, const struct rlimit64 
address@hidden)
-This function is similar to @code{setrlimit}, but its second parameter
-is a pointer to a variable of type @code{struct rlimit64} that allows
-it to set values that wouldn't fit in the member of a @code{struct
-rlimit}.
-
-If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a
-32-bit machine, this function is available under the name
address@hidden and so transparently replaces the old interface.
address@hidden deftypefun
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden {Data Type} {struct rlimit}
-This structure is used with @code{getrlimit} to receive limit values,
-and with @code{setrlimit} to specify limit values for a particular process
-and resource.  It has two fields:
-
address@hidden @code
address@hidden rlim_t rlim_cur
-This is the current limit.
-
address@hidden rlim_t rlim_max
-This is the maximum limit.
address@hidden table
-
-For @code{getrlimit}, the structure is an output; it receives the current
-values.  For @code{setrlimit}, it specifies the new values.
address@hidden deftp
-
-For the @acronym{LFS} functions, a similar type is defined in
address@hidden/resource.h}.
-
address@hidden sys/resource.h
address@hidden Unix98
address@hidden {Data Type} {struct rlimit64}
-This structure is analogous to the @code{rlimit} structure above, but
-its components have wider ranges.  It has two fields:
-
address@hidden @code
address@hidden rlim64_t rlim_cur
-This is analogous to @code{rlimit.rlim_cur}, but with a different type.
-
address@hidden rlim64_t rlim_max
-This is analogous to @code{rlimit.rlim_max}, but with a different type.
address@hidden table
-
address@hidden deftp
-
-Here is a list of resources for which you can specify a limit.  Memory
-and file sizes are measured in bytes.
-
address@hidden @code
address@hidden sys/resource.h
address@hidden BSD
address@hidden RLIMIT_CPU
address@hidden RLIMIT_CPU
-This is the maximum amount of @acronym{CPU} time the process can use.
-If it runs for longer than this, it gets a signal, @code{SIGXCPU}.
-The value is measured in seconds (@pxref{Operation Error Signals}).
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden RLIMIT_FSIZE
address@hidden RLIMIT_FSIZE
-This is the maximum size of file the process can create.  Trying to
-write a larger file causes a signal, @code{SIGXFSZ} (@pxref{Operation
-Error Signals}).
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden RLIMIT_DATA
address@hidden RLIMIT_DATA
-This is the maximum size of data memory for the process.  If the
-process tries to allocate data memory beyond this amount, the
-allocation function fails.
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden RLIMIT_STACK
address@hidden RLIMIT_STACK
-This is the maximum stack size for the process.  If the process tries
-to extend its stack past this size, it gets a @code{SIGSEGV} signal
-(@pxref{Program-Error Signals}).
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden RLIMIT_CORE
address@hidden RLIMIT_CORE
-This is the maximum size core file that this process can create.  If
-the process terminates and would dump a core file larger than this,
-then no core file is created.  So setting this limit to 0 prevents
-core files from ever being created.
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden RLIMIT_RSS
address@hidden RLIMIT_RSS
-This is the maximum amount of physical memory that this process should
-get.  This parameter is a guide for the system's scheduler and memory
-allocator; the system may give the process more memory when there is a
-surplus.
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden RLIMIT_MEMLOCK
-This is the maximum amount of memory that can be locked into physical
-memory (so it will never be paged out).
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden RLIMIT_NPROC
-This is the maximum number of processes that can be created with the
-same address@hidden  If you have reached the limit for your
address@hidden, @code{fork} will fail with @code{EAGAIN}
-(@pxref{Creating a Process}).
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden RLIMIT_NOFILE
address@hidden RLIMIT_NOFILE
address@hidden RLIMIT_OFILE
address@hidden RLIMIT_OFILE
-The maximum number of files that the process can open.  If it tries to
-open more files than this, its open attempt fails with @code{errno}
address@hidden@footnote{See Loosemore et al., ``Error Codes'' (see
-chap. 1, n. 1).}  Not all systems support this limit; @acronym{GNU}
-does, and 4.4 @acronym{BSD} does.
-
address@hidden sys/resource.h
address@hidden Unix98
address@hidden RLIMIT_AS
address@hidden RLIMIT_AS
-This is the maximum size of total memory that this process should get.
-If the process tries to allocate more memory beyond this amount with,
-for example, @code{brk}, @code{malloc}, @code{mmap} or @code{sbrk},
-the allocation function fails.
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden RLIM_NLIMITS
address@hidden RLIM_NLIMITS
-This is the number of different resource limits.  Any valid
address@hidden operand must be less than @code{RLIM_NLIMITS}.
address@hidden table
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden Constant int RLIM_INFINITY
-This constant stands for a value of ``infinity'' when supplied as
-the limit value in @code{setrlimit}.
address@hidden deftypevr
-
-
-The following are historical functions to do some of what the functions
-above do.  The functions above are better choices.
-
address@hidden and the command symbols are declared in @file{ulimit.h}.
address@hidden ulimit.h
-
address@hidden ulimit.h
address@hidden BSD
address@hidden int ulimit (int @var{cmd}, ...)
-
address@hidden gets the current limit or sets the current and maximum
-limit for a particular resource for the calling process according to the
-command @var{cmd}.a
-
-If you are getting a limit, the command argument is the only argument.
-If you are setting a limit, there is a second argument: @code{long
-int} @var{limit}, which is the value to which you are setting the
-limit.
-
-The @var{cmd} values and the operations they specify are:
address@hidden @code
-
address@hidden GETFSIZE
-Get the current limit on the size of a file, in units of 512 bytes.
-
address@hidden SETFSIZE
-Set the current and maximum limit on the size of a file to @var{limit} *
-512 bytes.
-
address@hidden table
-
-There are also some other @var{cmd} values that may do things on some
-systems, but they are not supported.
-
-Only the superuser may increase a maximum limit.
-
-When you successfully get a limit, the return value of @code{ulimit} is
-that limit, which is never negative.  When you successfully set a limit,
-the return value is 0.  When the function fails, the return value is
address@hidden and @code{errno} is set according to the reason:
-
address@hidden @code
address@hidden EPERM
-A process tried to increase a maximum limit, but is not superuser.
address@hidden table
-
-
address@hidden deftypefun
-
address@hidden and its resource symbols are declared in @file{sys/vlimit.h}.
address@hidden sys/vlimit.h
-
address@hidden sys/vlimit.h
address@hidden BSD
address@hidden int vlimit (int @var{resource}, int @var{limit})
-
address@hidden sets the current limit for a resource for a process.
-
address@hidden identifies the resource:
-
address@hidden @code
address@hidden LIM_CPU
-This is the maximum @acronym{CPU} time.  It is the same as
address@hidden for @code{setrlimit}.
address@hidden LIM_FSIZE
-This is the maximum file size.  It is the same as @code{RLIMIT_FSIZE}
-for @code{setrlimit}.
address@hidden LIM_DATA
-This is the maximum data memory.  It is the same as @code{RLIMIT_DATA}
-for @code{setrlimit}.
address@hidden LIM_STACK
-This is the maximum stack size.  It is the same as @code{RLIMIT_STACK}
-for @code{setrlimit}.
address@hidden LIM_CORE
-This is the maximum core file size.  It is the same as
address@hidden for @code{setrlimit}.
address@hidden LIM_MAXRSS
-This is the maximum physical memory.  It is the same as
address@hidden for @code{setrlimit}.
address@hidden table
-
-The return value is 0 for success and @code{-1} with @code{errno} set
-accordingly for failure:
-
address@hidden @code
address@hidden EPERM
-The process tried to set its current limit beyond its maximum limit.
address@hidden table
-
address@hidden deftypefun
-
address@hidden Priority
address@hidden Process @acronym{CPU} Priority and Scheduling
address@hidden process priority
address@hidden @acronym{cpu} priority
address@hidden priority of a process
-
-When multiple processes simultaneously require @acronym{CPU} time, the system's
-scheduling policy and process @acronym{CPU} priorities determine which 
processes
-get it.  This section describes how that determination is made and
address@hidden C Library functions to control it.
-
-It is common to refer to @acronym{CPU} scheduling simply as scheduling and a
-process's @acronym{CPU} priority simply as the process's priority, with the 
@acronym{CPU}
-resource being implied.  Bear in mind, though, that @acronym{CPU} time is not 
the
-only resource a process uses or that processes contend for.  In some
-cases, it is not even particularly important.  Giving a process a high
-``priority'' may have very little effect on how fast a process runs with
-respect to other processes.  The priorities discussed in this section
-apply only to @acronym{CPU} time.
-
address@hidden scheduling is a complex issue and different systems do it in 
wildly
-different ways.  New ideas continually develop and find their way into
-the intricacies of the various systems' scheduling algorithms.  This
-section discusses the general concepts, some specifics of systems
-that commonly use the @acronym{GNU} C Library, and some standards.
-
-For simplicity, we talk about @acronym{CPU} contention as if there is only one 
@acronym{CPU}
-in the system.  But all the same principles apply when a processor has
-multiple @acronym{CPU}s, and knowing that the number of processes that can run 
at
-any one time is equal to the number of @acronym{CPU}s, you can easily 
extrapolate
-the information.
-
-The functions described in this section are all defined by the 
@acronym{POSIX}.1
-and @acronym{POSIX}.1b standards (the @address@hidden functions are 
@acronym{POSIX}.1b).
-However, @acronym{POSIX} does not define any semantics for the values that 
these
-functions get and set.  In this chapter, the semantics are based on the
-Linux kernel's implementation of the @acronym{POSIX} standard.  As you will 
see,
-the Linux implementation is quite the inverse of what the authors of the
address@hidden syntax had in mind.
-
address@hidden Absolute Priority
address@hidden Absolute Priority
address@hidden absolute priority
address@hidden priority, absolute
-
-Every process has an absolute priority, and it is represented by a number.
-The higher the number, the higher the absolute priority.
-
address@hidden real-time @acronym{CPU} scheduling
-On systems of the past, and most systems today, all processes have
-absolute priority 0 and this section is irrelevant.  In that case,
-see @ref{Traditional Scheduling}.  Absolute priorities were invented to
-accommodate real-time systems, in which it is vital that certain processes
-be able to respond to external events happening in real time, which
-means they cannot wait around while some other process that @emph{wants
-to}, but doesn't @emph{need to} run occupies the @acronym{CPU}.
-
address@hidden ready to run
address@hidden preemptive scheduling
-When two processes are in contention to use the @acronym{CPU} at any
-instant, the one with the higher absolute priority always gets it.
-This is true even if the process with the lower priority is already
-using the @acronym{CPU}---the scheduling is preemptive.  Of course,
-we're only talking about processes that are running or ``ready to
-run'', which means they are ready to execute instructions right
-now. The term ``runnable'' is a synonym for ``ready to run.''  When a
-process blocks to wait for something like I/O, its absolute priority
-is irrelevant.
-
address@hidden runnable process
-
-When two processes are running or ready to run, and both have the same
-absolute priority, it's more interesting.  In that case, who gets the
address@hidden is determined by the scheduling policy.  If the
-processes have absolute priority 0, the traditional scheduling policy
-described in @ref{Traditional Scheduling} applies.  Otherwise, the
-policies described in @ref{Real-Time Scheduling}, apply.
-
-You normally give an absolute priority above 0 only to a process that
-can be trusted not to hog the @acronym{CPU}.  Such processes are designed to 
block
-(or terminate) after relatively short @acronym{CPU} runs.
-
-A process begins life with the same absolute priority as its parent
-process.  Functions described in @ref{Basic Scheduling Functions} can
-change it.
-
-Only a privileged process can change a process's absolute priority to
-something other than @code{0}.  Only a privileged process or the
-target process's owner can change its absolute priority at all.
-
address@hidden requires absolute priority values used with the
-real-time scheduling policies to be consecutive with a range of at
-least 32.  On Linux, they are 1 through 99.  The functions
address@hidden and @code{sched_set_priority_min}
-portably tell you what the range is on a particular system.
-
-
address@hidden Using Absolute Priority
-
-One thing you must keep in mind when designing real-time applications
-is that having higher absolute priority than any other process doesn't
-guarantee the process can run continuously.  Two things that can wreck
-a good @acronym{CPU} run are interrupts and page faults.
-
-Interrupt handlers live in that limbo between processes.  The @acronym{CPU} is
-executing instructions, but they aren't part of any process.  An
-interrupt will stop even the highest priority process.  So you must
-allow for slight delays and make sure that no device in the system has
-an interrupt handler that could cause too long a delay between
-instructions for your process.
-
-Similarly, a page fault causes what looks like a straightforward
-sequence of instructions to take a long time.  The fact that other
-processes get to run while the page faults in is of no consequence,
-because as soon as the I/O is complete, the high-priority process will
-kick them out and run again, but the wait for the I/O itself could be
-a problem.  To neutralize this threat, use @code{mlock} or
address@hidden
-
-There are a few ramifications of the absoluteness of this priority on a
address@hidden system that you need to keep in mind when you choose to set a
-priority and also when you're working on a program that runs with high
-absolute priority.  Consider a process that has higher absolute priority
-than any other process in the system and due to a bug in its program, it
-gets into an infinite loop.  It will never cede the @acronym{CPU}.  You can't 
run
-a command to kill it because your command would need to get the @acronym{CPU} 
in
-order to run.  The errant program is in complete control.  It controls
-the vertical, it controls the horizontal.
-
-There are two ways to avoid this: 1) keep a shell running somewhere
-with a higher absolute priority; 2) keep a controlling terminal
-attached to the high-priority process group.  All the priority in the
-world won't stop an interrupt handler from running and delivering a
-signal to the process if you hit Control-C.
-
-Some systems use absolute priority as a means of allocating a fixed
-percentage of @acronym{CPU} time to a process.  To do this, a
-super-high-priority privileged process constantly monitors the
-process's @acronym{CPU} usage and raises its absolute priority when
-the process isn't getting its entitled share and lowers it when the
-process is exceeding it.
-
-The absolute priority is sometimes called the ``static priority''.  We
-don't use that term in this manual because it misses the most
-important feature of the absolute priority---its absoluteness.
-
-
address@hidden Real-Time Scheduling
address@hidden Real-Time Scheduling
address@hidden real-time scheduling
-
-Whenever two processes with the same absolute priority are ready to run,
-the kernel has a decision to make, because only one can run at a time.
-If the processes have absolute priority 0, the kernel makes this decision
-as described in @ref{Traditional Scheduling}.  Otherwise, the decision
-is as described in this section.
-
-If two processes are ready to run but have different absolute priorities,
-the decision is much simpler, and is described in @ref{Absolute
-Priority}.
-
-Each process has a scheduling policy.  For processes with absolute
-priority other than 0, there are two available:
-
address@hidden
address@hidden
-First-come first-served
address@hidden
-Round-robin
address@hidden enumerate
-
-The most sensible case is where all the processes with a certain
-absolute priority have the same scheduling policy.  We'll discuss that
-first.
-
-Under a round-robin policy, processes share the @acronym{CPU}, each
-one running for a small quantum of time (``time slice'') and then
-yielding to another in a circular fashion.  Of course, only processes
-that are ready to run and have the same absolute priority are in this
-circle.
-
-Under a first-come first-served policy, the process that has been
-waiting the longest to run gets the @acronym{CPU}, and it keeps it
-until it voluntarily relinquishes the @acronym{CPU}, runs out of
-things to do (blocks), or gets preempted by a higher priority process.
-
-First-come first-served, along with maximum absolute priority and
-careful control of interrupts and page faults, is the one to use when
-a process absolutely, positively has to run at full @acronym{CPU}
-speed or not at all.
-
-Judicious use of @code{sched_yield} function invocations by processes
-with first-come first-served scheduling policy forms a good compromise
-between round-robin and first-come first-served.
-
-To understand how scheduling works when processes of different
-scheduling policies occupy the same absolute priority, you have to
-know the nitty-gritty details of how processes enter and exit the
-ready-to-run list.
-
-In both cases, the ready-to-run list is organized as a true queue,
-where a process gets pushed onto the tail when it becomes ready to run
-and is popped off the head when the scheduler decides to run it. Ready
-to run and running are two mutually exclusive states.  When the
-scheduler runs a process, that process is no longer ready to run and
-no longer in the ready-to-run list.  When the process stops running,
-it may go back to being ready to run again.
-
-The only difference between a process that is assigned the round-robin
-scheduling policy and a process that is assigned first-come
-first-served is that in the former case, the process is automatically
-booted off the @acronym{CPU} after a certain amount of time.  When
-that happens, the process goes back to being ready to run, which means
-it enters the queue at the tail.  The time quantum we're talking about
-is small---really small.  This is not your father's timesharing.  For
-example, with the Linux kernel, the round-robin time slice is a
-thousand times shorter than its typical time-slice for traditional
-scheduling.
-
-A process begins life with the same scheduling policy as its parent process.
-Functions described in @ref{Basic Scheduling Functions} can change it.
-
-Only a privileged process can set the scheduling policy of a process
-that has absolute priority higher than 0.
-
address@hidden Basic Scheduling Functions
address@hidden Basic Scheduling Functions
-
-This section describes functions in the @acronym{GNU} C Library for setting the
-absolute priority and scheduling policy of a process.
-
address@hidden Note:}  On systems that have the functions in this
-section, the macro _POSIX_PRIORITY_SCHEDULING is defined in
address@hidden<unistd.h>}.
-
-When the scheduling policy is traditional scheduling, more functions
-to fine tune the scheduling are in @ref{Traditional Scheduling}.
-
-Don't try to make too much out of the naming and structure of these
-functions.  They don't match the concepts described in this manual
-because the functions are as defined by @acronym{POSIX}.1b, but the
-implementation on systems that use the @acronym{GNU} C Library is the
-inverse of what the @acronym{POSIX} structure contemplates.  The
address@hidden scheme assumes that the primary scheduling parameter
-is the scheduling policy and that the priority value, if any, is a
-parameter of the scheduling policy.  In the implementation, though,
-the priority value is king and the scheduling policy, if anything,
-only fine-tunes the effect of that priority.
-
-The symbols in this section are declared by including file @file{sched.h}.
-
address@hidden sched.h
address@hidden POSIX
address@hidden {Data Type} {struct sched_param}
-This structure describes an absolute priority.
address@hidden @code
address@hidden int sched_priority
-This is the absolute priority value.
address@hidden table
address@hidden deftp
-
address@hidden sched.h
address@hidden POSIX
address@hidden int sched_setscheduler (pid_t @var{pid}, int @var{policy}, const 
struct sched_param address@hidden)
-
-This function sets both the absolute priority and the scheduling policy
-for a process.
-
-It assigns the absolute priority value given by @var{param} and the
-scheduling policy @var{policy} to the process with Process @acronym{ID} 
@var{pid},
-or the calling process if @var{pid} is 0.  If @var{policy} is
-negative, @code{sched_setscheduler} keeps the existing scheduling policy.
-
-The following macros represent the valid values for @var{policy}:
-
address@hidden @code
address@hidden SCHED_OTHER
-This is traditional scheduling.
address@hidden SCHED_FIFO
-This is first-in first-out.
address@hidden SCHED_RR
-This is round-robin.
address@hidden table
-
address@hidden The Linux kernel code (in sched.c) actually reschedules the 
process,
address@hidden but it puts it at the head of the run queue, so I'm not sure 
just what
address@hidden the effect is, but it must be subtle.
-
-On success, the return value is @code{0}.  Otherwise, it is @code{-1}
-and @code{ERRNO} is set accordingly.  The @code{errno} values specific
-to this function are
-
address@hidden @code
address@hidden EPERM
address@hidden @bullet
address@hidden
-The calling process does not have @code{CAP_SYS_NICE} permission and
address@hidden is not @code{SCHED_OTHER} (or it's negative and the
-existing policy is not @code{SCHED_OTHER}).
-
address@hidden
-The calling process does not have @code{CAP_SYS_NICE} permission and
-its owner is not the target process's owner.  The effective uid of the
-calling process is neither the effective nor the real uid of process
address@hidden
address@hidden We need a cross reference to the capabilities section, when 
written.
address@hidden itemize
-
address@hidden ESRCH
-There is no process with @acronym{PID} @var{pid} and @var{pid} is not 0.
-
address@hidden EINVAL
address@hidden @bullet
address@hidden
address@hidden does not identify an existing scheduling policy.
-
address@hidden
-The absolute priority value identified by address@hidden is outside the
-valid range for the scheduling policy @var{policy} (or the existing
-scheduling policy if @var{policy} is negative) or @var{param} is
-null.  @code{sched_get_priority_max} and @code{sched_get_priority_min}
-tell you what the valid range is.
-
address@hidden
address@hidden is negative.
address@hidden itemize
address@hidden table
-
address@hidden deftypefun
-
-
address@hidden sched.h
address@hidden POSIX
address@hidden int sched_getscheduler (pid_t @var{pid})
-
-This function returns the scheduling policy assigned to the process
-with process @acronym{ID} (@acronym{PID}) @var{pid}, or the calling
-process if @var{pid} is 0.
-
-The return value is the scheduling policy.  See
address@hidden for the possible values.
-
-If the function fails, the return value is instead @code{-1} and
address@hidden is set accordingly.
-
-The @code{errno} values specific to this function are
-
address@hidden @code
-
address@hidden ESRCH
-There is no process with @acronym{PID} @var{pid} and it is not 0.
-
address@hidden EINVAL
address@hidden is negative.
-
address@hidden table
-
-This function is not an exact mate to @code{sched_setscheduler},
-because while that function sets the scheduling policy and the
-absolute priority, this function gets only the scheduling policy.  To
-get the absolute priority, use @code{sched_getparam}.
-
address@hidden deftypefun
-
-
address@hidden sched.h
address@hidden POSIX
address@hidden int sched_setparam (pid_t @var{pid}, const struct sched_param 
address@hidden)
-
-This function sets a process's absolute priority.
-
-It is functionally identical to @code{sched_setscheduler} with
address@hidden = @code{-1}.
-
address@hidden in fact, that's how it's implemented in Linux.
-
address@hidden deftypefun
-
address@hidden sched.h
address@hidden POSIX
address@hidden int sched_getparam (pid_t @var{pid}, const struct sched_param 
address@hidden)
-
-This function returns a process's absolute priority.
-
address@hidden is the process @acronym{ID} (@acronym{PID}) of the process
-whose absolute priority you want to know.
-
address@hidden is a pointer to a structure in which the function stores the
-absolute priority of the process.
-
-On success, the return value is @code{0}.  Otherwise, it is @code{-1}
-and @code{ERRNO} is set accordingly.  The @code{errno} values specific
-to this function are
-
address@hidden @code
-
address@hidden ESRCH
-There is no process with @acronym{PID} @var{pid} and it is not 0.
-
address@hidden EINVAL
address@hidden is negative.
-
address@hidden table
-
address@hidden deftypefun
-
-
address@hidden sched.h
address@hidden POSIX
address@hidden int sched_get_priority_min (int address@hidden);
-
-This function returns the lowest absolute priority value that is
-allowable for a process with scheduling policy @var{policy}.
-
-On Linux, it is 0 for SCHED_OTHER and 1 for everything else.
-
-On success, the return value is @code{0}.  Otherwise, it is @code{-1}
-and @code{ERRNO} is set accordingly.  The @code{errno} value specific
-to this function is
-
address@hidden @code
address@hidden EINVAL
address@hidden does not identify an existing scheduling policy.
address@hidden table
-
address@hidden deftypefun
-
address@hidden sched.h
address@hidden POSIX
address@hidden int sched_get_priority_max (int address@hidden);
-
-This function returns the highest absolute priority value that is
-allowable for a process with scheduling policy @var{policy}.
-
-On Linux, it is 0 for SCHED_OTHER and 99 for everything else.
-
-On success, the return value is @code{0}.  Otherwise, it is @code{-1}
-and @code{ERRNO} is set accordingly.  The @code{errno} value specific
-to this function is
-
address@hidden @code
address@hidden EINVAL
address@hidden does not identify an existing scheduling policy.
address@hidden table
-
address@hidden deftypefun
-
address@hidden sched.h
address@hidden POSIX
address@hidden int sched_rr_get_interval (pid_t @var{pid}, struct timespec 
address@hidden)
-
-This function returns the length of the quantum (time slice) used with
-the round-robin scheduling policy, if it is used, for the process with
-process @acronym{ID} @var{pid}.
-
-It returns the length of time as @var{interval}.
address@hidden We need a cross-reference to where timespec is explained.  But 
that
address@hidden section doesn't exist yet, and the time chapter needs to be 
slightly
address@hidden reorganized so there is a place to put it (which will be right 
next
address@hidden to timeval, which is presently misplaced).  2000.05.07.
-
-With a Linux kernel, the round-robin time slice is always 150
-microseconds, and @var{pid} need not even be a real @acronym{PID}.
-
-The return value is @code{0} on success and in the pathological case
-that it fails, the return value is @code{-1} and @code{errno} is set
-accordingly.  There is nothing specific that can go wrong with this
-function, so there are no specific @code{errno} values.
-
address@hidden deftypefun
-
address@hidden sched.h
address@hidden POSIX
address@hidden int sched_yield (void)
-
-This function voluntarily gives up the process's claim on the @acronym{CPU}.
-
-Technically, @code{sched_yield} causes the calling process to be made
-immediately ready to run (as opposed to running, which is what it was
-before).  This means that if it has absolute priority higher than 0, it
-gets pushed onto the tail of the queue of processes that share its
-absolute priority and are ready to run, and it will run again when its
-turn next arrives.  If its absolute priority is 0, it is more
-complicated, but still has the effect of yielding the @acronym{CPU} to other
-processes.
-
-If there are no other processes that share the calling process's absolute
-priority, this function doesn't have any effect.
-
-To the extent that the containing program is oblivious to what other
-processes in the system are doing and how fast it executes, this
-function appears as a no-op.
-
-The return value is @code{0} on success and in the pathological case
-that it fails, the return value is @code{-1} and @code{errno} is set
-accordingly.  There is nothing specific that can go wrong with this
-function, so there are no specific @code{errno} values.
-
address@hidden deftypefun
-
address@hidden Traditional Scheduling
address@hidden Traditional Scheduling
address@hidden scheduling, traditional
-
-This section is about the scheduling among processes whose absolute
-priority is 0.  When the system hands out the scraps of @acronym{CPU} time that
-are left over after the processes with higher absolute priority have
-taken all they want, the scheduling described herein determines who
-among the great unwashed processes gets them.
-
address@hidden Traditional Scheduling Intro
address@hidden Introduction to Traditional Scheduling
-
-Long before there was absolute priority (@pxref{Absolute Priority}),
-Unix systems were scheduling the @acronym{CPU} using this system.  When Posix 
came
-in like the Romans and imposed absolute priorities to accommodate the
-needs of real-time processing, it left the indigenous Absolute Priority
-Zero processes to govern themselves by their own familiar scheduling
-policy.
-
-Indeed, absolute priorities higher than 0 are not available on many
-systems today and are not typically used when they are, being intended
-mainly for computers that do real-time processing.  So this section
-describes the only scheduling many programmers need to be concerned
-about.
-
-But just to be clear about the scope of this scheduling: Any time a
-process with a absolute priority of 0 and a process with an absolute
-priority higher than 0 are ready to run at the same time, the one with
-absolute priority 0 does not run.  If it's already running when the
-higher priority ready-to-run process comes into existence, it stops
-immediately.
-
-In addition to its absolute priority of 0, every process has another
-priority, which we will refer to as @dfn{dynamic priority} because it
-changes over time.  The dynamic priority is meaningless for processes
-with an absolute priority higher than 0.
-
-The dynamic priority sometimes determines who gets the next turn on the
address@hidden  Sometimes it determines how long turns last.  Sometimes it
-determines whether a process can kick another off the @acronym{CPU}.
-
-In Linux, the value is a combination of these things, but mostly it
-just determines the length of the time slice.  The higher a process's
-dynamic priority, the longer a shot it gets on the @acronym{CPU} when
-it gets one.  If it doesn't use up its time slice before giving up the
address@hidden to do something like wait for I/O, it is favored for
-getting the @acronym{CPU} back when it's ready for it, to finish out
-its time slice.  Other than that, selection of processes for new time
-slices is basically round robin.  But the scheduler does throw a bone
-to the low-priority processes: A process's dynamic priority rises
-every time it is snubbed in the scheduling process.
-
-The fluctuation of a process's dynamic priority is regulated by another
-value---the @dfn{nice} value.  The nice value is an integer, usually in the
-range -20 to 20, and represents an upper limit on a process's dynamic
-priority.  The higher the nice number, the lower that limit.
-
-On a typical Linux system, for example, a process with a nice value of
-20 can get only 10 milliseconds on the @acronym{CPU} at a time, whereas a 
process
-with a nice value of -20 can achieve a high enough priority to get 400
-milliseconds.
-
-The idea of the nice value is deferential courtesy.  In the beginning,
-in the Unix garden of Eden, all processes shared equally in the bounty
-of the computer system.  But not all processes really need the same
-share of @acronym{CPU} time, so the nice value gave a courteous process the
-ability to refuse its equal share of @acronym{CPU} time that others might 
prosper.
-Hence, the higher a process's nice value, the nicer the process is.
-
-Dynamic priorities tend upward and downward with an objective of
-smoothing out allocation of @acronym{CPU} time and giving quick response time 
to
-infrequent requests.  But they never exceed their nice limits, so on a
-heavily loaded @acronym{CPU}, the nice value effectively determines how fast a
-process runs.
-
-In keeping with the socialistic heritage of Unix process priority, a
-process begins life with the same nice value as its parent process and
-can raise it at will.  A process can also raise the nice value of any
-other process owned by the same user (or effective user).  But only a
-privileged process can lower its nice value.  A privileged process can
-also raise or lower another process's nice value.
-
address@hidden C Library functions for getting and setting nice values are 
described in
address@hidden Scheduling Functions}.
-
address@hidden Traditional Scheduling Functions
address@hidden Functions for Traditional Scheduling
-
address@hidden sys/resource.h
-This section describes how you can read and set the nice value of a
-process.  All these symbols are declared in @file{sys/resource.h}.
-
-The function and macro names are defined by @acronym{POSIX}, and refer
-to ``priority'', but the functions actually have to do with nice
-values, as the terms are used both in the manual and @acronym{POSIX}.
-
-The range of valid nice values depends on the kernel, but typically it
-runs from @code{-20} to @code{20}.  A lower nice value corresponds to
-higher priority for the process.  These constants describe the range of
-priority values:
-
address@hidden @code
address@hidden sys/resource.h
address@hidden BSD
address@hidden PRIO_MIN
-This is the lowest valid nice value.
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden PRIO_MAX
-This is the highest valid nice value.
address@hidden vtable
-
address@hidden sys/resource.h
address@hidden BSD,POSIX
address@hidden int getpriority (int @var{class}, int @var{id})
-Return the nice value of a set of processes; @var{class} and @var{id}
-specify which ones (see below).  If the processes specified do not all
-have the same nice value, this returns the lowest value that any of them
-has.
-
-On success, the return value is @code{0}.  Otherwise, it is @code{-1}
-and @code{ERRNO} is set accordingly.  The @code{errno} values specific
-to this function are
-
address@hidden @code
address@hidden ESRCH
-The combination of @var{class} and @var{id} does not match any existing
-process.
-
address@hidden EINVAL
-The value of @var{class} is not valid.
address@hidden table
-
-If the return value is @code{-1}, it could indicate failure, or it could
-be the nice value.  The only way to make certain is to set @code{errno =
-0} before calling @code{getpriority}, then use @code{errno != 0}
-afterward as the criterion for failure.
address@hidden deftypefun
-
address@hidden sys/resource.h
address@hidden BSD,POSIX
address@hidden int setpriority (int @var{class}, int @var{id}, int 
@var{niceval})
-Set the nice value of a set of processes to @var{niceval}; @var{class}
-and @var{id} specify which ones (see below).
-
-The return value is @code{0} on success, and @code{-1} on
-failure.  The following @code{errno} error condition are possible for
-this function are
-
address@hidden @code
address@hidden ESRCH
-The combination of @var{class} and @var{id} does not match any existing
-process.
-
address@hidden EINVAL
-The value of @var{class} is not valid.
-
address@hidden EPERM
-The call would set the nice value of a process that is owned by a
-different user than the calling process (i.e. the target process's
-real or effective uid does not match the calling process's effective
-uid) and the calling process does not have @code{CAP_SYS_NICE}
-permission.
-
address@hidden EACCES
-The call would lower the process's nice value and the process does not have
address@hidden permission.
address@hidden table
-
address@hidden deftypefun
-
-The arguments @var{class} and @var{id} together specify a set of
-processes in which you are interested.  These are the possible values of
address@hidden:
-
address@hidden @code
address@hidden sys/resource.h
address@hidden BSD
address@hidden PRIO_PROCESS
-This is one particular process.  The argument @var{id} is a process
address@hidden (@acronym{PID}).
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden PRIO_PGRP
-This is all the processes in a particular process-group.  The argument
address@hidden is a process-group @acronym{id} (pgid).
-
address@hidden sys/resource.h
address@hidden BSD
address@hidden PRIO_USER
-This is all the processes owned by a particular user (i.e. whose real
-uid indicates the user).  The argument @var{id} is a user @acronym{ID}
-(uid).
address@hidden vtable
-
-If the argument @var{id} is 0, it stands for the calling process, its
-process group or its owner (real uid), according to @var{class}.
-
address@hidden unistd.h
address@hidden BSD
address@hidden int nice (int @var{increment})
-Increment the nice value of the calling process by @var{increment}.
-The return value is the new nice value on success and @code{-1} on
-failure.  In the case of failure, @code{errno} will be set to the same
-values as for @code{setpriority}.
-
-
-Here is an equivalent definition of @code{nice}:
-
address@hidden
-int
-nice (int increment)
address@hidden
-  int result, old = getpriority (PRIO_PROCESS, 0);
-  result = setpriority (PRIO_PROCESS, 0, old + increment);
-  if (result != -1)
-      return old + increment;
-  else
-      return -1;
address@hidden
address@hidden smallexample
address@hidden deftypefun
-
-
address@hidden CPU Affinity
address@hidden Limiting Execution to Certain @acronym{CPU}s
-
-On a multiprocessor system, the operating system usually distributes
-the different processes that are runnable on all available
address@hidden in a way that allows the system to work most
-efficiently.  Which processes and threads run can be to some extent
-controlled with the scheduling functionality described in the last
-sections.  But which @acronym{CPU} finally executes which process or
-thread is not covered.
-
-There are a number of reasons why a program might want to have control
-over this aspect of the system as well:
-
address@hidden @bullet
address@hidden
-One thread or process is responsible for absolutely critical that
-which under no circumstances must be interrupted or hindered from
-making progress by other processes or threads using @acronym{CPU}
-resources.  In this case, the special process would be confined to a
address@hidden that no other process or thread is allowed to use.
-
address@hidden
-The access to certain resources (@acronym{RAM}, I/O ports) has
-different costs from different @acronym{CPU}s.  This is the case in
address@hidden (Nonuniform Memory Architecture) machines.  Preferably
-memory should be accessed locally but this requirement is usually not
-visible to the scheduler.  Therefore, forcing a process or thread to
-the @acronym{CPU}s that have local access to the mostly used memory
-helps to significantly boost the performance.
-
address@hidden
-In controlled run-times, resource allocation and bookkeeping work
-(like garbage collection) are performance-local to processors.  This
-can help to reduce locking costs if the resources do not have to be
-protected from concurrent accesses from different processors.
address@hidden itemize
-
-The @acronym{POSIX} standard up to this date is of not much help to
-solve this problem.  The Linux kernel provides a set of interfaces to
-allow specifying @emph{affinity sets} for a process.  The scheduler
-will schedule the thread or process on on @acronym{CPU}s specified by
-the affinity masks.  The interfaces that the @acronym{GNU} C Library
-define follow to some extent the Linux kernel interface.
-
address@hidden sched.h
address@hidden GNU
address@hidden {Data Type} cpu_set_t
-This data set is a bitset where each bit represents a @acronym{CPU}.
-How the system's @acronym{CPU}s are mapped to bits in the bitset is
-system dependent.  The data type has a fixed size; in the unlikely
-case that the number of bits are not sufficient to describe the
address@hidden of the system, a different interface has to be used.
-
-This type is a @acronym{GNU} extension and is defined in @file{sched.h}.
address@hidden deftp
-
-To manipulate the bitset, to set and reset bits, a number of macros
-are defined.  Some of the macros take a @acronym{CPU} number as a
-parameter.  Here it is important to never exceed the size of the
-bitset.  The following macro specifies the number of bits in the
address@hidden bitset:
-
address@hidden sched.h
address@hidden GNU
address@hidden Macro int CPU_SETSIZE
-The value of this macro is the maximum number of @acronym{CPU}s that
-can be handled with a @code{cpu_set_t} object.
address@hidden deftypevr
-
-The type @code{cpu_set_t} should be considered opaque; all
-manipulation should happen via the next four macros.
-
address@hidden sched.h
address@hidden GNU
address@hidden Macro void CPU_ZERO (cpu_set_t address@hidden)
-This macro initializes the @acronym{CPU} set @var{set} to be the empty set.
-
-This macro is a @acronym{GNU} extension and is defined in @file{sched.h}.
address@hidden deftypefn
-
address@hidden sched.h
address@hidden GNU
address@hidden Macro void CPU_SET (int @var{cpu}, cpu_set_t address@hidden)
-This macro adds @var{cpu} to the @acronym{CPU} set @var{set}.
-
-The @var{cpu} parameter must not have side effects, since it is
-evaluated more than once.
-
-This macro is a @acronym{GNU} extension and is defined in @file{sched.h}.
address@hidden deftypefn
-
address@hidden sched.h
address@hidden GNU
address@hidden Macro void CPU_CLR (int @var{cpu}, cpu_set_t address@hidden)
-This macro removes @var{cpu} from the @acronym{CPU} set @var{set}.
-
-The @var{cpu} parameter must not have side effects, since it is
-evaluated more than once.
-
-This macro is a @acronym{GNU} extension and is defined in @file{sched.h}.
address@hidden deftypefn
-
address@hidden sched.h
address@hidden GNU
address@hidden Macro int CPU_ISSET (int @var{cpu}, const cpu_set_t 
address@hidden)
-This macro returns a nonzero value (true) if @var{cpu} is a member
-of the @acronym{CPU} set @var{set}, and 0 (false) otherwise.
-
-The @var{cpu} parameter must not have side effects, since it is
-evaluated more than once.
-
-This macro is a @acronym{GNU} extension and is defined in @file{sched.h}.
address@hidden deftypefn
-
-
address@hidden bitsets can be constructed from scratch or the currently 
installed
-affinity mask can be retrieved from the system.
-
address@hidden sched.h
address@hidden GNU
address@hidden int sched_getaffinity (pid_t @var{pid}, cpu_set_t address@hidden)
-
-This function stores the @acronym{CPU} affinity mask for the process
-or thread with the @acronym{ID} @var{pid} in the memory pointed to by
address@hidden  If successful, the function always initializes all bits
-in the @code{cpu_set_t} object and returns 0.
-
-If @var{pid} does not correspond to a process or thread on the system
-or the function fails for some other reason, it returns @code{-1} and
address@hidden is set to represent the error condition.
-
address@hidden @code
address@hidden ESRCH
-No process or thread with the given @acronym{ID} is found.
-
address@hidden EFAULT
-The pointer @var{cpuset} is does not point to a valid object.
address@hidden table
-
-This function is a @acronym{GNU} extension and is declared in @file{sched.h}.
address@hidden deftypefun
-
-It is not portably possible to use this information to retrieve the
-information for different @acronym{POSIX} threads.  A separate
-interface must be provided for that.
-
address@hidden sched.h
address@hidden GNU
address@hidden int sched_setaffinity (pid_t @var{pid}, const cpu_set_t 
address@hidden)
-
-This function installs the affinity mask pointed to by @var{cpuset}
-for the process or thread with the @acronym{ID} @var{pid}.  If
-successful, the function returns 0 and the scheduler will in future
-take the affinity information into account.
-
-If the function fails, it will return @code{-1} and @code{errno} is
-set to the error code:
-
address@hidden @code
address@hidden ESRCH
-No process or thread with the given @acronym{ID} is found.
-
address@hidden EFAULT
-The pointer @var{cpuset} is does not point to a valid object.
-
address@hidden EINVAL
-The bitset is not valid.  This might mean that the affinity set might
-not leave a processor for the process or thread to run on.
address@hidden table
-
-This function is a @acronym{GNU} extension and is declared in @file{sched.h}.
address@hidden deftypefun
-
-
address@hidden Memory Resources
address@hidden Querying Memory-Available Resources
-
-The amount of memory available in the system and the way it is
-organized determines oftentimes the way programs can and have to work.
-For functions like @code{mmap}, it is necessary to know about the size
-of individual memory pages, and knowing how much memory is available
-enables a program to select appropriate sizes for, say, caches.
-Before we get into these details, a few words about memory subsystems
-in traditional Unix systems will be given.
-
address@hidden Memory Subsystem
address@hidden Overview of Traditional Unix Memory-Handling
-
address@hidden address space
address@hidden physical memory
address@hidden physical address
-Unix systems normally provide processes virtual-address spaces.  This
-means that the addresses of the memory regions do not have to
-correspond directly to the addresses of the actual physical memory
-that stores the data.  An extra level of indirection is introduced
-that translates virtual addresses into physical addresses.  This is
-normally done by the hardware of the processor.
-
address@hidden shared memory
-Using a virtual address space has several advantages.  The most
-important is process isolation.  The different processes running on
-the system cannot interfere directly with each other.  No process can
-write into the address space of another process (except when shared
-memory is used, in which case this is desired and controlled).
-
-Another advantage of virtual memory is that the address space the
-processes see can actually be larger than the physical memory
-available.  The physical memory can be extended by storage on an
-external media where the content of currently unused memory regions is
-stored.  The address translation can then intercept accesses to these
-memory regions and make memory content available again by loading the
-data back into memory.  This concept makes it necessary that programs
-that have to use lots of memory know the difference between available
-virtual-address space and available physical memory.  If the working
-set of virtual memory of all the processes is larger than the
-available physical memory the system will slow down dramatically due
-to constant swapping of memory content from the memory to the storage
-media and back.  This is called @dfn{thrashing}.
address@hidden thrashing
-
address@hidden memory page
address@hidden page, memory
-A final aspect of virtual memory that is important and follows from
-what is said in the last paragraph is the granularity of the
-virtual-address space handling.  Although the virtual-address handling
-stores memory content externally, it cannot do this on a byte-by-byte
-basis.  The administrative overhead does not allow this (not to
-mention the processor hardware).  Instead, several thousand bytes are
-handled together and form a @dfn{page}.  The size of each page is
-always a power of 2 bytes.  The smallest page size in use today is
-4096, with 8192, 16384 and 65536 being other popular sizes.
-
address@hidden Query Memory Parameters
address@hidden How to Get Information About the Memory Subsystem?
-
-It is essential in several situations to know the page size of the
-virtual memory the process sees. Some programming interfaces (e.g.,
address@hidden; @pxref{Memory-Mapped I/O}) require the user to provide
-information adjusted to the page size.  In the case of @code{mmap} it
-is necessary to provide a length argument that is a multiple of the
-page size.  Another place where knowledge about the page size is
-useful is in memory allocation.  If you allocate pieces of memory in
-larger chunks that are then subdivided by the application code, it is
-useful to adjust the size of the larger blocks to the page size.  If
-the total memory requirement for the block is close to (but not larger
-than) a multiple of the page size, the kernel's memory-handling can
-work more effectively since it only has to allocate memory pages that
-are fully used.  To do this optimization, it is necessary to know a
-bit about the memory allocator, which will require a bit of memory
-itself for each block, and this overhead must not push the total size
-over the page size multiple.
-
-The page size traditionally was a compile-time constant.  But recent
-development of processors changed this.  Processors now support
-different page sizes, and they can possibly even vary among different
-processes on the same system.  Therefore, the system should be queried
-at run-time about the current page-size, and no assumptions (except
-about it being a power of 2) should be made.
-
address@hidden _SC_PAGESIZE
-The correct interface to query about the page size is @code{sysconf}
-(@pxref{Sysconf Definition}) with the parameter @code{_SC_PAGESIZE}.
-There is a much older interface available, too.
-
address@hidden unistd.h
address@hidden BSD
address@hidden int getpagesize (void)
-The @code{getpagesize} function returns the page size of the process.
-This value is fixed for the runtime of the process but can vary in
-different runs of the application.
-
-The function is declared in @file{unistd.h}.
address@hidden deftypefun
-
-Widely available on @w{System V}-derived systems is a method to get
-information about the physical memory the system has.  The call:
-
address@hidden _SC_PHYS_PAGES
address@hidden sysconf
address@hidden
-  sysconf (_SC_PHYS_PAGES)
address@hidden smallexample
-
address@hidden
-returns the total number of pages of physical the system has.
-This does not mean all this memory is available.  This information can
-be found using:
-
address@hidden _SC_AVPHYS_PAGES
address@hidden sysconf
address@hidden
-  sysconf (_SC_AVPHYS_PAGES)
address@hidden smallexample
-
-These two values help to optimize applications.  The value returned
-for @code{_SC_AVPHYS_PAGES} is the amount of memory the application
-can use without hindering any other process (given that no other
-process increases its memory usage).  The value returned for
address@hidden is more or less a hard limit for the working
-set.  If all applications together constantly use more than that
-amount of memory, the system is in trouble.
-
-The @acronym{GNU} C Library provides two functions in addition to the
-ways already described to get this information.  They are declared in
-the file @file{sys/sysinfo.h}.  Programmers should prefer to use the
address@hidden method described above.
-
address@hidden sys/sysinfo.h
address@hidden GNU
address@hidden {long int} get_phys_pages (void)
-The @code{get_phys_pages} function returns the total number of pages
-of physical memory the system has.  To get the amount of memory, this
-number has to be multiplied by the page size.
-
-This function is a @acronym{GNU} extension.
address@hidden deftypefun
-
address@hidden sys/sysinfo.h
address@hidden GNU
address@hidden {long int} get_avphys_pages (void)
-The @code{get_phys_pages} function returns the number of available
-pages of physical memory the system has.  To get the amount of memory,
-this number has to be multiplied by the page size.
-
-This function is a @acronym{GNU} extension.
address@hidden deftypefun
-
address@hidden Processor Resources
address@hidden Learn About the Processors Available
-
-The use of threads or processes with shared memory allows an
-application to take advantage of all the processing power a system can
-provide.  If the task can be parallelized, the optimal way to write an
-application is to have at any time as many processes running as there
-are processors.  To determine the number of processors available to
-the system you can run:
-
address@hidden _SC_NPROCESSORS_CONF
address@hidden sysconf
address@hidden
-  sysconf (_SC_NPROCESSORS_CONF)
address@hidden smallexample
-
address@hidden
-which returns the number of processors the operating system
-configured.  But it might be possible for the operating system to
-disable individual processors, and so the call:
-
address@hidden _SC_NPROCESSORS_ONLN
address@hidden sysconf
address@hidden
-  sysconf (_SC_NPROCESSORS_ONLN)
address@hidden smallexample
-
address@hidden
-returns the number of processors that are currently in-line (i.e.,
-available).
-
-The @acronym{GNU} C Library also provides functions to get this
-information directly.  The functions are declared in
address@hidden/sysinfo.h}.
-
address@hidden sys/sysinfo.h
address@hidden GNU
address@hidden int get_nprocs_conf (void)
-The @code{get_nprocs_conf} function returns the number of processors the
-operating system configured.
-
-This function is a @acronym{GNU} extension.
address@hidden deftypefun
-
address@hidden sys/sysinfo.h
address@hidden GNU
address@hidden int get_nprocs (void)
-The @code{get_nprocs} function returns the number of available processors.
-
-This function is a @acronym{GNU} extension.
address@hidden deftypefun
-
address@hidden load average
-Before starting more threads, it should be checked whether the
-processors are not already overused.  Unix systems calculate something
-called the @dfn{load average}.  This is a number indicating how many
-processes were running.  This number is average over different periods
-of times (normally 1, 5 and 15 minutes).
-
address@hidden stdlib.h
address@hidden BSD
address@hidden int getloadavg (double @var{loadavg}[], int @var{nelem})
-This function gets the 1-, 5- and 15-minute load averages of the
-system. The values are placed in @var{loadavg}.  @code{getloadavg}
-will place at most @var{nelem} elements into the array but never more
-than three elements.  The return value is the number of elements
-written to @var{loadavg}, or -1 on error.
-
-This function is declared in @file{stdlib.h}.
address@hidden deftypefun
-
address@hidden Syslog, Mathematics, Low-Level Terminal Interface, Top
address@hidden %MENU% System logging and messaging
address@hidden Syslog
-
-
-This chapter describes facilities for issuing and logging messages of
-system-administration interest.  This chapter has nothing to do with
-programs issuing messages to their own users or keeping private
address@hidden would typically do that with the facilities
-described in Loosemore et al., ``Input/Output on Streams'' (see
-chap. 1, n. 1).}
-
-Most systems have a facility called ``Syslog'' that allows programs to
-submit messages of interest to system administrators and can be
-configured to pass these messages on in various ways, such as printing
-on the console, mailing to a particular person, or recording in a log
-file for future reference.
-
-A program uses the facilities in this chapter to submit such messages.
-
address@hidden Overview of Syslog
address@hidden Overview of Syslog
-
-System administrators have to deal with lots of different kinds of
-messages from a plethora of subsystems within each system, and usually
-lots of systems as well.  For example, an @acronym{FTP} server might
-report every connection it gets.  The kernel might report hardware
-failures on a disk drive.  A @acronym{DNS} server might report usage
-statistics at regular intervals.
-
-Some of these messages need to be brought to a system administrator's
-attention immediately.  And it may not be just any system
-administrator---there may be a particular system administrator who
-deals with a particular kind of message.  Other messages just need to
-be recorded for future reference if there is a problem.  Still others
-may need to have information extracted from them by an automated
-process that generates monthly reports.
-
-To deal with these messages, most Unix systems have a facility called
-"Syslog."  It is generally based on a daemon called ``Syslogd''
-Syslogd listens for messages on a Unix domain socket named
address@hidden/dev/log}.  Based on classification information in the messages
-and its configuration file (usually @file{/etc/syslog.conf}), Syslogd
-routes them in various ways.  Some of the popular routings are
-
address@hidden @bullet
address@hidden
-Write to the system console.
address@hidden
-Mail to a specific user.
address@hidden
-Write to a log file.
address@hidden
-Pass to another daemon.
address@hidden
-Discard.
address@hidden itemize
-
-Syslogd can also handle messages from other systems.  It listens on the
address@hidden @acronym{UDP} port as well as the local socket for messages.
-
-Syslog can handle messages from the kernel itself.  But the kernel
-doesn't write to @file{/dev/log}; rather, another daemon (sometimes
-called ``Klogd'') extracts messages from the kernel and passes them on to
-Syslog as any other process would (and it properly identifies them as
-messages from the kernel).
-
-Syslog can even handle messages that the kernel issued before Syslogd
-or Klogd was running.  A Linux kernel, for example, stores start-up
-messages in a kernel message ring and they are normally still there
-when Klogd later starts up.  Assuming Syslogd is running by the time
-Klogd starts, Klogd then passes everything in the message ring to it.
-
-In order to classify messages for disposition, Syslog requires any process
-that submits a message to it to provide two pieces of classification
-information with it:
-
address@hidden @bullet
-
address@hidden @dfn{facility}
-This identifies who submitted the message.  There are a small number
-of facilities defined.  The kernel, the mail subsystem, and an
address@hidden server are examples of recognized facilities.  For the
-complete list, see @ref{syslog; vsyslog}.  Keep in mind that these are
-essentially arbitrary classifications.  ``Mail subsystem'' doesn't
-have any more meaning than the system administrator gives to it.
-
address@hidden @dfn{priority}
-This tells how important the content of the message is.  Examples of
-defined priority values are: debug, informational, warning, critical.
-For the complete list, see @ref{syslog; vsyslog}.  Except for
-the fact that the priorities have a defined order, the meaning of each
-of these priorities is entirely determined by the system administrator.
-
address@hidden itemize
-
-A @dfn{facility/priority} is a number that indicates both the facility
-and the priority.
-
-This terminology is not universal.  Some people use @dfn{level} to
-refer to the priority and @dfn{priority} to refer to the combination
-of facility and priority.  A Linux kernel has a concept of a message
address@hidden, which corresponds both to a Syslog priority and to a
-Syslog facility/priority (It can be both because the facility code for
-the kernel is 0, and that makes priority and facility/priority the
-same value).
-
-The @acronym{GNU} C Library provides functions to submit messages to
-Syslog.  They do it by writing to the @file{/dev/log} socket
-(@pxref{Submitting Syslog Messages}).
-
-The @acronym{GNU} C Library functions only work to submit messages to the 
Syslog
-facility on the same system.  To submit a message to the Syslog facility
-on another system, use the socket I/O functions to write a @acronym{UDP} 
datagram
-to the @code{syslog} @acronym{UDP} port on that system (@pxref{Sockets}).
-
-
address@hidden Submitting Syslog Messages
address@hidden Submitting Syslog Messages
-
-The @acronym{GNU} C Library provides functions to submit messages to the Syslog
-facility.
-
-These functions only work to submit messages to the Syslog facility on
-the same system.  To submit a message to the Syslog facility on another
-system, use the socket I/O functions to write a @acronym{UDP} datagram to the
address@hidden @acronym{UDP} port on that system (@pxref{Sockets}).
-
-
-
address@hidden openlog
address@hidden openlog
-
-The symbols referred to in this section are declared in the file
address@hidden
-
address@hidden syslog.h
address@hidden BSD
address@hidden void openlog (const char address@hidden, int @var{option}, int 
@var{facility})
-
address@hidden opens or reopens a connection to Syslog in preparation
-for submitting messages.
-
address@hidden is an arbitrary identification string that future
address@hidden invocations will prefix to each message.  This is
-intended to identify the source of the message, and people
-conventionally set it to the name of the program that will submit the
-messages.
-
-If @var{ident} is NULL, or if @code{openlog} is not called, the default
-identification string used in Syslog messages will be the program name,
-taken from argv[0].
-
-Please note that the string pointer @var{ident} will be retained
-internally by the Syslog routines.  You must not free the memory that
address@hidden points to.  It is also dangerous to pass a reference to an
-automatic variable since leaving the scope would mean ending the
-lifetime of the variable.  If you want to change the @var{ident} string,
-you must call @code{openlog} again; overwriting the string pointed to by
address@hidden is not threadsafe.
-
-You can cause the Syslog routines to drop the reference to @var{ident} and
-go back to the default string (the program name taken from argv[0]), by
-calling @code{closelog} (@pxref{closelog}).
-
-In particular, if you are writing code for a shared library that might
-get loaded and then unloaded (like a @acronym{PAM} module), and you
-use @code{openlog}, you must call @code{closelog} before any point
-where your library might get unloaded, as in this example:
-
address@hidden
-#include <syslog.h>
-
-void
-shared_library_function (void)
address@hidden
-  openlog ("mylibrary", option, priority);
-
-  syslog (LOG_INFO, "shared library has been invoked");
-
-  closelog ();
address@hidden
address@hidden smallexample
-
-Without the call to @code{closelog}, future invocations of
address@hidden by the program using the shared library may crash, if
-the library gets unloaded and the memory containing the string
address@hidden"mylibrary"} becomes unmapped.  This is a limitation of the
address@hidden Syslog interface.
-
address@hidden may or may not open the @file{/dev/log} socket, depending
-on @var{option}.  If it does, it tries to open it and connect it as a
-stream socket.  If that doesn't work, it tries to open it and connect it
-as a datagram socket.  The socket has the ``Close on Exec'' attribute,
-so the kernel will close it if the process performs an exec.
-
-You don't have to use @code{openlog}.  If you call @code{syslog} without
-having called @code{openlog}, @code{syslog} just opens the connection
-implicitly and uses defaults for the information in @var{ident} and
address@hidden
-
address@hidden is a bit string, with the bits as defined by the
-following single-bit masks:
-
address@hidden @code
address@hidden LOG_PERROR
-If on, @code{openlog} sets up the connection so that any @code{syslog}
-on this connection writes its message to the calling process's
-standard error stream, in addition to submitting it to Syslog.  If
-off, @code{syslog} does not write the message to standard error.
-
address@hidden LOG_CONS
-If on, @code{openlog} sets up the connection so that a @code{syslog} on
-this connection that fails to submit a message to Syslog writes the
-message instead to system console.  If off, @code{syslog} does not write
-to the system console (but of course Syslog may write messages it
-receives to the console).
-
address@hidden LOG_PID
-When on, @code{openlog} sets up the connection so that a @code{syslog}
-on this connection inserts the calling process's process @acronym{ID}
-(@acronym{PID}) into the message.  When off, @code{openlog} does not
-insert the @acronym{PID}.
-
address@hidden LOG_NDELAY
-When on, @code{openlog} opens and connects the @file{/dev/log} socket.
-When off, a future @code{syslog} call must open and connect the socket.
-
address@hidden note:}  In early systems, the sense of this bit was
-exactly the opposite.
-
address@hidden LOG_ODELAY
-This bit does nothing.  It exists for backward compatibility.
-
address@hidden table
-
-If any other bit in @var{options} is on, the result is undefined.
-
address@hidden is the default facility-code for this connection.  A
address@hidden on this connection that specifies default facility
-causes this facility to be associated with the message.  See
address@hidden for possible values.  A value of 0 means the default
-default, which is @code{LOG_USER}.
-
-If a Syslog connection is already open when you call @code{openlog},
address@hidden ``reopens'' the connection.  Reopening is like opening
-except that if you specify 0 for the default facility code, the
-default facility code simply remains unchanged and if you specify
-LOG_NDELAY and the socket is already open and connected, @code{openlog}
-just leaves it that way.
-
address@hidden There is a bug in closelog() (glibc 2.1.3) wherein it does not 
reset the
address@hidden default log facility to LOG_USER, which means the default 
default log
address@hidden facility could be whatever the default log facility was for a 
previous
address@hidden Syslog connection.  I have documented what the function should 
be rather
address@hidden than what it is because I think if anyone ever gets concerned, 
the code
address@hidden will change.
-
address@hidden deftypefun
-
-
address@hidden syslog; vsyslog
address@hidden syslog, vsyslog
-
-The symbols referred to in this section are declared in the file
address@hidden
-
address@hidden syslog() is implemented as a call to vsyslog().
address@hidden syslog.h
address@hidden BSD
address@hidden void syslog (int @var{facility_priority}, char address@hidden, 
...)
-
address@hidden submits a message to the Syslog facility.  It does this by
-writing to the Unix domain socket @file{/dev/log}.
-
address@hidden submits the message with the facility and priority indicated
-by @var{facility_priority}.  The macro @code{LOG_MAKEPRI} generates a
-facility/priority from a facility and a priority, as in the following
-example:
-
address@hidden
-LOG_MAKEPRI(LOG_USER, LOG_WARNING)
address@hidden smallexample
-
-The possible values for the facility code are (macros):
-
address@hidden Internally, there is also LOG_KERN, but LOG_KERN == 0, which 
means
address@hidden if you try to use it here, just selects default.
-
address@hidden @code
address@hidden LOG_USER
-This is a miscellaneous user process.
address@hidden LOG_MAIL
-This is mail.
address@hidden LOG_DAEMON
-This is a miscellaneous system daemon.
address@hidden LOG_AUTH
-This is security (authorization).
address@hidden LOG_SYSLOG
-This is syslog.
address@hidden LOG_LPR
-This is the central printer.
address@hidden LOG_NEWS
-This is network news (e.g. Usenet).
address@hidden LOG_UUCP
-This is @sc{uucp}.
address@hidden LOG_CRON
-This is cron and At.
address@hidden LOG_AUTHPRIV
-This is private security (authorization).
address@hidden LOG_FTP
-This is an ftp server.
address@hidden LOG_LOCAL0
-This is locally defined.
address@hidden LOG_LOCAL1
-This is locally defined.
address@hidden LOG_LOCAL2
-This is locally defined.
address@hidden LOG_LOCAL3
-This is locally defined.
address@hidden LOG_LOCAL4
-This is locally defined.
address@hidden LOG_LOCAL5
-This is locally defined.
address@hidden LOG_LOCAL6
-This is locally defined.
address@hidden LOG_LOCAL7
-This is locally defined.
address@hidden vtable
-
-Results are undefined if the facility code is anything else.
-
address@hidden recognizes one other facility code---that of the kernel.
-But you can't specify that facility code with these functions.  If you
-try, it looks the same to @code{syslog} as if you are requesting the
-default facility.  But you wouldn't want to anyway, because any
-program that uses the @acronym{GNU} C Library is not the kernel.
-
-You can use just a priority code as @var{facility_priority}.  In that
-case, @code{syslog} assumes the default facility established when the
-Syslog connection was opened (@pxref{Syslog Example}).
-
-The possible values for the priority code are (macros):
-
address@hidden @code
address@hidden LOG_EMERG
-The message says the system is unusable.
address@hidden LOG_ALERT
-Action on the message must be taken immediately.
address@hidden LOG_CRIT
-The message states a critical condition.
address@hidden LOG_ERR
-The message describes an error.
address@hidden LOG_WARNING
-The message is a warning.
address@hidden LOG_NOTICE
-The message describes a normal but important event.
address@hidden LOG_INFO
-The message is purely informational.
address@hidden LOG_DEBUG
-The message is only for debugging purposes.
address@hidden vtable
-
-Results are undefined if the priority code is anything else.
-
-If the process does not presently have a Syslog connection open (i.e.
-it did not call @code{openlog}), @code{syslog} implicitly opens the
-connection the same as @code{openlog} would, with the defaults for
-information that would otherwise be included in an @code{openlog}
-call. The default identification-string is the program name.  The
-default default facility is @code{LOG_USER}.  The default for all the
-connection options in @var{options} is as if those bits were off.
address@hidden leaves the Syslog connection open.
-
-If the @file{dev/log} socket is not open and connected, @code{syslog}
-opens and connects it, the same as @code{openlog} with the
address@hidden option would.
-
address@hidden leaves @file{/dev/log} open and connected unless its
-attempt to send the message failed, in which case @code{syslog} closes
-it, with the hope that a future implicit open will restore the Syslog
-connection to a usable state.
-
-Here is an example:
-
address@hidden
-
-#include <syslog.h>
-syslog (LOG_MAKEPRI(LOG_LOCAL1, LOG_ERROR),
-        "Unable to make network connection to %s.  Error=%m", host);
-
address@hidden smallexample
-
address@hidden deftypefun
-
-
address@hidden syslog.h
address@hidden BSD
address@hidden void vsyslog (int @var{facility_priority}, char address@hidden, 
va_list arglist)
-
-This is functionally identical to @code{syslog}, with the
address@hidden variable length argument.
-
address@hidden deftypefun
-
-
address@hidden closelog
address@hidden closelog
-
-The symbols referred to in this section are declared in the file
address@hidden
-
address@hidden syslog.h
address@hidden BSD
address@hidden void closelog (void)
-
address@hidden closes the current Syslog connection, if there is one.
-This includes closing the @file{dev/log} socket, if it is open.
address@hidden also sets the identification string for Syslog messages
-back to the default, if @code{openlog} was called with a non-NULL argument
-to @var{ident}.  The default identification string is the program name
-taken from argv[0].
-
-If you are writing shared library code that uses @code{openlog} to
-generate custom syslog output, you should use @code{closelog} to drop the
address@hidden C Library's internal reference to the @var{ident} pointer when 
you are
-done
-(@pxref{openlog}).
-
address@hidden does not flush any buffers.  You do not have to call
address@hidden before reopening a Syslog connection with @code{initlog}.
-Syslog connections are automatically closed on exec or exit.
-
address@hidden deftypefun
-
-
address@hidden setlogmask
address@hidden setlogmask
-
-The symbols referred to in this section are declared in the file
address@hidden
-
address@hidden syslog.h
address@hidden BSD
address@hidden int setlogmask (int @var{mask})
-
address@hidden sets a mask (the ``logmask'') that determines which
-future @code{syslog} calls should be ignored.  If a program has not
-called @code{setlogmask}, @code{syslog} doesn't ignore any calls.  You
-can use @code{setlogmask} to specify that messages of particular
-priorities shall be ignored in the future.
-
-A @code{setlogmask} call overrides any previous @code{setlogmask} call.
-
-Note that the logmask exists entirely independently of opening and
-closing of Syslog connections.
-
-Setting the logmask has a similar effect to, but is not the same as,
-configuring Syslog.  The Syslog configuration may cause Syslog to
-discard certain messages it receives, but the logmask causes certain
-messages never to get submitted to Syslog in the first place.
-
address@hidden is a bit string with 1 bit corresponding to each of the
-possible message priorities.  If the bit is on, @code{syslog} handles
-messages of that priority normally.  If it is off, @code{syslog}
-discards messages of that priority.  Use the message priority macros
-described in @ref{syslog; vsyslog} and the @code{LOG_MASK} to construct
-an appropriate @var{mask} value, as in this example:
-
address@hidden
-LOG_MASK(LOG_EMERG) | LOG_MASK(LOG_ERROR)
address@hidden smallexample
-
-or:
-
address@hidden
-~(LOG_MASK(LOG_INFO))
address@hidden smallexample
-
-There is also a @code{LOG_UPTO} macro, which generates a mask with the bits
-on for a certain priority and all priorities above it:
-
address@hidden
-LOG_UPTO(LOG_ERROR)
address@hidden smallexample
-
-The unfortunate naming of the macro is due to the fact that internally,
-higher numbers are used for lower message priorities.
-
address@hidden deftypefun
-
-
address@hidden Syslog Example
address@hidden Syslog Example
-
-Here is an example of @code{openlog}, @code{syslog} and
address@hidden:
-
-This example sets the logmask so that debug and informational messages
-get discarded without ever reaching Syslog.  So the second @code{syslog}
-in the example does nothing.
-
address@hidden
-#include <syslog.h>
-
-setlogmask (LOG_UPTO (LOG_NOTICE));
-
-openlog ("exampleprog", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1);
-
-syslog (LOG_NOTICE, "Program started by User %d", getuid ());
-syslog (LOG_INFO, "A tree falls in a forest");
-
-closelog ();
-
address@hidden smallexample
-
address@hidden Nonlocal Exits
address@hidden %MENU% Jumping out of nested function calls
address@hidden Nonlocal Exits
address@hidden nonlocal exits
address@hidden long jumps
-
-Sometimes when your program detects an unusual situation inside a deeply
-nested set of function calls, you would like to be able to immediately
-return to an outer level of control.  This section describes how you can
-do such @dfn{nonlocal exits} using the @code{setjmp} and @code{longjmp}
-functions.
-
address@hidden Nonlocal Intro
address@hidden Introduction to Nonlocal Exits
-
-As an example of a situation where a nonlocal exit can be useful,
-suppose you have an interactive program that has a ``main loop'' that
-prompts for and executes commands.  Suppose the ``read'' command reads
-input from a file, doing some lexical analysis and parsing of the
-input while processing it.  If a low-level input error is detected, it
-would be useful to be able to return immediately to the ``main loop''
-instead of having to make each of the lexical analysis, parsing and
-processing phases all have to explicitly deal with error situations
-initially detected by nested calls.
-
-On the other hand, if each of these phases has to do a substantial
-amount of clean-up when it exits---such as closing files, deallocating
-buffers or other data structures, etc.---then it can be more
-appropriate to do a normal return and have each phase do its own
-clean-up, because a nonlocal exit would bypass the intervening phases
-and their associated clean-up code entirely.  Alternatively, you could
-use a nonlocal exit but do the clean-up explicitly either before or
-after returning to the ``main loop''.
-
-In some ways, a nonlocal exit is similar to using the @samp{return}
-statement to return from a function.  But while @samp{return} abandons
-only a single function call, transferring control back to the point at
-which it was called, a nonlocal exit can potentially abandon many
-levels of nested function calls.
-
-You identify return points for nonlocal exits by calling the function
address@hidden  This function saves information about the execution
-environment in which the call to @code{setjmp} appears in an object of
-type @code{jmp_buf}.  Execution of the program continues normally after
-the call to @code{setjmp}, but if an exit is later made to this return
-point by calling @code{longjmp} with the corresponding @address@hidden
-object, control is transferred back to the point where @code{setjmp} was
-called.  The return value from @code{setjmp} is used to distinguish
-between an ordinary return and a return made by a call to
address@hidden, so calls to @code{setjmp} usually appear in an @samp{if}
-statement.
-
-Here is how the example program described above might be set up:
-
address@hidden
-#include <setjmp.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-jmp_buf main_loop;
-
-void 
-abort_to_main_loop (int status)
address@hidden
-  longjmp (main_loop, status);
address@hidden
-
-int
-main (void)
address@hidden
-  while (1)
-    if (setjmp (main_loop))
-      puts ("Back at main loop....");
-    else
-      do_command ();
address@hidden
-
-
-void 
-do_command (void)
address@hidden
-  char buffer[128];
-  if (fgets (buffer, 128, stdin) == NULL)
-    abort_to_main_loop (-1);
-  else
-    exit (EXIT_SUCCESS);
address@hidden
-
address@hidden smallexample
-
-The function @code{abort_to_main_loop} causes an immediate transfer of
-control back to the main loop of the program, no matter where it is
-called from.
-
-The flow of control inside the @code{main} function may appear a little
-mysterious at first, but it is actually a common idiom with
address@hidden  A normal call to @code{setjmp} returns 0, so the
-``else'' clause of the conditional is executed.  If
address@hidden is called somewhere within the execution of
address@hidden, then it actually appears as if the @emph{same} call
-to @code{setjmp} in @code{main} were returning a second time with a value
-of @code{-1}.
-
address@hidden 250
-So, the general pattern for using @code{setjmp} looks something like:
-
address@hidden
-if (setjmp (@var{buffer}))
-  /* @r{Code to clean up after premature return.} */
-  @dots{}
-else
-  /* @r{Code to be executed normally after setting up the return point.} */
-  @dots{}
address@hidden smallexample
-
address@hidden Nonlocal Details, Nonlocal Exits and Signals, Nonlocal Intro, 
Nonlocal Exits
address@hidden Details of Nonlocal Exits
-
-Here are the details on the functions and data structures used for
-performing nonlocal exits.  These facilities are declared in
address@hidden
address@hidden setjmp.h
-
address@hidden setjmp.h
address@hidden ISO
address@hidden {Data Type} jmp_buf
-Objects of type @code{jmp_buf} hold the state information to
-be restored by a nonlocal exit.  The contents of a @code{jmp_buf}
-identify a specific place to return to.
address@hidden deftp
-
address@hidden setjmp.h
address@hidden ISO
address@hidden Macro int setjmp (jmp_buf @var{state})
-When called normally, @code{setjmp} stores information about the
-execution state of the program in @var{state} and returns 0.  If
address@hidden is later used to perform a nonlocal exit to this
address@hidden, @code{setjmp} returns a nonzero value.
address@hidden deftypefn
-
address@hidden setjmp.h
address@hidden ISO
address@hidden void longjmp (jmp_buf @var{state}, int @var{value})
-This function restores the current execution to the state saved in
address@hidden, and continues execution from the call to @code{setjmp}
-that established that return point.  Returning from @code{setjmp} by
-means of @code{longjmp} returns the @var{value} argument that was
-passed to @code{longjmp}, rather than @code{0}.  (But if @var{value}
-is given as @code{0}, @code{setjmp} returns @code{1}.
address@hidden deftypefun
-
-There are a lot of obscure but important restrictions on the use of
address@hidden and @code{longjmp}.  Most of these restrictions are
-present because nonlocal exits require a fair amount of magic on the
-part of the C compiler and can interact with other parts of the language
-in strange ways.
-
-The @code{setjmp} function is actually a macro without an actual
-function definition, so you shouldn't try to @samp{#undef} it or take
-its address.  In addition, calls to @code{setjmp} are safe in only the
-following contexts:
-
address@hidden @bullet
address@hidden
-As the test expression of a selection or iteration statement (such as
address@hidden, @samp{switch} or @samp{while})
-
address@hidden
-As one operand of an equality or comparison operator that appears as
-the test expression of a selection or iteration statement---the other
-operand must be an integer constant expression
-
address@hidden
-As the operand of a unary @samp{!} operator, that appears as the test
-expression of a selection or iteration statement
-
address@hidden
-By itself as an expression statement
address@hidden itemize
-
-Return points are valid only during the dynamic extent of the function
-that called @code{setjmp} to establish them.  If you @code{longjmp} to
-a return point that was established in a function that has already
-returned, unpredictable and disastrous things are likely to happen.
-
-You should use a nonzero @var{value} argument to @code{longjmp}.  While
address@hidden refuses to pass back a zero argument as the return value
-from @code{setjmp}, this is intended as a safety net against accidental
-misuse and is not really good programming style.
-
-When you perform a nonlocal exit, accessible objects generally retain
-whatever values they had at the time @code{longjmp} was called.  The
-exception is that the values of automatic variables local to the
-function containing the @code{setjmp} call that have been changed since
-the call to @code{setjmp} are indeterminate, unless you have declared
-them @code{volatile}.
-
address@hidden Nonlocal Exits and Signals, System V contexts, Nonlocal Details, 
Nonlocal Exits
address@hidden Nonlocal Exits and Signals
-
-In @acronym{BSD} Unix systems, @code{setjmp} and @code{longjmp} also save and
-restore the set of blocked signals (@pxref{Blocking Signals}).  However,
-the @acronym{POSIX}.1 standard requires @code{setjmp} and @code{longjmp} not to
-change the set of blocked signals, and provides an additional pair of
-functions (@code{sigsetjmp} and @code{siglongjmp}) to get the @acronym{BSD}
-behavior.
-
-The behavior of @code{setjmp} and @code{longjmp} in the @acronym{GNU} library 
is
-controlled by feature-test macros (@pxref{Feature-Test Macros}).  The
-default in the @acronym{GNU} system is the @acronym{POSIX}.1 behavior rather 
than the @acronym{BSD}
-behavior.
-
-The facilities in this section are declared in the header file
address@hidden
address@hidden setjmp.h
-
address@hidden setjmp.h
address@hidden POSIX.1
address@hidden {Data Type} sigjmp_buf
-This is similar to @code{jmp_buf}, except that it can also store state
-information about the set of blocked signals.
address@hidden deftp
-
address@hidden setjmp.h
address@hidden POSIX.1
address@hidden int sigsetjmp (sigjmp_buf @var{state}, int @var{savesigs})
-This is similar to @code{setjmp}.  If @var{savesigs} is nonzero, the set
-of blocked signals is saved in @var{state} and will be restored if a
address@hidden is later performed with this @var{state}.
address@hidden deftypefun
-
address@hidden setjmp.h
address@hidden POSIX.1
address@hidden void siglongjmp (sigjmp_buf @var{state}, int @var{value})
-This is similar to @code{longjmp} except for the type of its @var{state}
-argument.  If the @code{sigsetjmp} call that set this @var{state} used a
-nonzero @var{savesigs} flag, @code{siglongjmp} also restores the set of
-blocked signals.
address@hidden deftypefun
-
address@hidden System V contexts,, Nonlocal Exits and Signals, Nonlocal Exits
address@hidden Complete Context Control
-
-The Unix standard provides one more set of functions to control the
-execution path, and these functions are more powerful than those
-discussed in this chapter so far.  These function were part of the
-original @w{System V} @acronym{API} and by this route were added to
-the Unix @acronym{API}.  Besides on branded Unix implementations,
-these interfaces are not widely available.  Not all platforms and/or
-architectures the @acronym{GNU} C Library is available on provide this
-interface.  Use @file{configure} to detect the availability.
-
-Similar to the @code{jmp_buf} and @code{sigjmp_buf} types used for the
-variables to contain the state of the @code{longjmp} functions, the
-interfaces of interest here have an appropriate type as well.  Objects
-of this type are normally much larger since more information is
-contained.  The type is also used in a few more places, as we will
-see.  The types and functions described in this section are all
-defined and declared respectively in the @file{ucontext.h} header
-file.
-
address@hidden ucontext.h
address@hidden SVID
address@hidden {Data Type} ucontext_t
-
-The @code{ucontext_t} type is defined as a structure with as least the
-following elements:
-
address@hidden @code
address@hidden ucontext_t *uc_link
-This is a pointer to the next context structure that is used if the
-context described in the current structure returns.
-
address@hidden sigset_t uc_sigmask
-This is the set of signals that are blocked when this context is used.
-
address@hidden stack_t uc_stack
-This is the stack used for this context.  The value need not be (and
-normally is not) the stack pointer (@pxref{Signal Stack}).
-
address@hidden mcontext_t uc_mcontext
-This element contains the actual state of the process.  The
address@hidden type is also defined in this header but the definition
-should be treated as opaque.  Any use of knowledge of the type makes
-applications less portable.
-
address@hidden table
address@hidden deftp
-
-Objects of this type have to be created by the user.  The initialization
-and modification happens through one of the following functions:
-
address@hidden ucontext.h
address@hidden SVID
address@hidden int getcontext (ucontext_t address@hidden)
-The @code{getcontext} function initializes the variable pointed to by
address@hidden with the context of the calling thread.  The context contains
-the content of the registers, the signal mask, and the current stack.
-Executing the contents would start at the point where the
address@hidden call just returned.
-
-The function returns @code{0} if successful.  Otherwise, it returns
address@hidden and sets @var{errno} accordingly.
address@hidden deftypefun
-
-The @code{getcontext} function is similar to @code{setjmp}, but it
-does not provide an indication of whether the function returns for the
-first time or whether the initialized context was used, and the
-execution is resumed at just that point.  If this is necessary, the
-user has to determine this herself.  This must be done carefully,
-since the context contains registers that might contain register
-variables.  This is a good situation in which to define variables with
address@hidden
-
-Once the context variable is initialized, it can be used as is or it
-can be modified.  The latter is normally done to implement co-routines
-or similar constructs.  The @code{makecontext} function is what has to
-be used to do that.
-
address@hidden ucontext.h
address@hidden SVID
address@hidden void makecontext (ucontext_t address@hidden, void 
(address@hidden) (void), int @var{argc}, @dots{})
-
-The @var{ucp} parameter passed to @code{makecontext} should be
-initialized by a call to @code{getcontext}.  The context will be
-modified so that if the context is resumed, it will start by calling
-the function @code{func}, which gets @var{argc} integer arguments
-passed.  The integer arguments that are to be passed should follow the
address@hidden parameter in the call to @code{makecontext}.
-
-Before the call to this function, the @code{uc_stack} and
address@hidden element of the @var{ucp} structure should be
-initialized.  The @code{uc_stack} element describes the stack that is
-used for this context.  No two contexts that are used at the same time
-should use the same memory region for a stack.
-
-The @code{uc_link} element of the object pointed to by @var{ucp}
-should be a pointer to the context to be executed when the function
address@hidden returns, or it should be a null pointer.  See
address@hidden for more information about the exact use.
address@hidden deftypefun
-
-While allocating the memory for the stack, you have to be careful.
-Most modern processors keep track of whether a certain memory region
-is allowed to contain code that is executed or not.  Data segments and
-heap memory are normally not tagged to allow this.  The result is that
-programs would fail.  Examples for such code include the calling
-sequences the @acronym{GNU} C Compiler generates for calls to nested
-functions.  Safe ways to allocate stacks correctly include using
-memory on the original threads stack or explicitly allocating memory
-tagged for execution using memory-mapped I/O (@pxref{Memory-Mapped
-I/O}).
-
address@hidden Note}: The current Unix standard is very
-imprecise about the way the stack is allocated.  All implementations
-seem to agree that the @code{uc_stack} element must be used but the
-values stored in the elements of the @code{stack_t} value are unclear.
-The @acronym{GNU} C Library and most other Unix implementations
-require the @code{ss_sp} value of the @code{uc_stack} element to point
-to the base of the memory region allocated for the stack and the size
-of the memory region to be stored in @code{ss_size}.  There are
-implementations out there that require @code{ss_sp} to be set to the
-value the stack pointer will have (which can be different depending on
-the direction the stack grows).  This difference makes the
address@hidden function hard to use, and it requires detection of
-the platform at compile time.
-
address@hidden ucontext.h
address@hidden SVID
address@hidden int setcontext (const ucontext_t address@hidden)
-
-The @code{setcontext} function restores the context described by
address@hidden  The context is not modified and can be reused as often as
-wanted.
-
-If the context was created by @code{getcontext}, execution resumes
-with the registers filled with the same values and the same stack as
-if the @code{getcontext} call just returned.
-
-If the context was modified with a call to @code{makecontext},
-execution continues with the function passed to @code{makecontext},
-which gets the specified parameters passed.  If this function returns,
-execution is resumed in the context that was referenced by the
address@hidden element of the context structure passed to
address@hidden at the time of the call.  If @code{uc_link} was a
-null pointer, the application terminates in this case.
-
-Since the context contains information about the stack, no two threads
-should use the same context at the same time.  The result in most
-cases would be disastrous.
-
-The @code{setcontext} function does not return unless an error
-occurred, in which case it returns @code{-1}.
address@hidden deftypefun
-
-The @code{setcontext} function simply replaces the current context
-with the one described by the @var{ucp} parameter.  This is often
-useful, but there are situations where the current context has to be
-preserved.
-
address@hidden ucontext.h
address@hidden SVID
address@hidden int swapcontext (ucontext_t *restrict @var{oucp}, const 
ucontext_t *restrict @var{ucp})
-
-The @code{swapcontext} function is similar to @code{setcontext}, but
-instead of just replacing the current context, the latter is first
-saved in the object pointed to by @var{oucp} as if this were a call to
address@hidden  The saved context would resume after the call to
address@hidden
-
-Once the current context is saved, the context described in @var{ucp}
-is installed, and execution continues as described in this context.
-
-If @code{swapcontext} succeeds, the function does not return unless
-the context @var{oucp} is used without prior modification by
address@hidden  The return value in this case is @code{0}.  If
-the function fails it returns @code{-1} and set @var{errno}
-accordingly.
address@hidden deftypefun
-
address@hidden Example for @acronym{SVID} Context-Handling
-
-The easiest way to use the context-handling functions is as a
-replacement for @code{setjmp} and @code{longjmp}.  The context
-contains on most platforms more information, which might lead to less
-surprises, but this also means using these functions is more expensive
-(besides being less portable).
-
address@hidden
-int
-random_search (int n, int (*fp) (int, ucontext_t *))
address@hidden
-  volatile int cnt = 0;
-  ucontext_t uc;
-
-  /* @r{Safe current context.}  */
-  if (getcontext (&uc) < 0)
-    return -1;
-
-  /* @r{If we have not tried @var{n} times try again.}  */
-  if (cnt++ < n)
-    /* @r{Call the function with a new random number}
-       @r{and the context}.  */
-    if (fp (rand (), &uc) != 0)
-      /* @r{We found what we were looking for.}  */
-      return 1;
-
-  /* @r{Not found}  */
-  return 0;
address@hidden
address@hidden smallexample
-
-Using contexts in such a way enables emulating exception handling.
-The search functions passed in the @var{fp} parameter could be very
-large, nested, and complex, which would make it complicated (or at
-least would require a lot of code) to leave the function with an error
-value that has to be passed down to the caller.  By using the context,
-it is possible to leave the search function in one step and allow
-restarting the search, which also has the nice side effect that it can
-be significantly faster.
-
-Something that is harder to implement with @code{setjmp} and
address@hidden is to switch temporarily to a different execution path
-and then resume where execution was stopped.
-
address@hidden
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <ucontext.h>
-#include <sys/time.h>
-
-/* @r{Set by the signal handler} */
-static volatile int expired;
-
-/* @r{The contexts} */
-static ucontext_t uc[3];
-
-/* @r{We do only a certain number of switches.} */
-static int switches;
-
-
-/* @r{This is the function doing the work.  It is just a
-   skeleton; real code has to be filled in.} */
-static void
-f (int n)
address@hidden
-  int m = 0;
-  while (1)
-    @{
-      /* @r{This is where the work would be done.} */
-      if (++m % 100 == 0)
-        @{
-          putchar ('.');
-          fflush (stdout);
-        @}
-
-      /* @r{The @var{expire} variable must be checked regularly.} */
-      if (expired)
-        @{
-          /* @r{We do not want the program to run forever.} */
-          if (++switches == 20)
-            return;
-
-          printf ("\nswitching from %d to %d\n", n, 3 - n);
-          expired = 0;
-          /* @r{Switch to the other context, saving the current one.} */
-          swapcontext (&uc[n], &uc[3 - n]);
-        @}
-    @}
address@hidden
-
-/* @r{This is the signal handler that simply sets the variable.} */
-void
-handler (int signal)
address@hidden
-  expired = 1;
address@hidden
-
-
-int
-main (void)
address@hidden
-  struct sigaction sa;
-  struct itimerval it;
-  char st1[8192];
-  char st2[8192];
-
-  /* @r{Initialize the data structures for the interval timer.} */
-  sa.sa_flags = SA_RESTART;
-  sigfillset (&sa.sa_mask);
-  sa.sa_handler = handler;
-  it.it_interval.tv_sec = 0;
-  it.it_interval.tv_usec = 1;
-  it.it_value = it.it_interval;
-
-  /* @r{Install the timer and get the context we can manipulate.} */
-  if (sigaction (SIGPROF, &sa, NULL) < 0
-      || setitimer (ITIMER_PROF, &it, NULL) < 0
-      || getcontext (&uc[1]) == -1
-      || getcontext (&uc[2]) == -1)
-    abort ();
-
-  /* @r{Create a context with a separate stack that causes the
-     function @code{f} to be called with the parameter @code{1}.
-     The @code{uc_link} points to the main context,
-     which will cause the program to terminate once the function
-     returns.} */
-  uc[1].uc_link = &uc[0];
-  uc[1].uc_stack.ss_sp = st1;
-  uc[1].uc_stack.ss_size = sizeof st1;
-  makecontext (&uc[1], (void (*) (void)) f, 1, 1);
-
-  /* @r{This is similar to the above, but @code{2} is passed as the parameter 
to @code{f}.} */
-  uc[2].uc_link = &uc[0];
-  uc[2].uc_stack.ss_sp = st2;
-  uc[2].uc_stack.ss_size = sizeof st2;
-  makecontext (&uc[2], (void (*) (void)) f, 1, 2);
-
-  /* @r{Start running.} */
-  swapcontext (&uc[0], &uc[1]);
-  putchar ('\n');
-
-  return 0;
address@hidden
-
address@hidden smallexample
-
-This an example how the context functions can be used to implement
-coroutines or cooperative multithreading.  All that has to be done is
-to call @code{swapcontext} every once in a while to continue running a
-different context.  It is not permissible to do the context switching
-from the signal handler directly, since neither @code{setcontext} nor
address@hidden are functions that can be called from a signal
-handler.  But setting a variable in the signal handler and checking it
-in the body of the functions which are executed.  Since
address@hidden is saving the current context, it is possible to
-have multiple different scheduling-points in the code.  Execution will
-always resume where it was left.
-
address@hidden Signal Handling
address@hidden %MENU% How to send, block, and handle signals
address@hidden Signal Handling
-
address@hidden signal
-A @dfn{signal} is a software interrupt delivered to a process.  The
-operating system uses signals to report exceptional situations to an
-executing program.  Some signals report errors such as references to
-invalid memory-addresses; others report asynchronous events, such as
-disconnection of a phone line.
-
-The @acronym{GNU} C Library defines a variety of signal types, each for a
-particular kind of event.  Some kinds of events make it inadvisable or
-impossible for the program to proceed as usual, and the corresponding
-signals normally abort the program.  Other kinds of signals that report
-harmless events are ignored by default.
-
-If you anticipate an event that causes signals, you can define a handler
-function and tell the operating system to run it when that particular
-type of signal arrives.
-
-Finally, one process can send a signal to another process; this allows a
-parent process to abort a child, or two related processes to communicate
-and synchronize.
-
address@hidden Concepts of Signals
address@hidden Basic Concepts of Signals
-
-This section explains basic concepts of how signals are generated, what
-happens after a signal is delivered, and how programs can handle
-signals.
-
address@hidden Kinds of Signals
address@hidden Some Kinds of Signals
-
-A signal reports the occurrence of an exceptional event.  These are some
-of the events that can cause (or @dfn{generate}, or @dfn{raise}) a
-signal:
-
address@hidden @bullet
address@hidden
-A program error such as dividing by 0 or issuing an address outside
-the valid range
-
address@hidden
-A user request to interrupt or terminate the program.; most
-environments are set up to let a user suspend the program by typing
address@hidden, or terminate it with @kbd{C-c}.  Whatever key sequence is
-used, the operating system sends the proper signal to interrupt the
-process.
-
address@hidden
-The termination of a child process
-
address@hidden
-Expiration of a timer or alarm
-
address@hidden
-A call to @code{kill} or @code{raise} by the same process
-
address@hidden
-A call to @code{kill} from another process; signals are a limited but
-useful form of interprocess communication.
-
address@hidden
-An attempt to perform an I/O operation that cannot be done; examples
-are reading from a pipe that has no writer (@pxref{Pipes and FIFOs}),
-and reading or writing to a terminal in certain situations (@pxref{Job
-Control}).
address@hidden itemize
-
-Each of these kinds of events (excepting explicit calls to @code{kill}
-and @code{raise}) generates its own particular kind of signal.  The
-various kinds of signals are listed and described in detail in
address@hidden Signals}.
-
address@hidden Signal Generation
address@hidden Concepts of Signal Generation
address@hidden generation of signals
-
-In general, the events that generate signals fall into three major
-categories: errors, external events and explicit requests.
-
-An error means that a program has done something invalid and cannot
-continue execution.  But not all kinds of errors generate signals---in
-fact, most do not.  For example, opening a nonexistent file is an
-error, but it does not raise a signal; instead, @code{open} returns
address@hidden  In general, errors that are necessarily associated with
-certain library functions are reported by returning a value that
-indicates an error.  The errors that raise signals are those that can
-happen anywhere in the program, not just in library calls.  These
-include division by 0 and invalid memory-addresses.
-
-An external event generally has to do with I/O or other processes.
-These include the arrival of input, the expiration of a timer and the
-termination of a child process.
-
-An explicit request means the use of a library function such as
address@hidden whose purpose is specifically to generate a signal.
-
-Signals may be generated @dfn{synchronously} or @dfn{asynchronously}.  A
-synchronous signal pertains to a specific action in the program, and is
-delivered (unless blocked) during that action.  Most errors generate
-signals synchronously, and so do explicit requests by a process to
-generate a signal for that same process.  On some machines, certain
-kinds of hardware errors (usually floating-point exceptions) are not
-reported completely synchronously, but may arrive a few instructions
-later.
-
-Asynchronous signals are generated by events outside the control of the
-process that receives them.  These signals arrive at unpredictable times
-during execution.  External events generate signals asynchronously, and
-so do explicit requests that apply to some other process.
-
-A given type of signal is either typically synchronous or typically
-asynchronous.  For example, signals for errors are typically synchronous
-because errors generate signals synchronously.  But any type of signal
-can be generated synchronously or asynchronously with an explicit
-request.
-
address@hidden Delivery of Signal
address@hidden How Signals Are Delivered
address@hidden delivery of signals
address@hidden pending signals
address@hidden blocked signals
-
-When a signal is generated, it becomes @dfn{pending}.  Normally, it
-remains pending for just a short period of time and then is
address@hidden to the process that was signaled.  However, if that
-kind of signal is currently @dfn{blocked}, it may remain pending
-indefinitely---until signals of that kind are @dfn{unblocked}.  Once
-unblocked, it will be delivered immediately (@pxref{Blocking
-Signals}).
-
address@hidden specified action (for a signal)
address@hidden default action (for a signal)
address@hidden signal action
address@hidden catching signals
-When the signal is delivered, whether right away or after a long
-delay, the @dfn{specified action} for that signal is taken.  For
-certain signals, such as @code{SIGKILL} and @code{SIGSTOP}, the action
-is fixed, but for most signals, the program has a choice: ignore the
-signal, specify a @dfn{handler function} or accept the @dfn{default
-action} for that kind of signal.  The program specifies its choice
-using functions such as @code{signal} or @code{sigaction}
-(@pxref{Signal Actions}).  We sometimes say that a handler
address@hidden the signal.  While the handler is running, that
-particular signal is normally blocked.
-
-If the specified action for a kind of signal is to ignore it, then any
-such signal that is generated is discarded immediately.  This happens
-even if the signal is also blocked at the time.  A signal discarded in
-this way will never be delivered, not even if the program subsequently
-specifies a different action for that kind of signal and then unblocks
-it.
-
-If a signal arrives that the program has neither handled nor ignored,
-its @dfn{default action} takes place.  Each kind of signal has its own
-default action, documented below (@pxref{Standard Signals}).  For most
-kinds of signals, the default action is to terminate the process.  For
-certain kinds of signals that represent ``harmless'' events, the
-default action is to do nothing.
-
-When a signal terminates a process, its parent process can determine
-the cause of termination by examining the termination status-code
-reported by the @code{wait} or @code{waitpid} functions.  (This is
-discussed in more detail in @ref{Process Completion}.)  The
-information it can get includes the fact that termination was due to a
-signal and the kind of signal involved.  If a program you run from a
-shell is terminated by a signal, the shell typically prints some kind
-of error message.
-
-The signals that normally represent program errors have a special
-property: when one of these signals terminates the process, it also
-writes a @dfn{core-dump file} that records the state of the process at
-the time of termination.  You can examine the core dump with a
-debugger to investigate what caused the error.
-
-If you raise a ``program error'' signal by explicit request, and this
-terminates the process, it makes a core-dump file just as if the
-signal had been due directly to an error.
-
address@hidden Standard Signals
address@hidden Standard Signals
address@hidden signal names
address@hidden names of signals
-
address@hidden signal.h
address@hidden signal number
-This section lists the names for various standard kinds of signals and
-describes what kind of event they mean.  Each signal name is a macro
-that stands for a positive integer---the @dfn{signal number} for that
-kind of signal.  Your programs should never make assumptions about the
-numeric code for a particular kind of signal, but rather refer to them
-always by the names defined here.  This is because the number for a
-given kind of signal can vary from system to system, but the meanings
-of the names are standardized and fairly uniform.
-
-The signal names are defined in the header file @file{signal.h}.
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int NSIG
-The value of this symbolic constant is the total number of signals
-defined.  Since the signal numbers are allocated consecutively,
address@hidden is also 1 greater than the largest defined signal-number.
address@hidden deftypevr
-
address@hidden Program-Error Signals
address@hidden Program-Error Signals
address@hidden program-error signals
-
-The following signals are generated when a serious program error is
-detected by the operating system or the computer itself.  In general,
-all of these signals are indications that your program is seriously
-broken in some way, and there's usually no way to continue the
-computation that encountered the error.
-
-Some programs handle program-error signals in order to tidy up before
-terminating; for example, programs that turn off echoing of terminal
-input should handle program-error signals in order to turn echoing back
-on.  The handler should end by specifying the default action for the
-signal that happened and then reraising it; this will cause the program
-to terminate with that signal, as if it had not had a handler
-(@pxref{Termination in Handler}).
-
-Termination is the sensible ultimate outcome from a program error in
-most programs.  However, programming systems such as Lisp that can
-load compiled user-programs might need to keep executing even if a
-user program incurs an error.  These programs have handlers that use
address@hidden to return control to the command level.
-
-The default action for all of these signals is to cause the process to
-terminate.  If you block or ignore these signals or establish handlers
-for them that return normally, your program will probably break horribly
-when such signals happen, unless they are generated by @code{raise} or
address@hidden instead of a real error.
-
address@hidden COREFILE
-When one of these program-error signals terminates a process, it also
-writes a @dfn{core-dump file} that records the state of the process at
-the time of termination.  The core dump file is named @file{core} and
-is written in whichever directory is current in the process at the
-time.  On the @acronym{GNU} system, you can specify the file name for
-core dumps with the environment variable @code{COREFILE}.  The purpose
-of core-dump files is so that you can examine them with a debugger to
-investigate what caused the error.
-
address@hidden signal.h
address@hidden ISO
address@hidden Macro int SIGFPE
-The @code{SIGFPE} signal reports a fatal arithmetic error.  Although
-the name is derived from ``floating-point exception'', this signal
-actually covers all arithmetic errors, including division by 0 and
-overflow.  If a program stores integer data in a location that is then
-used in a floating-point operation, this often causes an ``invalid
-operation'' exception, because the processor cannot recognize the data
-as a floating-point number.
address@hidden exception
address@hidden floating-point exception
-
-Actual floating-point exceptions are a complicated subject because there
-are many types of exceptions with subtly different meanings, and the
address@hidden signal doesn't distinguish between them.  The @cite{IEEE
-Standard for Binary Floating-Point Arithmetic (@acronym{ANSI}/@acronym{IEEE} 
Std 754-1985
-and @acronym{ANSI}/@acronym{IEEE} Std 854-1987)}
-defines various floating-point exceptions and requires conforming
-computer systems to report their occurrences.  However, this standard
-does not specify how the exceptions are reported, or what kinds of
-handling and control the operating system can offer to the programmer.
address@hidden deftypevr
-
address@hidden systems provide the @code{SIGFPE} handler with an extra argument
-that distinguishes various causes of the exception.  In order to access
-this argument, you must define the handler to accept two arguments,
-which means you must cast it to a one-argument function type in order to
-establish the handler.  The @acronym{GNU} library does provide this extra
-argument, but the value is meaningful only on operating systems that
-provide the information (@acronym{BSD} systems and @acronym{GNU} systems).
-
address@hidden @code
address@hidden signal.h
address@hidden BSD
address@hidden FPE_INTOVF_TRAP
address@hidden FPE_INTOVF_TRAP
-Integer overflow (impossible in a C program unless you enable overflow
-trapping in a hardware-specific fashion)
address@hidden signal.h
address@hidden BSD
address@hidden FPE_INTDIV_TRAP
address@hidden FPE_INTDIV_TRAP
-Integer division by 0
address@hidden signal.h
address@hidden BSD
address@hidden FPE_SUBRNG_TRAP
address@hidden FPE_SUBRNG_TRAP
-Subscript range (something that C programs never check for)
address@hidden signal.h
address@hidden BSD
address@hidden FPE_FLTOVF_TRAP
address@hidden FPE_FLTOVF_TRAP
-Floating overflow trap
address@hidden signal.h
address@hidden BSD
address@hidden FPE_FLTDIV_TRAP
address@hidden FPE_FLTDIV_TRAP
-Floating/decimal division by 0.
address@hidden signal.h
address@hidden BSD
address@hidden FPE_FLTUND_TRAP
address@hidden FPE_FLTUND_TRAP
-Floating underflow trap; trapping on floating underflow is not
-normally enabled.
address@hidden signal.h
address@hidden BSD
address@hidden FPE_DECOVF_TRAP
address@hidden FPE_DECOVF_TRAP
-Decimal overflow trap; only a few machines have decimal arithmetic,
-and C never uses it.
address@hidden @c These seem redundant
address@hidden signal.h
address@hidden BSD
address@hidden FPE_FLTOVF_FAULT
address@hidden FPE_FLTOVF_FAULT
-Floating overflow fault.
address@hidden signal.h
address@hidden BSD
address@hidden FPE_FLTDIV_FAULT
address@hidden FPE_FLTDIV_FAULT
-Floating divide by 0 fault.
address@hidden signal.h
address@hidden BSD
address@hidden FPE_FLTUND_FAULT
address@hidden FPE_FLTUND_FAULT
-Floating underflow fault.
address@hidden ignore
address@hidden table
-
address@hidden signal.h
address@hidden ISO
address@hidden Macro int SIGILL
-The name of this signal is derived from ``illegal instruction''; it
-usually means your program is trying to execute garbage or a privileged
-instruction.  Since the C compiler generates only valid instructions,
address@hidden typically indicates that the executable file is corrupted,
-or that you are trying to execute data.  Some common ways of getting
-into the latter situation are by passing an invalid object where a
-pointer to a function was expected, or by writing past the end of an
-automatic array (or similar problems with pointers to automatic
-variables) and corrupting other data on the stack such as the return
-address of a stack frame.
-
address@hidden can also be generated when the stack overflows, or when
-the system has trouble running the handler for a signal.
address@hidden deftypevr
address@hidden illegal instruction
-
address@hidden signal.h
address@hidden ISO
address@hidden Macro int SIGSEGV
address@hidden segmentation violation
-This signal is generated when a program tries to read or write outside
-the memory that is allocated for it, or to write memory that can only
-be read.  Actually, the signals only occur when the program goes far
-enough outside to be detected by the system's memory protection
-mechanism.  The name is an abbreviation for ``segmentation
-violation''.
-
-Common ways of getting a @code{SIGSEGV} condition include dereferencing
-a null or uninitialized pointer, or when you use a pointer to step
-through an array, but fail to check for the end of the array.  It varies
-among systems whether dereferencing a null pointer generates
address@hidden or @code{SIGBUS}.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SIGBUS
-This signal is generated when an invalid pointer is dereferenced.
-Like @code{SIGSEGV}, this signal is typically the result of
-dereferencing an uninitialized pointer.  The difference between the
-two is that @code{SIGSEGV} indicates an invalid access to valid
-memory, while @code{SIGBUS} indicates an access to an invalid address.
-In particular, @code{SIGBUS} signals often result from dereferencing a
-misaligned pointer, such as referring to a four-word integer at an
-address not divisible by 4.  Each kind of computer has its own
-requirements for address alignment.
-
-The name of this signal is an abbreviation for ``bus error''.
address@hidden deftypevr
address@hidden bus error
-
address@hidden signal.h
address@hidden ISO
address@hidden Macro int SIGABRT
address@hidden abort signal
-This signal indicates an error detected by the program itself and
-reported by calling @address@hidden Loosemore et al.,
-``Aborting a Program'' (see chap. 1, n. 1).}
address@hidden deftypevr
-
address@hidden signal.h
address@hidden Unix
address@hidden Macro int SIGIOT
-This is generated by the PDP-11 ``iot'' instruction.  On most
-machines, this is just another name for @code{SIGABRT}.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SIGTRAP
-This is generated by the machine's breakpoint instruction, and
-possibly other trap instructions.  This signal is used by debuggers.
-Your program will probably only see @code{SIGTRAP} if it is somehow
-executing bad instructions.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int  SIGEMT
-This indicates an emulator trap; it results from certain unimplemented
-instructions that might be emulated in software, or the operating
-system's failure to properly emulate them.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden Unix
address@hidden Macro int  SIGSYS
-This indicates a bad system call. The instruction to trap to the
-operating system was executed, but the code number for the system call
-to perform was invalid.
address@hidden deftypevr
-
address@hidden Termination Signals
address@hidden Termination Signals
address@hidden program termination signals
-
-These signals are all used to tell a process to terminate, in one way
-or another.  They have different names because they're used for slightly
-different purposes, and programs might want to handle them differently.
-
-The reason for handling these signals is usually so your program can
-tidy up as appropriate before actually terminating.  For example, you
-might want to save state information, delete temporary files, or
-restore the previous terminal modes.  Such a handler should end by
-specifying the default action for the signal that happened and then
-reraising it; this will cause the program to terminate with that
-signal, as if it had not had a handler (@pxref{Termination in
-Handler}).
-
-The (obvious) default action for all of these signals is to cause the
-process to terminate.
-
address@hidden signal.h
address@hidden ISO
address@hidden Macro int SIGTERM
address@hidden termination signal
-The @code{SIGTERM} signal is a generic signal used to cause program
-termination.  Unlike @code{SIGKILL}, this signal can be blocked,
-handled and ignored.  It is the normal way to politely ask a program
-to terminate.
-
-The shell command @code{kill} generates @code{SIGTERM} by default.
address@hidden kill
address@hidden deftypevr
-
address@hidden signal.h
address@hidden ISO
address@hidden Macro int SIGINT
address@hidden interrupt signal
-The @code{SIGINT} (``program interrupt'') signal is sent when the user
-types the INTR character (normally @kbd{C-c}).  @xref{Special
-Characters}, for information about terminal driver support for
address@hidden
address@hidden deftypevr
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SIGQUIT
address@hidden quit signal
address@hidden quit signal
-The @code{SIGQUIT} signal is similar to @code{SIGINT}, except that
-it's controlled by a different key---the QUIT character, usually
address@hidden produces a core dump when it terminates the process,
-just like a program-error signal.  You can think of this as a
-program-error condition ``detected'' by the user.
-
address@hidden Signals}, for information about core dumps, and
address@hidden Characters}, for information about terminal-driver
-support.
-
-Certain kinds of clean-ups are best omitted in handling @code{SIGQUIT}.
-For example, if the program creates temporary files, it should handle
-the other termination requests by deleting the temporary files.  But it
-is better for @code{SIGQUIT} not to delete them, so that the user can
-examine them in conjunction with the core dump.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SIGKILL
-The @code{SIGKILL} signal is used to cause immediate program termination.
-It cannot be handled or ignored, and is therefore always fatal.  It is
-also not possible to block this signal.
-
-This signal is usually generated only by explicit request.  Since it
-cannot be handled, you should generate it only as a last resort, after
-first trying a less drastic method such as @kbd{C-c} or @code{SIGTERM}.
-If a process does not respond to any other termination signals, sending
-it a @code{SIGKILL} signal will almost always cause it to go away.
-
-In fact, if @code{SIGKILL} fails to terminate a process, that by
-itself constitutes an operating system bug that you should report.
-
-The system will generate @code{SIGKILL} for a process itself under some
-unusual conditions where the program cannot possibly continue to run
-(even to run a signal handler).
address@hidden deftypevr
address@hidden kill signal
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SIGHUP
address@hidden hangup signal
-The @code{SIGHUP} (``hang-up'') signal is used to report that the
-user's terminal is disconnected, perhaps because a network or
-telephone connection was broken (@pxref{Control Modes}).
-
-This signal is also used to report the termination of the controlling
-process on a terminal to jobs associated with that session; this
-termination effectively disconnects all processes in the session from
-the controlling address@hidden, ``Termination Internals''.}
address@hidden deftypevr
-
address@hidden Alarm Signals
address@hidden Alarm Signals
-
-These signals are used to indicate the expiration of
address@hidden information about functions that cause these
-signals to be sent see Loosemore et al., ``Setting an Alarm''.}
-
-The default behavior for these signals is to cause program termination.
-This default is rarely useful, but no other default would be useful;
-most of the ways of using these signals would require handler functions
-in any case.
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SIGALRM
-This signal typically indicates expiration of a timer that measures real
-or clock time.  It is used by the @code{alarm} function, for example.
address@hidden deftypevr
address@hidden alarm signal
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SIGVTALRM
-This signal typically indicates expiration of a timer that measures 
@acronym{CPU}
-time used by the current process.  The name is an abbreviation for
-``virtual time alarm''.
address@hidden deftypevr
address@hidden virtual time alarm signal
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SIGPROF
-This signal typically indicates expiration of a timer that measures
-both @acronym{CPU} time used by the current process, and @acronym{CPU}
-time expended on behalf of the process by the system.  Such a timer is
-used to implement code-profiling facilities, hence the name of this
-signal.
address@hidden deftypevr
address@hidden profiling alarm signal
-
-
address@hidden Asynchronous-I/O Signals
address@hidden Asynchronous-I/O Signals
-
-The signals listed in this section are used in conjunction with
-asynchronous I/O facilities.  You have to take explicit action by
-calling @code{fcntl} to enable a particular file-descriptor to generate
-these signals (@pxref{Interrupt Input}).  The default action for these
-signals is to ignore them.
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SIGIO
address@hidden input available signal
address@hidden output possible signal
-This signal is sent when a file descriptor is ready to perform input
-or output.
-
-On most operating systems, terminals and sockets are the only kinds of
-files that can generate @code{SIGIO}; other kinds, including ordinary
-files, never generate @code{SIGIO} even if you ask them to.
-
-In the @acronym{GNU} system, @code{SIGIO} will always be generated
-properly if you successfully set asynchronous mode with @code{fcntl}.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SIGURG
address@hidden urgent data signal
-This signal is sent when ``urgent'' or out-of-band data arrives on a
-socket (@pxref{Out-of-Band Data}).
address@hidden deftypevr
-
address@hidden signal.h
address@hidden SVID
address@hidden Macro int SIGPOLL
-This is a System V signal name, more or less similar to @code{SIGIO}.
-It is defined only for compatibility.
address@hidden deftypevr
-
address@hidden Job Control Signals
address@hidden Job Control Signals
address@hidden job control signals
-
-These signals are used to support job control.  If your system
-doesn't support job control, then these macros are defined but the
-signals themselves can't be raised or handled.
-
-You should generally leave these signals alone unless you really
-understand how job control works (@pxref{Job Control}).
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SIGCHLD
address@hidden child-process signal
-This signal is sent to a parent process whenever one of its child
-processes terminates or stops.
-
-The default action for this signal is to ignore it.  If you establish a
-handler for this signal while there are child processes that have
-terminated but not reported their status via @code{wait} or
address@hidden (@pxref{Process Completion}), whether your new handler
-applies to those processes or not depends on the particular operating
-system.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden SVID
address@hidden Macro int SIGCLD
-This is an obsolete name for @code{SIGCHLD}.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SIGCONT
address@hidden continue signal
-You can send a @code{SIGCONT} signal to a process to make it continue.
-This signal is special---it always makes the process continue if it is
-stopped, before the signal is delivered.  The default behavior is to do
-nothing else.  You cannot block this signal.  You can set a handler, but
address@hidden always makes the process continue regardless.
-
-Most programs have no reason to handle @code{SIGCONT}; they simply
-resume execution without realizing they were ever stopped.  You can use
-a handler for @code{SIGCONT} to make a program do something special when
-it is stopped and continued---for example, to reprint a prompt when it
-is suspended while waiting for input.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SIGSTOP
-The @code{SIGSTOP} signal stops the process.  It cannot be handled,
-ignored or blocked.
address@hidden deftypevr
address@hidden stop signal
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SIGTSTP
-The @code{SIGTSTP} signal is an interactive stop-signal.  Unlike
address@hidden, this signal can be handled and ignored.
-
-Your program should handle this signal if you have a special need to
-leave files or system tables in a secure state when a process is
-stopped.  For example, programs that turn off echoing should handle
address@hidden so they can turn echoing back on before stopping.
-
-This signal is generated when the user types the SUSP character
-(normally @kbd{C-z}).  For more information about terminal driver
-support, see @ref{Special Characters}.
address@hidden deftypevr
address@hidden interactive stop signal
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SIGTTIN
-A process cannot read from the user's terminal while it is running
-as a background job.  When any process in a background job tries to
-read from the terminal, all of the processes in the job are sent a
address@hidden signal.  The default action for this signal is to
-stop the process.  For more information about how this interacts with
-the terminal driver, see @ref{Access to the Terminal}.
address@hidden deftypevr
address@hidden terminal input signal
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SIGTTOU
-This is similar to @code{SIGTTIN}, but is generated when a process in
-a background job attempts to write to the terminal or set its modes.
-Again, the default action is to stop the process.  @code{SIGTTOU} is
-only generated for an attempt to write to the terminal if the
address@hidden output-mode is set (@pxref{Output Modes}).
address@hidden deftypevr
address@hidden terminal output signal
-
-While a process is stopped, no more signals can be delivered to it
-until it is continued, except @code{SIGKILL} signals and (obviously)
address@hidden signals.  The signals are marked as pending, but not
-delivered until the process is continued.  The @code{SIGKILL} signal
-always causes termination of the process and can't be blocked, handled
-or ignored.  You can ignore @code{SIGCONT}, but it always causes the
-process to be continued anyway if it is stopped.  Sending a
address@hidden signal to a process causes any pending stop-signals for
-that process to be discarded.  Likewise, any pending @code{SIGCONT}
-signals for a process are discarded when it receives a stop signal.
-
-When a process in an orphaned process-group (@pxref{Orphaned
-Process-Groups}) receives a @code{SIGTSTP}, @code{SIGTTIN} or
address@hidden signal and does not handle it, the process does not
-stop.  Stopping the process would probably not be very useful, since
-there is no shell program that will notice and allow the user to
-continue it.  What happens instead depends on the operating system you
-are using.  Some systems may do nothing; others may deliver another
-signal instead, such as @code{SIGKILL} or @code{SIGHUP}.  In the
address@hidden system, the process dies with @code{SIGKILL}; this
-avoids the problem of many stopped, orphaned processes lying around
-the system.
-
address@hidden Operation Error Signals
address@hidden Operation-Error Signals
-
-These signals are used to report various errors generated by an
-operation done by the program.  They do not necessarily indicate a
-programming error in the program, but an error that prevents an
-operating system call from completing.  The default action for all of
-them is to cause the process to terminate.
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SIGPIPE
address@hidden pipe signal
address@hidden broken pipe signal
-There is a broken pipe.  If you use pipes or @acronym{FIFO}s, you have
-to design your application so that one process opens the pipe for
-reading before another starts writing.  If the reading process never
-starts, or terminates unexpectedly, writing to the pipe or
address@hidden raises a @code{SIGPIPE} signal.  If @code{SIGPIPE} is
-blocked, handled or ignored, the offending call fails with
address@hidden instead.
-
-Pipes and @acronym{FIFO} special files are discussed in more detail in 
@ref{Pipes
-and FIFOs}.
-
-Another cause of @code{SIGPIPE} is when you try to output to a socket
-that isn't connected (@pxref{Sending Data}).
address@hidden deftypevr
-
address@hidden signal.h
address@hidden GNU
address@hidden Macro int SIGLOST
address@hidden lost resource signal
-The resource was lost.  This signal is generated when you have an
-advisory lock on an @acronym{NFS} file, and the @acronym{NFS} server
-reboots and forgets about your lock.
-
-In the @acronym{GNU} system, @code{SIGLOST} is generated when any server 
program
-dies unexpectedly.  It is usually fine to ignore the signal; whatever
-call was made to the server that died just returns an error.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SIGXCPU
-The @acronym{CPU}-time limit exceeded.  This signal is generated when
-the process exceeds its soft resource-limit on @acronym{CPU} time
-(@pxref{Limits on Resources}).
address@hidden deftypevr
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SIGXFSZ
-The file size limit was exceeded.  This signal is generated when the
-process attempts to extend a file so it exceeds the process's soft
-resource-limit on file size (@pxref{Limits on Resources}).
address@hidden deftypevr
-
address@hidden Miscellaneous Signals
address@hidden Miscellaneous Signals
-
-These signals are used for various other purposes.  In general, they
-will not affect your program unless it explicitly uses them for something.
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SIGUSR1
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SIGUSR2
address@hidden user signals
-The @code{SIGUSR1} and @code{SIGUSR2} signals are set aside for you to
-use any way you want.  They're useful for simple interprocess
-communication, if you write a signal handler for them in the program
-that receives the signal.
-
-There is an example showing the use of @code{SIGUSR1} and @code{SIGUSR2}
-in @ref{Signaling Another Process}.
-
-The default action is to terminate the process.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SIGWINCH
-This signals a window size change.  This is generated on some systems
-(including @acronym{GNU}) when the terminal driver's record of the
-number of rows and columns on the screen is changed.  The default
-action is to ignore it.
-
-If a program does full-screen display, it should handle
address@hidden  When the signal arrives, it should fetch the new
-screen-size and reformat its display accordingly.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SIGINFO
-Information request.  In 4.4 @acronym{BSD} and the @acronym{GNU}
-system, this signal is sent to all the processes in the foreground
-process-group of the controlling terminal when the user types the
-STATUS character in canonical mode (@pxref{Signal Characters}).
-
-If the process is the leader of the process group, the default action
-is to print some status information about the system and what the
-process is doing.  Otherwise, the default is to do nothing.
address@hidden deftypevr
-
address@hidden Signal Messages
address@hidden Signal Messages
address@hidden signal messages
-
-We mentioned above that the shell prints a message describing the
-signal that terminated a child process.  The clean way to print a
-message describing a signal is to use the functions @code{strsignal}
-and @code{psignal}.  These functions use a signal number to specify
-which kind of signal to describe.  The signal number may come from the
-termination status of a child process (@pxref{Process Completion}), or
-it may come from a signal handler in the same process.
-
address@hidden string.h
address@hidden GNU
address@hidden {char *} strsignal (int @var{signum})
-This function returns a pointer to a statically allocated string
-containing a message describing the signal @var{signum}.  You
-should not modify the contents of this string; and, since it can be
-rewritten on subsequent calls, you should save a copy of it if you need
-to reference it later.
-
address@hidden string.h
-This function is a @acronym{GNU} extension, declared in the header file
address@hidden
address@hidden deftypefun
-
address@hidden signal.h
address@hidden BSD
address@hidden void psignal (int @var{signum}, const char address@hidden)
-This function prints a message describing the signal @var{signum} to
-the standard error output stream @address@hidden,
-``Standard Streams''.}
-
-If you call @code{psignal} with a @var{message} that is either a null
-pointer or an empty string, @code{psignal} just prints the message
-corresponding to @var{signum}, adding a trailing newline.
-
-If you supply a nonnull @var{message} argument, then @code{psignal}
-prefixes its output with this string.  It adds a colon and a space
-character to separate the @var{message} from the string corresponding
-to @var{signum}.
-
address@hidden stdio.h
-This function is a @acronym{BSD} feature, declared in the header file 
@file{signal.h}.
address@hidden deftypefun
-
address@hidden sys_siglist
-There is also an array @code{sys_siglist} that contains the messages
-for the various signal codes.  This array exists on @acronym{BSD}
-systems, unlike @code{strsignal}.
-
address@hidden Signal Actions
address@hidden Specifying Signal Actions
address@hidden signal actions
address@hidden establishing a handler
-
-The simplest way to change the action for a signal is to use the
address@hidden function.  You can specify a built-in action (such as to
-ignore the signal), or you can @dfn{establish a handler}.
-
-The @acronym{GNU} library also implements the more versatile @code{sigaction}
-facility.  This section describes both facilities and gives suggestions
-on which to use when.
-
address@hidden Basic Signal-Handling
address@hidden Basic Signal-Handling
address@hidden @code{signal} function
-
-The @code{signal} function provides a simple interface for establishing
-an action for a particular signal.  The function and associated macros
-are declared in the header file @file{signal.h}.
address@hidden signal.h
-
address@hidden signal.h
address@hidden GNU
address@hidden {Data Type} sighandler_t
-This is the type of signal-handler functions.  Signal handlers take
-one integer argument specifying the signal number, and have return
-type @code{void}.  So, you should define handler functions like this:
-
address@hidden
-void @var{handler} (int @code{signum}) @{ @dots{} @}
address@hidden smallexample
-
-The name @code{sighandler_t} for this data type is a @acronym{GNU} extension.
address@hidden deftp
-
address@hidden signal.h
address@hidden ISO
address@hidden sighandler_t signal (int @var{signum}, sighandler_t @var{action})
-The @code{signal} function establishes @var{action} as the action for
-the signal @var{signum}.
-
-The first argument, @var{signum}, identifies the signal whose behavior
-you want to control, and should be a signal number.  The proper way to
-specify a signal number is with one of the symbolic signal-names
-(@pxref{Standard Signals})---don't use an explicit number, because the
-numerical code for a given kind of signal may vary from operating
-system to operating system.
-
-The second argument, @var{action}, specifies the action to use for the
-signal @var{signum}.  This can be one of the following:
-
address@hidden @code
address@hidden SIG_DFL
address@hidden SIG_DFL
address@hidden default action for a signal
address@hidden specifies the default action for the particular signal.
-The default actions for various kinds of signals are stated in
address@hidden Signals}.
-
address@hidden SIG_IGN
address@hidden SIG_IGN
address@hidden ignore action for a signal
address@hidden specifies that the signal should be ignored.
-
-Your program generally should not ignore signals that represent
-serious events or that are normally used to request termination.  You
-cannot ignore the @code{SIGKILL} or @code{SIGSTOP} signals at all.
-You can ignore program-error signals like @code{SIGSEGV}, but ignoring
-the error won't enable the program to continue executing meaningfully.
-Ignoring user requests such as @code{SIGINT}, @code{SIGQUIT} and
address@hidden is unfriendly.
-
-When you do not wish signals to be delivered during a certain part of
-the program, the thing to do is to block them, not ignore them
-(@pxref{Blocking Signals}).
-
address@hidden @var{handler}
-Supply the address of a handler function in your program, to specify
-running this handler as the way to deliver the signal.
-
-For more information about defining signal-handler functions, see
address@hidden Handlers}.
address@hidden table
-
-If you set the action for a signal to @code{SIG_IGN}, or if you set it
-to @code{SIG_DFL} and the default action is to ignore that signal, then
-any pending signals of that type are discarded (even if they are
-blocked).  Discarding the pending signals means that they will never be
-delivered, not even if you subsequently specify another action and
-unblock this kind of signal.
-
-The @code{signal} function returns the action that was previously in
-effect for the specified @var{signum}.  You can save this value and
-restore it later by calling @code{signal} again.
-
-If @code{signal} can't honor the request, it returns @code{SIG_ERR}
-instead.  The following @code{errno} error condition is defined for
-this function:
-
address@hidden @code
address@hidden EINVAL
-You specified an invalid @var{signum}; or you tried to ignore or provide
-a handler for @code{SIGKILL} or @code{SIGSTOP}.
address@hidden table
address@hidden deftypefun
-
address@hidden Note:} A problem encountered when working with
-the @code{signal} function is that it has different semantics on
address@hidden and @acronym{SVID} systems.  The difference is that on
address@hidden systems, the signal handler is deinstalled after signal
-delivery.  On @acronym{BSD} systems, the handler must be explicitly
-deinstalled.  In the @acronym{GNU} C Library, we use the @acronym{BSD}
-version by default.  To use the @acronym{SVID} version, you can either
-use the function @code{sysv_signal} (see below), or use the
address@hidden feature-select macro (@pxref{Feature-Test
-Macros}).  In general, use of these functions should be avoided
-because of compatibility problems.  It is better to use
address@hidden if it is available, since the results are much more
-reliable.
-
-Here is a simple example of setting up a handler to delete temporary
-files when certain fatal signals happen:
-
address@hidden
-#include <signal.h>
-
-void
-termination_handler (int signum)
address@hidden
-  struct temp_file *p;
-
-  for (p = temp_file_list; p; p = p->next)
-    unlink (p->name);
address@hidden
-
-int
-main (void)
address@hidden
-  @dots{}
-  if (signal (SIGINT, termination_handler) == SIG_IGN)
-    signal (SIGINT, SIG_IGN);
-  if (signal (SIGHUP, termination_handler) == SIG_IGN)
-    signal (SIGHUP, SIG_IGN);
-  if (signal (SIGTERM, termination_handler) == SIG_IGN)
-    signal (SIGTERM, SIG_IGN);
-  @dots{}
address@hidden
address@hidden smallexample
-
address@hidden
-If a given signal was previously set to be ignored, this code avoids
-altering that setting.  This is because non-job-control shells often
-ignore certain signals when starting children, and it is important for
-the children to respect this.
-
-We do not handle @code{SIGQUIT} or the program-error signals in this
-example because these are designed to provide information for debugging
-(a core dump), and the temporary files may give useful information.
-
address@hidden signal.h
address@hidden GNU
address@hidden sighandler_t sysv_signal (int @var{signum}, sighandler_t 
@var{action})
-The @code{sysv_signal} implements the behavior of the standard
address@hidden function as found on @acronym{SVID} systems.  The
-difference with @acronym{BSD} systems is that the handler is
-deinstalled after a delivery of a signal.
-
address@hidden Note:} As said above for @code{signal}, this
-function should be avoided when possible.  @code{sigaction} is the
-preferred method.
address@hidden deftypefun
-
address@hidden signal.h
address@hidden SVID
address@hidden sighandler_t ssignal (int @var{signum}, sighandler_t 
@var{action})
-The @code{ssignal} function does the same thing as @code{signal}; it is
-provided only for compatibility with @acronym{SVID}.
address@hidden deftypefun
-
address@hidden signal.h
address@hidden ISO
address@hidden Macro sighandler_t SIG_ERR
-The value of this macro is used as the return value from @code{signal}
-to indicate an error.
address@hidden deftypevr
-
address@hidden
address@hidden RMS says that ``we don't do this''.
-Implementations might define additional macros for built-in signal
-actions that are suitable as a @var{action} argument to @code{signal},
-besides @code{SIG_IGN} and @code{SIG_DFL}.  Identifiers whose names
-begin with @samp{SIG_} followed by an uppercase letter are reserved for
-this purpose.
address@hidden ignore
-
-
address@hidden Advanced Signal-Handling
address@hidden Advanced Signal-Handling
address@hidden @code{sigaction} function
-
-The @code{sigaction} function has the same basic effect as
address@hidden specify how a signal should be handled by the
-process.  However, @code{sigaction} offers more control, at the
-expense of more complexity.  In particular, @code{sigaction} allows
-you to specify additional flags to control when the signal is
-generated and how the handler is invoked.
-
-The @code{sigaction} function is declared in @file{signal.h}.
address@hidden signal.h
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden {Data Type} {struct sigaction}
-Structures of type @code{struct sigaction} are used in the
address@hidden function to specify all the information about how to
-handle a particular signal.  This structure contains at least the
-following members:
-
address@hidden @code
address@hidden sighandler_t sa_handler
-This is used in the same way as the @var{action} argument to the
address@hidden function.  The value can be @code{SIG_DFL},
address@hidden or a function pointer (@pxref{Basic Signal-Handling}).
-
address@hidden sigset_t sa_mask
-This specifies a set of signals to be blocked while the handler runs
-(@pxref{Blocking for Handler}). The signal that was delivered is
-automatically blocked by default before its handler is started; this
-is true regardless of the value in @code{sa_mask}.  If you want that
-signal not to be blocked within its handler, you must write code in
-the handler to unblock it.
-
address@hidden int sa_flags
-This specifies various flags that can affect the behavior of the
-signal (@pxref{Flags for Sigaction}).
address@hidden table
address@hidden deftp
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden int sigaction (int @var{signum}, const struct sigaction 
*restrict @var{action}, struct sigaction *restrict @var{old-action})
-The @var{action} argument is used to set up a new action for the
-signal @var{signum}, while the @var{old-action} argument is used to
-return information about the action previously associated with this
-symbol.  In other words, @var{old-action} has the same purpose as the
address@hidden function's return value---you can check to see what the
-old action in effect for the signal was, and restore it later if you
-want.
-
-Either @var{action} or @var{old-action} can be a null pointer.  If
address@hidden is a null pointer, this simply suppresses the return
-of information about the old action.  If @var{action} is a null pointer,
-the action associated with the signal @var{signum} is unchanged; this
-allows you to inquire about how a signal is being handled without changing
-that handling.
-
-The return value from @code{sigaction} is 0 if it succeeds and
address@hidden on failure.  The following @code{errno} error condition is
-defined for this function:
-
address@hidden @code
address@hidden EINVAL
-The @var{signum} argument is not valid, or you are trying to
-trap or ignore @code{SIGKILL} or @code{SIGSTOP}.
address@hidden table
address@hidden deftypefun
-
address@hidden Signal and Sigaction
address@hidden Interaction of @code{signal} and @code{sigaction}
-
-It's possible to use both the @code{signal} and @code{sigaction}
-functions within a single program, but you have to be careful because
-they can interact in slightly strange ways.
-
-The @code{sigaction} function specifies more information than the
address@hidden function, so the return value from @code{signal} cannot
-express the full range of @code{sigaction} possibilities.  Therefore, if
-you use @code{signal} to save and later reestablish an action, it may
-not be able to reestablish properly a handler that was established with
address@hidden
-
-To avoid having problems as a result, always use @code{sigaction} to
-save and restore a handler if your program uses @code{sigaction} at all.
-Since @code{sigaction} is more general, it can properly save and
-reestablish any action, regardless of whether it was established
-originally with @code{signal} or @code{sigaction}.
-
-On some systems, if you establish an action with @code{signal} and
-then examine it with @code{sigaction}, the handler address that you
-get may not be the same as what you specified with @code{signal}.  It
-may not even be suitable for use as an action argument with
address@hidden  But you can rely on using it as an argument to
address@hidden  This problem never happens on the @acronym{GNU}
-system.
-
-So, you're better off using one or the other of the mechanisms
-consistently within a single program.
-
address@hidden Note:} The basic @code{signal} function is a feature
-of @address@hidden C}, while @code{sigaction} is part of the @acronym{POSIX}.1 
standard.  If
-you are concerned about portability to address@hidden systems, then you
-should use the @code{signal} function instead.
-
address@hidden Sigaction Function Example
address@hidden @code{sigaction} Function Example
-
-In @ref{Basic Signal-Handling}, we gave an example of establishing a
-simple handler for termination signals using @code{signal}.  Here is an
-equivalent example using @code{sigaction}:
-
address@hidden
-#include <signal.h>
-
-void
-termination_handler (int signum)
address@hidden
-  struct temp_file *p;
-
-  for (p = temp_file_list; p; p = p->next)
-    unlink (p->name);
address@hidden
-
-int
-main (void)
address@hidden
-  @dots{}
-  struct sigaction new_action, old_action;
-
-  /* @r{Set up the structure to specify the new action.} */
-  new_action.sa_handler = termination_handler;
-  sigemptyset (&new_action.sa_mask);
-  new_action.sa_flags = 0;
-
-  sigaction (SIGINT, NULL, &old_action);
-  if (old_action.sa_handler != SIG_IGN)
-    sigaction (SIGINT, &new_action, NULL);
-  sigaction (SIGHUP, NULL, &old_action);
-  if (old_action.sa_handler != SIG_IGN)
-    sigaction (SIGHUP, &new_action, NULL);
-  sigaction (SIGTERM, NULL, &old_action);
-  if (old_action.sa_handler != SIG_IGN)
-    sigaction (SIGTERM, &new_action, NULL);
-  @dots{}
address@hidden
address@hidden smallexample
-
-The program just loads the @code{new_action} structure with the desired
-parameters and passes it in the @code{sigaction} call.  The usage of
address@hidden is described later (@pxref{Blocking Signals}).
-
-As in the example using @code{signal}, we avoid handling signals
-previously set to be ignored.  Here we can avoid altering the signal
-handler even momentarily, by using the feature of @code{sigaction} that
-lets us examine the current action without specifying a new one.
-
-Here is another example.  It retrieves information about the current
-action for @code{SIGINT} without changing that action.
-
address@hidden
-struct sigaction query_action;
-
-if (sigaction (SIGINT, NULL, &query_action) < 0)
-  /* @address@hidden returns -1 in case of error.} */
-else if (query_action.sa_handler == SIG_DFL)
-  /* @address@hidden is handled in the default, fatal manner.} */
-else if (query_action.sa_handler == SIG_IGN)
-  /* @address@hidden is ignored.} */
-else
-  /* @r{A programmer-defined signal-handler is in effect.} */
address@hidden smallexample
-
address@hidden Flags for Sigaction
address@hidden Flags for @code{sigaction}
address@hidden signal flags
address@hidden flags for @code{sigaction}
address@hidden @code{sigaction} flags
-
-The @code{sa_flags} member of the @code{sigaction} structure is a
-catch-all for special features.  Most of the time, @code{SA_RESTART} is
-a good value to use for this field.
-
-The value of @code{sa_flags} is interpreted as a bit mask.  Thus, you
-should choose the flags you want to set, @sc{or} those flags together
-and store the result in the @code{sa_flags} member of your
address@hidden structure.
-
-Each signal number has its own set of flags.  Each call to
address@hidden affects one particular signal-number, and the flags
-that you specify apply only to that particular signal.
-
-In the @acronym{GNU} C Library, establishing a handler with
address@hidden sets all the flags to 0 except for @code{SA_RESTART},
-whose value depends on the settings you have made with
address@hidden (@pxref{Interrupted Primitives}).
-
address@hidden signal.h
-These macros are defined in the header file @file{signal.h}.
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden Macro int SA_NOCLDSTOP
-This flag is meaningful only for the @code{SIGCHLD} signal.  When the
-flag is set, the system delivers the signal for a terminated
-child-process but not for one that is stopped.  By default,
address@hidden is delivered for both terminated children and stopped
-children.
-
-Setting this flag for a signal other than @code{SIGCHLD} has no effect.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SA_ONSTACK
-If this flag is set for a particular signal-number, the system uses
-the signal stack when delivering that kind of signal (@pxref{Signal
-Stack}).  If a signal with this flag arrives and you have not set a
-signal stack, the system terminates the program with @code{SIGILL}.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SA_RESTART
-This flag controls what happens when a signal is delivered during
-certain primitives (such as @code{open}, @code{read} or @code{write}),
-and the signal handler returns normally.  There are two alternatives:
-the library function can resume, or it can return failure with error
-code @code{EINTR}.
-
-The choice is controlled by the @code{SA_RESTART} flag for the
-particular kind of signal that was delivered.  If the flag is set,
-returning from a handler resumes the library function.  If the flag is
-clear, returning from a handler makes the function fail
-(@pxref{Interrupted Primitives}).
address@hidden deftypevr
-
address@hidden Initial Signal Actions
address@hidden Initial Signal Actions
address@hidden initial signal actions
-
-When a new process is created (@pxref{Creating a Process}), it
-inherits handling of signals from its parent process.  However, when
-you load a new process image using the @code{exec} function
-(@pxref{Executing a File}), any signals that you've defined your own
-handlers for revert to their @code{SIG_DFL} handling.  This makes
-sense; the handler functions from the old program are specific to that
-program, and aren't even present in the address space of the new
-program image.  Of course, the new program can establish its own
-handlers.
-
-When a program is run by a shell, the shell normally sets the initial
-actions for the child process to @code{SIG_DFL} or @code{SIG_IGN}, as
-appropriate.  It's a good idea to check to make sure that the shell has
-not set up an initial action of @code{SIG_IGN} before you establish your
-own signal-handlers.
-
-Here is an example of how to establish a handler for @code{SIGHUP}, but
-not if @code{SIGHUP} is currently ignored:
-
address@hidden
-
address@hidden
-struct sigaction temp;
-
-sigaction (SIGHUP, NULL, &temp);
-
-if (temp.sa_handler != SIG_IGN)
-  @{
-    temp.sa_handler = handle_sighup;
-    sigemptyset (&temp.sa_mask);
-    sigaction (SIGHUP, &temp, NULL);
-  @}
-
address@hidden smallexample
-
address@hidden Defining Handlers
address@hidden Defining Signal-Handlers
address@hidden signal-handler function
-
-This section describes how to write a signal-handler function that can
-be established with the @code{signal} or @code{sigaction} functions.
-
-A signal handler is just a function that you compile together with the
-rest of the program.  Instead of directly invoking the function, you
-use @code{signal} or @code{sigaction} to tell the operating system to
-call it when a signal arrives.  This is known as @dfn{establishing}
-the handler (@pxref{Signal Actions}).
-
-There are two basic strategies you can use in signal-handler
-functions:
-
address@hidden @bullet
address@hidden
-You can have the handler function note that the signal arrived by
-tweaking some global data structures, and then return normally.
-
address@hidden
-You can have the handler function terminate the program or transfer
-control to a point where it can recover from the situation that caused
-the signal.
address@hidden itemize
-
-You need to take special care in writing handler-functions, because
-they can be called asynchronously.  A handler might be called at any
-point in the program, unpredictably.  If two signals arrive during a
-very short interval, one handler can run within another.  This section
-describes what your handler should do, and what you should avoid.
-
address@hidden Handler Returns
address@hidden Signal Handlers That Return
-
-Handlers that return normally are usually used for signals such as
address@hidden and the I/O and interprocess-communication signals.
-But a handler for @code{SIGINT} might also return normally after
-setting a flag that tells the program to exit at a convenient time.
-
-It is not safe to return normally from the handler for a program-error
-signal, because the behavior of the program when the handler function
-returns is not defined after a program error (@pxref{Program-Error
-Signals}).
-
-Handlers that return normally must modify some global variable in order
-to have any effect.  Typically, the variable is one that is examined
-periodically by the program during normal operation.  Its data type
-should be @code{sig_atomic_t} for reasons described in @ref{Atomic
-Data Access}.
-
-Here is a simple example of such a program.  It executes the body of
-the loop until it has noticed that a @code{SIGALRM} signal has arrived.
-This technique is useful because it allows the iteration in progress
-when the signal arrives to complete before the loop exits.
-
address@hidden
-#include <signal.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-/* @r{This flag controls termination of the main loop.} */
-volatile sig_atomic_t keep_going = 1;
-
-/* @r{The signal handler just clears the flag and re-enables itself.} */
-void 
-catch_alarm (int sig)
address@hidden
-  keep_going = 0;
-  signal (sig, catch_alarm);
address@hidden
-
-void 
-do_stuff (void)
address@hidden
-  puts ("Doing stuff while waiting for alarm....");
address@hidden
-
-int
-main (void)
address@hidden
-  /* @r{Establish a handler for SIGALRM signals.} */
-  signal (SIGALRM, catch_alarm);
-
-  /* @r{Set an alarm to go off in a little while.} */
-  alarm (2);
-
-  /* @r{Check the flag once in a while to see when to quit.} */
-  while (keep_going)
-    do_stuff ();
-
-  return EXIT_SUCCESS;
address@hidden
-
address@hidden smallexample
-
address@hidden Termination in Handler
address@hidden Handlers That Terminate the Process
-
-Handler functions that terminate the program are typically used to cause
-orderly clean-up or recovery from program-error signals and interactive
-interrupts.
-
-The cleanest way for a handler to terminate the process is to raise the
-same signal that ran the handler in the first place.  Here is how to do
-this:
-
address@hidden
-volatile sig_atomic_t fatal_error_in_progress = 0;
-
-void
-fatal_error_signal (int sig)
address@hidden
-
-  /* @r{Since this handler is established for more than one kind of signal, }
-     @r{it might still get invoked recursively by delivery of some other kind}
-     @r{of signal.  Use a static variable to keep track of that.} */
-  if (fatal_error_in_progress)
-    raise (sig);
-  fatal_error_in_progress = 1;
-
-
-
-  /* @r{Now do the clean up actions:}
-     @r{- reset terminal modes}
-     @r{- kill child processes}
-     @r{- remove lock files} */
-  @dots{}
-
-
-
-  /* @r{Now reraise the signal.  We reactivate the signal's}
-     @r{default handling, which is to terminate the process.}
-     @r{We could just call @code{exit} or @code{abort},}
-     @r{but reraising the signal sets the return status}
-     @r{from the process correctly.} */
-  signal (sig, SIG_DFL);
-  raise (sig);
address@hidden
-
address@hidden smallexample
-
address@hidden Longjmp in Handler
address@hidden Nonlocal Control-Transfer in Handlers
address@hidden nonlocal exit, from signal handler
-
-You can do a nonlocal transfer of control out of a signal handler
-using the @code{setjmp} and @code{longjmp} facilities (@pxref{Nonlocal
-Exits}).
-
-When the handler does a nonlocal control-transfer, the part of the
-program that was running will not continue.  If this part of the
-program was in the middle of updating an important data structure, the
-data structure will remain inconsistent.  Since the program does not
-terminate, the inconsistency is likely to be noticed later on.
-
-There are two ways to avoid this problem.  One is to block the signal
-for the parts of the program that update important data structures.
-Blocking the signal delays its delivery until it is unblocked, once the
-critical updating is finished (@pxref{Blocking Signals}).
-
-The other way is to reinitialize the crucial data structures in the
-signal handler, or make their values consistent.
-
-Here is a rather schematic example showing the reinitialization of one
-global variable:
-
address@hidden
-
-#include <signal.h>
-#include <setjmp.h>
-
-jmp_buf return_to_top_level;
-
-volatile sig_atomic_t waiting_for_input;
-
-void
-handle_sigint (int signum)
address@hidden
-  /* @r{We may have been waiting for input when the signal arrived,}
-     @r{but we are no longer waiting once we transfer control.} */
-  waiting_for_input = 0;
-  longjmp (return_to_top_level, 1);
address@hidden
-
-
-
-int
-main (void)
address@hidden
-  @dots{}
-  signal (SIGINT, sigint_handler);
-  @dots{}
-  while (1) @{
-    prepare_for_command ();
-    if (setjmp (return_to_top_level) == 0)
-      read_and_execute_command ();
-  @}
address@hidden
-
-
-
-/* @r{Imagine this is a subroutine used by various commands.} */
-char *
-read_data ()
address@hidden
-  if (input_from_terminal) @{
-    waiting_for_input = 1;
-    @dots{}
-    waiting_for_input = 0;
-  @} else @{
-    @dots{}
-  @}
address@hidden
-
address@hidden smallexample
-
-
address@hidden Signals in Handler
address@hidden Signals Arriving While a Handler Runs
address@hidden race conditions, relating to signals
-
-What happens if another signal arrives while your signal-handler
-function is running?
-
-When the handler for a particular signal is invoked, that signal is
-automatically blocked until the handler returns.  That means that if
-two signals of the same kind arrive close together, the second one
-will be held until the first has been handled.  The handler can
-explicitly unblock the signal using @code{sigprocmask}, if you want to
-allow more signals of this type to arrive (@pxref{Process Signal-Mask}).
-
-However, your handler can still be interrupted by delivery of another
-kind of signal.  To avoid this, you can use the @code{sa_mask} member
-of the action structure passed to @code{sigaction} to explicitly
-specify which signals should be blocked while the signal handler runs.
-These signals are in addition to the signal for which the handler was
-invoked, and any other signals that are normally blocked by the
-process (@pxref{Blocking for Handler}).
-
-When the handler returns, the set of blocked signals is restored to the
-value it had before the handler ran.  So using @code{sigprocmask} inside
-the handler only affects what signals can arrive during the execution of
-the handler itself, not what signals can arrive once the handler returns.
-
address@hidden Note:} Always use @code{sigaction} to establish a
-handler for a signal that you expect to receive asynchronously, if you
-want your program to work properly on System V Unix.  On this system,
-the handling of a signal whose handler was established with
address@hidden automatically sets the signal's action back to
address@hidden, and the handler must reestablish itself each time it
-runs.  This practice, while inconvenient, does work when signals cannot
-arrive in succession.  However, if another signal can arrive right away,
-it may arrive before the handler can reestablish itself.  Then the
-second signal would receive the default handling, which could terminate
-the process.
-
address@hidden Merged Signals
address@hidden Signals Close Together Merge into One
address@hidden handling multiple signals
address@hidden successive signals
address@hidden merging of signals
-
-If multiple signals of the same type are delivered to your process
-before your signal-handler has a chance to be invoked at all, the
-handler may only be invoked once, as if only a single signal had
-arrived.  In effect, the signals merge into one.  This situation can
-arise when the signal is blocked, or in a multiprocessing environment
-where the system is busy running some other processes while the signals
-are delivered.  This means, for example, that you cannot reliably use a
-signal handler to count signals.  The only distinction you can reliably
-make is whether at least one signal has arrived since a given time in
-the past.
-
-Here is an example of a handler for @code{SIGCHLD} that compensates for
-the fact that the number of signals received may not equal the number of
-child processes that generate them.  It assumes that the program keeps track
-of all the child processes with a chain of structures as follows:
-
address@hidden
-struct process
address@hidden
-  struct process *next;
-  /* @r{The process @acronym{ID} of this child.}  */
-  int pid;
-  /* @r{The descriptor of the pipe or pseudoterminal}
-     @r{on which output comes from this child.}  */
-  int input_descriptor;
-  /* @r{Nonzero if this process has stopped or terminated}  */
-  sig_atomic_t have_status;
-  /* @r{The status of this child; 0 if running,}
-     @r{otherwise a status value from @code{waitpid}}  */
-  int status;
address@hidden;
-
-struct process *process_list;
address@hidden smallexample
-
-This example also uses a flag to indicate whether signals have arrived
-since some time in the past---whenever the program last cleared it to
-0.
-
address@hidden
-/* @r{Nonzero means some child's status has changed,}
-   @r{so look at @code{process_list} for the details.}  */
-int process_status_change;
address@hidden smallexample
-
-Here is the handler itself:
-
address@hidden
-void
-sigchld_handler (int signo)
address@hidden
-  int old_errno = errno;
-
-  while (1) @{
-    register int pid;
-    int w;
-    struct process *p;
-
-    /* @r{Keep asking for a status until we get a definitive result.}  */
-    do
-      @{
-        errno = 0;
-        pid = waitpid (WAIT_ANY, &w, WNOHANG | WUNTRACED);
-      @}
-    while (pid <= 0 && errno == EINTR);
-
-    if (pid <= 0) @{
-      /* @r{A real failure means there are no more}
-         @r{stopped or terminated child processes, so return.}  */
-      errno = old_errno;
-      return;
-    @}
-
-    /* @r{Find the process that signaled us, and record its status.}  */
-
-    for (p = process_list; p; p = p->next)
-      if (p->pid == pid) @{
-        p->status = w;
-        /* @r{Indicate that the @code{status} field}
-           @r{has data to look at.  We do this only after storing it.}  */
-        p->have_status = 1;
-
-        /* @r{If process has terminated, stop waiting for its output.}  */
-        if (WIFSIGNALED (w) || WIFEXITED (w))
-          if (p->input_descriptor)
-            FD_CLR (p->input_descriptor, &input_wait_mask);
-
-        /* @r{The program should check this flag from time to time}
-           @r{to see if there is any news in @code{process_list}.}  */
-        ++process_status_change;
-      @}
-
-    /* @r{Loop around to handle all the processes}
-       @r{that have something to tell us.}  */
-  @}
address@hidden
address@hidden smallexample
-
-Here is the proper way to check the flag @code{process_status_change}:
-
address@hidden
-if (process_status_change) @{
-  struct process *p;
-  process_status_change = 0;
-  for (p = process_list; p; p = p->next)
-    if (p->have_status) @{
-      @dots{} @r{Examine @code{p->status}} @dots{}
-    @}
address@hidden
address@hidden smallexample
-
address@hidden
-It is vital to clear the flag before examining the list; otherwise, if a
-signal were delivered just before the clearing of the flag, and after
-the appropriate element of the process list had been checked, the status
-change would go unnoticed until the next signal arrived to set the flag
-again.  You could, of course, avoid this problem by blocking the signal
-while scanning the list, but it is much more elegant to guarantee
-correctness by doing things in the right order.
-
-The loop that checks process status avoids examining @code{p->status}
-until it sees that status has been validly stored.  This is to make
-sure that the status cannot change in the middle of accessing it.
-Once @code{p->have_status} is set, it means that the child process is
-stopped or terminated, and in either case, it cannot stop or terminate
-again until the program has taken notice.  @xref{Atomic Usage}, for
-more information about coping with interruptions during accesses of a
-variable.
-
-Here is another way you can test whether the handler has run since the
-last time you checked.  This technique uses a counter that is never
-changed outside the handler.  Instead of clearing the count, the
-program remembers the previous value and sees whether it has changed
-since the previous check.  The advantage of this method is that
-different parts of the program can check independently, each part
-checking whether there has been a signal since that part last checked.
-
address@hidden
-sig_atomic_t process_status_change;
-
-sig_atomic_t last_process_status_change;
-
address@hidden
address@hidden
-  sig_atomic_t prev = last_process_status_change;
-  last_process_status_change = process_status_change;
-  if (last_process_status_change != prev) @{
-    struct process *p;
-    for (p = process_list; p; p = p->next)
-      if (p->have_status) @{
-        @dots{} @r{Examine @code{p->status}} @dots{}
-      @}
-  @}
address@hidden
address@hidden smallexample
-
address@hidden Nonreentrancy
address@hidden Signal Handling and Nonreentrant Functions
address@hidden restrictions on signal-handler functions
-
-Handler functions usually don't do very much.  The best practice is to
-write a handler that does nothing but set an external variable that the
-program checks regularly, and leave all serious work to the program.
-This is best because the handler can be called asynchronously, at
-unpredictable times---perhaps in the middle of a primitive function, or
-even between the beginning and the end of a C operator that requires
-multiple instructions.  The data structures being manipulated might
-therefore be in an inconsistent state when the handler function is
-invoked.  Even copying one @code{int} variable into another can take two
-instructions on most machines.
-
-This means you have to be very careful about what you do in a signal
-handler.
-
address@hidden @bullet
address@hidden
address@hidden @code{volatile} declarations
-If your handler needs to access any global variables from your program,
-declare those variables @code{volatile}.  This tells the compiler that
-the value of the variable might change asynchronously, and inhibits
-certain optimizations that would be invalidated by such modifications.
-
address@hidden
address@hidden reentrant functions
-If you call a function in the handler, make sure it is @dfn{reentrant}
-with respect to signals, or else make sure that the signal cannot
-interrupt a call to a related function.
address@hidden itemize
-
-A function can be nonreentrant if it uses memory that is not on the
-stack.
-
address@hidden @bullet
address@hidden
-If a function uses a static variable or a global variable, or a
-dynamically allocated object that it finds for itself, then it is
-nonreentrant and any two calls to the function can interfere.
-
-For example, suppose that the signal handler uses @code{gethostbyname}.
-This function returns its value in a static object, reusing the same
-object each time.  If the signal happens to arrive during a call to
address@hidden, or even after one (while the program is still
-using the value), it will clobber the value that the program asked for.
-
-However, if the program does not use @code{gethostbyname} or any other
-function that returns information in the same object, or if it always
-blocks signals around each use, then you are safe.
-
-There are a large number of library functions that return values in a
-fixed object, always reusing the same object in this fashion, and all of
-them cause the same problem.  Function descriptions in this manual
-always mention this behavior.
-
address@hidden
-If a function uses and modifies an object that you supply, then it is
-potentially nonreentrant; two calls can interfere if they use the same
-object.
-
-This case arises when you do I/O using streams.  Suppose that the
-signal handler prints a message with @code{fprintf}.  Suppose that the
-program was in the middle of an @code{fprintf} call using the same
-stream when the signal was delivered.  Both the signal handler's message
-and the program's data could be corrupted, because both calls operate on
-the same data structure---the stream itself.
-
-However, if you know that the stream that the handler uses cannot
-possibly be used by the program at a time when signals can arrive, then
-you are safe.  It is no problem if the program uses some other stream.
-
address@hidden
-On most systems, @code{malloc} and @code{free} are not reentrant,
-because they use a static data-structure that records what memory
-blocks are free.  As a result, no library functions that allocate or
-free memory are reentrant.  This includes functions that allocate
-space to store a result.
-
-The best way to avoid the need to allocate memory in a handler is to
-allocate in advance space for signal handlers to use.
-
-The best way to avoid freeing memory in a handler is to flag or record
-the objects to be freed, and have the program check from time to time
-whether anything is waiting to be freed.  But this must be done with
-care, because placing an object on a chain is not atomic, and if it is
-interrupted by another signal handler that does the same thing, you
-could ``lose'' one of the objects.
-
address@hidden
-!!! not true
-On the @acronym{GNU} system, @code{malloc} and @code{free} are safe to use in
-signal handlers because they block signals.  As a result, the library
-functions that allocate space for a result are also safe in signal
-handlers.  The obstack allocation functions are safe as long as you
-don't use the same obstack both inside and outside of a signal handler.
address@hidden ignore
-
address@hidden
address@hidden Once we have r_alloc again add this paragraph.
-The relocating allocation address@hidden, ``Relocating
-Allocator''.}, are certainly not safe to use in a signal handler.
address@hidden ignore
-
address@hidden
-Any function that modifies @code{errno} is nonreentrant, but you can
-correct for this. In the handler, save the original value of
address@hidden and restore it before returning normally.  This prevents
-errors that occur within the signal handler from being confused with
-errors from system calls at the point the program is interrupted to
-run the handler.
-
-This technique is generally applicable; if you want to call in a handler
-a function that modifies a particular object in memory, you can make
-this safe by saving and restoring that object.
-
address@hidden
-Merely reading from a memory object is safe provided that you can deal
-with any of the values that might appear in the object at a time when
-the signal can be delivered.  Keep in mind that assignment to some data
-types requires more than one instruction, which means that the handler
-could run ``in the middle of'' an assignment to the variable if its type
-is not atomic (@pxref{Atomic Data Access}).
-
address@hidden
-Merely writing into a memory object is safe as long as a sudden change
-in the value, at any time when the handler might run, will not disturb
-anything.
address@hidden itemize
-
address@hidden Atomic Data Access
address@hidden Atomic Data-Access and Signal-Handling
-
-Whether the data in your application concerns atoms, or mere text, you
-have to be careful about the fact that access to a single datum is not
-necessarily @dfn{atomic}.  This means that it can take more than one
-instruction to read or write a single object.  In such cases, a signal
-handler might be invoked in the middle of reading or writing the
-object.
-
-There are three ways you can cope with this problem.  You can use data
-types that are always accessed atomically; you can carefully arrange
-that nothing untoward happens if an access is interrupted, or you can
-block all signals around any access that had better not be interrupted
-(@pxref{Blocking Signals}).
-
address@hidden Nonatomic Example
address@hidden Problems with Nonatomic Access
-
-Here is an example which shows what can happen if a signal handler
-runs in the middle of modifying a variable.  Interrupting the reading
-of a variable can also lead to paradoxical results, but here we only
-show writing.
-
address@hidden
-#include <signal.h>
-#include <stdio.h>
-
-struct two_words @{ int a, b; @} memory;
-
-void
-handler(int signum)
address@hidden
-   printf ("%d,%d\n", memory.a, memory.b);
-   alarm (1);
address@hidden
-
-
-int
-main (void)
address@hidden
-   static struct two_words zeros = @{ 0, 0 @}, ones = @{ 1, 1 @};
-   signal (SIGALRM, handler);
-   memory = zeros;
-   alarm (1);
-   while (1)
-     @{
-       memory = zeros;
-       memory = ones;
-     @}
address@hidden
-
address@hidden smallexample
-
-This program fills @code{memory} with zeros, ones, zeros, ones,
-alternating forever; meanwhile, once per second, the alarm
-signal-handler prints the current contents.  (Calling @code{printf} in
-the handler is safe in this program because it is certainly not being
-called outside the handler when the signal happens.)
-
-Clearly, this program can print a pair of zeros or a pair of ones.  But
-that's not all it can do!  On most machines, it takes several
-instructions to store a new value in @code{memory}, and the value is
-stored one word at a time.  If the signal is delivered in between these
-instructions, the handler might find that @code{memory.a} is 0 and
address@hidden is 1 (or vice versa).
-
-On some machines it may be possible to store a new value in
address@hidden with just one instruction that cannot be interrupted.  On
-these machines, the handler will always print two zeros or two ones.
-
address@hidden Atomic Types
address@hidden Atomic Types
-
-To avoid uncertainty about interrupting access to a variable, you can
-use a particular data type for which access is always atomic:
address@hidden  Reading and writing this data type is guaranteed
-to happen in a single instruction, so there's no way for a handler to
-run ``in the middle'' of an access.
-
-The type @code{sig_atomic_t} is always an integer data type, but which
-one it is, and how many bits it contains, may vary from machine to
-machine.
-
address@hidden signal.h
address@hidden ISO
address@hidden {Data Type} sig_atomic_t
-This is an integer data type.  Objects of this type are always accessed
-atomically.
address@hidden deftp
-
-In practice, you can assume that @code{int} and other integer types no
-longer than @code{int} are atomic.  You can also assume that pointer
-types are atomic; that is very convenient.  Both of these assumptions
-are true on all of the machines that the @acronym{GNU} C Library supports and 
on
-all @acronym{POSIX} systems we know of.
address@hidden ??? This might fail on a 386 that uses 64-bit pointers.
-
address@hidden Atomic Usage
address@hidden Atomic Usage-Patterns
-
-Certain patterns of access avoid any problem even if an access is
-interrupted.  For example, a flag that is set by the handler, and
-tested and cleared by the main program from time to time, is always
-safe even if access actually requires two instructions.  To show that
-this is so, we must consider each access that could be interrupted,
-and show that there is no problem if it is interrupted.
-
-An interrupt in the middle of testing the flag is safe because either it's
-recognized to be nonzero, in which case the precise value doesn't
-matter, or it will be seen to be nonzero the next time it's tested.
-
-An interrupt in the middle of clearing the flag is no problem because
-either the value ends up 0, which is what happens if a signal comes in
-just before the flag is cleared, or the value ends up nonzero, and
-subsequent events occur as if the signal had come in just after the
-flag was cleared.  As long as the code handles both of these cases
-properly, it can also handle a signal in the middle of clearing the
-flag.  This is an example of the sort of reasoning you need to do to
-figure out whether nonatomic usage is safe.
-
-Sometimes you can insure uninterrupted access to one object by
-protecting its use with another object, perhaps one whose type
-guarantees atomicity (@pxref{Merged Signals} for an example).
-
address@hidden Interrupted Primitives
address@hidden Primitives Interrupted by Signals
-
-A signal can arrive and be handled while an I/O primitive such as
address@hidden or @code{read} is waiting for an I/O device.  If the signal
-handler returns, the system faces the question: what should happen next?
-
address@hidden specifies one approach---make the primitive fail right
-away.  The error code for this kind of failure is @code{EINTR}.  This
-is flexible, but usually inconvenient.  Typically, @acronym{POSIX}
-applications that use signal handlers must check for @code{EINTR}
-after each library function that can return it, in order to try the
-call again.  Often programmers forget to check, which is a common
-source of error.
-
-The @acronym{GNU} library provides a convenient way to retry a call after a
-temporary failure, with the macro @code{TEMP_FAILURE_RETRY}:
-
address@hidden unistd.h
address@hidden GNU
address@hidden TEMP_FAILURE_RETRY (@var{expression})
-This macro evaluates @var{expression} once.  If it fails and reports
-error code @code{EINTR}, @code{TEMP_FAILURE_RETRY} evaluates it again,
-and over and over until the result is not a temporary failure.
-
-The value returned by @code{TEMP_FAILURE_RETRY} is whatever value
address@hidden produced.
address@hidden defmac
-
address@hidden avoids @code{EINTR} entirely and provides a more convenient
-approach: to restart the interrupted primitive, instead of making it
-fail.  If you choose this approach, you need not be concerned with
address@hidden
-
-You can choose either approach with the @acronym{GNU} library.  If you use
address@hidden to establish a signal handler, you can specify how that
-handler should behave.  If you specify the @code{SA_RESTART} flag,
-return from that handler will resume a primitive; otherwise, return from
-that handler will cause @code{EINTR} (@pxref{Flags for Sigaction}).
-
-Another way to specify the choice is with the @code{siginterrupt}
-function (@pxref{BSD Handler}).
-
address@hidden !!! not true now about _BSD_SOURCE
-When you don't specify with @code{sigaction} or @code{siginterrupt}
-what a particular handler should do, it uses a default choice.  The
-default choice in the @acronym{GNU} library depends on the
-feature-test macros you have defined.  If you define
address@hidden or @code{_GNU_SOURCE} before calling @code{signal},
-the default is to resume primitives; otherwise, the default is to make
-them fail with @code{EINTR}.  (The library contains alternate versions
-of the @code{signal} function, and the feature-test macros determine
-which one you really call.)  @xref{Feature-Test Macros}.
address@hidden EINTR, and restarting interrupted primitives
address@hidden restarting interrupted primitives
address@hidden interrupting primitives
address@hidden primitives, interrupting
address@hidden !!! want to have @cindex system calls @i{see} primitives [no 
page #]
-
-The description of each primitive affected by this issue
-lists @code{EINTR} among the error codes it can return.
-
-There is one situation where resumption never happens no matter which
-choice you make---when a data-transfer function such as @code{read} or
address@hidden is interrupted by a signal after transferring part of the
-data.  In this case, the function returns the number of bytes already
-transferred, indicating partial success.
-
-This might at first appear to cause unreliable behavior on
-record-oriented devices (including datagram sockets; @pxref{Datagrams}),
-where splitting one @code{read} or @code{write} into two would read or
-write two records.  Actually, there is no problem, because interruption
-after a partial transfer cannot happen on such devices; they always
-transfer an entire record in one burst, with no waiting once data
-transfer has started.
-
address@hidden Generating Signals
address@hidden Generating Signals
address@hidden sending signals
address@hidden raising signals
address@hidden signals, generating
-
-Besides signals that are generated as a result of a hardware trap or
-interrupt, your program can explicitly send signals to itself or to
-another process.
-
address@hidden Signaling Yourself
address@hidden Signaling Yourself
-
-A process can send itself a signal with the @code{raise} function.  This
-function is declared in @file{signal.h}.
address@hidden signal.h
-
address@hidden signal.h
address@hidden ISO
address@hidden int raise (int @var{signum})
-The @code{raise} function sends the signal @var{signum} to the calling
-process.  It returns 0 if successful and a nonzero value if it fails.
-About the only reason for failure would be if the value of @var{signum}
-is invalid.
address@hidden deftypefun
-
address@hidden signal.h
address@hidden SVID
address@hidden int gsignal (int @var{signum})
-The @code{gsignal} function does the same thing as @code{raise}; it is
-provided only for compatibility with @acronym{SVID}.
address@hidden deftypefun
-
-One convenient use for @code{raise} is to reproduce the default behavior
-of a signal that you have trapped.  For instance, suppose a user of your
-program types the SUSP character (usually @kbd{C-z}; @pxref{Special
-Characters}) to send it an interactive stop signal
-(@code{SIGTSTP}), and you want to clean up some internal data buffers
-before stopping.  You might set this up like this:
-
address@hidden RMS suggested getting rid of the handler for SIGCONT in this 
function.
address@hidden But that would require that the handler for SIGTSTP unblock the
address@hidden signal before doing the call to raise.  We haven't covered that
address@hidden topic yet, and I don't want to distract from the main point of
address@hidden the example with a digression to explain what is going on.  As
address@hidden the example is written, the signal that is raised will be 
delivered
address@hidden as soon as the SIGTSTP handler returns, which is fine.
-
address@hidden
-#include <signal.h>
-
-/* @r{When a stop signal arrives, set the action back to the default
-   and then resend the signal after doing clean-up actions.} */
-
-void
-tstp_handler (int sig)
address@hidden
-  signal (SIGTSTP, SIG_DFL);
-  /* @r{Do clean-up actions here.} */
-  @dots{}
-  raise (SIGTSTP);
address@hidden
-
-/* @r{When the process is continued again, restore the signal handler.} */
-
-void
-cont_handler (int sig)
address@hidden
-  signal (SIGCONT, cont_handler);
-  signal (SIGTSTP, tstp_handler);
address@hidden
-
-
-/* @r{Enable both handlers during program initialization.} */
-
-int
-main (void)
address@hidden
-  signal (SIGCONT, cont_handler);
-  signal (SIGTSTP, tstp_handler);
-  @dots{}
address@hidden
-
address@hidden smallexample
-
address@hidden Note:} @code{raise} was invented by the
address@hidden@acronym{ISO} C} committee.  Older systems may not support it, so
-using @code{kill} may be more portable.
-
address@hidden Signaling Another Process
address@hidden Signaling Another Process
-
address@hidden killing a process
-The @code{kill} function can be used to send a signal to another
-process.  In spite of its name, it can be used for a lot of things
-other than causing a process to terminate.  Some examples of
-situations where you might want to send signals between processes are
-
address@hidden @bullet
address@hidden
-A parent process starts a child to perform a task---perhaps having the
-child running an infinite loop---and then terminates the child when the
-task is no longer needed.
-
address@hidden
-A process executes as part of a group, and needs to terminate or notify
-the other processes in the group when an error or other event occurs.
-
address@hidden
-Two processes need to synchronize while working together.
address@hidden itemize
-
-This section assumes that you know a little bit about how processes
-work.  For more information on this subject, see @ref{Processes}.
-
-The @code{kill} function is declared in @file{signal.h}.
address@hidden signal.h
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden int kill (pid_t @var{pid}, int @var{signum})
-The @code{kill} function sends the signal @var{signum} to the process
-or process group specified by @var{pid}.  Besides the signals listed in
address@hidden Signals}, @var{signum} can also have a value of zero to
-check the validity of the @var{pid}.
-
-The @var{pid} specifies the process or process group to receive the
-signal:
-
address@hidden @code
address@hidden @var{pid} > 0
-Specify the process whose identifier is @var{pid}.
-
address@hidden @var{pid} == 0
-Specify all processes in the same process group as the sender.
-
address@hidden @var{pid} < -1
-Specify the process group whose identifier is @address@hidden
-
address@hidden @var{pid} == -1
-If the process is privileged, send the signal to all processes except
-for some special system-processes.  Otherwise, send the signal to all
-processes with the same effective address@hidden
address@hidden table
-
-A process can send a signal to itself with a call like @address@hidden
-(getpid(), @var{signum})}}.  If @code{kill} is used by a process to send
-a signal to itself, and the signal is not blocked, then @code{kill}
-delivers at least one signal (which might be some other pending
-unblocked signal instead of the signal @var{signum}) to that process
-before it returns.
-
-The return value from @code{kill} is 0 if the signal can be sent
-successfully.  Otherwise, no signal is sent, and a value of @code{-1} is
-returned.  If @var{pid} specifies sending a signal to several processes,
address@hidden succeeds if it can send the signal to at least one of them.
-There's no way you can tell which of the processes got the signal
-or whether all of them did.
-
-The following @code{errno} error conditions are defined for this function:
-
address@hidden @code
address@hidden EINVAL
-The @var{signum} argument is an invalid or unsupported number.
-
address@hidden EPERM
-You do not have the privilege to send a signal to the process or any of
-the processes in the process group named by @var{pid}.
-
address@hidden ESCRH
-The @var{pid} argument does not refer to an existing process or group.
address@hidden table
address@hidden deftypefun
-
address@hidden signal.h
address@hidden BSD
address@hidden int killpg (int @var{pgid}, int @var{signum})
-This is similar to @code{kill}, but sends signal @var{signum} to the
-process group @var{pgid}.  This function is provided for compatibility
-with @acronym{BSD}; using @code{kill} to do this is more portable.
address@hidden deftypefun
-
-As a simple example of @code{kill}, the call @address@hidden (getpid (),
address@hidden)}} has the same effect as @address@hidden (@var{sig})}}.
-
address@hidden Permission for Kill
address@hidden Permission for Using @code{kill}
-
-There are restrictions that prevent you from using @code{kill} to send
-signals to any random process.  These are intended to prevent
-antisocial behavior such as arbitrarily killing off processes
-belonging to another user.  In typical use, @code{kill} is used to
-pass signals between parent, child and sibling processes, and in these
-situations you normally do have permission to send signals.  The only
-common exception is when you run a setuid program in a child process;
-if the program changes its real @acronym{UID} as well as its effective
address@hidden, you may not have permission to send a signal.  The
address@hidden program does this.
-
-Whether a process has permission to send a signal to another process
-is determined by the user @acronym{ID}s of the two processes.  This concept is
-discussed in detail in @ref{Process Persona}.
-
-Generally, for a process to be able to send a signal to another
-process, either the sending process must belong to a privileged user
-(like @samp{root}), or the real or effective address@hidden of the
-sending process must match the real or effective address@hidden of
-the receiving process.  If the receiving process has changed its
-effective address@hidden from the address@hidden mode bit on
-its process image file, then the owner of the process image file is
-used in place of its current effective address@hidden  In some
-implementations, a parent process might be able to send signals to a
-child process even if the user @acronym{ID}s don't match, and other
-implementations might enforce other restrictions.
-
-The @code{SIGCONT} signal is a special case.  It can be sent if the
-sender is part of the same session as the receiver, regardless of
-user @acronym{ID}s.
-
address@hidden Kill Example
address@hidden Using @code{kill} for Communication
address@hidden interprocess communication, with signals
-Here is a longer example showing how signals can be used for
-interprocess communication.  This is what the @code{SIGUSR1} and
address@hidden signals are provided for.  Since these signals are fatal
-by default, the process that is supposed to receive them must trap them
-through @code{signal} or @code{sigaction}.
-
-In this example, a parent process forks a child process and then waits
-for the child to complete its initialization.  The child process tells
-the parent when it is ready by sending it a @code{SIGUSR1} signal, using
-the @code{kill} function.
-
address@hidden
-
-#include <signal.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-
-/* @r{When a @code{SIGUSR1} signal arrives, set this variable.} */
-volatile sig_atomic_t usr_interrupt = 0;
-
-void 
-synch_signal (int sig)
address@hidden
-  usr_interrupt = 1;
address@hidden
-
-/* @r{The child process executes this function.} */
-void 
-child_function (void)
address@hidden
-  /* @r{Perform initialization.} */
-  printf ("I'm here!!!  My pid is %d.\n", (int) getpid ());
-
-  /* @r{Let parent know you're done.} */
-  kill (getppid (), SIGUSR1);
-
-  /* @r{Continue with execution.} */
-  puts ("Bye, now....");
-  exit (0);
address@hidden
-
-int
-main (void)
address@hidden
-  struct sigaction usr_action;
-  sigset_t block_mask;
-  pid_t child_id;
-
-  /* @r{Establish the signal handler.} */
-  sigfillset (&block_mask);
-  usr_action.sa_handler = synch_signal;
-  usr_action.sa_mask = block_mask;
-  usr_action.sa_flags = 0;
-  sigaction (SIGUSR1, &usr_action, NULL);
-
-  /* @r{Create the child process.} */
-  child_id = fork ();
-  if (child_id == 0)
-    child_function ();          /* @r{Does not return.} */
-
-
-  /* @r{Busy wait for the child to send a signal.} */
-  while (!usr_interrupt)
-    ;
-
-
-  /* @r{Now continue execution.} */
-  puts ("That's all, folks!");
-
-  return 0;
address@hidden
-
address@hidden smallexample
-
-This example uses a busy wait, which is bad, because it wastes
address@hidden cycles that other programs could otherwise use.  It is
-better to ask the system to wait until the signal arrives (see the
-example in @ref{Waiting for a Signal}).
-
address@hidden Blocking Signals
address@hidden Blocking Signals
address@hidden blocking signals
-
-Blocking a signal means telling the operating system to hold it and
-deliver it later.  Generally, a program does not block signals
-indefinitely---it might as well ignore them by setting their actions to
address@hidden  But it is useful to block signals briefly, to prevent
-them from interrupting sensitive operations.  For instance:
-
address@hidden @bullet
address@hidden
-You can use the @code{sigprocmask} function to block signals while you
-modify global variables that are also modified by the handlers for these
-signals.
-
address@hidden
-You can set @code{sa_mask} in your @code{sigaction} call to block
-certain signals while a particular signal-handler runs.  This way, the
-signal handler can run without being interrupted itself by signals.
address@hidden itemize
-
address@hidden Why Block
address@hidden Why Blocking Signals Is Useful
-
-Temporary blocking of signals with @code{sigprocmask} gives you a way to
-prevent interrupts during critical parts of your code.  If signals
-arrive in that part of the program, they are delivered later, after you
-unblock them.
-
-One example where this is useful is for sharing data between a signal
-handler and the rest of the program.  If the type of the data is not
address@hidden (@pxref{Atomic Data Access}), then the signal
-handler could run when the rest of the program has only half-finished
-reading or writing the data.  This would lead to confusing
-consequences.
-
-To make the program reliable, you can prevent the signal handler from
-running while the rest of the program is examining or modifying that
-data---by blocking the appropriate signal around the parts of the
-program that touch the data.
-
-Blocking signals is also necessary when you want to perform a certain
-action only if a signal has not arrived.  Suppose that the handler for
-the signal sets a flag of type @code{sig_atomic_t}; you would like to
-test the flag and perform the action if the flag is not set.  This is
-unreliable.  Suppose the signal is delivered immediately after you
-test the flag, but before the consequent action---then the program
-will perform the action even though the signal has arrived.
-
-The only way to test reliably for whether a signal has yet arrived is to
-test while the signal is blocked.
-
address@hidden Signal Sets
address@hidden Signal Sets
-
-All of the signal-blocking functions use a data structure called a
address@hidden set} to specify what signals are affected.  Thus, every
-activity involves two stages: creating the signal set, and then
-passing it as an argument to a library function.
address@hidden signal set
-
-These facilities are declared in the header file @file{signal.h}.
address@hidden signal.h
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden {Data Type} sigset_t
-The @code{sigset_t} data type is used to represent a signal set.
-Internally, it may be implemented as either an integer or structure
-type.
-
-For portability, use only the functions described in this section to
-initialize, change and retrieve information from @code{sigset_t}
-objects---don't try to manipulate them directly.
address@hidden deftp
-
-There are two ways to initialize a signal set.  You can initially
-specify it to be empty with @code{sigemptyset} and then add specified
-signals individually.  Or you can specify it to be full with
address@hidden and then delete specified signals individually.
-
-You must always initialize the signal set with one of these two
-functions before using it in any other way.  Don't try to set all the
-signals explicitly, because the @code{sigset_t} object might include
-some other information, like a version field, that needs to be
-initialized as well. In addition, it's not wise to put into your
-program an assumption that the system has no signals aside from the
-ones you know about.
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden int sigemptyset (sigset_t address@hidden)
-This function initializes the signal set @var{set} to exclude all of the
-defined signals.  It always returns @code{0}.
address@hidden deftypefun
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden int sigfillset (sigset_t address@hidden)
-This function initializes the signal set @var{set} to include
-all of the defined signals.  Again, the return value is @code{0}.
address@hidden deftypefun
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden int sigaddset (sigset_t address@hidden, int @var{signum})
-This function adds the signal @var{signum} to the signal set @var{set}.
-All @code{sigaddset} does is modify @var{set}; it does not block or
-unblock any signals.
-
-The return value is @code{0} on success and @code{-1} on failure.
-The following @code{errno} error condition is defined for this function:
-
address@hidden @code
address@hidden EINVAL
-The @var{signum} argument doesn't specify a valid signal.
address@hidden table
address@hidden deftypefun
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden int sigdelset (sigset_t address@hidden, int @var{signum})
-This function removes the signal @var{signum} from the signal set
address@hidden  All @code{sigdelset} does is modify @var{set}; it does not
-block or unblock any signals.  The return value and error conditions are
-the same as for @code{sigaddset}.
address@hidden deftypefun
-
-Finally, there is a function to test what signals are in a signal set:
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden int sigismember (const sigset_t address@hidden, int @var{signum})
-The @code{sigismember} function tests whether the signal @var{signum}
-is a member of the signal set @var{set}.  It returns @code{1} if the
-signal is in the set, @code{0} if not and @code{-1} if there is an
-error.
-
-The following @code{errno} error condition is defined for this function:
-
address@hidden @code
address@hidden EINVAL
-The @var{signum} argument doesn't specify a valid signal.
address@hidden table
address@hidden deftypefun
-
address@hidden Process Signal-Mask
address@hidden Process Signal-Mask
address@hidden signal mask
address@hidden process signal-mask
-
-The collection of signals that are currently blocked is called the
address@hidden mask}.  Each process has its own signal mask.  When you
-create a new process (@pxref{Creating a Process}), it inherits its
-parent's mask.  You can block or unblock signals with total flexibility
-by modifying the signal mask.
-
-The prototype for the @code{sigprocmask} function is in @file{signal.h}.
address@hidden signal.h
-
-You must not use @code{sigprocmask} in multithreaded processes,
-because each thread has its own signal mask and there is no single
-process signal-mask. According to @acronym{POSIX}, the behavior of
address@hidden in a multithreaded process is ``unspecified''.
-Instead, use @code{pthread_sigmask}.
address@hidden linuxthreads
-(@xref{Threads and Signal-Handling}.)
address@hidden ifset
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden int sigprocmask (int @var{how}, const sigset_t *restrict 
@var{set}, sigset_t *restrict @var{oldset})
-The @code{sigprocmask} function is used to examine or change the
-calling process's signal-mask.  The @var{how} argument determines how
-the signal mask is changed, and must be one of the following values:
-
address@hidden @code
address@hidden signal.h
address@hidden POSIX.1
address@hidden SIG_BLOCK
address@hidden SIG_BLOCK
-Block the signals in @code{set}---add them to the existing mask.  In
-other words, the new mask is the union of the existing mask and
address@hidden
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden SIG_UNBLOCK
address@hidden SIG_UNBLOCK
-Unblock the signals in @var{set}---remove them from the existing mask.
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden SIG_SETMASK
address@hidden SIG_SETMASK
-Use @var{set} for the mask; ignore the previous value of the mask.
address@hidden table
-
-The last argument, @var{oldset}, is used to return information about
-the old process signal-mask.  If you just want to change the mask
-without looking at it, pass a null pointer as the @var{oldset}
-argument.  Similarly, if you want to know what's in the mask without
-changing it, pass a null pointer for @var{set} (in this case the
address@hidden argument is not significant).  The @var{oldset} argument is
-often used to remember the previous signal-mask in order to restore it
-later.  Since the signal mask is inherited over @code{fork} and
address@hidden calls, you can't predict what its contents are when your
-program starts running.
-
-If invoking @code{sigprocmask} causes any pending signals to be
-unblocked, at least one of those signals is delivered to the process
-before @code{sigprocmask} returns.  The order in which pending signals
-are delivered is not specified, but you can control the order explicitly
-by making multiple @code{sigprocmask} calls to unblock various signals
-one at a time.
-
-The @code{sigprocmask} function returns @code{0} if successful and
address@hidden to indicate an error.  The following @code{errno} error
-condition is defined for this function:
-
address@hidden @code
address@hidden EINVAL
-The @var{how} argument is invalid.
address@hidden table
-
-You can't block the @code{SIGKILL} and @code{SIGSTOP} signals, but
-if the signal set includes these, @code{sigprocmask} just ignores
-them instead of returning an error status.
-
-Remember, too, that blocking program-error signals such as
address@hidden leads to undesirable results for signals generated by an
-actual program error (as opposed to signals sent with @code{raise} or
address@hidden).  This is because your program may be too broken to be
-able to continue executing to a point where the signal is unblocked
-again (@pxref{Program-Error Signals}).
address@hidden deftypefun
-
address@hidden Testing for Delivery
address@hidden Blocking to Test for Delivery of a Signal
-
-Now for a simple example.  Suppose you establish a handler for
address@hidden signals that sets a flag whenever a signal arrives, and
-your main program checks this flag from time to time and then resets it.
-You can prevent additional @code{SIGALRM} signals from arriving in the
-meantime by wrapping the critical part of the code with calls to
address@hidden, like this:
-
address@hidden
-/* @r{This variable is set by the SIGALRM signal-handler.} */
-volatile sig_atomic_t flag = 0;
-
-int
-main (void)
address@hidden
-  sigset_t block_alarm;
-
-  @dots{}
-
-  /* @r{Initialize the signal mask.} */
-  sigemptyset (&block_alarm);
-  sigaddset (&block_alarm, SIGALRM);
-
-
-  while (1)
-    @{
-      /* @r{Check if a signal has arrived; if so, reset the flag.} */
-      sigprocmask (SIG_BLOCK, &block_alarm, NULL);
-      if (flag)
-        @{
-          @var{actions-if-not-arrived}
-          flag = 0;
-        @}
-      sigprocmask (SIG_UNBLOCK, &block_alarm, NULL);
-
-      @dots{}
-    @}
address@hidden
-
address@hidden smallexample
-
address@hidden Blocking for Handler
address@hidden Blocking Signals for a Handler
address@hidden blocking signals, in a handler
-
-When a signal handler is invoked, you usually want it to be able to
-finish without being interrupted by another signal.  From the moment the
-handler starts until the moment it finishes, you must block signals that
-might confuse it or corrupt its data.
-
-When a handler function is invoked on a signal, that signal is
-automatically blocked (in addition to any other signals that are already
-in the process's signal mask) during the time the handler is running.
-If you set up a handler for @code{SIGTSTP}, for instance, then the
-arrival of that signal forces further @code{SIGTSTP} signals to wait
-during the execution of the handler.
-
-However, by default, other kinds of signals are not blocked; they can
-arrive during handler execution.
-
-The reliable way to block other kinds of signals during the execution of
-the handler is to use the @code{sa_mask} member of the @code{sigaction}
-structure.
-
-Here is an example:
-
address@hidden
-#include <signal.h>
-#include <stddef.h>
-
-void catch_stop ();
-
-void
-install_handler (void)
address@hidden
-  struct sigaction setup_action;
-  sigset_t block_mask;
-
-  sigemptyset (&block_mask);
-  /* @r{Block other terminal-generated signals while handler runs.} */
-  sigaddset (&block_mask, SIGINT);
-  sigaddset (&block_mask, SIGQUIT);
-  setup_action.sa_handler = catch_stop;
-  setup_action.sa_mask = block_mask;
-  setup_action.sa_flags = 0;
-  sigaction (SIGTSTP, &setup_action, NULL);
address@hidden
address@hidden smallexample
-
-This is more reliable than blocking the other signals explicitly in the
-code for the handler.  If you block signals explicitly in the handler,
-you can't avoid at least a short interval at the beginning of the
-handler where they are not yet blocked.
-
-You cannot remove signals from the process's current mask using this
-mechanism.  However, you can make calls to @code{sigprocmask} within
-your handler to block or unblock signals as you wish.
-
-In any case, when the handler returns, the system restores the mask that
-was in place before the handler was entered.  If any signals that become
-unblocked by this restoration are pending, the process will receive
-those signals immediately, before returning to the code that was
-interrupted.
-
address@hidden Checking for Pending Signals
address@hidden Checking for Pending Signals
address@hidden pending signals, checking for
address@hidden blocked signals, checking for
address@hidden checking for pending signals
-
-You can find out which signals are pending at any time by calling
address@hidden  This function is declared in @file{signal.h}.
address@hidden signal.h
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden int sigpending (sigset_t address@hidden)
-The @code{sigpending} function stores information about pending
-signals in @var{set}.  If there is a pending signal that is blocked
-from delivery, then that signal is a member of the returned set.  You
-can test whether a particular signal is a member of this set using
address@hidden (@pxref{Signal Sets}).
-
-The return value is @code{0} if successful and @code{-1} on failure.
address@hidden deftypefun
-
-Testing whether a signal is pending is not often useful.  Testing when
-that signal is not blocked is almost certainly bad design.
-
-Here is an example:
-
address@hidden
-#include <signal.h>
-#include <stddef.h>
-
-sigset_t base_mask, waiting_mask;
-
-sigemptyset (&base_mask);
-sigaddset (&base_mask, SIGINT);
-sigaddset (&base_mask, SIGTSTP);
-
-/* @r{Block user interrupts while doing other processing.} */
-sigprocmask (SIG_SETMASK, &base_mask, NULL);
address@hidden
-
-/* @r{After a while, check to see whether any signals are pending.} */
-sigpending (&waiting_mask);
-if (sigismember (&waiting_mask, SIGINT)) @{
-  /* @r{The user has tried to kill the process.} */
address@hidden
-else if (sigismember (&waiting_mask, SIGTSTP)) @{
-  /* @r{The user has tried to stop the process.} */
address@hidden
address@hidden smallexample
-
-Remember that if there is a particular signal pending for your process,
-additional signals of that same type that arrive in the meantime might
-be discarded.  For example, if a @code{SIGINT} signal is pending when
-another @code{SIGINT} signal arrives, your program will probably only
-see one of them when you unblock this signal.
-
address@hidden Note:} The @code{sigpending} function is new in
address@hidden  Older systems have no equivalent facility.
-
address@hidden Remembering a Signal
address@hidden Remembering a Signal to Act on Later
-
-Instead of blocking a signal using the library facilities, you can get
-almost the same results by making the handler set a flag to be tested
-later, when you ``unblock''.  Here is an example:
-
address@hidden
-/* @r{If this flag is nonzero, don't handle the signal right away.} */
-volatile sig_atomic_t signal_pending;
-
-/* @r{This is nonzero if a signal arrived and was not handled.} */
-volatile sig_atomic_t defer_signal;
-
-void
-handler (int signum)
address@hidden
-  if (defer_signal)
-    signal_pending = signum;
-  else
-    @dots{} /* @r{``Really'' handle the signal.} */
address@hidden
-
address@hidden
-
-void
-update_mumble (int frob)
address@hidden
-  /* @r{Prevent signals from having immediate effect.} */
-  defer_signal++;
-  /* @r{Now update @code{mumble}, without worrying about interruption.} */
-  mumble.a = 1;
-  mumble.b = hack ();
-  mumble.c = frob;
-  /* @r{We have updated @code{mumble}.  Handle any signal that came in.} */
-  defer_signal--;
-  if (defer_signal == 0 && signal_pending != 0)
-    raise (signal_pending);
address@hidden
address@hidden smallexample
-
-Note how the particular signal that arrives is stored in
address@hidden  That way, we can handle several types of
-inconvenient signals with the same mechanism.
-
-We increment and decrement @code{defer_signal} so that nested critical
-sections will work properly; thus, if @code{update_mumble} were called
-with @code{signal_pending} already nonzero, signals would be deferred
-not only within @code{update_mumble}, but also within the caller.  This
-is also why we do not check @code{signal_pending} if @code{defer_signal}
-is still nonzero.
-
-The incrementing and decrementing of @code{defer_signal} each require
-more than one instruction; it is possible for a signal to happen in
-the middle.  But that does not cause any problem.  If the signal
-happens early enough to see the value from before the increment or
-decrement, that is equivalent to a signal that came before the
-beginning of the increment or decrement, which is a case that works
-properly.
-
-It is absolutely vital to decrement @code{defer_signal} before testing
address@hidden, because this avoids a subtle bug.  If we did
-these things in the other order, like this:
-
address@hidden
-  if (defer_signal == 1 && signal_pending != 0)
-    raise (signal_pending);
-  defer_signal--;
address@hidden smallexample
-
address@hidden
-then a signal arriving in between the @code{if} statement and the
-decrement would be effectively ``lost'' for an indefinite amount of
-time.  The handler would merely set @code{defer_signal}---but the
-program having already tested this variable, it would not test the
-variable again.
-
address@hidden timing error in signal handling
-Bugs like these are called @dfn{timing errors}.  They are especially bad
-because they happen only rarely and are nearly impossible to reproduce.
-You can't expect to find them with a debugger as you would find a
-reproducible bug.  So it is worth being especially careful to avoid
-them.
-
-(You would not be tempted to write the code in this order, given the use
-of @code{defer_signal} as a counter which must be tested along with
address@hidden  After all, testing for 0 is cleaner than
-testing for 1.  But if you did not use @code{defer_signal} as a
-counter, and gave it values of 0 and 1 only, then either order
-might seem equally simple.  This is a further advantage of using a
-counter for @code{defer_signal}: it will reduce the chance you will
-write the code in the wrong order and create a subtle bug.)
-
address@hidden Waiting for a Signal
address@hidden Waiting for a Signal
address@hidden waiting for a signal
address@hidden @code{pause} function
-
-If your program is driven by external events, or uses signals for
-synchronization, then when it has nothing to do, it should probably
-wait until a signal arrives.
-
address@hidden Using Pause
address@hidden Using @code{pause}
-
-The simple way to wait until a signal arrives is to call @code{pause}.
-Please read about its disadvantages, in the following section, before
-you use it.
-
address@hidden unistd.h
address@hidden POSIX.1
address@hidden int pause ()
-The @code{pause} function suspends program execution until a signal
-arrives whose action is either to execute a handler function or to
-terminate the process.
-
-If the signal causes a handler function to be executed, then
address@hidden returns.  This is considered an unsuccessful return (since
-``successful'' behavior would be to suspend the program forever), so the
-return value is @code{-1}.  Even if you specify that other primitives
-should resume when a system handler returns (@pxref{Interrupted
-Primitives}), this has no effect on @code{pause}; it always fails when a
-signal is handled.
-
-The following @code{errno} error condition is defined for this
-function:
-
address@hidden @code
address@hidden EINTR
-The function was interrupted by delivery of a signal.
address@hidden table
-
-If the signal causes program termination, @code{pause} doesn't return
-(obviously).
-
-This function is a cancellation point in multithreaded programs.  This
-is a problem if the thread allocates some resources (like memory, file
-descriptors, semaphores or whatever) at the time @code{pause} is
-called.  If the thread gets cancelled these resources stay allocated
-until the program ends.  To avoid this calls to @code{pause} should be
-protected using cancellation handlers.
address@hidden ref pthread_cleanup_push / pthread_cleanup_pop
-
-The @code{pause} function is declared in  @file{unistd.h}.
address@hidden deftypefun
-
address@hidden Pause Problems
address@hidden Problems with @code{pause}
-
-The simplicity of @code{pause} can conceal serious timing errors that
-can make a program hang mysteriously.
-
-It is safe to use @code{pause} if the real work of your program is done
-by the signal handlers themselves, and the ``main program'' does nothing
-but call @code{pause}.  Each time a signal is delivered, the handler
-will do the next batch of work that is to be done, and then return, so
-that the main loop of the program can call @code{pause} again.
-
-You can't safely use @code{pause} to wait until one more signal arrives,
-and then resume real work.  Even if you arrange for the signal handler
-to cooperate by setting a flag, you still can't use @code{pause}
-reliably.  Here is an example of this problem:
-
address@hidden
-/* @address@hidden is set by the signal handler.}  */
-if (!usr_interrupt)
-  pause ();
-
-/* @r{Do work once the signal arrives.}  */
address@hidden
address@hidden smallexample
-
address@hidden
-This has a bug---the signal could arrive after the variable
address@hidden is checked, but before the call to @code{pause}.
-If no further signals arrive, the process would never wake up again.
-
-You can put an upper limit on the excess waiting by using @code{sleep}
-in a loop instead of using @address@hidden more about
address@hidden, see Loosemore et al., ``Sleeping''.}
-Here is what this looks like:
-
address@hidden
-/* @address@hidden is set by the signal handler.}
-while (!usr_interrupt)
-  sleep (1);
-
-/* @r{Do work once the signal arrives.}  */
address@hidden
address@hidden smallexample
-
-For some purposes, that is good enough.  But with a little more
-complexity, you can wait reliably until a particular signal-handler is
-run, using @code{sigsuspend}.
address@hidden
-(@xref{Sigsuspend}.)
address@hidden ifinfo
-
address@hidden Sigsuspend
address@hidden Using @code{sigsuspend}
-
-The clean and reliable way to wait for a signal to arrive is to block it
-and then use @code{sigsuspend}.  By using @code{sigsuspend} in a loop,
-you can wait for certain kinds of signals, while letting other kinds of
-signals be handled by their handlers.
-
address@hidden signal.h
address@hidden POSIX.1
address@hidden int sigsuspend (const sigset_t address@hidden)
-This function replaces the process's signal-mask with @var{set} and
-then suspends the process until a signal is delivered whose action is
-either to terminate the process or invoke a signal-handling function.
-In other words, the program is effectively suspended until one of the
-signals that is not a member of @var{set} arrives.
-
-If the process is woken up by delivery of a signal that invokes a handler
-function, and the handler function returns, then @code{sigsuspend} also
-returns.
-
-The mask remains @var{set} only as long as @code{sigsuspend} is
-waiting.  The function @code{sigsuspend} always restores the previous
-signal-mask when it returns.
-
-The return value and error conditions are the same as for @code{pause}.
address@hidden deftypefun
-
-With @code{sigsuspend}, you can replace the @code{pause} or @code{sleep}
-loop in the previous section with something completely reliable:
-
address@hidden
-sigset_t mask, oldmask;
-
address@hidden
-
-/* @r{Set up the mask of signals to temporarily block.} */
-sigemptyset (&mask);
-sigaddset (&mask, SIGUSR1);
-
address@hidden
-
-/* @r{Wait for a signal to arrive.} */
-sigprocmask (SIG_BLOCK, &mask, &oldmask);
-while (!usr_interrupt)
-  sigsuspend (&oldmask);
-sigprocmask (SIG_UNBLOCK, &mask, NULL);
address@hidden smallexample
-
-This last piece of code is a little tricky.  The key point to remember
-here is that when @code{sigsuspend} returns, it resets the process's
-signal-mask to the original value, the value from before the call to
address@hidden this case, the @code{SIGUSR1} signal is once
-again blocked.  The second call to @code{sigprocmask} is necessary to
-explicitly unblock this signal.
-
-You may be wondering why the @code{while} loop is necessary at all,
-since the program is apparently only waiting for one @code{SIGUSR1}
-signal.  The answer is that the mask passed to @code{sigsuspend}
-permits the process to be woken up by the delivery of other kinds of
-signals, as well---for example, job-control signals.  If the process
-is woken up by a signal that doesn't set @code{usr_interrupt}, it just
-suspends itself again until the ``right'' kind of signal eventually
-arrives.
-
-This technique takes a few more lines of preparation, but that is needed
-just once for each kind of wait criterion you want to use.  The code
-that actually waits is just four lines.
-
address@hidden Signal Stack
address@hidden Using a Separate Signal-Stack
-
-A signal stack is a special area of memory to be used as the execution
-stack during signal handlers.  It should be fairly large, to avoid any
-danger that it will overflow in turn; the macro @code{SIGSTKSZ} is
-defined to a canonical size for signal stacks.  You can use
address@hidden to allocate the space for the stack.  Then call
address@hidden or @code{sigstack} to tell the system to use that
-space for the signal stack.
-
-You don't need to write signal handlers differently in order to use a
-signal stack.  Switching from one stack to the other happens
-automatically.  (Some address@hidden debuggers on some machines may get
-confused if you examine a stack trace while a handler that uses the
-signal stack is running.)
-
-There are two interfaces for telling the system to use a separate signal
-stack.  @code{sigstack} is the older interface, which comes from 4.2
address@hidden  @code{sigaltstack} is the newer interface, and comes from 4.4
address@hidden  The @code{sigaltstack} interface has the advantage that it does
-not require your program to know which direction the stack grows, which
-depends on the specific machine and operating system.
-
address@hidden signal.h
address@hidden XPG
address@hidden {Data Type} stack_t
-This structure describes a signal stack.  It contains the following members:
-
address@hidden @code
address@hidden void *ss_sp
-This points to the base of the signal stack.
-
address@hidden size_t ss_size
-This is the size (in bytes) of the signal stack that @samp{ss_sp}
-points to.  You should set this to however much space you allocated
-for the stack.
-
-There are two macros defined in @file{signal.h} that you should use in
-calculating this size:
-
address@hidden @code
address@hidden SIGSTKSZ
-This is the canonical size for a signal stack.  It is judged to be
-sufficient for normal uses.
-
address@hidden MINSIGSTKSZ
-This is the amount of signal stack-space the operating system needs
-just to implement signal delivery.  The size of a signal stack
address@hidden be greater than this.
-
-For most cases, just using @code{SIGSTKSZ} for @code{ss_size} is
-sufficient.  But if you know how much stack space your program's signal
-handlers will need, you may want to use a different size.  In this case,
-you should allocate @code{MINSIGSTKSZ} additional bytes for the signal
-stack and increase @code{ss_size} accordingly.
address@hidden vtable
-
address@hidden int ss_flags
-This field contains the bit-wise @sc{or} of these flags:
-
address@hidden @code
address@hidden SS_DISABLE
-This tells the system that it should not use the signal stack.
-
address@hidden SS_ONSTACK
-This is set by the system, and indicates that the signal stack is
-currently in use.  If this bit is not set, then signals will be
-delivered on the normal user stack.
address@hidden vtable
address@hidden table
address@hidden deftp
-
address@hidden signal.h
address@hidden XPG
address@hidden int sigaltstack (const stack_t *restrict @var{stack}, stack_t 
*restrict @var{oldstack})
-The @code{sigaltstack} function specifies an alternate stack for use
-during signal handling.  When a signal is received by the process and
-its action indicates that the signal stack is used, the system
-arranges a switch to the currently installed signal-stack while the
-handler for that signal is executed.
-
-If @var{oldstack} is not a null pointer, information about the
-currently installed signal-stack is returned in the location it points
-to.  If @var{stack} is not a null pointer, then this is installed as
-the new stack for use by signal handlers.
-
-The return value is @code{0} on success and @code{-1} on failure.  If
address@hidden fails, it sets @code{errno} to one of these values:
-
address@hidden @code
address@hidden EINVAL
-You tried to disable a stack that was in fact currently in use.
-
address@hidden ENOMEM
-The size of the alternate stack was too small.
-It must be greater than @code{MINSIGSTKSZ}.
address@hidden table
address@hidden deftypefun
-
-Here is the older @code{sigstack} interface.  You should use
address@hidden instead on systems that have it.
-
address@hidden signal.h
address@hidden BSD
address@hidden {Data Type} {struct sigstack}
-This structure describes a signal stack.  It contains the following members:
-
address@hidden @code
address@hidden void *ss_sp
-This is the stack pointer.  If the stack grows downward on your
-machine, this should point to the top of the area you allocated.  If the
-stack grows upward, it should point to the bottom.
-
address@hidden int ss_onstack
-This field is true if the process is currently using this stack.
address@hidden table
address@hidden deftp
-
address@hidden signal.h
address@hidden BSD
address@hidden int sigstack (const struct sigstack address@hidden, struct 
sigstack address@hidden)
-The @code{sigstack} function specifies an alternate stack for use
-during signal handling.  When a signal is received by the process and
-its action indicates that the signal stack is used, the system
-arranges a switch to the currently installed signal-stack while the
-handler for that signal is executed.
-
-If @var{oldstack} is not a null pointer, information about the
-currently installed signal-stack is returned in the location it points
-to.  If @var{stack} is not a null pointer, then this is installed as
-the new stack for use by signal handlers.
-
-The return value is @code{0} on success and @code{-1} on failure.
address@hidden deftypefun
-
address@hidden BSD Signal-Handling
address@hidden @acronym{BSD} Signal-Handling
-
-This section describes alternative signal-handling functions derived
-from @acronym{BSD} Unix.  These facilities were an advance, in their time; 
today,
-they are mostly obsolete, and supported mainly for compatibility with
address@hidden Unix.
-
-There are many similarities between the @acronym{BSD} and
address@hidden signal-handling facilities, because the
address@hidden facilities were inspired by the @acronym{BSD}
-facilities.  Besides having different names for all the functions to
-avoid conflicts, the main differences between the two are
-
address@hidden @bullet
address@hidden
address@hidden Unix represents signal masks as an @code{int} bit mask, rather 
than
-as a @code{sigset_t} object.
-
address@hidden
-The @acronym{BSD} facilities use a different default for whether an
-interrupted primitive should fail or resume.  The @acronym{POSIX}
-facilities make system calls fail unless you specify that they should
-resume.  With the @acronym{BSD} facility, the default is to make
-system calls resume unless you say they should fail
-(@pxref{Interrupted Primitives}).
address@hidden itemize
-
-The @acronym{BSD} facilities are declared in @file{signal.h}.
address@hidden signal.h
-
address@hidden BSD Handler
address@hidden @acronym{BSD} Function to Establish a Handler
-
address@hidden signal.h
address@hidden BSD
address@hidden {Data Type} {struct sigvec}
-This data type is the @acronym{BSD} equivalent of @code{struct
-sigaction} (@pxref{Advanced Signal-Handling}); it is used to specify
-signal actions to the @code{sigvec} function.  It contains the
-following members:
-
address@hidden @code
address@hidden sighandler_t sv_handler
-This is the handler function.
-
address@hidden int sv_mask
-This is the mask of additional signals to be blocked while the handler
-function is being called.
-
address@hidden int sv_flags
-This is a bit mask used to specify various flags that affect the
-behavior of the signal.  You can also refer to this field as
address@hidden
address@hidden table
address@hidden deftp
-
-These symbolic constants can be used to provide values for the
address@hidden field of a @code{sigvec} structure.  This field is a
-bit-mask value, so you address@hidden the flags of interest to you
-together.
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SV_ONSTACK
-If this bit is set in the @code{sv_flags} field of a @code{sigvec}
-structure, it means to use the signal stack when delivering the signal.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int SV_INTERRUPT
-If this bit is set in the @code{sv_flags} field of a @code{sigvec}
-structure, it means that system calls interrupted by this kind of signal
-should not be restarted if the handler returns; instead, the system
-calls should return with a @code{EINTR} error status (@pxref{Interrupted
-Primitives}).
address@hidden deftypevr
-
address@hidden signal.h
address@hidden Sun
address@hidden Macro int SV_RESETHAND
-If this bit is set in the @code{sv_flags} field of a @code{sigvec}
-structure, it means to reset the action for the signal back to
address@hidden when the signal is received.
address@hidden deftypevr
-
address@hidden signal.h
address@hidden BSD
address@hidden int sigvec (int @var{signum}, const struct sigvec 
address@hidden,struct sigvec address@hidden)
-This function is the equivalent of @code{sigaction} (@pxref{Advanced
-Signal-Handling}); it installs the action @var{action} for the signal
address@hidden, returning information about the previous action in
-effect for that signal in @var{old-action}.
address@hidden deftypefun
-
address@hidden signal.h
address@hidden BSD
address@hidden int siginterrupt (int @var{signum}, int @var{failflag})
-This function specifies which approach to use when certain primitives
-are interrupted by handling signal @var{signum}.  If @var{failflag} is
-false, signal @var{signum} restarts primitives.  If @var{failflag} is
-true, handling @var{signum} causes these primitives to fail with error
-code @code{EINTR} (@pxref{Interrupted Primitives}).
address@hidden deftypefun
-
address@hidden Blocking in BSD
address@hidden @acronym{BSD} Functions for Blocking Signals
-
address@hidden signal.h
address@hidden BSD
address@hidden Macro int sigmask (int @var{signum})
-This macro returns a signal mask that has the bit for signal @var{signum}
-set.  You can address@hidden the results of several calls to @code{sigmask}
-together to specify more than one signal.  For example:
-
address@hidden
-(sigmask (SIGTSTP) | sigmask (SIGSTOP)
- | sigmask (SIGTTIN) | sigmask (SIGTTOU))
address@hidden smallexample
-
address@hidden
-specifies a mask that includes all the job-control stop signals.
address@hidden deftypefn
-
address@hidden signal.h
address@hidden BSD
address@hidden int sigblock (int @var{mask})
-This function is equivalent to @code{sigprocmask} (@pxref{Process
-Signal-Mask}) with a @var{how} argument of @code{SIG_BLOCK}---it adds
-the signals specified by @var{mask} to the calling process's set of
-blocked signals.  The return value is the previous set of blocked
-signals.
address@hidden deftypefun
-
address@hidden signal.h
address@hidden BSD
address@hidden int sigsetmask (int @var{mask})
-This function equivalent to @code{sigprocmask} (@pxref{Process
-Signal-Mask}) with a @var{how} argument of @code{SIG_SETMASK}---it
-sets the calling process's signal mask to @var{mask}.  The return
-value is the previous set of blocked signals.
address@hidden deftypefun
-
address@hidden signal.h
address@hidden BSD
address@hidden int sigpause (int @var{mask})
-This function is the equivalent of @code{sigsuspend} (@pxref{Waiting
-for a Signal})---it sets the calling process's signal mask to
address@hidden, and waits for a signal to arrive.  On return, the previous
-set of blocked signals is restored.
address@hidden deftypefun
-
address@hidden POSIX Threads
address@hidden @acronym{POSIX} Threads
address@hidden %MENU% The standard threads library
-
-This chapter describes the pthreads (@acronym{POSIX} threads) library.  This
-library provides support functions for multithreaded programs: thread
-primitives, synchronization objects, and so forth.  It also implements
address@hidden 1003.1b semaphores (not to be confused with System V semaphores).
-
-The threads operations (@samp{pthread_*}) do not use @var{errno}.
-Instead they return an error code directly.  The semaphore operations do
-use @var{errno}.
-
address@hidden Basic Thread Operations
address@hidden Basic Thread Operations
-
-These functions are the thread equivalents of @code{fork}, @code{exit}
-and @code{wait}.
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_create (pthread_t * @var{thread}, pthread_attr_t * 
@var{attr}, void * (address@hidden)(void *), void * @var{arg})
address@hidden creates a new thread of control that executes
-concurrently with the calling thread. The new thread calls the
-function @var{start_routine}, passing it @var{arg} as first argument. The
-new thread terminates either explicitly, by calling @code{pthread_exit},
-or implicitly, by returning from the @var{start_routine} function. The
-latter case is equivalent to calling @code{pthread_exit} with the result
-returned by @var{start_routine} as exit code.
-
-The @var{attr} argument specifies thread attributes to be applied to
-the new thread (@pxref{Thread Attributes}). The @var{attr} argument
-can also be @code{NULL}, in which case default attributes are used:
-the created thread is joinable (not detached) and has an ordinary (not
-real-time) scheduling policy.
-
-On success, the identifier of the newly created thread is stored in the
-location pointed by the @var{thread} argument, and a 0 is returned. On
-error, a nonzero error code is returned.
-
-This function may return the following errors
address@hidden @code
address@hidden EAGAIN
-There are not enough system resources to create a process for the new
-thread, or more than @code{PTHREAD_THREADS_MAX} threads are already
-active.
address@hidden table
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden void pthread_exit (void address@hidden)
address@hidden terminates the execution of the calling thread.  All
-clean-up handlers (@pxref{Clean-Up Handlers}) that have been set for the
-calling thread with @code{pthread_cleanup_push} are executed in reverse
-order (the most recently pushed handler is executed first). Finalization
-functions for thread-specific data are then called for all keys that
-have address@hidden values associated with them in the calling thread
-(@pxref{Thread-Specific Data}).  Finally, execution of the calling
-thread is stopped.
-
-The @var{retval} argument is the return value of the thread. It can be
-retrieved from another thread using @code{pthread_join}.
-
-The @code{pthread_exit} function never returns.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_cancel (pthread_t @var{thread})
-
address@hidden sends a cancellation request to the thread
-denoted by the @var{thread} argument.  If there is no such thread,
address@hidden fails and returns @code{ESRCH}.  Otherwise, it
-returns 0 (@pxref{Cancellation}).
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_join (pthread_t @var{th}, void address@hidden)
address@hidden suspends the execution of the calling thread until
-the thread identified by @var{th} terminates, either by calling
address@hidden or by being canceled.
-
-If @var{thread_return} is not @code{NULL}, the return value of @var{th}
-is stored in the location pointed to by @var{thread_return}.  The return
-value of @var{th} is either the argument it gave to @code{pthread_exit},
-or @code{PTHREAD_CANCELED} if @var{th} was canceled.
-
-The joined thread @code{th} must be in the joinable state---it must
-not have been detached using @code{pthread_detach} or the
address@hidden attribute to @code{pthread_create}.
-
-When a joinable thread terminates, its memory resources (thread
-descriptor and stack) are not deallocated until another thread performs
address@hidden on it. Therefore, @code{pthread_join} must be called
-once for each joinable thread created to avoid memory leaks.
-
-At most one thread can wait for the termination of a given
-thread. Calling @code{pthread_join} on a thread @var{th} on which
-another thread is already waiting for termination returns an error.
-
address@hidden is a cancellation point. If a thread is canceled
-while suspended in @code{pthread_join}, the thread execution resumes
-immediately and the cancellation is executed without waiting for the
address@hidden thread to terminate. If cancellation occurs during
address@hidden, the @var{th} thread remains not joined.
-
-On success, the return value of @var{th} is stored in the location
-pointed to by @var{thread_return}, and 0 is returned. On error, one of
-the following values is returned:
address@hidden @code
address@hidden ESRCH
-No thread could be found corresponding to that specified by @var{th}.
address@hidden EINVAL
-The @var{th} thread has been detached, or another thread is already
-waiting on termination of @var{th}.
address@hidden EDEADLK
-The @var{th} argument refers to the calling thread.
address@hidden table
address@hidden deftypefun
-
address@hidden Thread Attributes
address@hidden Thread Attributessection Thread Attributes
-
address@hidden pthread.h
address@hidden POSIX
-
-Threads have a number of attributes that may be set at creation time.
-This is done by filling a thread-attribute object @var{attr} of type
address@hidden, then passing it as second argument to
address@hidden Passing @code{NULL} is equivalent to passing a
-thread-attribute object with all attributes set to their default
-values.
-
-Attribute objects are consulted only when creating a new thread.  The
-same attribute-object can be used for creating several threads.
-Modifying an attribute object after a call to @code{pthread_create} does
-not change the attributes of the thread previously created.
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_attr_init (pthread_attr_t address@hidden)
address@hidden initializes the thread-attribute object
address@hidden and fills it with default values for the attributes. (The
-default values for each attribute are listed below.)
-
-Each attribute @var{attrname} (see below for a list of all attributes)
-can be individually set using the function
address@hidden@var{attrname}} and retrieved using the function
address@hidden@var{attrname}}.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_attr_destroy (pthread_attr_t address@hidden)
address@hidden destroys the attribute object pointed to
-by @var{attr}, releasing any resources associated with it.  @var{attr}
-is left in an undefined state, and you must not use it again in a call
-to any pthreads function until it has been reinitialized.
address@hidden deftypefun
-
address@hidden pthread_attr_setdetachstate
address@hidden pthread_attr_setguardsize
address@hidden pthread_attr_setinheritsched
address@hidden pthread_attr_setschedparam
address@hidden pthread_attr_setschedpolicy
address@hidden pthread_attr_setscope
address@hidden pthread_attr_setstack
address@hidden pthread_attr_setstackaddr
address@hidden pthread_attr_setstacksize
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_attr_setattr (pthread_attr_t address@hidden, int 
@var{value})
-Set attribute @var{attr} to @var{value} in the attribute object pointed
-to by @var{obj}.  See below for a list of possible attributes and the
-values they can take.
-
-On success, these functions return 0.  If @var{value} is not meaningful
-for the @var{attr} being modified, they will return the error code
address@hidden  Some of the functions have other failure modes; see
-below.
address@hidden deftypefun
-
address@hidden pthread_attr_getdetachstate
address@hidden pthread_attr_getguardsize
address@hidden pthread_attr_getinheritsched
address@hidden pthread_attr_getschedparam
address@hidden pthread_attr_getschedpolicy
address@hidden pthread_attr_getscope
address@hidden pthread_attr_getstack
address@hidden pthread_attr_getstackaddr
address@hidden pthread_attr_getstacksize
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_attr_getattr (const pthread_attr_t address@hidden, 
int address@hidden)
-Store the current setting of @var{attr} in @var{obj} into the variable
-pointed to by @var{value}.
-
-These functions always return 0.
address@hidden deftypefun
-
-The following thread attributes are supported:
address@hidden @samp
address@hidden detachstate
-Choose whether the thread is created in the joinable state (value
address@hidden) or in the detached state
-(@code{PTHREAD_CREATE_DETACHED}).  The default is
address@hidden
-
-In the joinable state, another thread can synchronize on the thread
-termination and recover its termination code using @code{pthread_join},
-but some of the thread resources are kept allocated after the thread
-terminates, and reclaimed only when another thread performs
address@hidden on that thread.
-
-In the detached state, the thread resources are immediately freed when
-it terminates, but @code{pthread_join} cannot be used to synchronize on
-the thread termination.
-
-A thread created in the joinable state can later be put in the detached
-thread using @code{pthread_detach}.
-
address@hidden schedpolicy
-Select the scheduling policy for the thread, one of @code{SCHED_OTHER}
-(regular, non-real-time scheduling), @code{SCHED_RR} (real-time,
-round-robin) or @code{SCHED_FIFO} (real-time, first-in first-out).
-The default is @code{SCHED_OTHER}.
address@hidden Not doc'd in our manual: FIXME.
address@hidden See @code{sched_setpolicy} for more information on scheduling 
policies.
-
-The real-time scheduling policies @code{SCHED_RR} and
address@hidden are available only to processes with superuser
-privileges.  @code{pthread_attr_setschedparam} will fail and return
address@hidden if you try to set a real-time policy when you are
-unprivileged.
-
-The scheduling policy of a thread can be changed after creation with
address@hidden
-
address@hidden schedparam
-Change the scheduling parameter (the scheduling priority)
-for the thread.  The default is 0.
-
-This attribute is not significant if the scheduling policy is
address@hidden; it only matters for the real-time policies
address@hidden and @code{SCHED_FIFO}.
-
-The scheduling priority of a thread can be changed after creation with
address@hidden
-
address@hidden inheritsched
-Choose whether the scheduling policy and scheduling parameter for the
-newly created thread are determined by the values of the
address@hidden and @var{schedparam} attributes (value
address@hidden) or are inherited from the parent thread
-(value @code{PTHREAD_INHERIT_SCHED}).  The default is
address@hidden
-
address@hidden scope
-Choose the scheduling-contention scope for the created thread.  The
-default is @code{PTHREAD_SCOPE_SYSTEM}, meaning that the threads
-contend for @acronym{CPU} time with all processes running on the
-machine. In particular, thread priorities are interpreted relative to
-the priorities of all other processes on the machine. The other
-possibility, @code{PTHREAD_SCOPE_PROCESS}, means that scheduling
-contention occurs only between the threads of the running
-process---thread priorities are interpreted relative to the priorities
-of the other threads of the process, regardless of the priorities of
-other processes.
-
address@hidden is not supported in LinuxThreads.  If you
-try to set the scope to this value, @code{pthread_attr_setscope} will
-fail and return @code{ENOTSUP}.
-
address@hidden stackaddr
-Provide an address for an application-managed stack.  The size of the
-stack must be at least @code{PTHREAD_STACK_MIN}.
-
address@hidden stacksize
-Change the size of the stack created for the thread.  The value
-defines the minimum-stack size, in bytes.
-
-If the value exceeds the system's maximum stack-size, or is smaller
-than @code{PTHREAD_STACK_MIN}, @code{pthread_attr_setstacksize} will
-fail and return @code{EINVAL}.
-
address@hidden stack
-Provide both the address and size of an application-managed stack to
-use for the new thread.  The base of the memory area is
address@hidden with the size of the memory area, @var{stacksize},
-measured in bytes.
-
-If the value of @var{stacksize} is less than @code{PTHREAD_STACK_MIN},
-or greater than the system's maximum stack size, or if the value of
address@hidden lacks the proper alignment, @code{pthread_attr_setstack}
-will fail and return @code{EINVAL}.
-
address@hidden guardsize
-Change the minimum size in bytes of the guard area for the thread's
-stack.  The default size is a single page.  If this value is set, it
-will be rounded up to the nearest page size.  If the value is set to 0,
-a guard area will not be created for this thread.  The space allocated
-for the guard area is used to catch stack overflow.  Therefore, when
-allocating large structures on the stack, a larger guard area may be
-required to catch a stack overflow.
-
-If the caller is managing their own stacks (if the @code{stackaddr}
-attribute has been set), then the @code{guardsize} attribute is ignored.
-
-If the value exceeds the @code{stacksize}, @code{pthread_atrr_setguardsize}
-will fail and return @code{EINVAL}.
address@hidden table
-
address@hidden Cancellation
address@hidden Cancellation
-
-Cancellation is the mechanism by which a thread can terminate the
-execution of another thread. More precisely, a thread can send a
-cancellation request to another thread. Depending on its settings, the
-target thread can then either ignore the request, honor it immediately,
-or defer it till it reaches a cancellation point.  When threads are
-first created by @code{pthread_create}, they always defer cancellation
-requests.
-
-When a thread eventually honors a cancellation request, it behaves as
-if @code{pthread_exit(PTHREAD_CANCELED)} was called.  All clean-up
-handlers are executed in reverse order, finalization functions for
-thread-specific data are called, and finally the thread stops
-executing.  If the canceled thread was joinable, the return value
address@hidden is provided to whichever thread calls
address@hidden on it (@pxref{Basic Thread Operations}).
-
-Cancellation points are the points where the thread checks for pending
-cancellation-requests and performs them.  The @acronym{POSIX} threads
-functions @code{pthread_join}, @code{pthread_cond_wait},
address@hidden, @code{pthread_testcancel},
address@hidden and @code{sigwait} are cancellation points.  In
-addition, these system calls are cancellation points:
-
address@hidden @columnfractions .33 .33 .33
address@hidden @t{accept}       @tab @t{open}           @tab @t{sendmsg}
address@hidden @t{close}                @tab @t{pause}          @tab @t{sendto}
address@hidden @t{connect}      @tab @t{read}           @tab @t{system}
address@hidden @t{fcntl}                @tab @t{recv}           @tab @t{tcdrain}
address@hidden @t{fsync}                @tab @t{recvfrom}       @tab @t{wait}
address@hidden @t{lseek}                @tab @t{recvmsg}        @tab @t{waitpid}
address@hidden @t{msync}                @tab @t{send}           @tab @t{write}
address@hidden @t{nanosleep}
address@hidden multitable
-
address@hidden
-All library functions that call these functions (such as
address@hidden) are also cancellation points.
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_setcancelstate (int @var{state}, int address@hidden)
address@hidden changes the cancellation state for the
-calling thread---that is, whether cancellation requests are ignored or
-not. The @var{state} argument is the new cancellation state---either
address@hidden to enable cancellation, or
address@hidden to disable cancellation (cancellation
-requests are ignored).
-
-If @var{oldstate} is not @code{NULL}, the previous cancellation-state
-is stored in the location pointed to by @var{oldstate}, and can thus
-be restored later by another call to @code{pthread_setcancelstate}.
-
-If the @var{state} argument is not @code{PTHREAD_CANCEL_ENABLE} or
address@hidden, @code{pthread_setcancelstate} fails and
-returns @code{EINVAL}.  Otherwise, it returns 0.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_setcanceltype (int @var{type}, int address@hidden)
address@hidden changes the type of responses to
-cancellation requests for the calling thread: asynchronous (immediate)
-or deferred.  The @var{type} argument is the new
-cancellation-type---either @code{PTHREAD_CANCEL_ASYNCHRONOUS} to
-cancel the calling thread as soon as the cancellation request is
-received, or @code{PTHREAD_CANCEL_DEFERRED} to keep the cancellation
-request pending until the next cancellation-point. If @var{oldtype} is
-not @code{NULL}, the previous cancellation-state is stored in the
-location pointed to by @var{oldtype}, and can thus be restored later
-by another call to @code{pthread_setcanceltype}.
-
-If the @var{type} argument is not @code{PTHREAD_CANCEL_DEFERRED} or
address@hidden, @code{pthread_setcanceltype} fails
-and returns @code{EINVAL}.  Otherwise, it returns 0.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden void pthread_testcancel (@var{void})
address@hidden does nothing except testing for pending
-cancellation and executing it. Its purpose is to introduce explicit
-checks for cancellation in long sequences of code that do not call
-cancellation point functions otherwise.
address@hidden deftypefun
-
address@hidden Clean-Up Handlers
address@hidden Clean-Up Handlers
-
-Clean-up handlers are functions that get called when a thread terminates,
-either by calling @code{pthread_exit} or because of
-cancellation. Clean-up handlers are installed and removed following a
-stack-like discipline.
-
-The purpose of clean-up handlers is to free the resources that a
-thread may hold at the time it terminates. In particular, if a thread
-exits or is canceled while it owns a locked mutex, the mutex will
-remain locked forever and prevent other threads from executing
-normally. The best way to avoid this is, just before locking the
-mutex, to install a clean-up handler whose effect is to unlock the
-mutex. Clean-up handlers can be used similarly to free blocks
-allocated with @code{malloc} or close file descriptors on thread
-termination.
-
-Here is how to lock a mutex @var{mut} in such a way that it will be
-unlocked if the thread is canceled while @var{mut} is locked:
-
address@hidden
-pthread_cleanup_push(pthread_mutex_unlock, (void *) &mut);
-pthread_mutex_lock(&mut);
-/* do some work */
-pthread_mutex_unlock(&mut);
-pthread_cleanup_pop(0);
address@hidden smallexample
-
-Equivalently, the last two lines can be replaced by:
-
address@hidden
-pthread_cleanup_pop(1);
address@hidden smallexample
-
-Notice that the code above is safe only in deferred-cancellation mode
-(see @code{pthread_setcanceltype}). In asynchronous-cancellation mode,
-a cancellation can occur between @code{pthread_cleanup_push} and
address@hidden, or between @code{pthread_mutex_unlock} and
address@hidden, resulting in both cases in the thread
-trying to unlock a mutex not locked by the current thread. This is the
-main reason why asynchronous cancellation is difficult to use.
-
-If the code above must also work in asynchronous-cancellation mode,
-then it must switch to deferred mode for locking and unlocking the
-mutex:
-
address@hidden
-pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype);
-pthread_cleanup_push(pthread_mutex_unlock, (void *) &mut);
-pthread_mutex_lock(&mut);
-/* do some work */
-pthread_cleanup_pop(1);
-pthread_setcanceltype(oldtype, NULL);
address@hidden smallexample
-
-The code above can be rewritten in a more compact and efficient way,
-using the nonportable functions @code{pthread_cleanup_push_defer_np}
-and @code{pthread_cleanup_pop_restore_np}:
-
address@hidden
-pthread_cleanup_push_defer_np(pthread_mutex_unlock, (void *) &mut);
-pthread_mutex_lock(&mut);
-/* do some work */
-pthread_cleanup_pop_restore_np(1);
address@hidden smallexample
-
address@hidden pthread.h
address@hidden POSIX
address@hidden void pthread_cleanup_push (void (address@hidden) (void *), void 
address@hidden)
-
address@hidden installs the @var{routine} function with
-argument @var{arg} as a clean-up handler. From this point on to the
-matching @code{pthread_cleanup_pop}, the function @var{routine} will
-be called with arguments @var{arg} when the thread terminates, either
-through @code{pthread_exit} or by cancellation. If several clean-up
-handlers are active at that point, they are called in @acronym{LIFO}
-order---the most recently installed handler is called first.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden void pthread_cleanup_pop (int @var{execute})
address@hidden removes the most recently installed clean-up
-handler. If the @var{execute} argument is not 0, it also executes the
-handler, by calling the @var{routine} function with arguments
address@hidden If the @var{execute} argument is 0, the handler is only
-removed but not executed.
address@hidden deftypefun
-
-Matching pairs of @code{pthread_cleanup_push} and
address@hidden must occur in the same function, at the same
-level of block nesting.  Actually, @code{pthread_cleanup_push} and
address@hidden are macros, and the expansion of
address@hidden introduces an open brace @address@hidden with the
-matching closing brace @address@hidden being introduced by the expansion of the
-matching @code{pthread_cleanup_pop}.
-
address@hidden pthread.h
address@hidden GNU
address@hidden void pthread_cleanup_push_defer_np (void (address@hidden) (void 
*), void address@hidden)
address@hidden is a nonportable extension that
-combines @code{pthread_cleanup_push} and @code{pthread_setcanceltype}.
-It pushes a clean-up handler just as @code{pthread_cleanup_push} does,
-but also saves the current cancellation type and sets it to deferred
-cancellation. This ensures that the clean-up mechanism is effective even
-if the thread was initially in asynchronous cancellation mode.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden GNU
address@hidden void pthread_cleanup_pop_restore_np (int @var{execute})
address@hidden pops a clean-up handler introduced
-by @code{pthread_cleanup_push_defer_np}, and restores the cancellation
-type to its value at the time @code{pthread_cleanup_push_defer_np} was
-called.
address@hidden deftypefun
-
address@hidden and
address@hidden must occur in matching pairs, at
-the same level of block nesting.
-
-The sequence:
-
address@hidden
-pthread_cleanup_push_defer_np(routine, arg);
-...
-pthread_cleanup_pop_defer_np(execute);
address@hidden smallexample
-
address@hidden
-is functionally equivalent to (but more compact and efficient than):
-
address@hidden
address@hidden
-  int oldtype;
-  pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldtype);
-  pthread_cleanup_push(routine, arg);
-  ...
-  pthread_cleanup_pop(execute);
-  pthread_setcanceltype(oldtype, NULL);
address@hidden
address@hidden smallexample
-
-
address@hidden Mutexes
address@hidden Mutexes
-
-A mutex is a @acronym{MUT}ual @acronym{EX}clusion device, and is
-useful for protecting shared data-structures from concurrent
-modifications, and implementing critical sections and monitors.
-
-A mutex has two possible states: unlocked (not owned by any thread),
-and locked (owned by one thread). A mutex can never be owned by two
-different threads simultaneously. A thread attempting to lock a mutex
-that is already locked by another thread is suspended until the owning
-thread unlocks the mutex first.
-
-None of the mutex functions is a cancellation point, not even
address@hidden, in spite of the fact that it can suspend a
-thread for arbitrary durations. This way, the status of mutexes at
-cancellation points is predictable, allowing cancellation handlers to
-unlock precisely those mutexes that need to be unlocked before the
-thread stops executing. Consequently, threads using deferred
-cancellation should never hold a mutex for extended periods of time.
-
-It is not safe to call mutex functions from a signal handler.  In
-particular, calling @code{pthread_mutex_lock} or
address@hidden from a signal handler may deadlock the
-calling thread.
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_mutex_init (pthread_mutex_t address@hidden, const 
pthread_mutexattr_t address@hidden)
-
address@hidden initializes the mutex object pointed to by
address@hidden according to the mutex attributes specified in @var{mutexattr}.
-If @var{mutexattr} is @code{NULL}, default attributes are used instead.
-
-The LinuxThreads implementation supports only one mutex attribute,
-the @var{mutex type}, which is either ``fast'', ``recursive'', or
-``error checking''. The type of a mutex determines whether
-it can be locked again by a thread that already owns it.
-The default type is ``fast''.
-
-Variables of type @code{pthread_mutex_t} can also be initialized
-statically, using the constants @code{PTHREAD_MUTEX_INITIALIZER} (for
-timed mutexes), @code{PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP} (for
-recursive mutexes), @code{PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP} (for
-fast mutexes) and @code{PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP} (for
-error-checking mutexes).
-
address@hidden always returns 0.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_mutex_lock (pthread_mutex_t *mutex))
address@hidden locks the given mutex. If the mutex is
-currently unlocked, it becomes locked and owned by the calling thread,
-and @code{pthread_mutex_lock} returns immediately. If the mutex is
-already locked by another thread, @code{pthread_mutex_lock} suspends the
-calling thread until the mutex is unlocked.
-
-If the mutex is already locked by the calling thread, the behavior of
address@hidden depends on the type of the mutex. If the
-mutex is of the ``fast'' type, the calling thread is suspended.  It
-will remain suspended forever, because no other thread can unlock the
-mutex.  If the mutex is of the ``error-checking'' type,
address@hidden returns immediately with the error code
address@hidden  If the mutex is of the ``recursive'' type,
address@hidden succeeds and returns immediately, recording
-the number of times the calling thread has locked the mutex. An equal
-number of @code{pthread_mutex_unlock} operations must be performed
-before the mutex returns to the unlocked state.
address@hidden This doesn't discuss PTHREAD_MUTEX_TIMED_NP mutex attributes. 
FIXME
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_mutex_trylock (pthread_mutex_t address@hidden)
address@hidden behaves identically to
address@hidden, except that it does not block the calling
-thread if the mutex is already locked by another thread (or by the
-calling thread in the case of a ``fast'' mutex). Instead,
address@hidden returns immediately with the error code
address@hidden
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_mutex_timedlock (pthread_mutex_t address@hidden, 
const struct timespec address@hidden)
-The @code{pthread_mutex_timedlock} is similar to the
address@hidden function, but instead of blocking for in
-indefinite time if the mutex is locked by another thread, it returns
-when the time specified in @var{abstime} is reached.
-
-This function can only be used on standard (``timed'') and
-``error-checking'' mutexes.  It behaves just like
address@hidden for all other types.
-
-If the mutex is successfully locked, the function returns 0.  If the
-time specified in @var{abstime} is reached without the mutex being locked,
address@hidden is returned.
-
-This function was introduced in the @acronym{POSIX}.1d revision of the 
@acronym{POSIX} standard.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_mutex_unlock (pthread_mutex_t address@hidden)
address@hidden unlocks the given mutex. The mutex is
-assumed to be locked and owned by the calling thread on entrance to
address@hidden If the mutex is of the ``fast'' type,
address@hidden always returns it to the unlocked state. If
-it is of the ``recursive'' type, it decrements the locking count of the
-mutex (number of @code{pthread_mutex_lock} operations performed on it by
-the calling thread), and only when this count reaches 0 is the mutex
-actually unlocked.
-
-On ``error-checking'' mutexes, @code{pthread_mutex_unlock} actually
-checks at run-time that the mutex is locked on entrance, and that it
-was locked by the same thread that is now calling
address@hidden  If these conditions are not met,
address@hidden returns @code{EPERM}, and the mutex
-remains unchanged.  ``Fast'' and ``recursive'' mutexes perform no such
-checks, thus allowing a locked mutex to be unlocked by a thread other
-than its owner. This is nonportable behavior and must not be relied
-upon.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_mutex_destroy (pthread_mutex_t address@hidden)
address@hidden destroys a mutex object, freeing the
-resources it might hold. The mutex must be unlocked on entrance. In
-the LinuxThreads implementation, no resources are associated with
-mutex objects, thus @code{pthread_mutex_destroy} actually does nothing
-except check that the mutex is unlocked.
-
-If the mutex is locked by some thread, @code{pthread_mutex_destroy}
-returns @code{EBUSY}.  Otherwise, it returns 0.
address@hidden deftypefun
-
-If any of the above functions (except @code{pthread_mutex_init})
-is applied to an uninitialized mutex, they will simply return
address@hidden and do nothing.
-
-A shared global-variable @var{x} can be protected by a mutex as
-follows:
-
address@hidden
-int x;
-pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
address@hidden smallexample
-
-All accesses and modifications to @var{x} should be bracketed by calls to
address@hidden and @code{pthread_mutex_unlock} as follows:
-
address@hidden
-pthread_mutex_lock(&mut);
-/* operate on x */
-pthread_mutex_unlock(&mut);
address@hidden smallexample
-
-Mutex attributes can be specified at mutex creation time, by passing a
-mutex-attribute object as second argument to
address@hidden  Passing @code{NULL} is equivalent to
-passing a mutex attribute object with all attributes set to their
-default values.
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_mutexattr_init (pthread_mutexattr_t address@hidden)
address@hidden initializes the mutex-attribute object
address@hidden and fills it with default values for the attributes.
-
-This function always returns 0.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_mutexattr_destroy (pthread_mutexattr_t 
address@hidden)
address@hidden destroys a mutex-attribute object,
-which must not be reused until it is
-reinitialized. @code{pthread_mutexattr_destroy} does nothing in the
-LinuxThreads implementation.
-
-This function always returns 0.
address@hidden deftypefun
-
-LinuxThreads supports only one mutex attribute: the mutex type, which
-is either @code{PTHREAD_MUTEX_ADAPTIVE_NP} for ``fast'' mutexes,
address@hidden for ``recursive'' mutexes,
address@hidden for ``timed'' mutexes or
address@hidden for ``error-checking'' mutexes.  As
-the @code{NP} suffix indicates, this is a nonportable extension to the
address@hidden standard and should not be employed in portable
-programs.
-
-The mutex type determines what happens if a thread attempts to lock a
-mutex it already owns with @code{pthread_mutex_lock}. If the mutex is
-of the ``fast'' type, @code{pthread_mutex_lock} simply suspends the
-calling thread forever.  If the mutex is of the ``error-checking''
-type, @code{pthread_mutex_lock} returns immediately with the error
-code @code{EDEADLK}.  If the mutex is of the ``recursive'' type, the
-call to @code{pthread_mutex_lock} returns immediately with a success
-return code. The number of times the thread owning the mutex has
-locked it is recorded in the mutex. The owning thread must call
address@hidden the same number of times before the mutex
-returns to the unlocked state.
-
-The default mutex type is ``timed'', that is, @code{PTHREAD_MUTEX_TIMED_NP}.
address@hidden This doesn't describe how a ``timed'' mutex behaves. FIXME
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_mutexattr_settype (pthread_mutexattr_t 
address@hidden, int @var{type})
address@hidden sets the mutex type attribute in
address@hidden to the value specified by @var{type}.
-
-If @var{type} is not @code{PTHREAD_MUTEX_ADAPTIVE_NP},
address@hidden, @code{PTHREAD_MUTEX_TIMED_NP} or
address@hidden, this function will return
address@hidden and leave @var{attr} unchanged.
-
-The standard Unix98 identifiers @code{PTHREAD_MUTEX_DEFAULT},
address@hidden, @code{PTHREAD_MUTEX_RECURSIVE} and
address@hidden are also permitted.
-
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_mutexattr_gettype (const pthread_mutexattr_t 
address@hidden, int address@hidden)
address@hidden retrieves the current value of the
-mutex type attribute in @var{attr} and stores it in the location pointed
-to by @var{type}.
-
-This function always returns 0.
address@hidden deftypefun
-
address@hidden Condition Variables
address@hidden Condition Variables
-
-A condition (short for ``condition variable'') is a synchronization
-device that allows threads to suspend execution until some predicate
-on shared data is satisfied. The basic operations on conditions are
-signal the condition (when the predicate becomes true), and wait for
-the condition, suspending the thread execution until another thread
-signals the condition.
-
-A condition variable must always be associated with a mutex, to avoid
-the race condition where a thread prepares to wait on a condition
-variable and another thread signals the condition just before the first
-thread actually waits on it.
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_cond_init (pthread_cond_t address@hidden, 
pthread_condattr_t address@hidden)
-
address@hidden initializes the condition variable @var{cond},
-using the condition attributes specified in @var{cond_attr}, or default
-attributes if @var{cond_attr} is @code{NULL}. The LinuxThreads
-implementation supports no attributes for conditions, hence the
address@hidden parameter is actually ignored.
-
-Variables of type @code{pthread_cond_t} can also be initialized
-statically, using the constant @code{PTHREAD_COND_INITIALIZER}.
-
-This function always returns 0.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_cond_signal (pthread_cond_t address@hidden)
address@hidden restarts one of the threads that are waiting
-on the condition variable @var{cond}. If no threads are waiting on
address@hidden, nothing happens. If several threads are waiting on
address@hidden, exactly one is restarted, but it is not specified which.
-
-This function always returns 0.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_cond_broadcast (pthread_cond_t address@hidden)
address@hidden restarts all the threads that are waiting
-on the condition variable @var{cond}. Nothing happens if no threads are
-waiting on @var{cond}.
-
-This function always returns 0.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_cond_wait (pthread_cond_t address@hidden, 
pthread_mutex_t address@hidden)
address@hidden atomically unlocks the @var{mutex} (as per
address@hidden) and waits for the condition variable
address@hidden to be signaled. The thread execution is suspended and does
-not consume any @acronym{CPU} time until the condition variable is signaled. 
The
address@hidden must be locked by the calling thread on entrance to
address@hidden Before returning to the calling thread,
address@hidden reacquires @var{mutex} (as per
address@hidden).
-
-Unlocking the mutex and suspending on the condition variable is done
-atomically. Thus, if all threads always acquire the mutex before
-signaling the condition, this guarantees that the condition cannot be
-signaled (and thus ignored) between the time a thread locks the mutex
-and the time it waits on the condition variable.
-
-This function always returns 0.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_cond_timedwait (pthread_cond_t address@hidden, 
pthread_mutex_t address@hidden, const struct timespec address@hidden)
address@hidden atomically unlocks @var{mutex} and waits
-on @var{cond}, as @code{pthread_cond_wait} does, but it also bounds
-the duration of the wait. If @var{cond} has not been signaled before
-time @var{abstime}, the mutex @var{mutex} is reacquired and
address@hidden returns the error code @code{ETIMEDOUT}.
-The wait can also be interrupted by a signal; in that case,
address@hidden returns @code{EINTR}.
-
-The @var{abstime} parameter specifies an absolute time, with the same
-origin as @code{time} and @code{gettimeofday}: an @var{abstime} of 0
-corresponds to 00:00:00 GMT, January 1, 1970.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_cond_destroy (pthread_cond_t address@hidden)
address@hidden destroys the condition variable @var{cond},
-freeing the resources it might hold.  If any threads are waiting on the
-condition variable, @code{pthread_cond_destroy} leaves @var{cond}
-untouched and returns @code{EBUSY}.  Otherwise it returns 0, and
address@hidden must not be used again until it is reinitialized.
-
-In the LinuxThreads implementation, no resources are associated with
-condition variables, so @code{pthread_cond_destroy} actually does
-nothing.
address@hidden deftypefun
-
address@hidden and @code{pthread_cond_timedwait} are
-cancellation points. If a thread is canceled while suspended in one of
-these functions, the thread immediately resumes execution, relocks the
-mutex specified by  @var{mutex}, and finally executes the cancellation.
-Consequently, clean-up handlers are assured that @var{mutex} is locked
-when they are called.
-
-It is not safe to call the condition variable functions from a signal
-handler. In particular, calling @code{pthread_cond_signal} or
address@hidden from a signal handler may deadlock the
-calling thread.
-
-Consider two shared variables @var{x} and @var{y}, protected by the
-mutex @var{mut}, and a condition variable @var{cond} that is to be
-signaled whenever @var{x} becomes greater than @var{y}.
-
address@hidden
-int x,y;
-pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
-pthread_cond_t cond = PTHREAD_COND_INITIALIZER;
address@hidden smallexample
-
-Waiting until @var{x} is greater than @var{y} is performed as follows:
-
address@hidden
-pthread_mutex_lock(&mut);
-while (x <= y) @{
-        pthread_cond_wait(&cond, &mut);
address@hidden
-/* operate on x and y */
-pthread_mutex_unlock(&mut);
address@hidden smallexample
-
-Modifications on @var{x} and @var{y} that may cause @var{x} to become greater 
than
address@hidden should signal the condition if needed:
-
address@hidden
-pthread_mutex_lock(&mut);
-/* modify x and y */
-if (x > y) pthread_cond_broadcast(&cond);
-pthread_mutex_unlock(&mut);
address@hidden smallexample
-
-If it can be proved that at most one waiting thread needs to be
-awakened (for instance, if there are only two threads communicating
-through @var{x} and @var{y}), @code{pthread_cond_signal} can be used
-as a slightly more efficient alternative to
address@hidden When in doubt, use
address@hidden
-
-To wait for @var{x} to becomes greater than @var{y} with a time-out of 5
-seconds, do:
-
address@hidden
-struct timeval now;
-struct timespec timeout;
-int retcode;
-
-pthread_mutex_lock(&mut);
-gettimeofday(&now);
-timeout.tv_sec = now.tv_sec + 5;
-timeout.tv_nsec = now.tv_usec * 1000;
-retcode = 0;
-while (x <= y && retcode != ETIMEDOUT) @{
-        retcode = pthread_cond_timedwait(&cond, &mut, &timeout);
address@hidden
-if (retcode == ETIMEDOUT) @{
-        /* timeout occurred */
address@hidden else @{
-        /* operate on x and y */
address@hidden
-pthread_mutex_unlock(&mut);
address@hidden smallexample
-
-Condition attributes can be specified at condition-creation time, by
-passing a condition-attribute object as a second argument to
address@hidden  Passing @code{NULL} is equivalent to
-passing a condition-attribute object with all attributes set to their
-default values.
-
-The LinuxThreads implementation supports no attributes for
-conditions. The functions on condition attributes are included only for
-compliance with the @acronym{POSIX} standard.
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_condattr_init (pthread_condattr_t address@hidden)
address@hidden int pthread_condattr_destroy (pthread_condattr_t address@hidden)
address@hidden initializes the condition-attribute
-object @var{attr} and fills it with default values for the attributes.
address@hidden destroys the condition-attribute
-object @var{attr}.
-
-Both functions do nothing in the LinuxThreads implementation.
-
address@hidden and @code{pthread_condattr_destroy} always
-return 0.
address@hidden deftypefun
-
address@hidden POSIX Semaphores
address@hidden @acronym{POSIX} Semaphores
-
address@hidden SEM_VALUE_MAX
-Semaphores are counters for resources shared between threads. The
-basic operations on semaphores are increment the counter atomically,
-and wait until the counter is nonnull and decrement it atomically.
-
-Semaphores have a maximum value past which they cannot be incremented.
-The macro @code{SEM_VALUE_MAX} is defined to be this maximum value.  In
-the @acronym{GNU} C Library, @code{SEM_VALUE_MAX} is equal to @code{INT_MAX}
-(@pxref{Range of Type}), but it may be much smaller on other systems.
-
-The pthreads library implements @acronym{POSIX} 1003.1b semaphores.  These 
should
-not be confused with System V semaphores (@code{ipc}, @code{semctl} and
address@hidden).
address@hidden !!! SysV IPC is not doc'd at all in our manual
-
-All the semaphore functions and macros are defined in @file{semaphore.h}.
-
address@hidden semaphore.h
address@hidden POSIX
address@hidden int sem_init (sem_t address@hidden, int @var{pshared}, unsigned 
int @var{value})
address@hidden initializes the semaphore object pointed to by
address@hidden The count associated with the semaphore is set initially to
address@hidden The @var{pshared} argument indicates whether the semaphore
-is local to the current process (@var{pshared} is 0) or is to be
-shared between several processes (@var{pshared} is not 0).
-
-On success, @code{sem_init} returns 0.  On failure, it returns -1 and
-sets @var{errno} to one of the following values:
-
address@hidden @code
address@hidden EINVAL
address@hidden exceeds the maximum counter-value @code{SEM_VALUE_MAX}.
-
address@hidden ENOSYS
address@hidden is not 0.  LinuxThreads currently does not support
-process-shared semaphores.  This will eventually change.
address@hidden table
address@hidden deftypefun
-
address@hidden semaphore.h
address@hidden POSIX
address@hidden int sem_destroy (sem_t * @var{sem})
address@hidden destroys a semaphore object, freeing the resources it
-might hold.  If any threads are waiting on the semaphore when
address@hidden is called, it fails and sets @var{errno} to
address@hidden
-
-In the LinuxThreads implementation, no resources are associated with
-semaphore objects, thus @code{sem_destroy} actually does nothing
-except check that no thread is waiting on the semaphore.  This will
-change when process-shared semaphores are implemented.
address@hidden deftypefun
-
address@hidden semaphore.h
address@hidden POSIX
address@hidden int sem_wait (sem_t * @var{sem})
address@hidden suspends the calling thread until the semaphore pointed
-to by @var{sem} has nonzero count. It then atomically decreases the
-semaphore count.
-
address@hidden is a cancellation point.  It always returns 0.
address@hidden deftypefun
-
address@hidden semaphore.h
address@hidden POSIX
address@hidden int sem_trywait (sem_t * @var{sem})
address@hidden is a nonblocking variant of @code{sem_wait}. If the
-semaphore pointed to by @var{sem} has nonzero count, the count is
-atomically decreased and @code{sem_trywait} immediately returns 0.  If
-the semaphore count is 0, @code{sem_trywait} immediately returns -1
-and sets errno to @code{EAGAIN}.
address@hidden deftypefun
-
address@hidden semaphore.h
address@hidden POSIX
address@hidden int sem_post (sem_t * @var{sem})
address@hidden atomically increases the count of the semaphore pointed to
-by @var{sem}. This function never blocks.
-
address@hidden !!! This para appears not to agree with the code.
-On processors supporting atomic compare-and-swap (Intel 486, Pentium
-and later, Alpha, PowerPC, MIPS II, Motorola 68k, Ultrasparc), the
address@hidden function can safely be called from signal handlers.
-This is the only thread-synchronization function provided by
address@hidden threads that is async-signal safe.  On the Intel 386
-and earlier Sparc chips, the current LinuxThreads implementation of
address@hidden is not async-signal safe, because the hardware does
-not support the required atomic operations.
-
address@hidden always succeeds and returns 0, unless the semaphore
-count would exceed @code{SEM_VALUE_MAX} after being incremented.  In
-that case, @code{sem_post} returns -1 and sets @var{errno} to
address@hidden  The semaphore count is left unchanged.
address@hidden deftypefun
-
address@hidden semaphore.h
address@hidden POSIX
address@hidden int sem_getvalue (sem_t * @var{sem}, int * @var{sval})
address@hidden stores in the location pointed to by @var{sval} the
-current count of the semaphore @var{sem}.  It always returns 0.
address@hidden deftypefun
-
address@hidden Thread-Specific Data
address@hidden Thread-Specific Data
-
-Programs often need global or static variables that have different
-values in different threads. Since threads share one memory space, this
-cannot be achieved with regular variables. Thread-specific data is the
address@hidden threads answer to this need.
-
-Each thread possesses a private memory-block, the thread-specific data
-area, or @acronym{TSD} area for short. This area is indexed by
address@hidden keys. The @acronym{TSD} area associates values of type
address@hidden *} to @acronym{TSD} keys. @acronym{TSD} keys are common to
-all threads, but the value associated with a given @acronym{TSD} key
-can be different in each thread.
-
-For concreteness, the @acronym{TSD} areas can be viewed as arrays of
address@hidden *} pointers, @acronym{TSD} keys as integer indices into
-these arrays, and the value of a @acronym{TSD} key as the value of the
-corresponding array-element in the calling thread.
-
-When a thread is created, its @acronym{TSD} area initially associates 
@code{NULL}
-with all keys.
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_key_create (pthread_key_t address@hidden, void 
(*destr_function) (void *))
address@hidden allocates a new @acronym{TSD} key. The key is stored in
-the location pointed to by @var{key}. There is a limit of
address@hidden on the number of keys allocated at a given
-time. The value initially associated with the returned key is
address@hidden in all currently executing threads.
-
-The @var{destr_function} argument, if not @code{NULL}, specifies a
-destructor function associated with the key. When a thread terminates
-via @code{pthread_exit} or by cancellation, @var{destr_function} is
-called on the value associated with the key in that thread. The
address@hidden is not called if a key is deleted with
address@hidden or a value is changed with
address@hidden  The order in which destructor functions
-are called at thread-termination time is unspecified.
-
-Before the destructor function is called, the @code{NULL} value is
-associated with the key in the current thread.  A destructor function
-might, however, re-associate address@hidden values to that key or some
-other key.  To deal with this, if after all the destructors have been
-called for all address@hidden values, there are still some
address@hidden values with associated destructors, then the process is
-repeated.  The LinuxThreads implementation stops the process after
address@hidden iterations, even if some
address@hidden values with associated descriptors remain.  Other
-implementations may loop indefinitely.
-
address@hidden returns 0 unless @code{PTHREAD_KEYS_MAX} keys
-have already been allocated, in which case it fails and returns
address@hidden
address@hidden deftypefun
-
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_key_delete (pthread_key_t @var{key})
address@hidden deallocates a @acronym{TSD} key. It does not check
-whether address@hidden values are associated with that key in the
-currently executing threads, nor call the destructor function associated
-with the key.
-
-If there is no such key @var{key}, it returns @code{EINVAL}.
-Otherwise, it returns 0.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_setspecific (pthread_key_t @var{key}, const void 
address@hidden)
address@hidden changes the value associated with @var{key}
-in the calling thread, storing the given @var{pointer} instead.
-
-If there is no such key @var{key}, it returns @code{EINVAL}.
-Otherwise, it returns 0.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden {void *} pthread_getspecific (pthread_key_t @var{key})
address@hidden returns the value currently associated with
address@hidden in the calling thread.
-
-If there is no such key @var{key}, it returns @code{NULL}.
address@hidden deftypefun
-
-The following code fragment allocates a thread-specific array of 100
-characters, with automatic reclamation at thread exit:
-
address@hidden
-/* Key for the thread-specific buffer */
-static pthread_key_t buffer_key;
-
-/* Once-only initialization of the key */
-static pthread_once_t buffer_key_once = PTHREAD_ONCE_INIT;
-
-/* Allocate the thread-specific buffer. */
-void buffer_alloc(void)
address@hidden
-  pthread_once(&buffer_key_once, buffer_key_alloc);
-  pthread_setspecific(buffer_key, malloc(100));
address@hidden
-
-/* Return the thread-specific buffer */
-char * get_buffer(void)
address@hidden
-  return (char *) pthread_getspecific(buffer_key);
address@hidden
-
-/* Allocate the key. */
-static void buffer_key_alloc()
address@hidden
-  pthread_key_create(&buffer_key, buffer_destroy);
address@hidden
-
-/* Free the thread-specific buffer */
-static void buffer_destroy(void * buf)
address@hidden
-  free(buf);
address@hidden
address@hidden smallexample
-
address@hidden Threads and Signal-Handling
address@hidden Threads and Signal-Handling
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_sigmask (int @var{how}, const sigset_t 
address@hidden, sigset_t address@hidden)
address@hidden changes the signal mask for the calling thread
-as described by the @var{how} and @var{newmask} arguments. If
address@hidden is not @code{NULL}, the previous signal-mask is stored
-in the location pointed to by @var{oldmask}.
-
-The meaning of the @var{how} and @var{newmask} arguments is the same
-as for @code{sigprocmask}. If @var{how} is @code{SIG_SETMASK}, the
-signal mask is set to @var{newmask}. If @var{how} is @code{SIG_BLOCK},
-the signals specified to @var{newmask} are added to the current
-signal-mask.  If @var{how} is @code{SIG_UNBLOCK}, the signals
-specified to @var{newmask} are removed from the current signal mask.
-
-Recall that signal masks are set on a per-thread basis, but signal
-actions and signal handlers, as set with @code{sigaction}, are shared
-between all threads.
-
-The @code{pthread_sigmask} function returns 0 on success and one of
-the following error codes on error:
address@hidden @code
address@hidden EINVAL
address@hidden is not one of @code{SIG_SETMASK}, @code{SIG_BLOCK} or
address@hidden
-
address@hidden EFAULT
address@hidden or @var{oldmask} point to invalid addresses.
address@hidden table
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_kill (pthread_t @var{thread}, int @var{signo})
address@hidden sends signal number @var{signo} to the thread
address@hidden  The signal is delivered and handled as described in
address@hidden Handling}.
-
address@hidden returns 0 on success and one of the following error codes
-on error:
address@hidden @code
address@hidden EINVAL
address@hidden is not a valid signal-number.
-
address@hidden ESRCH
-The thread @var{thread} does not exist (e.g. it has already
-terminated).
address@hidden table
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int sigwait (const sigset_t address@hidden, int address@hidden)
address@hidden suspends the calling thread until one of the signals in
address@hidden is delivered to the calling thread. It then stores the number
-of the signal received in the location pointed to by @var{sig} and
-returns. The signals in @var{set} must be blocked and not ignored on
-entrance to @code{sigwait}. If the delivered signal has a signal-handler
-function attached, that function is @emph{not} called.
-
address@hidden is a cancellation point.  It always returns 0.
address@hidden deftypefun
-
-For @code{sigwait} to work reliably, the signals being waited for must be
-blocked in all threads, not only in the calling thread, since
-otherwise the @acronym{POSIX} semantics for signal delivery do not guarantee
-that it's the thread doing the @code{sigwait} that will receive the signal.
-The best way to achieve this is block those signals before any threads
-are created, and never unblock them in the program other than by
-calling @code{sigwait}.
-
-Signal handling in LinuxThreads departs significantly from the @acronym{POSIX}
-standard. According to the standard, ``asynchronous'' (external) signals
-are addressed to the whole process (the collection of all threads),
-which then delivers them to one particular thread. The thread that
-actually receives the signal is any thread that does not currently block
-the signal.
-
-In LinuxThreads, each thread is actually a kernel process with its own
address@hidden, so external signals are always directed to one particular 
thread.
-If, for instance, another thread is blocked in @code{sigwait} on that
-signal, it will not be restarted.
-
-The LinuxThreads implementation of @code{sigwait} installs dummy
-signal-handlers for the signals in @var{set} for the duration of the
-wait. Since signal handlers are shared between all threads, other
-threads must not attach their own signal-handlers to these signals, or
-alternatively they should all block these signals (which is
-recommended anyway).
-
address@hidden Threads and Fork
address@hidden Threads and Fork
-
-It's not intuitively obvious what should happen when a multithreaded 
@acronym{POSIX}
-process calls @code{fork}. Not only are the semantics tricky, but you may
-need to write code that does the right thing at fork time even if that code
-doesn't use the @code{fork} function. Moreover, you need to be aware of
-interaction between @code{fork} and some library features like
address@hidden and stdio streams.
-
-When @code{fork} is called by one of the threads of a process, it
-creates a new process that is a copy of the calling
-process. Effectively, in addition to copying certain system objects,
-the function takes a snapshot of the memory areas of the parent
-process, and creates identical areas in the child.  To make matters
-more complicated, with threads it's possible for two or more threads
-to concurrently call fork to create two or more child processes.
-
-The child process has a copy of the address space of the parent, but
-it does not inherit any of its threads. Execution of the child process
-is carried out by a new thread that returns from the @code{fork}
-function with a return value of 0; it is the only thread in the child
-process.  Because threads are not inherited across fork, issues
-arise. At the time of the call to @code{fork}, threads in the parent
-process other than the one calling @code{fork} may have been executing
-critical regions of code.  As a result, the child process may get a
-copy of objects that are not in a well-defined state.  This potential
-problem affects all components of the program.
-
-Any program component that will continue being used in a child process
-must correctly handle its state during @code{fork}. For this purpose,
-the @acronym{POSIX} interface provides the special function
address@hidden for installing pointers to handler functions
-that are called from within @code{fork}.
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_atfork (void (address@hidden)(void), void 
(address@hidden)(void), void (address@hidden)(void))
-
address@hidden registers handler functions to be called just
-before and just after a new process is created with @code{fork}. The
address@hidden handler will be called from the parent process, just
-before the new process is created. The @var{parent} handler will be
-called from the parent process, just before @code{fork} returns. The
address@hidden handler will be called from the child process, just before
address@hidden returns.
-
address@hidden returns 0 on success and a nonzero error-code on
-error.
-
-One or more of the three handlers @var{prepare}, @var{parent} and
address@hidden can be given as @code{NULL}, meaning that no handler needs
-to be called at the corresponding point.
-
address@hidden can be called several times to install several
-sets of handlers. At @code{fork} time, the @var{prepare} handlers are
-called in @acronym{LIFO} order (last added with @code{pthread_atfork}, first
-called before @code{fork}), while the @var{parent} and @var{child}
-handlers are called in @acronym{FIFO} order (first added, first called).
-
-If there is insufficient memory available to register the handlers,
address@hidden fails and returns @code{ENOMEM}.  Otherwise, it
-returns 0.
-
-The functions @code{fork} and @code{pthread_atfork} must not be regarded as
-reentrant from the context of the handlers.  That is to say, if a
address@hidden handler invoked from within @code{fork} calls
address@hidden or @code{fork}, the behavior is undefined.
-
-Registering a triplet of handlers is an atomic operation with respect to fork.
-If new handlers are registered at about the same time as a fork occurs, either
-all three handlers will be called, or none of them will be called.
-
-The handlers are inherited by the child process, and there is no way
-to remove them, short of using @code{exec} to load a new process-image.
-
address@hidden deftypefun
-
-To understand the purpose of @code{pthread_atfork}, recall that
address@hidden duplicates the whole memory space, including mutexes in
-their current locking-state, but only the calling thread---other
-threads are not running in the child process.  The mutexes are not
-usable after the @code{fork} and must be initialized with
address@hidden in the child process.  This is a limitation
-of the current implementation and might or might not be present in
-future versions.
-
-To avoid this, install handlers with @code{pthread_atfork} as
-follows. Have the @var{prepare} handler lock the mutexes (in locking
-order), and the @var{parent} handler unlock the mutexes. The
address@hidden handler should reset the mutexes using
address@hidden, as well as any other synchronization
-objects such as condition variables.
-
-Locking the global mutexes before the fork ensures that all other threads are
-locked out of the critical regions of code protected by those mutexes.  Thus
-when @code{fork} takes a snapshot of the parent's address space, that snapshot
-will copy valid, stable data.  Resetting the synchronization objects in the
-child process will ensure they are properly cleansed of any artifacts from the
-threading subsystem of the parent process. For example, a mutex may inherit
-a wait queue of threads waiting for the lock; this wait queue makes no sense
-in the child process. Initializing the mutex takes care of this.
-
address@hidden Streams and Fork
address@hidden Streams and Fork
-
-The @acronym{GNU} standard I/O library has an internal mutex that
-guards the internal linked list of all standard C FILE objects. This
-mutex is properly taken care of during @code{fork} so that the child
-receives an intact copy of the list.  This allows the @code{fopen}
-function, and related stream-creating functions, to work correctly in
-the child process, since these functions need to insert into the list.
-
-However, the individual stream locks are not completely taken care of.  Thus
-unless the multithreaded application takes special precautions in its use of
address@hidden, the child process might not be able to safely use the streams 
that
-it inherited from the parent.   In general, for any given open stream in the
-parent that is to be used by the child process, the application must ensure
-that that stream is not in use by another thread when @code{fork} is called.
-Otherwise an inconsistent copy of the stream object be produced. An easy way to
-ensure this is to use @code{flockfile} to lock the stream prior to calling
address@hidden and then unlock it with @code{funlockfile} inside the parent
-process, provided that the parent's threads properly honor these locks.
-Nothing special needs to be done in the child process, since the library
-internally resets all stream locks.
-
-Note that the stream locks are not shared between the parent and child.
-For example, even if you ensure that, say, the stream @code{stdout} is properly
-treated and can be safely used in the child, the stream locks do not provide
-an exclusion mechanism between the parent and child. If both processes write
-to @code{stdout}, strangely interleaved output may result regardless of
-the explicit use of @code{flockfile} or implicit locks.
-
-Also note that these provisions are a @acronym{GNU} extension; other
-systems might not provide any way for streams to be used in the child
-of a multithreaded process.  @acronym{POSIX} requires that such a
-child process confine itself to calling only asynchronous-safe
-functions, which excludes much of the library, including standard I/O.
-
address@hidden Miscellaneous Thread Functions
address@hidden Miscellaneous Thread Functions
-
address@hidden pthread.h
address@hidden POSIX
address@hidden {pthread_t} pthread_self (@var{void})
address@hidden returns the thread identifier for the calling thread.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_equal (pthread_t thread1, pthread_t thread2)
address@hidden determines if two thread-identifiers refer to the
-same thread.
-
-A nonzero value is returned if @var{thread1} and @var{thread2} refer to
-the same thread. Otherwise, 0 is returned.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_detach (pthread_t @var{th})
address@hidden puts the thread @var{th} in the detached
-state. This guarantees that the memory resources consumed by @var{th}
-will be freed immediately when @var{th} terminates. However, this
-prevents other threads from synchronizing on the termination of @var{th}
-using @code{pthread_join}.
-
-A thread can be created initially in the detached state, using the
address@hidden attribute to @code{pthread_create}. In contrast,
address@hidden applies to threads created in the joinable state,
-and which need to be put in the detached state later.
-
-After @code{pthread_detach} completes, subsequent attempts to perform
address@hidden on @var{th} will fail. If another thread is already
-joining the thread @var{th} at the time @code{pthread_detach} is called,
address@hidden does nothing and leaves @var{th} in the joinable
-state.
-
-On success, 0 is returned. On error, one of the following codes is
-returned:
address@hidden @code
address@hidden ESRCH
-No thread could be found corresponding to that specified by @var{th}.
address@hidden EINVAL
-The thread @var{th} is already in the detached state.
address@hidden table
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden GNU
address@hidden void pthread_kill_other_threads_np (@var{void})
address@hidden is a nonportable LinuxThreads
-extension.  It causes all threads in the program to terminate
-immediately, except the calling thread, which proceeds normally. It is
-intended to be called just before a thread calls one of the
address@hidden functions, e.g. @code{execve}.
-
-Termination of the other threads is not performed through
address@hidden and completely bypasses the cancellation
-mechanism. Hence, the current settings for cancellation state and
-cancellation type are ignored, and the clean-up handlers are not
-executed in the terminated threads.
-
-According to @acronym{POSIX} 1003.1c, a successful @code{exec*} in one of the
-threads should automatically terminate all other threads in the program.
-This behavior is not yet implemented in LinuxThreads.  Calling
address@hidden before @code{exec*} achieves much
-of the same behavior, except that if @code{exec*} ultimately fails, then
-all other threads are already killed.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_once (pthread_once_t address@hidden, void 
(address@hidden) (void))
-
-The purpose of @code{pthread_once} is to ensure that a piece of
-initialization code is executed at most one time. The
address@hidden argument points to a static or extern variable
-statically initialized to @code{PTHREAD_ONCE_INIT}.
-
-The first time @code{pthread_once} is called with a given
address@hidden argument, it calls @var{init_routine} with no
-argument and changes the value of the @var{once_control} variable to
-record that initialization has been performed. Subsequent calls to
address@hidden with the same @code{once_control} argument do
-nothing.
-
-If a thread is cancelled while executing @var{init_routine}, the state
-of the @var{once_control} variable is reset so that a future call to
address@hidden will call the routine again.
-
-If the process forks while one or more threads are executing
address@hidden initialization routines, the states of their respective
address@hidden variables will appear to be reset in the child process so
-that if the child calls @code{pthread_once}, the routines will be executed.
-
address@hidden always returns 0.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_setschedparam (pthread_t address@hidden, int 
@var{policy}, const struct sched_param address@hidden)
-
address@hidden sets the scheduling parameters for the
-thread @var{target_thread} as indicated by @var{policy} and
address@hidden @var{policy} can be either @code{SCHED_OTHER} (regular,
-non-real-time scheduling), @code{SCHED_RR} (real-time, round-robin) or
address@hidden (real-time, first-in first-out). @var{param}
-specifies the scheduling priority for the two real-time policies
-(@pxref{Traditional Scheduling}).
-
-The real-time scheduling policies @code{SCHED_RR} and @code{SCHED_FIFO}
-are available only to processes with superuser privileges.
-
-On success, @code{pthread_setschedparam} returns 0.  On error it returns
-one of the following codes:
address@hidden @code
address@hidden EINVAL
address@hidden is not one of @code{SCHED_OTHER}, @code{SCHED_RR} or
address@hidden, or the priority value specified by @var{param} is
-not valid for the specified policy.
-
address@hidden EPERM
-Real-time scheduling was requested, but the calling process does not
-have sufficient privileges.
-
address@hidden ESRCH
-The @var{target_thread} is invalid or has already terminated.
-
address@hidden EFAULT
address@hidden points outside the process memory space.
address@hidden table
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_getschedparam (pthread_t address@hidden, int 
address@hidden, struct sched_param address@hidden)
-
address@hidden retrieves the scheduling policy and
-scheduling parameters for the thread @var{target_thread} and stores them
-in the locations pointed to by @var{policy} and @var{param},
-respectively.
-
address@hidden returns 0 on success, or one of the
-following error codes on failure:
address@hidden @code
address@hidden ESRCH
-The @var{target_thread} is invalid or has already terminated.
-
address@hidden EFAULT
address@hidden or @var{param} point outside the process memory space.
-
address@hidden table
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_setconcurrency (int @var{level})
address@hidden is unused in LinuxThreads due to the
-lack of a mapping of user threads to kernel threads.  It exists for
-source compatibility.  It does store the value @var{level} so that it
-can be returned by a subsequent call to @code{pthread_getconcurrency}.
-However, it takes no other action.
address@hidden deftypefun
-
address@hidden pthread.h
address@hidden POSIX
address@hidden int pthread_getconcurrency ()
address@hidden is unused in LinuxThreads due to the lack
-of a mapping of user threads to kernel threads.  It exists for source
-compatibility.  However, it will return the value that was set by the
-last call to @code{pthread_setconcurrency}.
address@hidden deftypefun
-
address@hidden This node must have no pointers.
address@hidden Language Features
address@hidden @node Language Features, Library Summary, , Top
address@hidden %MENU% C language features provided by the library
address@hidden C Language Facilities in the Library
-
-Some of the facilities implemented by the C library really should be
-thought of as parts of the C language itself.  These facilities ought to
-be documented in the C Language Manual, not in the library manual; but
-since we don't have the language manual yet, and documentation for these
-features has been written, we are publishing it here.
-
address@hidden Consistency Checking
address@hidden Explicitly Checking Internal Consistency
address@hidden consistency checking
address@hidden impossible events
address@hidden assertions
-
-When you're writing a program, it's often a good idea to put in checks
-at strategic places for ``impossible'' errors or violations of basic
-assumptions.  These kinds of checks are helpful in debugging problems
-with the interfaces between different parts of the program, for example.
-
address@hidden assert.h
-The @code{assert} macro, defined in the header file @file{assert.h},
-provides a convenient way to abort the program while printing a message
-about where in the program the error was detected.
-
address@hidden NDEBUG
-Once you think your program is debugged, you can disable the error
-checks performed by the @code{assert} macro by recompiling with the
-macro @code{NDEBUG} defined.  This means you don't actually have to
-change the program source code to disable these checks.
-
-But disabling these consistency checks is undesirable unless they make
-the program significantly slower.  All else being equal, more error
-checking is good no matter who is running the program.  A wise user
-would rather have a program crash, visibly, than have it return nonsense
-without indicating anything might be wrong.
-
address@hidden assert.h
address@hidden ISO
address@hidden Macro void assert (int @var{expression})
-Verify the programmer's belief that @var{expression} is nonzero at
-this point in the program.
-
-If @code{NDEBUG} is not defined, @code{assert} tests the value of
address@hidden  If it is false (0), @code{assert} aborts the
-program after printing a message of the form:@footnote{See Loosemore
-et al., ``Aborting a Program'' (see chap. 1, n. 1).}
-
address@hidden
address@hidden@var{file}}:@var{linenum}: @var{function}: Assertion 
address@hidden' failed.
address@hidden smallexample
-
address@hidden
-on the standard error stream @address@hidden, ``Standard
-Streams''.}  The file name and line number are taken from the C
-preprocessor macros @code{__FILE__} and @code{__LINE__} and specify
-where the call to @code{assert} was made.  When using the
address@hidden C Compiler, the name of the function that calls
address@hidden is taken from the built-in variable
address@hidden; with older compilers, the function name
-and following colon are omitted.
-
-If the preprocessor macro @code{NDEBUG} is defined before
address@hidden is included, the @code{assert} macro is defined to do
-absolutely nothing.
-
address@hidden:} Even the argument expression @var{expression} is not
-evaluated if @code{NDEBUG} is in effect.  So never use @code{assert}
-with arguments that involve side effects.  For example, @code{assert
-(++i > 0);} is a bad idea, because @code{i} will not be incremented if
address@hidden is defined.
address@hidden deftypefn
-
-Sometimes the ``impossible'' condition you want to check for is an error
-return from an operating system function.  Then it is useful to display
-not only where the program crashes, but also what error was returned.
-The @code{assert_perror} macro makes this easy.
-
address@hidden assert.h
address@hidden GNU
address@hidden Macro void assert_perror (int @var{errnum})
-This is similar to @code{assert}, but it verifies that @var{errnum} is
-0.
-
-If @code{NDEBUG} is not defined, @code{assert_perror} tests the value of
address@hidden  If it is nonzero, @code{assert_perror} aborts the program
-after printing a message of the form:
-
address@hidden
address@hidden@var{file}}:@var{linenum}: @var{function}: @var{error text}
address@hidden smallexample
-
address@hidden
-on the standard error stream.  The file name, line number, and
-function name are as for @code{assert}.  The error text is the result
-of @address@hidden (@var{errnum})address@hidden, ``Error
-Messages''.}
-
-Like @code{assert}, if @code{NDEBUG} is defined before @file{assert.h}
-is included, the @code{assert_perror} macro does absolutely nothing.  It
-does not evaluate the argument, so @var{errnum} should not have any side
-effects.  It is best for @var{errnum} to be just a simple variable
-reference; often it will be @code{errno}.
-
-This macro is a @acronym{GNU} extension.
address@hidden deftypefn
-
address@hidden Note:} The @code{assert} facility is designed for
-detecting @emph{internal inconsistency}; it is not suitable for
-reporting invalid input or improper usage by the @emph{user} of the
-program.
-
-The information in the diagnostic messages printed by the
address@hidden and @code{assert_perror} macro is intended to help you,
-the programmer, track down the cause of a bug, but is not really
-useful for telling a user of your program why his input was invalid or
-why a command could not be carried out.  What's more, your program
-should not abort when given invalid input, as @code{assert} would
-do---it should exit with nonzero address@hidden, ``Exit
-Status''.} after printing its error messages, or perhaps read another
-command or move on to the next input address@hidden more
-information on printing error messages for problems that @emph{do not}
-represent bugs in the program see Loosemore et al., ``Error Messages''.}
-
-
address@hidden Variadic Functions
address@hidden Variadic Functions
address@hidden variable number of arguments
address@hidden variadic functions
address@hidden optional arguments
-
address@hidden@acronym{ISO} C} defines a syntax for declaring a function to 
take a variable
-number or type of arguments.  (Such functions are referred to as
address@hidden functions} or @dfn{variadic functions}.)  However, the
-language itself provides no mechanism for such functions to access their
-nonrequired arguments; instead, you use the variable arguments macros
-defined in @file{stdarg.h}.
-
-This section describes how to declare variadic functions, how to write
-them, and how to call them properly.
-
address@hidden Note:} Many older C dialects provide a similar,
-but incompatible, mechanism for defining functions with variable numbers
-of arguments, using @file{varargs.h}.
-
address@hidden Why Variadic
address@hidden Why Variadic Functions Are Used
-
-Ordinary C functions take a fixed number of arguments.  When you
-define a function, you specify the data type for each argument.  Every
-call to the function should supply the expected number of arguments,
-with types that can be converted to the specified ones.  Thus, if the
-function @samp{foo} is declared with @code{int foo (int, char *);}
-then you must call it with two arguments: a number (any kind will do)
-and a string pointer.
-
-But some functions perform operations that can meaningfully accept an
-unlimited number of arguments.
-
-In some cases, a function can handle any number of values by operating
-on all of them as a block.  For example, consider a function that
-allocates a one-dimensional array with @code{malloc} to hold a
-specified set of values.  This operation makes sense for any number of
-values, as long as the length of the array corresponds to that number.
-Without facilities for variable arguments, you would have to define a
-separate function for each possible array size.
-
-The library function @address@hidden, ``Formatted Output.''} is an
-example of another class of function where variable arguments are
-useful.  This function prints its arguments (which can vary in type as
-well as number) under the control of a format template string.
-
-These are good reasons to define a @dfn{variadic} function that can
-handle as many arguments as the caller chooses to pass.
-
-Some functions such as @code{open} take a fixed set of arguments, but
-occasionally ignore the last few.  Strict adherence to
address@hidden@acronym{ISO} C} requires these functions to be defined as
-variadic; in practice, however, the @acronym{GNU} C Compiler and most
-other C compilers let you define such a function to take a fixed set
-of arguments---the most it can ever use---and then only @emph{declare}
-the function as variadic (or not declare its arguments at all).
-
address@hidden How Variadic
address@hidden How Variadic Functions Are Defined and Used
-
-Defining and using a variadic function involves three steps:
-
address@hidden @bullet
address@hidden
address@hidden the function as variadic, using an ellipsis
-(@address@hidden) in the argument list, and using special macros to
-access the variable arguments (@pxref{Receiving Arguments}).
-
address@hidden
address@hidden the function as variadic, using a prototype with an
-ellipsis (@address@hidden), in all the files that call it
-(@pxref{Variadic Prototypes}).
-
address@hidden
address@hidden the function by writing the fixed arguments followed by the
-additional variable arguments (@pxref{Calling Variadics}).
address@hidden itemize
-
address@hidden Variadic Prototypes
address@hidden Syntax for Variable Arguments
address@hidden function prototypes (variadic)
address@hidden prototypes for variadic functions
address@hidden variadic function prototypes
-
-A function that accepts a variable number of arguments must be
-declared with a prototype that says so.  You write the fixed arguments
-as usual, and then tack on @address@hidden to indicate the possibility
-of additional arguments.  The syntax of @address@hidden C} requires
-at least one fixed argument before the @address@hidden  For example:
-
address@hidden
-int
-func (const char *a, int b, @dots{})
address@hidden
-  @dots{}
address@hidden
address@hidden smallexample
-
address@hidden
-defines a function @code{func} that returns an @code{int} and takes
-two required arguments, a @code{const char *} and an @code{int}.
-These are followed by any number of anonymous arguments.
-
address@hidden Note:} For some C compilers, the last required
-argument must not be declared @code{register} in the function
-definition.  Furthermore, this argument's type must be
address@hidden default promotions must not change its
-type.  This rules out array and function types, as well as
address@hidden, @code{char} (whether signed or not) and @address@hidden
-int}} (whether signed or not).  This is actually an @address@hidden
-C} requirement.
-
address@hidden Receiving Arguments
address@hidden Receiving the Argument Values
address@hidden variadic function argument access
address@hidden arguments (variadic functions)
-
-Ordinary fixed arguments have individual names, and you can use these
-names to access their values.  But optional arguments have no
-names---nothing but @address@hidden  How can you access them?
-
address@hidden stdarg.h
-The only way to access them is sequentially, in the order they were
-written, and you must use special macros from @file{stdarg.h} in the
-following three-step process:
-
address@hidden
address@hidden
-You initialize an argument pointer variable of type @code{va_list}
-using @code{va_start}.  The argument pointer, when initialized, points
-to the first optional argument.
-
address@hidden
-You access the optional arguments by successive calls to @code{va_arg}.
-The first call to @code{va_arg} gives you the first optional argument,
-the next call gives you the second, and so on.
-
-You can stop at any time if you wish to ignore any remaining optional
-arguments.  It is perfectly all right for a function to access fewer
-arguments than were supplied in the call, but you will get garbage
-values if you try to access too many arguments.
-
address@hidden
-You indicate that you are finished with the argument pointer variable by
-calling @code{va_end}.
-
-In practice, with most C compilers, calling @code{va_end} does
-nothing.  This is always true in the @acronym{GNU} C Compiler.  But
-you might as well call @code{va_end}, just in case your program is
-someday compiled with a peculiar compiler.
address@hidden enumerate
-
address@hidden Macros}, for the full definitions of @code{va_start},
address@hidden and @code{va_end}.
-
-Steps 1 and 3 must be performed in the function that accepts the
-optional arguments.  However, you can pass the @code{va_list} variable
-as an argument to another function and perform all or part of step 2
-there.
-
-You can perform the entire sequence of three steps multiple times
-within a single function invocation.  If you want to ignore the optional
-arguments, you can do these steps zero times.
-
-You can have more than one argument pointer variable if you like.  You
-can initialize each variable with @code{va_start} when you wish, and
-then you can fetch arguments with each argument pointer as you wish.
-Each argument pointer variable will sequence through the same set of
-argument values, but at its own pace.
-
address@hidden Note:} With some compilers, once you pass an
-argument pointer value to a subroutine, you must not keep using the
-same argument pointer value after that subroutine returns.  For full
-portability, you should just pass it to @code{va_end}.  This is
-actually an @address@hidden C} requirement, but most @acronym{ANSI} C
-compilers work happily regardless.
-
address@hidden How Many Arguments
address@hidden How Many Arguments Were Supplied
address@hidden number of arguments passed
address@hidden how many arguments
address@hidden arguments, how many
-
-There is no general way for a function to determine the number and type
-of the optional arguments it was called with.  So whoever designs the
-function typically designs a convention for the caller to specify the number
-and type of arguments.  It is up to you to define an appropriate calling
-convention for each variadic function and write all calls accordingly.
-
-One kind of calling convention is to pass the number of optional
-arguments as one of the fixed arguments.  This convention works provided
-all of the optional arguments are of the same type.
-
-A similar alternative is to have one of the required arguments be a bit
-mask, with a bit for each possible purpose for which an optional
-argument might be supplied.  You would test the bits in a predefined
-sequence; if the bit is set, fetch the value of the next argument,
-otherwise use a default value.
-
-A required argument can be used as a pattern to specify both the
-number and types of the optional arguments.  The format-string
-argument to @code{printf} is one example of address@hidden,
-``Formatted Output Functions''.}
-
-Another possibility is to pass an ``end-marker'' value as the last
-optional argument.  For example, for a function that manipulates an
-arbitrary number of pointer arguments, a null pointer might indicate
-the end of the argument list.  (This assumes that a null pointer isn't
-otherwise meaningful to the function.)  The @code{execl} function
-works in just this way (@pxref{Executing a File}).
-
-
address@hidden Calling Variadics
address@hidden Calling Variadic Functions
address@hidden variadic functions, calling
address@hidden calling variadic functions
address@hidden declaring variadic functions
-
-You don't have to do anything special to call a variadic function.
-Just put the arguments (required arguments, followed by optional ones)
-inside parentheses, separated by commas, as usual.  But you must declare
-the function with a prototype and know how the argument values are converted.
-
-In principle, functions that are @emph{defined} to be variadic must
-also be @emph{declared} to be variadic using a function prototype
-whenever you call them (@pxref{Variadic Prototypes}).  This is because
-some C compilers use a different calling convention to pass the same
-set of argument values to a function depending on whether that
-function takes variable arguments or fixed arguments.
-
-In practice, the @acronym{GNU} C Compiler always passes a given set of
-argument types in the same way regardless of whether they are optional
-or required.  So, as long as the argument types are self-promoting,
-you can safely omit declaring them.  Usually it is a good idea to
-declare the argument types for variadic functions, and indeed for all
-functions.  But there are a few functions that are convenient to not
-have to declare as variadic---for example, @code{open} and
address@hidden
-
address@hidden default argument promotions
address@hidden argument promotion
-Since the prototype doesn't specify types for optional arguments, in a
-call to a variadic function the @dfn{default argument promotions} are
-performed on the optional argument values.  This means the objects of
-type @code{char} or @address@hidden int}} (whether signed or not) are
-promoted to either @code{int} or @address@hidden int}}, as
-appropriate; and that objects of type @code{float} are promoted to type
address@hidden  So, if the caller passes a @code{char} as an optional
-argument, it is promoted to an @code{int}, and the function can access
-it with @code{va_arg (@var{ap}, int)}.
-
-Conversion of the required arguments is controlled by the function
-prototype in the usual way---the argument expression is converted to
-the declared argument type as if it were being assigned to a variable
-of that type.
-
address@hidden Argument Macros
address@hidden Argument-Access Macros
-
-Here are descriptions of the macros used to retrieve variable arguments.
-These macros are defined in the header file @file{stdarg.h}.
address@hidden stdarg.h
-
address@hidden stdarg.h
address@hidden ISO
address@hidden {Data Type} va_list
-The type @code{va_list} is used for argument pointer variables.
address@hidden deftp
-
address@hidden stdarg.h
address@hidden ISO
address@hidden {Macro} void va_start (va_list @var{ap}, @var{last-required})
-This macro initializes the argument pointer variable @var{ap} to point
-to the first of the optional arguments of the current function;
address@hidden must be the last required argument to the function.
-
address@hidden Varargs}, for an alternate definition of @code{va_start}
-found in the header file @file{varargs.h}.
address@hidden deftypefn
-
address@hidden stdarg.h
address@hidden ISO
address@hidden {Macro} @var{type} va_arg (va_list @var{ap}, @var{type})
-The @code{va_arg} macro returns the value of the next optional argument,
-and modifies the value of @var{ap} to point to the subsequent argument.
-Thus, successive uses of @code{va_arg} return successive optional
-arguments.
-
-The type of the value returned by @code{va_arg} is @var{type} as
-specified in the call.  @var{type} must be a self-promoting type (not
address@hidden or @code{short int} or @code{float}) that matches the type
-of the actual argument.
address@hidden deftypefn
-
address@hidden stdarg.h
address@hidden ISO
address@hidden {Macro} void va_end (va_list @var{ap})
-This ends the use of @var{ap}.  After a @code{va_end} call, further
address@hidden calls with the same @var{ap} may not work.  You should invoke
address@hidden before returning from the function in which @code{va_start}
-was invoked with the same @var{ap} argument.
-
-In the @acronym{GNU} C Library, @code{va_end} does nothing, and you need not 
ever
-use it except for reasons of portability.
address@hidden
address@hidden deftypefn
-
-Sometimes you have to parse the list of parameters more than once
-or you want to remember a certain position in the parameter list.  To
-do this, you will have to make a copy of the current value of the
-argument.  But @code{va_list} is an opaque type and you cannot necessarily
-assign the value of one variable of type @code{va_list} to another variable
-of the same type.
-
address@hidden stdarg.h
address@hidden GNU
address@hidden {Macro} void __va_copy (va_list @var{dest}, va_list @var{src})
-The @code{__va_copy} macro allows copying of objects of type
address@hidden even if this is not an integral type.  The argument pointer
-in @var{dest} is initialized to point to the same argument as the
-pointer in @var{src}.
-
-This macro is a @acronym{GNU} extension, but we hope it will also be
-available in the next update of the @acronym{ISO} C standard.
address@hidden deftypefn
-
-If you want to use @code{__va_copy}, you should always be prepared for
-the possibility that this macro will not be available.  On
-architectures where a simple assignment is invalid, you hope
address@hidden @emph{will} be available, so you should always write
-something like this:
-
address@hidden
address@hidden
-  va_list ap, save;
-  @dots{}
-#ifdef __va_copy
-  __va_copy (save, ap);
-#else
-  save = ap;
-#endif
-  @dots{}
address@hidden
address@hidden smallexample
-
-
address@hidden Variadic Example
address@hidden Example of a Variadic Function
-
-Here is a complete sample function that accepts a variable number of
-arguments.  The first argument to the function is the count of remaining
-arguments, which are added up and the result returned.  While trivial,
-this function is sufficient to illustrate how to use the variable
-arguments facility.
-
address@hidden Yes, this example has been tested.
address@hidden
-#include <stdarg.h>
-#include <stdio.h>
-
-int
-add_em_up (int count,...)
address@hidden
-  va_list ap;
-  int i, sum;
-
-  va_start (ap, count);         /* @r{Initialize the argument list.} */
-
-  sum = 0;
-  for (i = 0; i < count; i++)
-    sum += va_arg (ap, int);    /* @r{Get the next argument value.} */
-
-  va_end (ap);                  /* @r{Clean up.} */
-  return sum;
address@hidden
-
-int
-main (void)
address@hidden
-  /* @r{This call prints 16.} */
-  printf ("%d\n", add_em_up (3, 5, 5, 6));
-
-  /* @r{This call prints 55.} */
-  printf ("%d\n", add_em_up (10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10));
-
-  return 0;
address@hidden
-
address@hidden smallexample
-
address@hidden Old Varargs
address@hidden Old-Style Variadic Functions
-
address@hidden varargs.h
-Before @address@hidden C}, programmers used a slightly different
-facility for writing variadic functions.  The @acronym{GNU} C Compiler
-still supports it; currently, it is more portable than the
address@hidden@acronym{ISO} C} facility, since support for @address@hidden C} is
-still not universal.  The header file that defines the old-fashioned
-variadic facility is called @file{varargs.h}.
-
-Using @file{varargs.h} is almost the same as using @file{stdarg.h}.
-There is no difference in how you call a variadic function
-(@pxref{Calling Variadics}).  The only difference is in how you define
-them.  First of all, you must use old-style nonprototype syntax, like
-this:
-
address@hidden
-tree
-build (va_alist)
-     va_dcl
address@hidden
address@hidden smallexample
-
-Secondly, you must give @code{va_start} only one argument, like this:
-
address@hidden
-  va_list p;
-  va_start (p);
address@hidden smallexample
-
-These are the special macros used for defining old-style variadic
-functions:
-
address@hidden varargs.h
address@hidden Unix
address@hidden Macro va_alist
-This macro stands for the argument name list required in a variadic
-function.
address@hidden deffn
-
address@hidden varargs.h
address@hidden Unix
address@hidden Macro va_dcl
-This macro declares the implicit argument or arguments for a variadic
-function.
address@hidden deffn
-
address@hidden varargs.h
address@hidden Unix
address@hidden {Macro} void va_start (va_list @var{ap})
-This macro, as defined in @file{varargs.h}, initializes the argument
-pointer variable @var{ap} to point to the first argument of the current
-function.
address@hidden deftypefn
-
-The other argument macros, @code{va_arg} and @code{va_end}, are the same
-in @file{varargs.h} as in @file{stdarg.h} (@pxref{Argument Macros} for
-details).
-
-It does not work to include both @file{varargs.h} and @file{stdarg.h}
-in the same compilation---they define @code{va_start} in conflicting
-ways.
-
address@hidden Null-Pointer Constant
address@hidden Null-Pointer Constant
address@hidden null-pointer constant
-
-The null-pointer constant is guaranteed not to point to any real
-object.  You can assign it to any pointer variable, since it has type
address@hidden *}.  The preferred way to write a null-pointer constant is
-with @code{NULL}.
-
address@hidden stddef.h
address@hidden ISO
address@hidden Macro {void *} NULL
-This is a null-pointer constant.
address@hidden deftypevr
-
-You can also use @code{0} or @code{(void *)0} as a null-pointer
-constant, but using @code{NULL} is cleaner because it makes the
-purpose of the constant more evident.
-
-If you use the null-pointer constant as a function argument, then for
-complete portability you should make sure that the function has a
-prototype declaration.  Otherwise, if the target machine has two
-different pointer representations, the compiler won't know which
-representation to use for that argument.  You can avoid the problem by
-explicitly casting the constant to the proper pointer-type, but we
-recommend instead adding a prototype for the function you are calling.
-
address@hidden Important Data Types
address@hidden Important Data-Types
-
-The result of subtracting two pointers in C is always an integer, but
-the precise data-type varies from C compiler to C compiler.  Likewise,
-the data type of the result of @code{sizeof} also varies between
-compilers.  @acronym{ISO} defines standard aliases for these two
-types, so you can refer to them in a portable fashion.  They are
-defined in the header file @file{stddef.h}.
address@hidden stddef.h
-
address@hidden stddef.h
address@hidden ISO
address@hidden {Data Type} ptrdiff_t
-This is the signed integer type of the result of subtracting two
-pointers.  For example, with the declaration @code{char *p1, *p2;}, the
-expression @code{p2 - p1} is of type @code{ptrdiff_t}.  This will
-probably be one of the standard signed integer types (@address@hidden
-int}}, @code{int} or @address@hidden int}}), but might be a nonstandard
-type that exists only for this purpose.
address@hidden deftp
-
address@hidden stddef.h
address@hidden ISO
address@hidden {Data Type} size_t
-This is an unsigned integer type used to represent the sizes of
-objects.  The result of the @code{sizeof} operator is of this type,
-and functions such as @address@hidden, ``Unconstrained
-Allocation''.} and @address@hidden, ``Copying and
-Concatenation''.} accept arguments of this type to specify object
-sizes.
-
address@hidden Note:} @code{size_t} is the preferred way to declare any
-arguments or variables that hold the size of an object.
address@hidden deftp
-
-In the @acronym{GNU} system, @code{size_t} is equivalent to either
address@hidden@code{unsigned int}} or @address@hidden long int}}.  These types
-have identical properties on the @acronym{GNU} system and, for most
-purposes, you can use them interchangeably.  However, they are
-distinct as data types, which makes a difference in certain contexts.
-
-For example, when you specify the type of a function argument in a
-function prototype, it makes a difference which one you use.  If the
-system header files declare @code{malloc} with an argument of type
address@hidden and you declare @code{malloc} with an argument of type
address@hidden int}, you will get a compilation error if @code{size_t}
-happens to be @code{unsigned long int} on your system.  To avoid any
-possibility of error, when a function argument or value is supposed to
-have type @code{size_t}, never declare its type in any other way.
-
address@hidden Note:} Implementations of C before the advent of
address@hidden@acronym{ISO} C} generally used @code{unsigned int} for 
representing object sizes
-and @code{int} for pointer subtraction results.  They did not
-necessarily define either @code{size_t} or @code{ptrdiff_t}.  Unix
-systems did define @code{size_t}, in @file{sys/types.h}, but the
-definition was usually a signed type.
-
address@hidden Data-Type Measurements
address@hidden Data-Type Measurements
-
-Most of the time, if you choose the proper C data-type for each object
-in your program, you need not be concerned with just how it is
-represented or how many bits it uses.  When you do need such
-information, the C language itself does not provide a way to get it.
-The header files @file{limits.h} and @file{float.h} contain macros
-that give you this information in full detail.
-
address@hidden Width of Type
address@hidden Computing the Width of an Integer Data Type
address@hidden integer type width
address@hidden width of integer type
address@hidden type measurements, integer
-
-The most common reason that a program needs to know how many bits are
-in an integer type is for using an array of @code{long int} as a bit
-vector.  You can access the bit at index @var{n} with:
-
address@hidden
address@hidden / LONGBITS] & (1 << (@var{n} % LONGBITS))
address@hidden smallexample
-
address@hidden
-provided you define @code{LONGBITS} as the number of bits in a
address@hidden int}.
-
address@hidden limits.h
-There is no operator in the C language that can give you the number of
-bits in an integer data type.  But you can compute it from the macro
address@hidden, defined in the header file @file{limits.h}.
-
address@hidden @code
address@hidden limits.h
address@hidden ISO
address@hidden CHAR_BIT
-This is the number of bits in a @code{char}---8, on most systems.
-The value has type @code{int}.
-
-You can compute the number of bits in any data type @var{type} like
-this:
-
address@hidden
-sizeof (@var{type}) * CHAR_BIT
address@hidden smallexample
address@hidden table
-
address@hidden Range of Type
address@hidden Range of an Integer Type
address@hidden integer type range
address@hidden range of integer type
address@hidden limits, integer types
-
-Suppose you need to store an integer value that can range from 0 to
-1,000,000.  Which is the smallest type you can use?  There is no
-general rule; it depends on the C compiler and target machine.  You
-can use the @samp{MIN} and @samp{MAX} macros in @file{limits.h} to
-determine which type will work.
-
-Each signed integer type has a pair of macros that give the smallest
-and largest values that it can hold.  Each unsigned integer type has
-one such macro, for the maximum value; the minimum value is, of
-course, 0.
-
-The values of these macros are all integer constant expressions.  The
address@hidden and @samp{MIN} macros for @code{char} and @address@hidden
-int}} types have values of type @code{int}.  The @samp{MAX} and
address@hidden macros for the other types have values of the same type
-described by the macro---thus, @code{ULONG_MAX} has type
address@hidden@code{unsigned long int}}.
-
address@hidden Extra blank lines make it look better.
address@hidden @code
address@hidden limits.h
address@hidden ISO
address@hidden SCHAR_MIN
-
-This is the minimum value that can be represented by a @address@hidden char}}.
-
address@hidden limits.h
address@hidden ISO
address@hidden SCHAR_MAX
address@hidden limits.h
address@hidden ISO
address@hidden UCHAR_MAX
-
-These are the maximum values that can be represented by a
address@hidden@code{signed char}} and @address@hidden char}}, respectively.
-
address@hidden limits.h
address@hidden ISO
address@hidden CHAR_MIN
-
-This is the minimum value that can be represented by a @code{char}.
-It's equal to @code{SCHAR_MIN} if @code{char} is signed, or 0
-otherwise.
-
address@hidden limits.h
address@hidden ISO
address@hidden CHAR_MAX
-
-This is the maximum value that can be represented by a @code{char}.
-It's equal to @code{SCHAR_MAX} if @code{char} is signed, or
address@hidden otherwise.
-
address@hidden limits.h
address@hidden ISO
address@hidden SHRT_MIN
-
-This is the minimum value that can be represented by a @address@hidden
-short int}}.  On most machines that the @acronym{GNU} C Library runs on,
address@hidden integers are 16-bit quantities.
-
address@hidden limits.h
address@hidden ISO
address@hidden SHRT_MAX
address@hidden limits.h
address@hidden ISO
address@hidden USHRT_MAX
-
-These are the maximum values that can be represented by a
address@hidden@code{signed short int}} and @address@hidden short int}},
-respectively.
-
address@hidden limits.h
address@hidden ISO
address@hidden INT_MIN
-
-This is the minimum value that can be represented by a @address@hidden
-int}}.  On most machines that the @acronym{GNU} C system runs on, an 
@code{int} is
-a 32-bit quantity.
-
address@hidden limits.h
address@hidden ISO
address@hidden INT_MAX
address@hidden limits.h
address@hidden ISO
address@hidden UINT_MAX
-
-These are the maximum values that can be represented by, respectively,
-the type @address@hidden int}} and the type @address@hidden int}}.
-
address@hidden limits.h
address@hidden ISO
address@hidden LONG_MIN
-
-This is the minimum value that can be represented by a @address@hidden
-long int}}.  On most machines that the @acronym{GNU} C system runs on, 
@code{long}
-integers are 32-bit quantities, the same size as @code{int}.
-
address@hidden limits.h
address@hidden ISO
address@hidden LONG_MAX
address@hidden limits.h
address@hidden ISO
address@hidden ULONG_MAX
-
-These are the maximum values that can be represented by a
address@hidden@code{signed long int}} and @code{unsigned long int}, 
respectively.
-
address@hidden limits.h
address@hidden GNU
address@hidden LONG_LONG_MIN
-
-This is the minimum value that can be represented by a @address@hidden
-long long int}}.  On most machines that the @acronym{GNU} C system runs on,
address@hidden@code{long long}} integers are 64-bit quantities.
-
address@hidden limits.h
address@hidden GNU
address@hidden LONG_LONG_MAX
address@hidden limits.h
address@hidden ISO
address@hidden ULONG_LONG_MAX
-
-These are the maximum values that can be represented by a @code{signed
-long long int} and @code{unsigned long long int}, respectively.
-
address@hidden limits.h
address@hidden GNU
address@hidden WCHAR_MAX
-
-This is the maximum value that can be represented by a
address@hidden@footnote{Ibid., ``Introduction to Extended
-Characters''.}
address@hidden vtable
-
-The header file @file{limits.h} also defines some additional constants
-that parameterize various operating-system and file-system limits.
-These constants are described in @ref{System Configuration}.
-
address@hidden Floating-Type Macros
address@hidden Floating-Type Macros
address@hidden floating-type measurements
address@hidden measurements of floating types
address@hidden type measurements, floating
address@hidden limits, floating-types
-
-The specific representation of floating-point numbers varies from
-machine to machine.  Because floating-point numbers are represented
-internally as approximate quantities, algorithms for manipulating
-floating-point data often need to take account of the precise details
-of the machine's floating-point representation.
-
-Some of the functions in the C library itself need this information;
-for example, the algorithms for printing and reading floating-point
address@hidden, ``Input/Output on Streams''.} and for
-calculating trigonometric and irrational address@hidden,
-``Mathematics''.} use it to avoid round-off error and loss of
-accuracy.  User programs that implement numerical analysis techniques
-also often need this information in order to minimize or compute error
-bounds.
-
-The header file @file{float.h} describes the format used by your
-machine.
-
address@hidden Floating-Point Concepts
address@hidden Floating-Point Representation Concepts
-
-This section introduces the terminology for describing floating-point
-representations.
-
-You are probably already familiar with most of these concepts in terms
-of scientific or exponential notation for floating-point numbers.  For
-example, the number @code{123456.0} could be expressed in exponential
-notation as @code{1.23456e+05}, a shorthand notation indicating that
-the mantissa @code{1.23456} is multiplied by the base @code{10} raised
-to power @code{5}.
-
-More formally, the internal representation of a floating-point number
-can be characterized in terms of the following parameters:
-
address@hidden @bullet
address@hidden
address@hidden sign (of floating-point number)
-The @dfn{sign} is either @code{-1} or @code{1}.
-
address@hidden
address@hidden base (of floating-point number)
address@hidden radix (of floating-point number)
-The @dfn{base} or @dfn{radix} for exponentiation is an integer greater
-than @code{1}.  This is a constant for a particular representation.
-
address@hidden
address@hidden exponent (of floating-point number)
-The @dfn{exponent} to which the base is raised: the upper and lower
-bounds of the exponent value are constants for a particular
-representation.
-
address@hidden bias (of floating-point number exponent)
-Sometimes, in the actual bits representing the floating-point number,
-the exponent is @dfn{biased} by adding a constant to it, to make it
-always be represented as an unsigned quantity.  This is only important
-if you have some reason to pick apart the bit fields making up the
-floating-point number by hand, which is something for which the
address@hidden library provides no support.  So this is ignored in the
-discussion that follows.
-
address@hidden
address@hidden mantissa (of floating-point number)
address@hidden significand (of floating-point number)
-The @dfn{mantissa} or @dfn{significand} is an unsigned integer that is
-a part of each floating-point number.
-
address@hidden
address@hidden precision (of floating-point number)
-The @dfn{precision} of the mantissa: If the base of the representation
-is @var{b}, then the precision is the number of address@hidden digits in
-the mantissa.  This is a constant for a particular representation.
-
address@hidden hidden bit (of floating-point number mantissa)
-Many floating-point representations have an implicit @dfn{hidden bit}
-in the mantissa.  This is a bit that is present virtually in the
-mantissa, but not stored in memory because its value is always 1 in a
-normalized number.  The precision figure (see above) includes any
-hidden bits.
-
-Again, the @acronym{GNU} library provides no facilities for dealing with such
-low-level aspects of the representation.
address@hidden itemize
-
-The mantissa of a floating-point number represents an implicit fraction
-whose denominator is the base raised to the power of the precision.  Since
-the largest representable mantissa is 1 less than this denominator, the
-value of the fraction is always strictly less than @code{1}.  The
-mathematical value of a floating-point number is then the product of this
-fraction, the sign, and the base raised to the exponent.
-
address@hidden normalized floating-point number
-We say that the floating-point number is @dfn{normalized} if the
-fraction is at least @code{1/@var{b}}, where @var{b} is the base.  In
-other words, the mantissa would be too large to fit if it were
-multiplied by the base.  Nonnormalized numbers are sometimes called
address@hidden; they contain less precision than the representation
-normally can hold.
-
-If the number is not normalized, then you can subtract @code{1} from the
-exponent while multiplying the mantissa by the base, and get another
-floating-point number with the same value.  @dfn{Normalization} consists
-of doing this repeatedly until the number is normalized.  Two distinct
-normalized floating-point numbers cannot be equal in value.
-
-There is an exception to this rule: if the mantissa is 0, it is
-considered normalized.  Another exception happens on certain machines
-where the exponent is as small as the representation can hold.  Then
-it is impossible to subtract @code{1} from the exponent, so a number
-may be normalized even if its fraction is less than @code{1/@var{b}}.
-
address@hidden Floating-Point Parameters
address@hidden Floating-Point Parameters
-
address@hidden float.h
-These macro definitions can be accessed by including the header file
address@hidden in your program.
-
-Macro names starting with @samp{FLT_} refer to the @code{float} type,
-while names beginning with @samp{DBL_} refer to the @code{double}
-type, and names beginning with @samp{LDBL_} refer to the @code{long
-double} type.  (If @acronym{GCC} does not support @code{long double}
-as a distinct data-type on a target machine, then the values for the
address@hidden constants are equal to the corresponding constants for
-the @code{double} type.)
-
-Of these macros, only @code{FLT_RADIX} is guaranteed to be a constant
-expression.  The other macros listed here cannot be reliably used in
-places that require constant expressions, such as @samp{#if}
-preprocessing directives or in the dimensions of static arrays.
-
-Although the @address@hidden C} standard specifies minimum and
-maximum values for most of these parameters, the @acronym{GNU} C
-implementation uses whatever values describe the floating-point
-representation of the target machine.  So in principle, @acronym{GNU}
-C actually satisfies the @address@hidden C} requirements only if the
-target machine is suitable.  In practice, all the machines currently
-supported are suitable.
-
address@hidden @code
address@hidden float.h
address@hidden ISO
address@hidden FLT_ROUNDS
-This value characterizes the rounding mode for floating-point
-addition.  The following values indicate standard rounding-modes:
-
address@hidden 750
-
address@hidden @code
address@hidden -1
-The mode is indeterminable.
address@hidden 0
-Rounding is toward 0.
address@hidden 1
-Rounding is to the nearest number.
address@hidden 2
-Rounding is toward positive infinity.
address@hidden 3
-Rounding is toward negative infinity.
address@hidden table
-
address@hidden
-Any other value represents a machine-dependent nonstandard
-rounding-mode.
-
-On most machines, the value is @code{1}, in accordance with the
address@hidden standard for floating-point.
-
-Here is a table showing how certain values round for each possible value
-of @code{FLT_ROUNDS}, if the other aspects of the representation match
-the @acronym{IEEE} single-precision standard.
-
address@hidden
-                0      1             2             3
- 1.00000003    1.0    1.0           1.00000012    1.0
- 1.00000007    1.0    1.00000012    1.00000012    1.0
--1.00000003   -1.0   -1.0          -1.0          -1.00000012
--1.00000007   -1.0   -1.00000012   -1.0          -1.00000012
address@hidden smallexample
-
address@hidden float.h
address@hidden ISO
address@hidden FLT_RADIX
-This is the value of the base, or radix, of the exponent representation.
-This is guaranteed to be a constant expression, unlike the other macros
-described in this section.  The value is 2 on all machines we know of
-except the @acronym{IBM} 360 and derivatives.
-
address@hidden float.h
address@hidden ISO
address@hidden FLT_MANT_DIG
-This is the number of address@hidden digits in the floating-point
-mantissa for the @code{float} data type.  The following expression
-yields @code{1.0} (even though mathematically it should not) due to the
-limited number of mantissa digits:
-
address@hidden
-float radix = FLT_RADIX;
-
-1.0f + 1.0f / radix / radix / @dots{} / radix
address@hidden smallexample
-
address@hidden
-where @code{radix} appears @code{FLT_MANT_DIG} times.
-
address@hidden float.h
address@hidden ISO
address@hidden DBL_MANT_DIG
address@hidden LDBL_MANT_DIG
-This is the number of address@hidden digits in the floating-point
-mantissa for the data types @code{double} and @code{long double},
-respectively.
-
address@hidden Extra blank lines make it look better.
address@hidden float.h
address@hidden ISO
address@hidden FLT_DIG
-
-This is the number of decimal digits of precision for the @code{float}
-data type.  Technically, if @var{p} and @var{b} are the precision and
-base (respectively) for the representation, then the decimal precision
address@hidden is the maximum number of decimal digits such that any
-floating-point number with @var{q} base-10 digits can be rounded to a
-floating-point number with @var{p} base @var{b} digits and back again,
-without change to the @var{q} decimal digits.
-
-The value of this macro is supposed to be at least @code{6}, to satisfy
address@hidden@acronym{ISO} C}.
-
address@hidden float.h
address@hidden ISO
address@hidden DBL_DIG
address@hidden LDBL_DIG
-
-These are similar to @code{FLT_DIG}, but for the data types
address@hidden and @code{long double}, respectively.  The values of these
-macros are supposed to be at least @code{10}.
-
address@hidden float.h
address@hidden ISO
address@hidden FLT_MIN_EXP
-This is the smallest possible exponent value for type @code{float}.
-More precisely, is the minimum negative integer such that the value
address@hidden raised to this power minus 1 can be represented as a
-normalized floating-point number of type @code{float}.
-
address@hidden float.h
address@hidden ISO
address@hidden DBL_MIN_EXP
address@hidden LDBL_MIN_EXP
-
-These are similar to @code{FLT_MIN_EXP}, but for the data types
address@hidden and @code{long double}, respectively.
-
address@hidden float.h
address@hidden ISO
address@hidden FLT_MIN_10_EXP
-This is the minimum negative integer such that @code{10} raised to this
-power minus 1 can be represented as a normalized floating-point number
-of type @code{float}.  This is supposed to be @code{-37} or even less.
-
address@hidden float.h
address@hidden ISO
address@hidden DBL_MIN_10_EXP
address@hidden LDBL_MIN_10_EXP
-These are similar to @code{FLT_MIN_10_EXP}, but for the data types
address@hidden and @code{long double}, respectively.
-
address@hidden float.h
address@hidden ISO
address@hidden FLT_MAX_EXP
-This is the largest possible exponent value for type @code{float}.  More
-precisely, this is the maximum positive integer such that value
address@hidden raised to this power minus 1 can be represented as a
-floating-point number of type @code{float}.
-
address@hidden float.h
address@hidden ISO
address@hidden DBL_MAX_EXP
address@hidden LDBL_MAX_EXP
-These are similar to @code{FLT_MAX_EXP}, but for the data types
address@hidden and @code{long double}, respectively.
-
address@hidden float.h
address@hidden ISO
address@hidden FLT_MAX_10_EXP
-This is the maximum positive integer such that @code{10} raised to this
-power minus 1 can be represented as a normalized floating-point number
-of type @code{float}.  This is supposed to be at least @code{37}.
-
address@hidden float.h
address@hidden ISO
address@hidden DBL_MAX_10_EXP
address@hidden LDBL_MAX_10_EXP
-These are similar to @code{FLT_MAX_10_EXP}, but for the data types
address@hidden and @code{long double}, respectively.
-
address@hidden float.h
address@hidden ISO
address@hidden FLT_MAX
-
-The value of this macro is the maximum number representable in type
address@hidden  It is supposed to be at least @code{1E+37}.  The value
-has type @code{float}.
-
-The smallest representable number is @code{- FLT_MAX}.
-
address@hidden float.h
address@hidden ISO
address@hidden DBL_MAX
address@hidden LDBL_MAX
-
-These are similar to @code{FLT_MAX}, but for the data types
address@hidden and @code{long double}, respectively.  The type of the
-macro's value is the same as the type it describes.
-
address@hidden float.h
address@hidden ISO
address@hidden FLT_MIN
-
-The value of this macro is the minimum normalized positive
-floating-point number that is representable in type @code{float}.  It
-is supposed to be no more than @code{1E-37}.
-
address@hidden float.h
address@hidden ISO
address@hidden DBL_MIN
address@hidden LDBL_MIN
-
-These are similar to @code{FLT_MIN}, but for the data types
address@hidden and @code{long double}, respectively.  The type of the
-macro's value is the same as the type it describes.
-
address@hidden float.h
address@hidden ISO
address@hidden FLT_EPSILON
-
-This is the minimum positive floating-point number of type @code{float}
-such that @code{1.0 + FLT_EPSILON != 1.0} is true.  It's supposed to
-be no greater than @code{1E-5}.
-
address@hidden float.h
address@hidden ISO
address@hidden DBL_EPSILON
address@hidden LDBL_EPSILON
-
-These are similar to @code{FLT_EPSILON}, but for the data types
address@hidden and @code{long double}, respectively.  The type of the
-macro's value is the same as the type it describes.  The values are not
-supposed to be greater than @code{1E-9}.
address@hidden vtable
-
address@hidden IEEE Floating Point
address@hidden @acronym{IEEE} Floating-Point
address@hidden @acronym{IEEE} floating-point representation
address@hidden floating-point, @acronym{IEEE}
-
-Here is an example showing how the floating-type measurements come out
-for the most common floating-point representation, specified by the
address@hidden@acronym{IEEE} Standard for Binary Floating-Point Arithmetic
-(@acronym{ANSI}/@acronym{IEEE} Std 754-1985)}.  Nearly all computers
-designed since the 1980s use this format.
-
-The @acronym{IEEE} single-precision float representation uses a base
-of 2.  There is a sign bit, a mantissa with 23 bits plus 1 hidden bit
-(so the total precision is 24 base-2 digits), and an 8-bit exponent
-that can represent values in the range -125 to 128, inclusive.
-
-So, for an implementation that uses this representation for the
address@hidden data type, appropriate values for the corresponding
-parameters are
-
address@hidden
-FLT_RADIX                             2
-FLT_MANT_DIG                         24
-FLT_DIG                               6
-FLT_MIN_EXP                        -125
-FLT_MIN_10_EXP                      -37
-FLT_MAX_EXP                         128
-FLT_MAX_10_EXP                      +38
-FLT_MIN                 1.17549435E-38F
-FLT_MAX                 3.40282347E+38F
-FLT_EPSILON             1.19209290E-07F
address@hidden smallexample
-
-Here are the values for the @code{double} data type:
-
address@hidden
-DBL_MANT_DIG                         53
-DBL_DIG                              15
-DBL_MIN_EXP                       -1021
-DBL_MIN_10_EXP                     -307
-DBL_MAX_EXP                        1024
-DBL_MAX_10_EXP                      308
-DBL_MAX         1.7976931348623157E+308
-DBL_MIN         2.2250738585072014E-308
-DBL_EPSILON     2.2204460492503131E-016
address@hidden smallexample
-
address@hidden Structure Measurement
address@hidden Structure Field Offset Measurement
-
-You can use @code{offsetof} to measure the location within a structure
-type of a particular structure member.
-
address@hidden stddef.h
address@hidden ISO
address@hidden {Macro} size_t offsetof (@var{type}, @var{member})
-This expands to a integer constant expression that is the offset of the
-structure member named @var{member} in a the structure type @var{type}.
-For example, @code{offsetof (struct s, elem)} is the offset, in bytes,
-of the member @code{elem} in a @code{struct s}.
-
-This macro won't work if @var{member} is a bit field; you get an error
-from the C compiler in that case.
address@hidden deftypefn
-
-
address@hidden Library Summary, Installation, Language Features, Top
address@hidden %MENU% A summary showing the syntax, header file, and derivation 
of each library feature
address@hidden Summary of Library Facilities
-
-This appendix is a complete list of the facilities declared within the
-header files supplied with the @sc{gnu} C Library.  Each entry also lists the
-standard or other source from which each facility is derived, and tells
-you where in the manual you can find more information about how to use
-it.
-
address@hidden This table runs wide.  Shrink fonts.
address@hidden
address@hidden @rm
address@hidden iftex
address@hidden @code
address@hidden summary.texi is generated from the other Texinfo files.
address@hidden See the Makefile and summary.awk for the details.
address@hidden DO NOT EDIT THIS FILE!
address@hidden accept
address@hidden int accept (int @var{socket}, struct sockaddr address@hidden, 
socklen_t address@hidden)
-
address@hidden/socket.h} (BSD):  @ref{Accepting Connections}.
-
address@hidden access
address@hidden int access (const char address@hidden, int @var{how})
-
address@hidden (POSIX.1):  @ref{Testing File Access}.
-
address@hidden ACCOUNTING
address@hidden ACCOUNTING
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden addmntent
address@hidden int addmntent (FILE address@hidden, const struct mntent 
address@hidden)
-
address@hidden (BSD):  @ref{mtab}.
-
address@hidden AF_FILE
address@hidden AF_FILE
-
address@hidden/socket.h} (GNU):  @ref{Address Formats}.
-
address@hidden AF_INET
address@hidden AF_INET
-
address@hidden/socket.h} (BSD):  @ref{Address Formats}.
-
address@hidden AF_INET6
address@hidden AF_INET6
-
address@hidden/socket.h} (IPv6 Basic API):  @ref{Address Formats}.
-
address@hidden AF_LOCAL
address@hidden AF_LOCAL
-
address@hidden/socket.h} (POSIX):  @ref{Address Formats}.
-
address@hidden AF_UNIX
address@hidden AF_UNIX
-
address@hidden/socket.h} (BSD, Unix98):  @ref{Address Formats}.
-
address@hidden AF_UNSPEC
address@hidden AF_UNSPEC
-
address@hidden/socket.h} (BSD):  @ref{Address Formats}.
-
address@hidden aio_cancel
address@hidden int aio_cancel (int @var{fildes}, struct aiocb address@hidden)
-
address@hidden (POSIX.1b):  @ref{Cancel AIO Operations}.
-
address@hidden aio_cancel64
address@hidden int aio_cancel64 (int @var{fildes}, struct aiocb64 
address@hidden)
-
address@hidden (Unix98):  @ref{Cancel AIO Operations}.
-
address@hidden aio_error
address@hidden int aio_error (const struct aiocb address@hidden)
-
address@hidden (POSIX.1b):  @ref{Status of AIO Operations}.
-
address@hidden aio_error64
address@hidden int aio_error64 (const struct aiocb64 address@hidden)
-
address@hidden (Unix98):  @ref{Status of AIO Operations}.
-
address@hidden aio_fsync
address@hidden int aio_fsync (int @var{op}, struct aiocb address@hidden)
-
address@hidden (POSIX.1b):  @ref{Synchronizing AIO Operations}.
-
address@hidden aio_fsync64
address@hidden int aio_fsync64 (int @var{op}, struct aiocb64 address@hidden)
-
address@hidden (Unix98):  @ref{Synchronizing AIO Operations}.
-
address@hidden aio_init
address@hidden void aio_init (const struct aioinit address@hidden)
-
address@hidden (GNU):  @ref{Configuration of AIO}.
-
address@hidden aio_read
address@hidden int aio_read (struct aiocb address@hidden)
-
address@hidden (POSIX.1b):  @ref{Asynchronous Reads/Writes}.
-
address@hidden aio_read64
address@hidden int aio_read64 (struct aiocb address@hidden)
-
address@hidden (Unix98):  @ref{Asynchronous Reads/Writes}.
-
address@hidden aio_return
address@hidden ssize_t aio_return (const struct aiocb address@hidden)
-
address@hidden (POSIX.1b):  @ref{Status of AIO Operations}.
-
address@hidden aio_return64
address@hidden int aio_return64 (const struct aiocb64 address@hidden)
-
address@hidden (Unix98):  @ref{Status of AIO Operations}.
-
address@hidden aio_suspend
address@hidden int aio_suspend (const struct aiocb *const @var{list}[], int 
@var{nent}, const struct timespec address@hidden)
-
address@hidden (POSIX.1b):  @ref{Synchronizing AIO Operations}.
-
address@hidden aio_suspend64
address@hidden int aio_suspend64 (const struct aiocb64 *const @var{list}[], int 
@var{nent}, const struct timespec address@hidden)
-
address@hidden (Unix98):  @ref{Synchronizing AIO Operations}.
-
address@hidden aio_write
address@hidden int aio_write (struct aiocb address@hidden)
-
address@hidden (POSIX.1b):  @ref{Asynchronous Reads/Writes}.
-
address@hidden aio_write64
address@hidden int aio_write64 (struct aiocb address@hidden)
-
address@hidden (Unix98):  @ref{Asynchronous Reads/Writes}.
-
address@hidden alphasort
address@hidden int alphasort (const void address@hidden, const void 
address@hidden)
-
address@hidden (BSD/SVID):  @ref{Scanning Directory Content}.
-
address@hidden alphasort64
address@hidden int alphasort64 (const void address@hidden, const void 
address@hidden)
-
address@hidden (GNU):  @ref{Scanning Directory Content}.
-
address@hidden ALTWERASE
address@hidden tcflag_t ALTWERASE
-
address@hidden (BSD):  @ref{Local Modes}.
-
address@hidden ARG_MAX
address@hidden int ARG_MAX
-
address@hidden (POSIX.1):  @ref{General Limits}.
-
address@hidden assert
address@hidden void assert (int @var{expression})
-
address@hidden (ISO):  @ref{Consistency Checking}.
-
address@hidden assert_perror
address@hidden void assert_perror (int @var{errnum})
-
address@hidden (GNU):  @ref{Consistency Checking}.
-
address@hidden B0
address@hidden B0
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B110
address@hidden B110
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B115200
address@hidden B115200
-
address@hidden (GNU):  @ref{Line Speed}.
-
address@hidden B1200
address@hidden B1200
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B134
address@hidden B134
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B150
address@hidden B150
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B1800
address@hidden B1800
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B19200
address@hidden B19200
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B200
address@hidden B200
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B230400
address@hidden B230400
-
address@hidden (GNU):  @ref{Line Speed}.
-
address@hidden B2400
address@hidden B2400
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B300
address@hidden B300
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B38400
address@hidden B38400
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B460800
address@hidden B460800
-
address@hidden (GNU):  @ref{Line Speed}.
-
address@hidden B4800
address@hidden B4800
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B50
address@hidden B50
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B57600
address@hidden B57600
-
address@hidden (GNU):  @ref{Line Speed}.
-
address@hidden B600
address@hidden B600
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B75
address@hidden B75
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden B9600
address@hidden B9600
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden BC_BASE_MAX
address@hidden int BC_BASE_MAX
-
address@hidden (POSIX.2):  @ref{Utility Limits}.
-
address@hidden BC_DIM_MAX
address@hidden int BC_DIM_MAX
-
address@hidden (POSIX.2):  @ref{Utility Limits}.
-
address@hidden BC_SCALE_MAX
address@hidden int BC_SCALE_MAX
-
address@hidden (POSIX.2):  @ref{Utility Limits}.
-
address@hidden BC_STRING_MAX
address@hidden int BC_STRING_MAX
-
address@hidden (POSIX.2):  @ref{Utility Limits}.
-
address@hidden bind
address@hidden int bind (int @var{socket}, struct sockaddr address@hidden, 
socklen_t @var{length})
-
address@hidden/socket.h} (BSD):  @ref{Setting Address}.
-
address@hidden blkcnt64_t
address@hidden blkcnt64_t
-
address@hidden/types.h} (Unix98):  @ref{Attribute Meanings}.
-
address@hidden blkcnt_t
address@hidden blkcnt_t
-
address@hidden/types.h} (Unix98):  @ref{Attribute Meanings}.
-
address@hidden BOOT_TIME
address@hidden BOOT_TIME
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden BOOT_TIME
address@hidden BOOT_TIME
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden BRKINT
address@hidden tcflag_t BRKINT
-
address@hidden (POSIX.1):  @ref{Input Modes}.
-
address@hidden _BSD_SOURCE
address@hidden _BSD_SOURCE
-
-(GNU):  @ref{Feature-Test Macros}.
-
address@hidden canonicalize_file_name
address@hidden char * canonicalize_file_name (const char address@hidden)
-
address@hidden (GNU):  @ref{Symbolic Links}.
-
address@hidden cbc_crypt
address@hidden int cbc_crypt (char address@hidden, char address@hidden, 
unsigned @var{len}, unsigned @var{mode}, char address@hidden)
-
address@hidden/des_crypt.h} (SUNRPC):  @ref{DES Encryption}.
-
address@hidden cc_t
address@hidden cc_t
-
address@hidden (POSIX.1):  @ref{Mode Data Types}.
-
address@hidden CCTS_OFLOW
address@hidden tcflag_t CCTS_OFLOW
-
address@hidden (BSD):  @ref{Control Modes}.
-
address@hidden cfgetispeed
address@hidden speed_t cfgetispeed (const struct termios address@hidden)
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden cfgetospeed
address@hidden speed_t cfgetospeed (const struct termios address@hidden)
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden cfmakeraw
address@hidden void cfmakeraw (struct termios address@hidden)
-
address@hidden (BSD):  @ref{Noncanonical Input}.
-
address@hidden cfsetispeed
address@hidden int cfsetispeed (struct termios address@hidden, speed_t 
@var{speed})
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden cfsetospeed
address@hidden int cfsetospeed (struct termios address@hidden, speed_t 
@var{speed})
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden cfsetspeed
address@hidden int cfsetspeed (struct termios address@hidden, speed_t 
@var{speed})
-
address@hidden (BSD):  @ref{Line Speed}.
-
address@hidden CHAR_BIT
address@hidden CHAR_BIT
-
address@hidden (ISO):  @ref{Width of Type}.
-
address@hidden CHAR_MAX
address@hidden CHAR_MAX
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden CHAR_MIN
address@hidden CHAR_MIN
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden chdir
address@hidden int chdir (const char address@hidden)
-
address@hidden (POSIX.1):  @ref{Working Directory}.
-
address@hidden CHILD_MAX
address@hidden int CHILD_MAX
-
address@hidden (POSIX.1):  @ref{General Limits}.
-
address@hidden chmod
address@hidden int chmod (const char address@hidden, mode_t @var{mode})
-
address@hidden/stat.h} (POSIX.1):  @ref{Setting Permissions}.
-
address@hidden chown
address@hidden int chown (const char address@hidden, uid_t @var{owner}, gid_t 
@var{group})
-
address@hidden (POSIX.1):  @ref{File Owner}.
-
address@hidden CIGNORE
address@hidden tcflag_t CIGNORE
-
address@hidden (BSD):  @ref{Control Modes}.
-
address@hidden CLOCAL
address@hidden tcflag_t CLOCAL
-
address@hidden (POSIX.1):  @ref{Control Modes}.
-
address@hidden close
address@hidden int close (int @var{filedes})
-
address@hidden (POSIX.1):  @ref{Opening and Closing Files}.
-
address@hidden closedir
address@hidden int closedir (DIR address@hidden)
-
address@hidden (POSIX.1):  @ref{Reading/Closing Directory}.
-
address@hidden closelog
address@hidden void closelog (void)
-
address@hidden (BSD):  @ref{closelog}.
-
address@hidden COLL_WEIGHTS_MAX
address@hidden int COLL_WEIGHTS_MAX
-
address@hidden (POSIX.2):  @ref{Utility Limits}.
-
address@hidden confstr
address@hidden size_t confstr (int @var{parameter}, char address@hidden, size_t 
@var{len})
-
address@hidden (POSIX.2):  @ref{String Parameters}.
-
address@hidden connect
address@hidden int connect (int @var{socket}, struct sockaddr address@hidden, 
socklen_t @var{length})
-
address@hidden/socket.h} (BSD):  @ref{Connecting}.
-
address@hidden CPU_CLR
address@hidden void CPU_CLR (int @var{cpu}, cpu_set_t address@hidden)
-
address@hidden (GNU):  @ref{CPU Affinity}.
-
address@hidden CPU_ISSET
address@hidden int CPU_ISSET (int @var{cpu}, const cpu_set_t address@hidden)
-
address@hidden (GNU):  @ref{CPU Affinity}.
-
address@hidden CPU_SET
address@hidden void CPU_SET (int @var{cpu}, cpu_set_t address@hidden)
-
address@hidden (GNU):  @ref{CPU Affinity}.
-
address@hidden CPU_SETSIZE
address@hidden int CPU_SETSIZE
-
address@hidden (GNU):  @ref{CPU Affinity}.
-
address@hidden cpu_set_t
address@hidden cpu_set_t
-
address@hidden (GNU):  @ref{CPU Affinity}.
-
address@hidden CPU_ZERO
address@hidden void CPU_ZERO (cpu_set_t address@hidden)
-
address@hidden (GNU):  @ref{CPU Affinity}.
-
address@hidden CREAD
address@hidden tcflag_t CREAD
-
address@hidden (POSIX.1):  @ref{Control Modes}.
-
address@hidden creat
address@hidden int creat (const char address@hidden, mode_t @var{mode})
-
address@hidden (POSIX.1):  @ref{Opening and Closing Files}.
-
address@hidden creat64
address@hidden int creat64 (const char address@hidden, mode_t @var{mode})
-
address@hidden (Unix98):  @ref{Opening and Closing Files}.
-
address@hidden CRTS_IFLOW
address@hidden tcflag_t CRTS_IFLOW
-
address@hidden (BSD):  @ref{Control Modes}.
-
address@hidden crypt
address@hidden char * crypt (const char address@hidden, const char 
address@hidden)
-
address@hidden (BSD, SVID):  @ref{crypt}.
-
address@hidden crypt_r
address@hidden char * crypt_r (const char address@hidden, const char 
address@hidden, struct crypt_data * @var{data})
-
address@hidden (GNU):  @ref{crypt}.
-
address@hidden CS5
address@hidden tcflag_t CS5
-
address@hidden (POSIX.1):  @ref{Control Modes}.
-
address@hidden CS6
address@hidden tcflag_t CS6
-
address@hidden (POSIX.1):  @ref{Control Modes}.
-
address@hidden CS7
address@hidden tcflag_t CS7
-
address@hidden (POSIX.1):  @ref{Control Modes}.
-
address@hidden CS8
address@hidden tcflag_t CS8
-
address@hidden (POSIX.1):  @ref{Control Modes}.
-
address@hidden CSIZE
address@hidden tcflag_t CSIZE
-
address@hidden (POSIX.1):  @ref{Control Modes}.
-
address@hidden _CS_LFS64_CFLAGS
address@hidden _CS_LFS64_CFLAGS
-
address@hidden (Unix98):  @ref{String Parameters}.
-
address@hidden _CS_LFS64_LDFLAGS
address@hidden _CS_LFS64_LDFLAGS
-
address@hidden (Unix98):  @ref{String Parameters}.
-
address@hidden _CS_LFS64_LIBS
address@hidden _CS_LFS64_LIBS
-
address@hidden (Unix98):  @ref{String Parameters}.
-
address@hidden _CS_LFS64_LINTFLAGS
address@hidden _CS_LFS64_LINTFLAGS
-
address@hidden (Unix98):  @ref{String Parameters}.
-
address@hidden _CS_LFS_CFLAGS
address@hidden _CS_LFS_CFLAGS
-
address@hidden (Unix98):  @ref{String Parameters}.
-
address@hidden _CS_LFS_LDFLAGS
address@hidden _CS_LFS_LDFLAGS
-
address@hidden (Unix98):  @ref{String Parameters}.
-
address@hidden _CS_LFS_LIBS
address@hidden _CS_LFS_LIBS
-
address@hidden (Unix98):  @ref{String Parameters}.
-
address@hidden _CS_LFS_LINTFLAGS
address@hidden _CS_LFS_LINTFLAGS
-
address@hidden (Unix98):  @ref{String Parameters}.
-
address@hidden _CS_PATH
address@hidden _CS_PATH
-
address@hidden (POSIX.2):  @ref{String Parameters}.
-
address@hidden CSTOPB
address@hidden tcflag_t CSTOPB
-
address@hidden (POSIX.1):  @ref{Control Modes}.
-
address@hidden ctermid
address@hidden char * ctermid (char address@hidden)
-
address@hidden (POSIX.1):  @ref{Identifying the Terminal}.
-
address@hidden cuserid
address@hidden char * cuserid (char address@hidden)
-
address@hidden (POSIX.1):  @ref{Who Logged In}.
-
address@hidden DBL_DIG
address@hidden DBL_DIG
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden DBL_EPSILON
address@hidden DBL_EPSILON
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden DBL_MANT_DIG
address@hidden DBL_MANT_DIG
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden DBL_MAX
address@hidden DBL_MAX
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden DBL_MAX_10_EXP
address@hidden DBL_MAX_10_EXP
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden DBL_MAX_EXP
address@hidden DBL_MAX_EXP
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden DBL_MIN
address@hidden DBL_MIN
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden DBL_MIN_10_EXP
address@hidden DBL_MIN_10_EXP
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden DBL_MIN_EXP
address@hidden DBL_MIN_EXP
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden DEAD_PROCESS
address@hidden DEAD_PROCESS
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden DEAD_PROCESS
address@hidden DEAD_PROCESS
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden DES_DECRYPT
address@hidden DES_DECRYPT
-
address@hidden/des_crypt.h} (SUNRPC):  @ref{DES Encryption}.
-
address@hidden DES_ENCRYPT
address@hidden DES_ENCRYPT
-
address@hidden/des_crypt.h} (SUNRPC):  @ref{DES Encryption}.
-
address@hidden DESERR_BADPARAM
address@hidden DESERR_BADPARAM
-
address@hidden/des_crypt.h} (SUNRPC):  @ref{DES Encryption}.
-
address@hidden DESERR_HWERROR
address@hidden DESERR_HWERROR
-
address@hidden/des_crypt.h} (SUNRPC):  @ref{DES Encryption}.
-
address@hidden DESERR_NOHWDEVICE
address@hidden DESERR_NOHWDEVICE
-
address@hidden/des_crypt.h} (SUNRPC):  @ref{DES Encryption}.
-
address@hidden DESERR_NONE
address@hidden DESERR_NONE
-
address@hidden/des_crypt.h} (SUNRPC):  @ref{DES Encryption}.
-
address@hidden DES_FAILED
address@hidden int DES_FAILED (int @var{err})
-
address@hidden/des_crypt.h} (SUNRPC):  @ref{DES Encryption}.
-
address@hidden DES_HW
address@hidden DES_HW
-
address@hidden/des_crypt.h} (SUNRPC):  @ref{DES Encryption}.
-
address@hidden des_setparity
address@hidden void des_setparity (char address@hidden)
-
address@hidden/des_crypt.h} (SUNRPC):  @ref{DES Encryption}.
-
address@hidden DES_SW
address@hidden DES_SW
-
address@hidden/des_crypt.h} (SUNRPC):  @ref{DES Encryption}.
-
address@hidden dev_t
address@hidden dev_t
-
address@hidden/types.h} (POSIX.1):  @ref{Attribute Meanings}.
-
address@hidden DIR
address@hidden DIR
-
address@hidden (POSIX.1):  @ref{Opening a Directory}.
-
address@hidden dirfd
address@hidden int dirfd (DIR address@hidden)
-
address@hidden (GNU):  @ref{Opening a Directory}.
-
address@hidden DTTOIF
address@hidden mode_t DTTOIF (int @var{dtype})
-
address@hidden (BSD):  @ref{Directory Entries}.
-
address@hidden dup
address@hidden int dup (int @var{old})
-
address@hidden (POSIX.1):  @ref{Duplicating Descriptors}.
-
address@hidden dup2
address@hidden int dup2 (int @var{old}, int @var{new})
-
address@hidden (POSIX.1):  @ref{Duplicating Descriptors}.
-
address@hidden ecb_crypt
address@hidden int ecb_crypt (char address@hidden, char address@hidden, 
unsigned @var{len}, unsigned @var{mode})
-
address@hidden/des_crypt.h} (SUNRPC):  @ref{DES Encryption}.
-
address@hidden ECHO
address@hidden tcflag_t ECHO
-
address@hidden (POSIX.1):  @ref{Local Modes}.
-
address@hidden ECHOCTL
address@hidden tcflag_t ECHOCTL
-
address@hidden (BSD):  @ref{Local Modes}.
-
address@hidden ECHOE
address@hidden tcflag_t ECHOE
-
address@hidden (POSIX.1):  @ref{Local Modes}.
-
address@hidden ECHOK
address@hidden tcflag_t ECHOK
-
address@hidden (POSIX.1):  @ref{Local Modes}.
-
address@hidden ECHOKE
address@hidden tcflag_t ECHOKE
-
address@hidden (BSD):  @ref{Local Modes}.
-
address@hidden ECHONL
address@hidden tcflag_t ECHONL
-
address@hidden (POSIX.1):  @ref{Local Modes}.
-
address@hidden ECHOPRT
address@hidden tcflag_t ECHOPRT
-
address@hidden (BSD):  @ref{Local Modes}.
-
address@hidden EMPTY
address@hidden EMPTY
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden EMPTY
address@hidden EMPTY
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden encrypt
address@hidden void encrypt (char address@hidden, int @var{edflag})
-
address@hidden (BSD, SVID):  @ref{DES Encryption}.
-
address@hidden encrypt_r
address@hidden void encrypt_r (char address@hidden, int @var{edflag}, struct 
crypt_data * @var{data})
-
address@hidden (GNU):  @ref{DES Encryption}.
-
address@hidden endfsent
address@hidden void endfsent (void)
-
address@hidden (BSD):  @ref{fstab}.
-
address@hidden endgrent
address@hidden void endgrent (void)
-
address@hidden (SVID, BSD):  @ref{Scanning All Groups}.
-
address@hidden endhostent
address@hidden void endhostent (void)
-
address@hidden (BSD):  @ref{Host Names}.
-
address@hidden endmntent
address@hidden int endmntent (FILE address@hidden)
-
address@hidden (BSD):  @ref{mtab}.
-
address@hidden endnetent
address@hidden void endnetent (void)
-
address@hidden (BSD):  @ref{Networks Database}.
-
address@hidden endnetgrent
address@hidden void endnetgrent (void)
-
address@hidden (BSD):  @ref{Lookup Netgroup}.
-
address@hidden endprotoent
address@hidden void endprotoent (void)
-
address@hidden (BSD):  @ref{Protocols Database}.
-
address@hidden endpwent
address@hidden void endpwent (void)
-
address@hidden (SVID, BSD):  @ref{Scanning All Users}.
-
address@hidden endservent
address@hidden void endservent (void)
-
address@hidden (BSD):  @ref{Services Database}.
-
address@hidden endutent
address@hidden void endutent (void)
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden endutxent
address@hidden void endutxent (void)
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden EQUIV_CLASS_MAX
address@hidden int EQUIV_CLASS_MAX
-
address@hidden (POSIX.2):  @ref{Utility Limits}.
-
address@hidden execl
address@hidden int execl (const char address@hidden, const char address@hidden, 
@dots{})
-
address@hidden (POSIX.1):  @ref{Executing a File}.
-
address@hidden execle
address@hidden int execle (const char address@hidden, const char 
address@hidden, char *const @address@hidden, @dots{})
-
address@hidden (POSIX.1):  @ref{Executing a File}.
-
address@hidden execlp
address@hidden int execlp (const char address@hidden, const char 
address@hidden, @dots{})
-
address@hidden (POSIX.1):  @ref{Executing a File}.
-
address@hidden execv
address@hidden int execv (const char address@hidden, char *const 
@address@hidden)
-
address@hidden (POSIX.1):  @ref{Executing a File}.
-
address@hidden execve
address@hidden int execve (const char address@hidden, char *const 
@address@hidden, char *const @address@hidden)
-
address@hidden (POSIX.1):  @ref{Executing a File}.
-
address@hidden execvp
address@hidden int execvp (const char address@hidden, char *const 
@address@hidden)
-
address@hidden (POSIX.1):  @ref{Executing a File}.
-
address@hidden EXPR_NEST_MAX
address@hidden int EXPR_NEST_MAX
-
address@hidden (POSIX.2):  @ref{Utility Limits}.
-
address@hidden fchdir
address@hidden int fchdir (int @var{filedes})
-
address@hidden (XPG):  @ref{Working Directory}.
-
address@hidden fchmod
address@hidden int fchmod (int @var{filedes}, int @var{mode})
-
address@hidden/stat.h} (BSD):  @ref{Setting Permissions}.
-
address@hidden fchown
address@hidden int fchown (int @var{filedes}, int @var{owner}, int @var{group})
-
address@hidden (BSD):  @ref{File Owner}.
-
address@hidden fclean
address@hidden int fclean (FILE address@hidden)
-
address@hidden (GNU):  @ref{Cleaning Streams}.
-
address@hidden fcntl
address@hidden int fcntl (int @var{filedes}, int @var{command}, @dots{})
-
address@hidden (POSIX.1):  @ref{Control Operations}.
-
address@hidden fdatasync
address@hidden int fdatasync (int @var{fildes})
-
address@hidden (POSIX):  @ref{Synchronizing I/O}.
-
address@hidden FD_CLOEXEC
address@hidden int FD_CLOEXEC
-
address@hidden (POSIX.1):  @ref{Descriptor Flags}.
-
address@hidden FD_CLR
address@hidden void FD_CLR (int @var{filedes}, fd_set address@hidden)
-
address@hidden/types.h} (BSD):  @ref{Waiting for I/O}.
-
address@hidden FD_ISSET
address@hidden int FD_ISSET (int @var{filedes}, const fd_set address@hidden)
-
address@hidden/types.h} (BSD):  @ref{Waiting for I/O}.
-
address@hidden fdopen
address@hidden FILE * fdopen (int @var{filedes}, const char address@hidden)
-
address@hidden (POSIX.1):  @ref{Descriptors and Streams}.
-
address@hidden fd_set
address@hidden fd_set
-
address@hidden/types.h} (BSD):  @ref{Waiting for I/O}.
-
address@hidden FD_SET
address@hidden void FD_SET (int @var{filedes}, fd_set address@hidden)
-
address@hidden/types.h} (BSD):  @ref{Waiting for I/O}.
-
address@hidden FD_SETSIZE
address@hidden int FD_SETSIZE
-
address@hidden/types.h} (BSD):  @ref{Waiting for I/O}.
-
address@hidden F_DUPFD
address@hidden int F_DUPFD
-
address@hidden (POSIX.1):  @ref{Duplicating Descriptors}.
-
address@hidden FD_ZERO
address@hidden void FD_ZERO (fd_set address@hidden)
-
address@hidden/types.h} (BSD):  @ref{Waiting for I/O}.
-
address@hidden F_GETFD
address@hidden int F_GETFD
-
address@hidden (POSIX.1):  @ref{Descriptor Flags}.
-
address@hidden F_GETFL
address@hidden int F_GETFL
-
address@hidden (POSIX.1):  @ref{Getting File Status Flags}.
-
address@hidden fgetgrent
address@hidden struct group * fgetgrent (FILE address@hidden)
-
address@hidden (SVID):  @ref{Scanning All Groups}.
-
address@hidden fgetgrent_r
address@hidden int fgetgrent_r (FILE address@hidden, struct group 
address@hidden, char address@hidden, size_t @var{buflen}, struct group 
address@hidden)
-
address@hidden (GNU):  @ref{Scanning All Groups}.
-
address@hidden F_GETLK
address@hidden int F_GETLK
-
address@hidden (POSIX.1):  @ref{File Locks}.
-
address@hidden F_GETOWN
address@hidden int F_GETOWN
-
address@hidden (BSD):  @ref{Interrupt Input}.
-
address@hidden fgetpwent
address@hidden struct passwd * fgetpwent (FILE address@hidden)
-
address@hidden (SVID):  @ref{Scanning All Users}.
-
address@hidden fgetpwent_r
address@hidden int fgetpwent_r (FILE address@hidden, struct passwd 
address@hidden, char address@hidden, size_t @var{buflen}, struct passwd 
address@hidden)
-
address@hidden (GNU):  @ref{Scanning All Users}.
-
address@hidden FILENAME_MAX
address@hidden int FILENAME_MAX
-
address@hidden (ISO):  @ref{Limits for Files}.
-
address@hidden fileno
address@hidden int fileno (FILE address@hidden)
-
address@hidden (POSIX.1):  @ref{Descriptors and Streams}.
-
address@hidden fileno_unlocked
address@hidden int fileno_unlocked (FILE address@hidden)
-
address@hidden (GNU):  @ref{Descriptors and Streams}.
-
address@hidden FLT_DIG
address@hidden FLT_DIG
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden FLT_EPSILON
address@hidden FLT_EPSILON
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden FLT_MANT_DIG
address@hidden FLT_MANT_DIG
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden FLT_MAX
address@hidden FLT_MAX
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden FLT_MAX_10_EXP
address@hidden FLT_MAX_10_EXP
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden FLT_MAX_EXP
address@hidden FLT_MAX_EXP
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden FLT_MIN
address@hidden FLT_MIN
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden FLT_MIN_10_EXP
address@hidden FLT_MIN_10_EXP
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden FLT_MIN_EXP
address@hidden FLT_MIN_EXP
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden FLT_RADIX
address@hidden FLT_RADIX
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden FLT_ROUNDS
address@hidden FLT_ROUNDS
-
address@hidden (ISO):  @ref{Floating-Point Parameters}.
-
address@hidden FLUSHO
address@hidden tcflag_t FLUSHO
-
address@hidden (BSD):  @ref{Local Modes}.
-
address@hidden F_OK
address@hidden int F_OK
-
address@hidden (POSIX.1):  @ref{Testing File Access}.
-
address@hidden fork
address@hidden pid_t fork (void)
-
address@hidden (POSIX.1):  @ref{Creating a Process}.
-
address@hidden forkpty
address@hidden int forkpty (int address@hidden, char address@hidden, struct 
termios address@hidden, struct winsize address@hidden)
-
address@hidden (BSD):  @ref{Pseudoterminal Pairs}.
-
address@hidden fpathconf
address@hidden long int fpathconf (int @var{filedes}, int @var{parameter})
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden FPE_DECOVF_TRAP
address@hidden FPE_DECOVF_TRAP
-
address@hidden (BSD):  @ref{Program-Error Signals}.
-
address@hidden FPE_FLTDIV_FAULT
address@hidden FPE_FLTDIV_FAULT
-
address@hidden (BSD):  @ref{Program-Error Signals}.
-
address@hidden FPE_FLTDIV_TRAP
address@hidden FPE_FLTDIV_TRAP
-
address@hidden (BSD):  @ref{Program-Error Signals}.
-
address@hidden FPE_FLTOVF_FAULT
address@hidden FPE_FLTOVF_FAULT
-
address@hidden (BSD):  @ref{Program-Error Signals}.
-
address@hidden FPE_FLTOVF_TRAP
address@hidden FPE_FLTOVF_TRAP
-
address@hidden (BSD):  @ref{Program-Error Signals}.
-
address@hidden FPE_FLTUND_FAULT
address@hidden FPE_FLTUND_FAULT
-
address@hidden (BSD):  @ref{Program-Error Signals}.
-
address@hidden FPE_FLTUND_TRAP
address@hidden FPE_FLTUND_TRAP
-
address@hidden (BSD):  @ref{Program-Error Signals}.
-
address@hidden FPE_INTDIV_TRAP
address@hidden FPE_INTDIV_TRAP
-
address@hidden (BSD):  @ref{Program-Error Signals}.
-
address@hidden FPE_INTOVF_TRAP
address@hidden FPE_INTOVF_TRAP
-
address@hidden (BSD):  @ref{Program-Error Signals}.
-
address@hidden FPE_SUBRNG_TRAP
address@hidden FPE_SUBRNG_TRAP
-
address@hidden (BSD):  @ref{Program-Error Signals}.
-
address@hidden F_RDLCK
address@hidden F_RDLCK
-
address@hidden (POSIX.1):  @ref{File Locks}.
-
address@hidden F_SETFD
address@hidden int F_SETFD
-
address@hidden (POSIX.1):  @ref{Descriptor Flags}.
-
address@hidden F_SETFL
address@hidden int F_SETFL
-
address@hidden (POSIX.1):  @ref{Getting File Status Flags}.
-
address@hidden F_SETLK
address@hidden int F_SETLK
-
address@hidden (POSIX.1):  @ref{File Locks}.
-
address@hidden F_SETLKW
address@hidden int F_SETLKW
-
address@hidden (POSIX.1):  @ref{File Locks}.
-
address@hidden F_SETOWN
address@hidden int F_SETOWN
-
address@hidden (BSD):  @ref{Interrupt Input}.
-
address@hidden fstat
address@hidden int fstat (int @var{filedes}, struct stat address@hidden)
-
address@hidden/stat.h} (POSIX.1):  @ref{Reading Attributes}.
-
address@hidden fstat64
address@hidden int fstat64 (int @var{filedes}, struct stat64 address@hidden)
-
address@hidden/stat.h} (Unix98):  @ref{Reading Attributes}.
-
address@hidden fsync
address@hidden int fsync (int @var{fildes})
-
address@hidden (POSIX):  @ref{Synchronizing I/O}.
-
address@hidden ftruncate
address@hidden int ftruncate (int @var{fd}, off_t @var{length})
-
address@hidden (POSIX):  @ref{File Size}.
-
address@hidden ftruncate64
address@hidden int ftruncate64 (int @var{id}, off64_t @var{length})
-
address@hidden (Unix98):  @ref{File Size}.
-
address@hidden ftw
address@hidden int ftw (const char address@hidden, __ftw_func_t @var{func}, int 
@var{descriptors})
-
address@hidden (SVID):  @ref{Working with Directory Trees}.
-
address@hidden ftw64
address@hidden int ftw64 (const char address@hidden, __ftw64_func_t @var{func}, 
int @var{descriptors})
-
address@hidden (Unix98):  @ref{Working with Directory Trees}.
-
address@hidden __ftw64_func_t
address@hidden __ftw64_func_t
-
address@hidden (GNU):  @ref{Working with Directory Trees}.
-
address@hidden __ftw_func_t
address@hidden __ftw_func_t
-
address@hidden (GNU):  @ref{Working with Directory Trees}.
-
address@hidden F_UNLCK
address@hidden F_UNLCK
-
address@hidden (POSIX.1):  @ref{File Locks}.
-
address@hidden futimes
address@hidden int futimes (int address@hidden, struct timeval @address@hidden)
-
address@hidden/time.h} (BSD):  @ref{File Times}.
-
address@hidden F_WRLCK
address@hidden F_WRLCK
-
address@hidden (POSIX.1):  @ref{File Locks}.
-
address@hidden get_avphys_pages
address@hidden long int get_avphys_pages (void)
-
address@hidden/sysinfo.h} (GNU):  @ref{Query Memory Parameters}.
-
address@hidden getcontext
address@hidden int getcontext (ucontext_t address@hidden)
-
address@hidden (SVID):  @ref{System V contexts}.
-
address@hidden get_current_dir_name
address@hidden char * get_current_dir_name (void)
-
address@hidden (GNU):  @ref{Working Directory}.
-
address@hidden getcwd
address@hidden char * getcwd (char address@hidden, size_t @var{size})
-
address@hidden (POSIX.1):  @ref{Working Directory}.
-
address@hidden getdomainnname
address@hidden int getdomainnname (char address@hidden, size_t @var{length})
-
address@hidden (Unknown origin):  @ref{Host Identification}.
-
address@hidden getegid
address@hidden gid_t getegid (void)
-
address@hidden (POSIX.1):  @ref{Reading Persona}.
-
address@hidden geteuid
address@hidden uid_t geteuid (void)
-
address@hidden (POSIX.1):  @ref{Reading Persona}.
-
address@hidden getfsent
address@hidden struct fstab * getfsent (void)
-
address@hidden (BSD):  @ref{fstab}.
-
address@hidden getfsfile
address@hidden struct fstab * getfsfile (const char address@hidden)
-
address@hidden (BSD):  @ref{fstab}.
-
address@hidden getfsspec
address@hidden struct fstab * getfsspec (const char address@hidden)
-
address@hidden (BSD):  @ref{fstab}.
-
address@hidden getgid
address@hidden gid_t getgid (void)
-
address@hidden (POSIX.1):  @ref{Reading Persona}.
-
address@hidden getgrent
address@hidden struct group * getgrent (void)
-
address@hidden (SVID, BSD):  @ref{Scanning All Groups}.
-
address@hidden getgrent_r
address@hidden int getgrent_r (struct group address@hidden, char 
address@hidden, size_t @var{buflen}, struct group address@hidden)
-
address@hidden (GNU):  @ref{Scanning All Groups}.
-
address@hidden getgrgid
address@hidden struct group * getgrgid (gid_t @var{gid})
-
address@hidden (POSIX.1):  @ref{Lookup Group}.
-
address@hidden getgrgid_r
address@hidden int getgrgid_r (gid_t @var{gid}, struct group address@hidden, 
char address@hidden, size_t @var{buflen}, struct group address@hidden)
-
address@hidden (POSIX.1c):  @ref{Lookup Group}.
-
address@hidden getgrnam
address@hidden struct group * getgrnam (const char address@hidden)
-
address@hidden (SVID, BSD):  @ref{Lookup Group}.
-
address@hidden getgrnam_r
address@hidden int getgrnam_r (const char address@hidden, struct group 
address@hidden, char address@hidden, size_t @var{buflen}, struct group 
address@hidden)
-
address@hidden (POSIX.1c):  @ref{Lookup Group}.
-
address@hidden getgrouplist
address@hidden int getgrouplist (const char address@hidden, gid_t @var{group}, 
gid_t address@hidden, int address@hidden)
-
address@hidden (BSD):  @ref{Setting Groups}.
-
address@hidden getgroups
address@hidden int getgroups (int @var{count}, gid_t address@hidden)
-
address@hidden (POSIX.1):  @ref{Reading Persona}.
-
address@hidden gethostbyaddr
address@hidden struct hostent * gethostbyaddr (const char address@hidden, 
size_t @var{length}, int @var{format})
-
address@hidden (BSD):  @ref{Host Names}.
-
address@hidden gethostbyaddr_r
address@hidden int gethostbyaddr_r (const char address@hidden, size_t 
@var{length}, int @var{format}, struct hostent *restrict @var{result_buf}, char 
*restrict @var{buf}, size_t @var{buflen}, struct hostent **restrict 
@var{result}, int *restrict @var{h_errnop})
-
address@hidden (GNU):  @ref{Host Names}.
-
address@hidden gethostbyname
address@hidden struct hostent * gethostbyname (const char address@hidden)
-
address@hidden (BSD):  @ref{Host Names}.
-
address@hidden gethostbyname2
address@hidden struct hostent * gethostbyname2 (const char address@hidden, int 
@var{af})
-
address@hidden (IPv6 Basic API):  @ref{Host Names}.
-
address@hidden gethostbyname2_r
address@hidden int gethostbyname2_r (const char address@hidden, int @var{af}, 
struct hostent *restrict @var{result_buf}, char *restrict @var{buf}, size_t 
@var{buflen}, struct hostent **restrict @var{result}, int *restrict 
@var{h_errnop})
-
address@hidden (GNU):  @ref{Host Names}.
-
address@hidden gethostbyname_r
address@hidden int gethostbyname_r (const char *restrict @var{name}, struct 
hostent *restrict @var{result_buf}, char *restrict @var{buf}, size_t 
@var{buflen}, struct hostent **restrict @var{result}, int *restrict 
@var{h_errnop})
-
address@hidden (GNU):  @ref{Host Names}.
-
address@hidden gethostent
address@hidden struct hostent * gethostent (void)
-
address@hidden (BSD):  @ref{Host Names}.
-
address@hidden gethostid
address@hidden long int gethostid (void)
-
address@hidden (BSD):  @ref{Host Identification}.
-
address@hidden gethostname
address@hidden int gethostname (char address@hidden, size_t @var{size})
-
address@hidden (BSD):  @ref{Host Identification}.
-
address@hidden getloadavg
address@hidden int getloadavg (double @var{loadavg}[], int @var{nelem})
-
address@hidden (BSD):  @ref{Processor Resources}.
-
address@hidden getlogin
address@hidden char * getlogin (void)
-
address@hidden (POSIX.1):  @ref{Who Logged In}.
-
address@hidden getmntent
address@hidden struct mntent * getmntent (FILE address@hidden)
-
address@hidden (BSD):  @ref{mtab}.
-
address@hidden getmntent_r
address@hidden struct mntent * getmntent_r (FILE address@hidden, struct mentent 
address@hidden, char address@hidden, int @var{bufsize})
-
address@hidden (BSD):  @ref{mtab}.
-
address@hidden getnetbyaddr
address@hidden struct netent * getnetbyaddr (unsigned long int @var{net}, int 
@var{type})
-
address@hidden (BSD):  @ref{Networks Database}.
-
address@hidden getnetbyname
address@hidden struct netent * getnetbyname (const char address@hidden)
-
address@hidden (BSD):  @ref{Networks Database}.
-
address@hidden getnetent
address@hidden struct netent * getnetent (void)
-
address@hidden (BSD):  @ref{Networks Database}.
-
address@hidden getnetgrent
address@hidden int getnetgrent (char address@hidden, char address@hidden, char 
address@hidden)
-
address@hidden (BSD):  @ref{Lookup Netgroup}.
-
address@hidden getnetgrent_r
address@hidden int getnetgrent_r (char address@hidden, char address@hidden, 
char address@hidden, char address@hidden, int @var{buflen})
-
address@hidden (GNU):  @ref{Lookup Netgroup}.
-
address@hidden get_nprocs
address@hidden int get_nprocs (void)
-
address@hidden/sysinfo.h} (GNU):  @ref{Processor Resources}.
-
address@hidden get_nprocs_conf
address@hidden int get_nprocs_conf (void)
-
address@hidden/sysinfo.h} (GNU):  @ref{Processor Resources}.
-
address@hidden getpagesize
address@hidden int getpagesize (void)
-
address@hidden (BSD):  @ref{Query Memory Parameters}.
-
address@hidden getpass
address@hidden char * getpass (const char address@hidden)
-
address@hidden (BSD):  @ref{getpass}.
-
address@hidden getpeername
address@hidden int getpeername (int @var{socket}, struct sockaddr 
address@hidden, socklen_t address@hidden)
-
address@hidden/socket.h} (BSD):  @ref{Who Is Connected}.
-
address@hidden getpgid
address@hidden int getpgid (pid_t @var{pid})
-
address@hidden (SVID):  @ref{Process Group Functions}.
-
address@hidden getpgrp
address@hidden pid_t getpgrp (pid_t @var{pid})
-
address@hidden (BSD):  @ref{Process Group Functions}.
-
address@hidden getpgrp
address@hidden pid_t getpgrp (void)
-
address@hidden (POSIX.1):  @ref{Process Group Functions}.
-
address@hidden get_phys_pages
address@hidden long int get_phys_pages (void)
-
address@hidden/sysinfo.h} (GNU):  @ref{Query Memory Parameters}.
-
address@hidden getpid
address@hidden pid_t getpid (void)
-
address@hidden (POSIX.1):  @ref{Process Identification}.
-
address@hidden getppid
address@hidden pid_t getppid (void)
-
address@hidden (POSIX.1):  @ref{Process Identification}.
-
address@hidden getpriority
address@hidden int getpriority (int @var{class}, int @var{id})
-
address@hidden/resource.h} (BSD,POSIX):  @ref{Traditional Scheduling Functions}.
-
address@hidden getprotobyname
address@hidden struct protoent * getprotobyname (const char address@hidden)
-
address@hidden (BSD):  @ref{Protocols Database}.
-
address@hidden getprotobynumber
address@hidden struct protoent * getprotobynumber (int @var{protocol})
-
address@hidden (BSD):  @ref{Protocols Database}.
-
address@hidden getprotoent
address@hidden struct protoent * getprotoent (void)
-
address@hidden (BSD):  @ref{Protocols Database}.
-
address@hidden getpt
address@hidden int getpt (void)
-
address@hidden (GNU):  @ref{Allocation}.
-
address@hidden getpwent
address@hidden struct passwd * getpwent (void)
-
address@hidden (POSIX.1):  @ref{Scanning All Users}.
-
address@hidden getpwent_r
address@hidden int getpwent_r (struct passwd address@hidden, char 
address@hidden, int @var{buflen}, struct passwd address@hidden)
-
address@hidden (GNU):  @ref{Scanning All Users}.
-
address@hidden getpwnam
address@hidden struct passwd * getpwnam (const char address@hidden)
-
address@hidden (POSIX.1):  @ref{Lookup User}.
-
address@hidden getpwnam_r
address@hidden int getpwnam_r (const char address@hidden, struct passwd 
address@hidden, char address@hidden, size_t @var{buflen}, struct passwd 
address@hidden)
-
address@hidden (POSIX.1c):  @ref{Lookup User}.
-
address@hidden getpwuid
address@hidden struct passwd * getpwuid (uid_t @var{uid})
-
address@hidden (POSIX.1):  @ref{Lookup User}.
-
address@hidden getpwuid_r
address@hidden int getpwuid_r (uid_t @var{uid}, struct passwd address@hidden, 
char address@hidden, size_t @var{buflen}, struct passwd address@hidden)
-
address@hidden (POSIX.1c):  @ref{Lookup User}.
-
address@hidden getrlimit
address@hidden int getrlimit (int @var{resource}, struct rlimit address@hidden)
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden getrlimit64
address@hidden int getrlimit64 (int @var{resource}, struct rlimit64 
address@hidden)
-
address@hidden/resource.h} (Unix98):  @ref{Limits on Resources}.
-
address@hidden getrusage
address@hidden int getrusage (int @var{processes}, struct rusage address@hidden)
-
address@hidden/resource.h} (BSD):  @ref{Resource Usage}.
-
address@hidden getservbyname
address@hidden struct servent * getservbyname (const char address@hidden, const 
char address@hidden)
-
address@hidden (BSD):  @ref{Services Database}.
-
address@hidden getservbyport
address@hidden struct servent * getservbyport (int @var{port}, const char 
address@hidden)
-
address@hidden (BSD):  @ref{Services Database}.
-
address@hidden getservent
address@hidden struct servent * getservent (void)
-
address@hidden (BSD):  @ref{Services Database}.
-
address@hidden getsid
address@hidden pid_t getsid (pid_t @var{pid})
-
address@hidden (SVID):  @ref{Process Group Functions}.
-
address@hidden getsockname
address@hidden int getsockname (int @var{socket}, struct sockaddr 
address@hidden, socklen_t address@hidden)
-
address@hidden/socket.h} (BSD):  @ref{Reading Address}.
-
address@hidden getsockopt
address@hidden int getsockopt (int @var{socket}, int @var{level}, int 
@var{optname}, void address@hidden, socklen_t address@hidden)
-
address@hidden/socket.h} (BSD):  @ref{Socket Option Functions}.
-
address@hidden getuid
address@hidden uid_t getuid (void)
-
address@hidden (POSIX.1):  @ref{Reading Persona}.
-
address@hidden getumask
address@hidden mode_t getumask (void)
-
address@hidden/stat.h} (GNU):  @ref{Setting Permissions}.
-
address@hidden getutent
address@hidden struct utmp * getutent (void)
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden getutent_r
address@hidden int getutent_r (struct utmp address@hidden, struct utmp 
address@hidden)
-
address@hidden (GNU):  @ref{Manipulating the Database}.
-
address@hidden getutid
address@hidden struct utmp * getutid (const struct utmp address@hidden)
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden getutid_r
address@hidden int getutid_r (const struct utmp address@hidden, struct utmp 
address@hidden, struct utmp address@hidden)
-
address@hidden (GNU):  @ref{Manipulating the Database}.
-
address@hidden getutline
address@hidden struct utmp * getutline (const struct utmp address@hidden)
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden getutline_r
address@hidden int getutline_r (const struct utmp address@hidden, struct utmp 
address@hidden, struct utmp address@hidden)
-
address@hidden (GNU):  @ref{Manipulating the Database}.
-
address@hidden getutmp
address@hidden int getutmp (const struct utmpx *utmpx, struct utmp *utmp)
-
address@hidden (GNU):  @ref{XPG Functions}.
-
address@hidden getutmpx
address@hidden int getutmpx (const struct utmp *utmp, struct utmpx *utmpx)
-
address@hidden (GNU):  @ref{XPG Functions}.
-
address@hidden getutxent
address@hidden struct utmpx * getutxent (void)
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden getutxid
address@hidden struct utmpx * getutxid (const struct utmpx address@hidden)
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden getutxline
address@hidden struct utmpx * getutxline (const struct utmpx address@hidden)
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden getwd
address@hidden char * getwd (char address@hidden)
-
address@hidden (BSD):  @ref{Working Directory}.
-
address@hidden gid_t
address@hidden gid_t
-
address@hidden/types.h} (POSIX.1):  @ref{Reading Persona}.
-
address@hidden _GNU_SOURCE
address@hidden _GNU_SOURCE
-
-(GNU):  @ref{Feature-Test Macros}.
-
address@hidden grantpt
address@hidden int grantpt (int @var{filedes})
-
address@hidden (SVID, XPG4.2):  @ref{Allocation}.
-
address@hidden gsignal
address@hidden int gsignal (int @var{signum})
-
address@hidden (SVID):  @ref{Signaling Yourself}.
-
address@hidden gtty
address@hidden int gtty (int @var{filedes}, struct sgttyb address@hidden)
-
address@hidden (BSD):  @ref{BSD Terminal Modes}.
-
address@hidden hasmntopt
address@hidden char * hasmntopt (const struct mntent address@hidden, const char 
address@hidden)
-
address@hidden (BSD):  @ref{mtab}.
-
address@hidden HOST_NOT_FOUND
address@hidden HOST_NOT_FOUND
-
address@hidden (BSD):  @ref{Host Names}.
-
address@hidden htonl
address@hidden uint32_t htonl (uint32_t @var{hostlong})
-
address@hidden/in.h} (BSD):  @ref{Byte Order}.
-
address@hidden htons
address@hidden uint16_t htons (uint16_t @var{hostshort})
-
address@hidden/in.h} (BSD):  @ref{Byte Order}.
-
address@hidden HUPCL
address@hidden tcflag_t HUPCL
-
address@hidden (POSIX.1):  @ref{Control Modes}.
-
address@hidden ICANON
address@hidden tcflag_t ICANON
-
address@hidden (POSIX.1):  @ref{Local Modes}.
-
address@hidden ICRNL
address@hidden tcflag_t ICRNL
-
address@hidden (POSIX.1):  @ref{Input Modes}.
-
address@hidden IEXTEN
address@hidden tcflag_t IEXTEN
-
address@hidden (POSIX.1):  @ref{Local Modes}.
-
address@hidden if_freenameindex
address@hidden void if_freenameindex (struct if_nameindex *ptr)
-
address@hidden/if.h} (IPv6 basic API):  @ref{Interface Naming}.
-
address@hidden if_indextoname
address@hidden char * if_indextoname (unsigned int ifindex, char *ifname)
-
address@hidden/if.h} (IPv6 basic API):  @ref{Interface Naming}.
-
address@hidden if_nameindex
address@hidden struct if_nameindex * if_nameindex (void)
-
address@hidden/if.h} (IPv6 basic API):  @ref{Interface Naming}.
-
address@hidden if_nametoindex
address@hidden unsigned int if_nametoindex (const char *ifname)
-
address@hidden/if.h} (IPv6 basic API):  @ref{Interface Naming}.
-
address@hidden IFNAMSIZ
address@hidden size_t IFNAMSIZ
-
address@hidden/if.h} (net/if.h):  @ref{Interface Naming}.
-
address@hidden IFTODT
address@hidden int IFTODT (mode_t @var{mode})
-
address@hidden (BSD):  @ref{Directory Entries}.
-
address@hidden IGNBRK
address@hidden tcflag_t IGNBRK
-
address@hidden (POSIX.1):  @ref{Input Modes}.
-
address@hidden IGNCR
address@hidden tcflag_t IGNCR
-
address@hidden (POSIX.1):  @ref{Input Modes}.
-
address@hidden IGNPAR
address@hidden tcflag_t IGNPAR
-
address@hidden (POSIX.1):  @ref{Input Modes}.
-
address@hidden IMAXBEL
address@hidden tcflag_t IMAXBEL
-
address@hidden (BSD):  @ref{Input Modes}.
-
address@hidden in6addr_any
address@hidden struct in6_addr in6addr_any
-
address@hidden/in.h} (IPv6 basic API):  @ref{Host Address Data Type}.
-
address@hidden in6addr_loopback
address@hidden struct in6_addr in6addr_loopback
-
address@hidden/in.h} (IPv6 basic API):  @ref{Host Address Data Type}.
-
address@hidden INADDR_ANY
address@hidden uint32_t INADDR_ANY
-
address@hidden/in.h} (BSD):  @ref{Host Address Data Type}.
-
address@hidden INADDR_BROADCAST
address@hidden uint32_t INADDR_BROADCAST
-
address@hidden/in.h} (BSD):  @ref{Host Address Data Type}.
-
address@hidden INADDR_LOOPBACK
address@hidden uint32_t INADDR_LOOPBACK
-
address@hidden/in.h} (BSD):  @ref{Host Address Data Type}.
-
address@hidden INADDR_NONE
address@hidden uint32_t INADDR_NONE
-
address@hidden/in.h} (BSD):  @ref{Host Address Data Type}.
-
address@hidden inet_addr
address@hidden uint32_t inet_addr (const char address@hidden)
-
address@hidden/inet.h} (BSD):  @ref{Host Address Functions}.
-
address@hidden inet_aton
address@hidden int inet_aton (const char address@hidden, struct in_addr 
address@hidden)
-
address@hidden/inet.h} (BSD):  @ref{Host Address Functions}.
-
address@hidden inet_lnaof
address@hidden uint32_t inet_lnaof (struct in_addr @var{addr})
-
address@hidden/inet.h} (BSD):  @ref{Host Address Functions}.
-
address@hidden inet_makeaddr
address@hidden struct in_addr inet_makeaddr (uint32_t @var{net}, uint32_t 
@var{local})
-
address@hidden/inet.h} (BSD):  @ref{Host Address Functions}.
-
address@hidden inet_netof
address@hidden uint32_t inet_netof (struct in_addr @var{addr})
-
address@hidden/inet.h} (BSD):  @ref{Host Address Functions}.
-
address@hidden inet_network
address@hidden uint32_t inet_network (const char address@hidden)
-
address@hidden/inet.h} (BSD):  @ref{Host Address Functions}.
-
address@hidden inet_ntoa
address@hidden char * inet_ntoa (struct in_addr @var{addr})
-
address@hidden/inet.h} (BSD):  @ref{Host Address Functions}.
-
address@hidden inet_ntop
address@hidden const char * inet_ntop (int @var{af}, const void address@hidden, 
char address@hidden, size_t @var{len})
-
address@hidden/inet.h} (IPv6 basic API):  @ref{Host Address Functions}.
-
address@hidden inet_pton
address@hidden int inet_pton (int @var{af}, const char address@hidden, void 
address@hidden)
-
address@hidden/inet.h} (IPv6 basic API):  @ref{Host Address Functions}.
-
address@hidden initgroups
address@hidden int initgroups (const char address@hidden, gid_t @var{group})
-
address@hidden (BSD):  @ref{Setting Groups}.
-
address@hidden INIT_PROCESS
address@hidden INIT_PROCESS
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden INIT_PROCESS
address@hidden INIT_PROCESS
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden INLCR
address@hidden tcflag_t INLCR
-
address@hidden (POSIX.1):  @ref{Input Modes}.
-
address@hidden innetgr
address@hidden int innetgr (const char address@hidden, const char 
address@hidden, const char address@hidden, const char address@hidden)
-
address@hidden (BSD):  @ref{Netgroup Membership}.
-
address@hidden ino64_t
address@hidden ino64_t
-
address@hidden/types.h} (Unix98):  @ref{Attribute Meanings}.
-
address@hidden ino_t
address@hidden ino_t
-
address@hidden/types.h} (POSIX.1):  @ref{Attribute Meanings}.
-
address@hidden INPCK
address@hidden tcflag_t INPCK
-
address@hidden (POSIX.1):  @ref{Input Modes}.
-
address@hidden INT_MAX
address@hidden INT_MAX
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden INT_MIN
address@hidden INT_MIN
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden ioctl
address@hidden int ioctl (int @var{filedes}, int @var{command}, @dots{})
-
address@hidden/ioctl.h} (BSD):  @ref{IOCTLs}.
-
address@hidden IPPORT_RESERVED
address@hidden int IPPORT_RESERVED
-
address@hidden/in.h} (BSD):  @ref{Ports}.
-
address@hidden IPPORT_USERRESERVED
address@hidden int IPPORT_USERRESERVED
-
address@hidden/in.h} (BSD):  @ref{Ports}.
-
address@hidden isatty
address@hidden int isatty (int @var{filedes})
-
address@hidden (POSIX.1):  @ref{Is It a Terminal}.
-
address@hidden ISIG
address@hidden tcflag_t ISIG
-
address@hidden (POSIX.1):  @ref{Local Modes}.
-
address@hidden _ISOC99_SOURCE
address@hidden _ISOC99_SOURCE
-
-(GNU):  @ref{Feature-Test Macros}.
-
address@hidden ISTRIP
address@hidden tcflag_t ISTRIP
-
address@hidden (POSIX.1):  @ref{Input Modes}.
-
address@hidden IXANY
address@hidden tcflag_t IXANY
-
address@hidden (BSD):  @ref{Input Modes}.
-
address@hidden IXOFF
address@hidden tcflag_t IXOFF
-
address@hidden (POSIX.1):  @ref{Input Modes}.
-
address@hidden IXON
address@hidden tcflag_t IXON
-
address@hidden (POSIX.1):  @ref{Input Modes}.
-
address@hidden jmp_buf
address@hidden jmp_buf
-
address@hidden (ISO):  @ref{Nonlocal Details}.
-
address@hidden kill
address@hidden int kill (pid_t @var{pid}, int @var{signum})
-
address@hidden (POSIX.1):  @ref{Signaling Another Process}.
-
address@hidden killpg
address@hidden int killpg (int @var{pgid}, int @var{signum})
-
address@hidden (BSD):  @ref{Signaling Another Process}.
-
address@hidden L_ctermid
address@hidden int L_ctermid
-
address@hidden (POSIX.1):  @ref{Identifying the Terminal}.
-
address@hidden L_cuserid
address@hidden int L_cuserid
-
address@hidden (POSIX.1):  @ref{Who Logged In}.
-
address@hidden LINE_MAX
address@hidden int LINE_MAX
-
address@hidden (POSIX.2):  @ref{Utility Limits}.
-
address@hidden link
address@hidden int link (const char address@hidden, const char address@hidden)
-
address@hidden (POSIX.1):  @ref{Hard Links}.
-
address@hidden LINK_MAX
address@hidden int LINK_MAX
-
address@hidden (POSIX.1):  @ref{Limits for Files}.
-
address@hidden lio_listio
address@hidden int lio_listio (int @var{mode}, struct aiocb *const 
@var{list}[], int @var{nent}, struct sigevent address@hidden)
-
address@hidden (POSIX.1b):  @ref{Asynchronous Reads/Writes}.
-
address@hidden lio_listio64
address@hidden int lio_listio64 (int @var{mode}, struct aiocb *const 
@var{list}, int @var{nent}, struct sigevent address@hidden)
-
address@hidden (Unix98):  @ref{Asynchronous Reads/Writes}.
-
address@hidden listen
address@hidden int listen (int @var{socket}, unsigned int @var{n})
-
address@hidden/socket.h} (BSD):  @ref{Listening}.
-
address@hidden login
address@hidden void login (const struct utmp address@hidden)
-
address@hidden (BSD):  @ref{Logging In and Out}.
-
address@hidden LOGIN_PROCESS
address@hidden LOGIN_PROCESS
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden LOGIN_PROCESS
address@hidden LOGIN_PROCESS
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden login_tty
address@hidden int login_tty (int @var{filedes})
-
address@hidden (BSD):  @ref{Logging In and Out}.
-
address@hidden logout
address@hidden int logout (const char address@hidden)
-
address@hidden (BSD):  @ref{Logging In and Out}.
-
address@hidden logwtmp
address@hidden void logwtmp (const char address@hidden, const char 
address@hidden, const char address@hidden)
-
address@hidden (BSD):  @ref{Logging In and Out}.
-
address@hidden longjmp
address@hidden void longjmp (jmp_buf @var{state}, int @var{value})
-
address@hidden (ISO):  @ref{Nonlocal Details}.
-
address@hidden LONG_LONG_MAX
address@hidden LONG_LONG_MAX
-
address@hidden (GNU):  @ref{Range of Type}.
-
address@hidden LONG_LONG_MIN
address@hidden LONG_LONG_MIN
-
address@hidden (GNU):  @ref{Range of Type}.
-
address@hidden LONG_MAX
address@hidden LONG_MAX
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden LONG_MIN
address@hidden LONG_MIN
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden lseek
address@hidden off_t lseek (int @var{filedes}, off_t @var{offset}, int 
@var{whence})
-
address@hidden (POSIX.1):  @ref{File Position Primitive}.
-
address@hidden lseek64
address@hidden off64_t lseek64 (int @var{filedes}, off64_t @var{offset}, int 
@var{whence})
-
address@hidden (Unix98):  @ref{File Position Primitive}.
-
address@hidden lstat
address@hidden int lstat (const char address@hidden, struct stat address@hidden)
-
address@hidden/stat.h} (BSD):  @ref{Reading Attributes}.
-
address@hidden lstat64
address@hidden int lstat64 (const char address@hidden, struct stat64 
address@hidden)
-
address@hidden/stat.h} (Unix98):  @ref{Reading Attributes}.
-
address@hidden L_tmpnam
address@hidden int L_tmpnam
-
address@hidden (ISO):  @ref{Temporary Files}.
-
address@hidden lutimes
address@hidden int lutimes (const char address@hidden, struct timeval 
@address@hidden)
-
address@hidden/time.h} (BSD):  @ref{File Times}.
-
address@hidden madvise
address@hidden int madvise (void address@hidden, size_t @var{length}, int 
@var{advice})
-
address@hidden/mman.h} (POSIX):  @ref{Memory-Mapped I/O}.
-
address@hidden makecontext
address@hidden void makecontext (ucontext_t address@hidden, void 
(address@hidden) (void), int @var{argc}, @dots{})
-
address@hidden (SVID):  @ref{System V contexts}.
-
address@hidden MAX_CANON
address@hidden int MAX_CANON
-
address@hidden (POSIX.1):  @ref{Limits for Files}.
-
address@hidden MAX_INPUT
address@hidden int MAX_INPUT
-
address@hidden (POSIX.1):  @ref{Limits for Files}.
-
address@hidden MAXNAMLEN
address@hidden int MAXNAMLEN
-
address@hidden (BSD):  @ref{Limits for Files}.
-
address@hidden MAXSYMLINKS
address@hidden int MAXSYMLINKS
-
address@hidden/param.h} (BSD):  @ref{Symbolic Links}.
-
address@hidden MDMBUF
address@hidden tcflag_t MDMBUF
-
address@hidden (BSD):  @ref{Control Modes}.
-
address@hidden mkdir
address@hidden int mkdir (const char address@hidden, mode_t @var{mode})
-
address@hidden/stat.h} (POSIX.1):  @ref{Creating Directories}.
-
address@hidden mkdtemp
address@hidden char * mkdtemp (char address@hidden)
-
address@hidden (BSD):  @ref{Temporary Files}.
-
address@hidden mkfifo
address@hidden int mkfifo (const char address@hidden, mode_t @var{mode})
-
address@hidden/stat.h} (POSIX.1):  @ref{FIFO Special Files}.
-
address@hidden mknod
address@hidden int mknod (const char address@hidden, int @var{mode}, int 
@var{dev})
-
address@hidden/stat.h} (BSD):  @ref{Making Special Files}.
-
address@hidden mkstemp
address@hidden int mkstemp (char address@hidden)
-
address@hidden (BSD):  @ref{Temporary Files}.
-
address@hidden mktemp
address@hidden char * mktemp (char address@hidden)
-
address@hidden (Unix):  @ref{Temporary Files}.
-
address@hidden mmap
address@hidden void * mmap (void address@hidden, size_t @var{length},int 
@var{protect}, int @var{flags}, int @var{filedes}, off_t @var{offset})
-
address@hidden/mman.h} (POSIX):  @ref{Memory-Mapped I/O}.
-
address@hidden mmap64
address@hidden void * mmap64 (void address@hidden, size_t @var{length},int 
@var{protect}, int @var{flags}, int @var{filedes}, off64_t @var{offset})
-
address@hidden/mman.h} (LFS):  @ref{Memory-Mapped I/O}.
-
address@hidden mode_t
address@hidden mode_t
-
address@hidden/types.h} (POSIX.1):  @ref{Attribute Meanings}.
-
address@hidden mount
address@hidden int mount (const char address@hidden, const char address@hidden, 
const char address@hidden, unsigned long int @var{options}, const void 
address@hidden)
-
address@hidden/mount.h} (SVID, BSD):  @ref{Mount-Unmount-Remount}.
-
address@hidden mremap
address@hidden void * mremap (void address@hidden, size_t @var{length}, size_t 
@var{new_length}, int @var{flag})
-
address@hidden/mman.h} (GNU):  @ref{Memory-Mapped I/O}.
-
address@hidden MSG_DONTROUTE
address@hidden int MSG_DONTROUTE
-
address@hidden/socket.h} (BSD):  @ref{Socket Data Options}.
-
address@hidden MSG_OOB
address@hidden int MSG_OOB
-
address@hidden/socket.h} (BSD):  @ref{Socket Data Options}.
-
address@hidden MSG_PEEK
address@hidden int MSG_PEEK
-
address@hidden/socket.h} (BSD):  @ref{Socket Data Options}.
-
address@hidden msync
address@hidden int msync (void address@hidden, size_t @var{length}, int 
@var{flags})
-
address@hidden/mman.h} (POSIX):  @ref{Memory-Mapped I/O}.
-
address@hidden munmap
address@hidden int munmap (void address@hidden, size_t @var{length})
-
address@hidden/mman.h} (POSIX):  @ref{Memory-Mapped I/O}.
-
address@hidden NAME_MAX
address@hidden int NAME_MAX
-
address@hidden (POSIX.1):  @ref{Limits for Files}.
-
address@hidden NCCS
address@hidden int NCCS
-
address@hidden (POSIX.1):  @ref{Mode Data Types}.
-
address@hidden NEW_TIME
address@hidden NEW_TIME
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden NEW_TIME
address@hidden NEW_TIME
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden nftw
address@hidden int nftw (const char address@hidden, __nftw_func_t @var{func}, 
int @var{descriptors}, int @var{flag})
-
address@hidden (XPG4.2):  @ref{Working with Directory Trees}.
-
address@hidden nftw64
address@hidden int nftw64 (const char address@hidden, __nftw64_func_t 
@var{func}, int @var{descriptors}, int @var{flag})
-
address@hidden (Unix98):  @ref{Working with Directory Trees}.
-
address@hidden __nftw64_func_t
address@hidden __nftw64_func_t
-
address@hidden (GNU):  @ref{Working with Directory Trees}.
-
address@hidden __nftw_func_t
address@hidden __nftw_func_t
-
address@hidden (GNU):  @ref{Working with Directory Trees}.
-
address@hidden NGROUPS_MAX
address@hidden int NGROUPS_MAX
-
address@hidden (POSIX.1):  @ref{General Limits}.
-
address@hidden nice
address@hidden int nice (int @var{increment})
-
address@hidden (BSD):  @ref{Traditional Scheduling Functions}.
-
address@hidden nlink_t
address@hidden nlink_t
-
address@hidden/types.h} (POSIX.1):  @ref{Attribute Meanings}.
-
address@hidden NO_ADDRESS
address@hidden NO_ADDRESS
-
address@hidden (BSD):  @ref{Host Names}.
-
address@hidden NOFLSH
address@hidden tcflag_t NOFLSH
-
address@hidden (POSIX.1):  @ref{Local Modes}.
-
address@hidden NOKERNINFO
address@hidden tcflag_t NOKERNINFO
-
address@hidden (BSD):  @ref{Local Modes}.
-
address@hidden NO_RECOVERY
address@hidden NO_RECOVERY
-
address@hidden (BSD):  @ref{Host Names}.
-
address@hidden NSIG
address@hidden int NSIG
-
address@hidden (BSD):  @ref{Standard Signals}.
-
address@hidden ntohl
address@hidden uint32_t ntohl (uint32_t @var{netlong})
-
address@hidden/in.h} (BSD):  @ref{Byte Order}.
-
address@hidden ntohs
address@hidden uint16_t ntohs (uint16_t @var{netshort})
-
address@hidden/in.h} (BSD):  @ref{Byte Order}.
-
address@hidden NULL
address@hidden void * NULL
-
address@hidden (ISO):  @ref{Null-Pointer Constant}.
-
address@hidden O_ACCMODE
address@hidden int O_ACCMODE
-
address@hidden (POSIX.1):  @ref{Access Modes}.
-
address@hidden O_APPEND
address@hidden int O_APPEND
-
address@hidden (POSIX.1):  @ref{Operating Modes}.
-
address@hidden O_ASYNC
address@hidden int O_ASYNC
-
address@hidden (BSD):  @ref{Operating Modes}.
-
address@hidden O_CREAT
address@hidden int O_CREAT
-
address@hidden (POSIX.1):  @ref{Open-Time Flags}.
-
address@hidden O_EXCL
address@hidden int O_EXCL
-
address@hidden (POSIX.1):  @ref{Open-Time Flags}.
-
address@hidden O_EXEC
address@hidden int O_EXEC
-
address@hidden (GNU):  @ref{Access Modes}.
-
address@hidden O_EXLOCK
address@hidden int O_EXLOCK
-
address@hidden (BSD):  @ref{Open-Time Flags}.
-
address@hidden off64_t
address@hidden off64_t
-
address@hidden/types.h} (Unix98):  @ref{File Position Primitive}.
-
address@hidden offsetof
address@hidden size_t offsetof (@var{type}, @var{member})
-
address@hidden (ISO):  @ref{Structure Measurement}.
-
address@hidden off_t
address@hidden off_t
-
address@hidden/types.h} (POSIX.1):  @ref{File Position Primitive}.
-
address@hidden O_FSYNC
address@hidden int O_FSYNC
-
address@hidden (BSD):  @ref{Operating Modes}.
-
address@hidden O_IGNORE_CTTY
address@hidden int O_IGNORE_CTTY
-
address@hidden (GNU):  @ref{Open-Time Flags}.
-
address@hidden OLD_TIME
address@hidden OLD_TIME
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden OLD_TIME
address@hidden OLD_TIME
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden O_NDELAY
address@hidden int O_NDELAY
-
address@hidden (BSD):  @ref{Operating Modes}.
-
address@hidden ONLCR
address@hidden tcflag_t ONLCR
-
address@hidden (BSD):  @ref{Output Modes}.
-
address@hidden O_NOATIME
address@hidden int O_NOATIME
-
address@hidden (GNU):  @ref{Operating Modes}.
-
address@hidden O_NOCTTY
address@hidden int O_NOCTTY
-
address@hidden (POSIX.1):  @ref{Open-Time Flags}.
-
address@hidden ONOEOT
address@hidden tcflag_t ONOEOT
-
address@hidden (BSD):  @ref{Output Modes}.
-
address@hidden O_NOLINK
address@hidden int O_NOLINK
-
address@hidden (GNU):  @ref{Open-Time Flags}.
-
address@hidden O_NONBLOCK
address@hidden int O_NONBLOCK
-
address@hidden (POSIX.1):  @ref{Open-Time Flags}.
-
address@hidden O_NONBLOCK
address@hidden int O_NONBLOCK
-
address@hidden (POSIX.1):  @ref{Operating Modes}.
-
address@hidden O_NOTRANS
address@hidden int O_NOTRANS
-
address@hidden (GNU):  @ref{Open-Time Flags}.
-
address@hidden open
address@hidden int open (const char address@hidden, int @var{flags}[, mode_t 
@var{mode}])
-
address@hidden (POSIX.1):  @ref{Opening and Closing Files}.
-
address@hidden open64
address@hidden int open64 (const char address@hidden, int @var{flags}[, mode_t 
@var{mode}])
-
address@hidden (Unix98):  @ref{Opening and Closing Files}.
-
address@hidden opendir
address@hidden DIR * opendir (const char address@hidden)
-
address@hidden (POSIX.1):  @ref{Opening a Directory}.
-
address@hidden openlog
address@hidden void openlog (const char address@hidden, int @var{option}, int 
@var{facility})
-
address@hidden (BSD):  @ref{openlog}.
-
address@hidden OPEN_MAX
address@hidden int OPEN_MAX
-
address@hidden (POSIX.1):  @ref{General Limits}.
-
address@hidden openpty
address@hidden int openpty (int address@hidden, int address@hidden, char 
address@hidden, struct termios address@hidden, struct winsize address@hidden)
-
address@hidden (BSD):  @ref{Pseudoterminal Pairs}.
-
address@hidden OPOST
address@hidden tcflag_t OPOST
-
address@hidden (POSIX.1):  @ref{Output Modes}.
-
address@hidden O_RDONLY
address@hidden int O_RDONLY
-
address@hidden (POSIX.1):  @ref{Access Modes}.
-
address@hidden O_RDWR
address@hidden int O_RDWR
-
address@hidden (POSIX.1):  @ref{Access Modes}.
-
address@hidden O_READ
address@hidden int O_READ
-
address@hidden (GNU):  @ref{Access Modes}.
-
address@hidden O_SHLOCK
address@hidden int O_SHLOCK
-
address@hidden (BSD):  @ref{Open-Time Flags}.
-
address@hidden O_SYNC
address@hidden int O_SYNC
-
address@hidden (BSD):  @ref{Operating Modes}.
-
address@hidden O_TRUNC
address@hidden int O_TRUNC
-
address@hidden (POSIX.1):  @ref{Open-Time Flags}.
-
address@hidden O_WRITE
address@hidden int O_WRITE
-
address@hidden (GNU):  @ref{Access Modes}.
-
address@hidden O_WRONLY
address@hidden int O_WRONLY
-
address@hidden (POSIX.1):  @ref{Access Modes}.
-
address@hidden OXTABS
address@hidden tcflag_t OXTABS
-
address@hidden (BSD):  @ref{Output Modes}.
-
address@hidden PARENB
address@hidden tcflag_t PARENB
-
address@hidden (POSIX.1):  @ref{Control Modes}.
-
address@hidden PARMRK
address@hidden tcflag_t PARMRK
-
address@hidden (POSIX.1):  @ref{Input Modes}.
-
address@hidden PARODD
address@hidden tcflag_t PARODD
-
address@hidden (POSIX.1):  @ref{Control Modes}.
-
address@hidden pathconf
address@hidden long int pathconf (const char address@hidden, int 
@var{parameter})
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden PATH_MAX
address@hidden int PATH_MAX
-
address@hidden (POSIX.1):  @ref{Limits for Files}.
-
address@hidden pause
address@hidden int pause ()
-
address@hidden (POSIX.1):  @ref{Using Pause}.
-
address@hidden _PC_ASYNC_IO
address@hidden _PC_ASYNC_IO
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_CHOWN_RESTRICTED
address@hidden _PC_CHOWN_RESTRICTED
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_FILESIZEBITS
address@hidden _PC_FILESIZEBITS
-
address@hidden (LFS):  @ref{Pathconf}.
-
address@hidden _PC_LINK_MAX
address@hidden _PC_LINK_MAX
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden pclose
address@hidden int pclose (FILE address@hidden)
-
address@hidden (POSIX.2, SVID, BSD):  @ref{Pipe to a Subprocess}.
-
address@hidden _PC_MAX_CANON
address@hidden _PC_MAX_CANON
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_MAX_INPUT
address@hidden _PC_MAX_INPUT
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_NAME_MAX
address@hidden _PC_NAME_MAX
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_NO_TRUNC
address@hidden _PC_NO_TRUNC
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_PATH_MAX
address@hidden _PC_PATH_MAX
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_PIPE_BUF
address@hidden _PC_PIPE_BUF
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_PRIO_IO
address@hidden _PC_PRIO_IO
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_REC_INCR_XFER_SIZE
address@hidden _PC_REC_INCR_XFER_SIZE
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_REC_MAX_XFER_SIZE
address@hidden _PC_REC_MAX_XFER_SIZE
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_REC_MIN_XFER_SIZE
address@hidden _PC_REC_MIN_XFER_SIZE
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_REC_XFER_ALIGN
address@hidden _PC_REC_XFER_ALIGN
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_SOCK_MAXBUF
address@hidden _PC_SOCK_MAXBUF
-
address@hidden (POSIX.1g):  @ref{Pathconf}.
-
address@hidden _PC_SYNC_IO
address@hidden _PC_SYNC_IO
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden _PC_VDISABLE
address@hidden _PC_VDISABLE
-
address@hidden (POSIX.1):  @ref{Pathconf}.
-
address@hidden PENDIN
address@hidden tcflag_t PENDIN
-
address@hidden (BSD):  @ref{Local Modes}.
-
address@hidden PF_FILE
address@hidden int PF_FILE
-
address@hidden/socket.h} (GNU):  @ref{Local Namespace Details}.
-
address@hidden PF_INET
address@hidden int PF_INET
-
address@hidden/socket.h} (BSD):  @ref{Internet Namespace}.
-
address@hidden PF_INET6
address@hidden int PF_INET6
-
address@hidden/socket.h} (X/Open):  @ref{Internet Namespace}.
-
address@hidden PF_LOCAL
address@hidden int PF_LOCAL
-
address@hidden/socket.h} (POSIX):  @ref{Local Namespace Details}.
-
address@hidden PF_UNIX
address@hidden int PF_UNIX
-
address@hidden/socket.h} (BSD):  @ref{Local Namespace Details}.
-
address@hidden pid_t
address@hidden pid_t
-
address@hidden/types.h} (POSIX.1):  @ref{Process Identification}.
-
address@hidden pipe
address@hidden int pipe (int @address@hidden)
-
address@hidden (POSIX.1):  @ref{Creating a Pipe}.
-
address@hidden PIPE_BUF
address@hidden int PIPE_BUF
-
address@hidden (POSIX.1):  @ref{Limits for Files}.
-
address@hidden popen
address@hidden FILE * popen (const char address@hidden, const char 
address@hidden)
-
address@hidden (POSIX.2, SVID, BSD):  @ref{Pipe to a Subprocess}.
-
address@hidden _POSIX2_BC_BASE_MAX
address@hidden _POSIX2_BC_BASE_MAX
-
address@hidden (POSIX.2):  @ref{Utility Minimums}.
-
address@hidden _POSIX2_BC_DIM_MAX
address@hidden _POSIX2_BC_DIM_MAX
-
address@hidden (POSIX.2):  @ref{Utility Minimums}.
-
address@hidden _POSIX2_BC_SCALE_MAX
address@hidden _POSIX2_BC_SCALE_MAX
-
address@hidden (POSIX.2):  @ref{Utility Minimums}.
-
address@hidden _POSIX2_BC_STRING_MAX
address@hidden _POSIX2_BC_STRING_MAX
-
address@hidden (POSIX.2):  @ref{Utility Minimums}.
-
address@hidden _POSIX2_C_DEV
address@hidden int _POSIX2_C_DEV
-
address@hidden (POSIX.2):  @ref{System Options}.
-
address@hidden _POSIX2_COLL_WEIGHTS_MAX
address@hidden _POSIX2_COLL_WEIGHTS_MAX
-
address@hidden (POSIX.2):  @ref{Utility Minimums}.
-
address@hidden _POSIX2_C_VERSION
address@hidden long int _POSIX2_C_VERSION
-
address@hidden (POSIX.2):  @ref{Version Supported}.
-
address@hidden _POSIX2_EQUIV_CLASS_MAX
address@hidden _POSIX2_EQUIV_CLASS_MAX
-
address@hidden (POSIX.2):  @ref{Utility Minimums}.
-
address@hidden _POSIX2_EXPR_NEST_MAX
address@hidden _POSIX2_EXPR_NEST_MAX
-
address@hidden (POSIX.2):  @ref{Utility Minimums}.
-
address@hidden _POSIX2_FORT_DEV
address@hidden int _POSIX2_FORT_DEV
-
address@hidden (POSIX.2):  @ref{System Options}.
-
address@hidden _POSIX2_FORT_RUN
address@hidden int _POSIX2_FORT_RUN
-
address@hidden (POSIX.2):  @ref{System Options}.
-
address@hidden _POSIX2_LINE_MAX
address@hidden _POSIX2_LINE_MAX
-
address@hidden (POSIX.2):  @ref{Utility Minimums}.
-
address@hidden _POSIX2_LOCALEDEF
address@hidden int _POSIX2_LOCALEDEF
-
address@hidden (POSIX.2):  @ref{System Options}.
-
address@hidden _POSIX2_RE_DUP_MAX
address@hidden _POSIX2_RE_DUP_MAX
-
address@hidden (POSIX.2):  @ref{Minimums}.
-
address@hidden _POSIX2_SW_DEV
address@hidden int _POSIX2_SW_DEV
-
address@hidden (POSIX.2):  @ref{System Options}.
-
address@hidden _POSIX_AIO_LISTIO_MAX
address@hidden _POSIX_AIO_LISTIO_MAX
-
address@hidden (POSIX.1):  @ref{Minimums}.
-
address@hidden _POSIX_AIO_MAX
address@hidden _POSIX_AIO_MAX
-
address@hidden (POSIX.1):  @ref{Minimums}.
-
address@hidden _POSIX_ARG_MAX
address@hidden _POSIX_ARG_MAX
-
address@hidden (POSIX.1):  @ref{Minimums}.
-
address@hidden _POSIX_CHILD_MAX
address@hidden _POSIX_CHILD_MAX
-
address@hidden (POSIX.1):  @ref{Minimums}.
-
address@hidden _POSIX_CHOWN_RESTRICTED
address@hidden int _POSIX_CHOWN_RESTRICTED
-
address@hidden (POSIX.1):  @ref{Options for Files}.
-
address@hidden _POSIX_C_SOURCE
address@hidden _POSIX_C_SOURCE
-
-(POSIX.2):  @ref{Feature-Test Macros}.
-
address@hidden _POSIX_JOB_CONTROL
address@hidden int _POSIX_JOB_CONTROL
-
address@hidden (POSIX.1):  @ref{System Options}.
-
address@hidden _POSIX_LINK_MAX
address@hidden _POSIX_LINK_MAX
-
address@hidden (POSIX.1):  @ref{File Minimums}.
-
address@hidden _POSIX_MAX_CANON
address@hidden _POSIX_MAX_CANON
-
address@hidden (POSIX.1):  @ref{File Minimums}.
-
address@hidden _POSIX_MAX_INPUT
address@hidden _POSIX_MAX_INPUT
-
address@hidden (POSIX.1):  @ref{File Minimums}.
-
address@hidden _POSIX_NAME_MAX
address@hidden _POSIX_NAME_MAX
-
address@hidden (POSIX.1):  @ref{File Minimums}.
-
address@hidden _POSIX_NGROUPS_MAX
address@hidden _POSIX_NGROUPS_MAX
-
address@hidden (POSIX.1):  @ref{Minimums}.
-
address@hidden _POSIX_NO_TRUNC
address@hidden int _POSIX_NO_TRUNC
-
address@hidden (POSIX.1):  @ref{Options for Files}.
-
address@hidden _POSIX_OPEN_MAX
address@hidden _POSIX_OPEN_MAX
-
address@hidden (POSIX.1):  @ref{Minimums}.
-
address@hidden _POSIX_PATH_MAX
address@hidden _POSIX_PATH_MAX
-
address@hidden (POSIX.1):  @ref{File Minimums}.
-
address@hidden _POSIX_PIPE_BUF
address@hidden _POSIX_PIPE_BUF
-
address@hidden (POSIX.1):  @ref{File Minimums}.
-
address@hidden POSIX_REC_INCR_XFER_SIZE
address@hidden POSIX_REC_INCR_XFER_SIZE
-
address@hidden (POSIX.1):  @ref{File Minimums}.
-
address@hidden POSIX_REC_MAX_XFER_SIZE
address@hidden POSIX_REC_MAX_XFER_SIZE
-
address@hidden (POSIX.1):  @ref{File Minimums}.
-
address@hidden POSIX_REC_MIN_XFER_SIZE
address@hidden POSIX_REC_MIN_XFER_SIZE
-
address@hidden (POSIX.1):  @ref{File Minimums}.
-
address@hidden POSIX_REC_XFER_ALIGN
address@hidden POSIX_REC_XFER_ALIGN
-
address@hidden (POSIX.1):  @ref{File Minimums}.
-
address@hidden _POSIX_SAVED_IDS
address@hidden int _POSIX_SAVED_IDS
-
address@hidden (POSIX.1):  @ref{System Options}.
-
address@hidden _POSIX_SOURCE
address@hidden _POSIX_SOURCE
-
-(POSIX.1):  @ref{Feature-Test Macros}.
-
address@hidden _POSIX_SSIZE_MAX
address@hidden _POSIX_SSIZE_MAX
-
address@hidden (POSIX.1):  @ref{Minimums}.
-
address@hidden _POSIX_STREAM_MAX
address@hidden _POSIX_STREAM_MAX
-
address@hidden (POSIX.1):  @ref{Minimums}.
-
address@hidden _POSIX_TZNAME_MAX
address@hidden _POSIX_TZNAME_MAX
-
address@hidden (POSIX.1):  @ref{Minimums}.
-
address@hidden _POSIX_VDISABLE
address@hidden unsigned char _POSIX_VDISABLE
-
address@hidden (POSIX.1):  @ref{Options for Files}.
-
address@hidden _POSIX_VERSION
address@hidden long int _POSIX_VERSION
-
address@hidden (POSIX.1):  @ref{Version Supported}.
-
address@hidden pread
address@hidden ssize_t pread (int @var{filedes}, void address@hidden, size_t 
@var{size}, off_t @var{offset})
-
address@hidden (Unix98):  @ref{I/O Primitives}.
-
address@hidden pread64
address@hidden ssize_t pread64 (int @var{filedes}, void address@hidden, size_t 
@var{size}, off64_t @var{offset})
-
address@hidden (Unix98):  @ref{I/O Primitives}.
-
address@hidden PRIO_MAX
address@hidden PRIO_MAX
-
address@hidden/resource.h} (BSD):  @ref{Traditional Scheduling Functions}.
-
address@hidden PRIO_MIN
address@hidden PRIO_MIN
-
address@hidden/resource.h} (BSD):  @ref{Traditional Scheduling Functions}.
-
address@hidden PRIO_PGRP
address@hidden PRIO_PGRP
-
address@hidden/resource.h} (BSD):  @ref{Traditional Scheduling Functions}.
-
address@hidden PRIO_PROCESS
address@hidden PRIO_PROCESS
-
address@hidden/resource.h} (BSD):  @ref{Traditional Scheduling Functions}.
-
address@hidden PRIO_USER
address@hidden PRIO_USER
-
address@hidden/resource.h} (BSD):  @ref{Traditional Scheduling Functions}.
-
address@hidden psignal
address@hidden void psignal (int @var{signum}, const char address@hidden)
-
address@hidden (BSD):  @ref{Signal Messages}.
-
address@hidden pthread_atfork
address@hidden int pthread_atfork (void (address@hidden)(void), void 
(address@hidden)(void), void (address@hidden)(void))
-
address@hidden (POSIX):  @ref{Threads and Fork}.
-
address@hidden pthread_attr_destroy
address@hidden int pthread_attr_destroy (pthread_attr_t address@hidden)
-
address@hidden (POSIX):  @ref{Thread Attributes}.
-
address@hidden pthread_attr_getattr
address@hidden int pthread_attr_getattr (const pthread_attr_t address@hidden, 
int address@hidden)
-
address@hidden (POSIX):  @ref{Thread Attributes}.
-
address@hidden pthread_attr_init
address@hidden int pthread_attr_init (pthread_attr_t address@hidden)
-
address@hidden (POSIX):  @ref{Thread Attributes}.
-
address@hidden pthread_attr_setattr
address@hidden int pthread_attr_setattr (pthread_attr_t address@hidden, int 
@var{value})
-
address@hidden (POSIX):  @ref{Thread Attributes}.
-
address@hidden pthread_cancel
address@hidden int pthread_cancel (pthread_t @var{thread})
-
address@hidden (POSIX):  @ref{Basic Thread Operations}.
-
address@hidden pthread_cleanup_pop
address@hidden void pthread_cleanup_pop (int @var{execute})
-
address@hidden (POSIX):  @ref{Clean-Up Handlers}.
-
address@hidden pthread_cleanup_pop_restore_np
address@hidden void pthread_cleanup_pop_restore_np (int @var{execute})
-
address@hidden (GNU):  @ref{Clean-Up Handlers}.
-
address@hidden pthread_cleanup_push
address@hidden void pthread_cleanup_push (void (address@hidden) (void *), void 
address@hidden)
-
address@hidden (POSIX):  @ref{Clean-Up Handlers}.
-
address@hidden pthread_cleanup_push_defer_np
address@hidden void pthread_cleanup_push_defer_np (void (address@hidden) (void 
*), void address@hidden)
-
address@hidden (GNU):  @ref{Clean-Up Handlers}.
-
address@hidden pthread_condattr_init
address@hidden int pthread_condattr_init (pthread_condattr_t address@hidden)
-
address@hidden (POSIX):  @ref{Condition Variables}.
-
address@hidden pthread_cond_broadcast
address@hidden int pthread_cond_broadcast (pthread_cond_t address@hidden)
-
address@hidden (POSIX):  @ref{Condition Variables}.
-
address@hidden pthread_cond_destroy
address@hidden int pthread_cond_destroy (pthread_cond_t address@hidden)
-
address@hidden (POSIX):  @ref{Condition Variables}.
-
address@hidden pthread_cond_init
address@hidden int pthread_cond_init (pthread_cond_t address@hidden, 
pthread_condattr_t address@hidden)
-
address@hidden (POSIX):  @ref{Condition Variables}.
-
address@hidden pthread_cond_signal
address@hidden int pthread_cond_signal (pthread_cond_t address@hidden)
-
address@hidden (POSIX):  @ref{Condition Variables}.
-
address@hidden pthread_cond_timedwait
address@hidden int pthread_cond_timedwait (pthread_cond_t address@hidden, 
pthread_mutex_t address@hidden, const struct timespec address@hidden)
-
address@hidden (POSIX):  @ref{Condition Variables}.
-
address@hidden pthread_cond_wait
address@hidden int pthread_cond_wait (pthread_cond_t address@hidden, 
pthread_mutex_t address@hidden)
-
address@hidden (POSIX):  @ref{Condition Variables}.
-
address@hidden pthread_create
address@hidden int pthread_create (pthread_t * @var{thread}, pthread_attr_t * 
@var{attr}, void * (address@hidden)(void *), void * @var{arg})
-
address@hidden (POSIX):  @ref{Basic Thread Operations}.
-
address@hidden pthread_detach
address@hidden int pthread_detach (pthread_t @var{th})
-
address@hidden (POSIX):  @ref{Miscellaneous Thread Functions}.
-
address@hidden pthread_equal
address@hidden int pthread_equal (pthread_t thread1, pthread_t thread2)
-
address@hidden (POSIX):  @ref{Miscellaneous Thread Functions}.
-
address@hidden pthread_exit
address@hidden void pthread_exit (void address@hidden)
-
address@hidden (POSIX):  @ref{Basic Thread Operations}.
-
address@hidden pthread_getconcurrency
address@hidden int pthread_getconcurrency ()
-
address@hidden (POSIX):  @ref{Miscellaneous Thread Functions}.
-
address@hidden pthread_getschedparam
address@hidden int pthread_getschedparam (pthread_t address@hidden, int 
address@hidden, struct sched_param address@hidden)
-
address@hidden (POSIX):  @ref{Miscellaneous Thread Functions}.
-
address@hidden pthread_getspecific
address@hidden void * pthread_getspecific (pthread_key_t @var{key})
-
address@hidden (POSIX):  @ref{Thread-Specific Data}.
-
address@hidden pthread_join
address@hidden int pthread_join (pthread_t @var{th}, void address@hidden)
-
address@hidden (POSIX):  @ref{Basic Thread Operations}.
-
address@hidden pthread_key_create
address@hidden int pthread_key_create (pthread_key_t address@hidden, void 
(*destr_function) (void *))
-
address@hidden (POSIX):  @ref{Thread-Specific Data}.
-
address@hidden pthread_key_delete
address@hidden int pthread_key_delete (pthread_key_t @var{key})
-
address@hidden (POSIX):  @ref{Thread-Specific Data}.
-
address@hidden pthread_kill
address@hidden int pthread_kill (pthread_t @var{thread}, int @var{signo})
-
address@hidden (POSIX):  @ref{Threads and Signal-Handling}.
-
address@hidden pthread_kill_other_threads_np
address@hidden void pthread_kill_other_threads_np (@var{void})
-
address@hidden (GNU):  @ref{Miscellaneous Thread Functions}.
-
address@hidden pthread_mutexattr_destroy
address@hidden int pthread_mutexattr_destroy (pthread_mutexattr_t 
address@hidden)
-
address@hidden (POSIX):  @ref{Mutexes}.
-
address@hidden pthread_mutexattr_gettype
address@hidden int pthread_mutexattr_gettype (const pthread_mutexattr_t 
address@hidden, int address@hidden)
-
address@hidden (POSIX):  @ref{Mutexes}.
-
address@hidden pthread_mutexattr_init
address@hidden int pthread_mutexattr_init (pthread_mutexattr_t address@hidden)
-
address@hidden (POSIX):  @ref{Mutexes}.
-
address@hidden pthread_mutexattr_settype
address@hidden int pthread_mutexattr_settype (pthread_mutexattr_t 
address@hidden, int @var{type})
-
address@hidden (POSIX):  @ref{Mutexes}.
-
address@hidden pthread_mutex_destroy
address@hidden int pthread_mutex_destroy (pthread_mutex_t address@hidden)
-
address@hidden (POSIX):  @ref{Mutexes}.
-
address@hidden pthread_mutex_init
address@hidden int pthread_mutex_init (pthread_mutex_t address@hidden, const 
pthread_mutexattr_t address@hidden)
-
address@hidden (POSIX):  @ref{Mutexes}.
-
address@hidden pthread_mutex_lock
address@hidden int pthread_mutex_lock (pthread_mutex_t *mutex))
-
address@hidden (POSIX):  @ref{Mutexes}.
-
address@hidden pthread_mutex_timedlock
address@hidden int pthread_mutex_timedlock (pthread_mutex_t address@hidden, 
const struct timespec address@hidden)
-
address@hidden (POSIX):  @ref{Mutexes}.
-
address@hidden pthread_mutex_trylock
address@hidden int pthread_mutex_trylock (pthread_mutex_t address@hidden)
-
address@hidden (POSIX):  @ref{Mutexes}.
-
address@hidden pthread_mutex_unlock
address@hidden int pthread_mutex_unlock (pthread_mutex_t address@hidden)
-
address@hidden (POSIX):  @ref{Mutexes}.
-
address@hidden pthread_once
address@hidden int pthread_once (pthread_once_t address@hidden, void 
(address@hidden) (void))
-
address@hidden (POSIX):  @ref{Miscellaneous Thread Functions}.
-
address@hidden pthread_self
address@hidden pthread_t pthread_self (@var{void})
-
address@hidden (POSIX):  @ref{Miscellaneous Thread Functions}.
-
address@hidden pthread_setcancelstate
address@hidden int pthread_setcancelstate (int @var{state}, int address@hidden)
-
address@hidden (POSIX):  @ref{Cancellation}.
-
address@hidden pthread_setcanceltype
address@hidden int pthread_setcanceltype (int @var{type}, int address@hidden)
-
address@hidden (POSIX):  @ref{Cancellation}.
-
address@hidden pthread_setconcurrency
address@hidden int pthread_setconcurrency (int @var{level})
-
address@hidden (POSIX):  @ref{Miscellaneous Thread Functions}.
-
address@hidden pthread_setschedparam
address@hidden int pthread_setschedparam (pthread_t address@hidden, int 
@var{policy}, const struct sched_param address@hidden)
-
address@hidden (POSIX):  @ref{Miscellaneous Thread Functions}.
-
address@hidden pthread_setspecific
address@hidden int pthread_setspecific (pthread_key_t @var{key}, const void 
address@hidden)
-
address@hidden (POSIX):  @ref{Thread-Specific Data}.
-
address@hidden pthread_sigmask
address@hidden int pthread_sigmask (int @var{how}, const sigset_t 
address@hidden, sigset_t address@hidden)
-
address@hidden (POSIX):  @ref{Threads and Signal-Handling}.
-
address@hidden pthread_testcancel
address@hidden void pthread_testcancel (@var{void})
-
address@hidden (POSIX):  @ref{Cancellation}.
-
address@hidden P_tmpdir
address@hidden char * P_tmpdir
-
address@hidden (SVID):  @ref{Temporary Files}.
-
address@hidden ptrdiff_t
address@hidden ptrdiff_t
-
address@hidden (ISO):  @ref{Important Data Types}.
-
address@hidden ptsname
address@hidden char * ptsname (int @var{filedes})
-
address@hidden (SVID, XPG4.2):  @ref{Allocation}.
-
address@hidden ptsname_r
address@hidden int ptsname_r (int @var{filedes}, char address@hidden, size_t 
@var{len})
-
address@hidden (GNU):  @ref{Allocation}.
-
address@hidden putpwent
address@hidden int putpwent (const struct passwd address@hidden, FILE 
address@hidden)
-
address@hidden (SVID):  @ref{Writing a User Entry}.
-
address@hidden pututline
address@hidden struct utmp * pututline (const struct utmp address@hidden)
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden pututxline
address@hidden struct utmpx * pututxline (const struct utmpx address@hidden)
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden pwrite
address@hidden ssize_t pwrite (int @var{filedes}, const void address@hidden, 
size_t @var{size}, off_t @var{offset})
-
address@hidden (Unix98):  @ref{I/O Primitives}.
-
address@hidden pwrite64
address@hidden ssize_t pwrite64 (int @var{filedes}, const void address@hidden, 
size_t @var{size}, off64_t @var{offset})
-
address@hidden (Unix98):  @ref{I/O Primitives}.
-
address@hidden raise
address@hidden int raise (int @var{signum})
-
address@hidden (ISO):  @ref{Signaling Yourself}.
-
address@hidden read
address@hidden ssize_t read (int @var{filedes}, void address@hidden, size_t 
@var{size})
-
address@hidden (POSIX.1):  @ref{I/O Primitives}.
-
address@hidden readdir
address@hidden struct dirent * readdir (DIR address@hidden)
-
address@hidden (POSIX.1):  @ref{Reading/Closing Directory}.
-
address@hidden readdir64
address@hidden struct dirent64 * readdir64 (DIR address@hidden)
-
address@hidden (LFS):  @ref{Reading/Closing Directory}.
-
address@hidden readdir64_r
address@hidden int readdir64_r (DIR address@hidden, struct dirent64 
address@hidden, struct dirent64 address@hidden)
-
address@hidden (LFS):  @ref{Reading/Closing Directory}.
-
address@hidden readdir_r
address@hidden int readdir_r (DIR address@hidden, struct dirent address@hidden, 
struct dirent address@hidden)
-
address@hidden (GNU):  @ref{Reading/Closing Directory}.
-
address@hidden readlink
address@hidden int readlink (const char address@hidden, char address@hidden, 
size_t @var{size})
-
address@hidden (BSD):  @ref{Symbolic Links}.
-
address@hidden readv
address@hidden ssize_t readv (int @var{filedes}, const struct iovec 
address@hidden, int @var{count})
-
address@hidden/uio.h} (BSD):  @ref{Scatter-Gather}.
-
address@hidden realpath
address@hidden char * realpath (const char *restrict @var{name}, char *restrict 
@var{resolved})
-
address@hidden (XPG):  @ref{Symbolic Links}.
-
address@hidden recv
address@hidden int recv (int @var{socket}, void address@hidden, size_t 
@var{size}, int @var{flags})
-
address@hidden/socket.h} (BSD):  @ref{Receiving Data}.
-
address@hidden recvfrom
address@hidden int recvfrom (int @var{socket}, void address@hidden, size_t 
@var{size}, int @var{flags}, struct sockaddr address@hidden, socklen_t 
address@hidden)
-
address@hidden/socket.h} (BSD):  @ref{Receiving Datagrams}.
-
address@hidden recvmsg
address@hidden int recvmsg (int @var{socket}, struct msghdr address@hidden, int 
@var{flags})
-
address@hidden/socket.h} (BSD):  @ref{Receiving Datagrams}.
-
address@hidden RE_DUP_MAX
address@hidden int RE_DUP_MAX
-
address@hidden (POSIX.2):  @ref{General Limits}.
-
address@hidden _REENTRANT
address@hidden _REENTRANT
-
-(GNU):  @ref{Feature-Test Macros}.
-
address@hidden remove
address@hidden int remove (const char address@hidden)
-
address@hidden (ISO):  @ref{Deleting Files}.
-
address@hidden rename
address@hidden int rename (const char address@hidden, const char address@hidden)
-
address@hidden (ISO):  @ref{Renaming Files}.
-
address@hidden rewinddir
address@hidden void rewinddir (DIR address@hidden)
-
address@hidden (POSIX.1):  @ref{Random Access Directory}.
-
address@hidden RLIM_INFINITY
address@hidden int RLIM_INFINITY
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden RLIMIT_AS
address@hidden RLIMIT_AS
-
address@hidden/resource.h} (Unix98):  @ref{Limits on Resources}.
-
address@hidden RLIMIT_CORE
address@hidden RLIMIT_CORE
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden RLIMIT_CPU
address@hidden RLIMIT_CPU
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden RLIMIT_DATA
address@hidden RLIMIT_DATA
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden RLIMIT_FSIZE
address@hidden RLIMIT_FSIZE
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden RLIMIT_MEMLOCK
address@hidden RLIMIT_MEMLOCK
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden RLIMIT_NOFILE
address@hidden RLIMIT_NOFILE
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden RLIMIT_NPROC
address@hidden RLIMIT_NPROC
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden RLIMIT_RSS
address@hidden RLIMIT_RSS
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden RLIMIT_STACK
address@hidden RLIMIT_STACK
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden RLIM_NLIMITS
address@hidden RLIM_NLIMITS
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden rmdir
address@hidden int rmdir (const char address@hidden)
-
address@hidden (POSIX.1):  @ref{Deleting Files}.
-
address@hidden R_OK
address@hidden int R_OK
-
address@hidden (POSIX.1):  @ref{Testing File Access}.
-
address@hidden RUN_LVL
address@hidden RUN_LVL
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden RUN_LVL
address@hidden RUN_LVL
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden RUSAGE_CHILDREN
address@hidden RUSAGE_CHILDREN
-
address@hidden/resource.h} (BSD):  @ref{Resource Usage}.
-
address@hidden RUSAGE_SELF
address@hidden RUSAGE_SELF
-
address@hidden/resource.h} (BSD):  @ref{Resource Usage}.
-
address@hidden SA_NOCLDSTOP
address@hidden int SA_NOCLDSTOP
-
address@hidden (POSIX.1):  @ref{Flags for Sigaction}.
-
address@hidden SA_ONSTACK
address@hidden int SA_ONSTACK
-
address@hidden (BSD):  @ref{Flags for Sigaction}.
-
address@hidden SA_RESTART
address@hidden int SA_RESTART
-
address@hidden (BSD):  @ref{Flags for Sigaction}.
-
address@hidden _SC_2_C_DEV
address@hidden _SC_2_C_DEV
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_2_FORT_DEV
address@hidden _SC_2_FORT_DEV
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_2_FORT_RUN
address@hidden _SC_2_FORT_RUN
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_2_LOCALEDEF
address@hidden _SC_2_LOCALEDEF
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_2_SW_DEV
address@hidden _SC_2_SW_DEV
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_2_VERSION
address@hidden _SC_2_VERSION
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_AIO_LISTIO_MAX
address@hidden _SC_AIO_LISTIO_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_AIO_MAX
address@hidden _SC_AIO_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_AIO_PRIO_DELTA_MAX
address@hidden _SC_AIO_PRIO_DELTA_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden scandir
address@hidden int scandir (const char address@hidden, struct dirent 
address@hidden, int (address@hidden) (const struct dirent *), int 
(address@hidden) (const void *, const void *))
-
address@hidden (BSD/SVID):  @ref{Scanning Directory Content}.
-
address@hidden scandir64
address@hidden int scandir64 (const char address@hidden, struct dirent64 
address@hidden, int (address@hidden) (const struct dirent64 *), int 
(address@hidden) (const void *, const void *))
-
address@hidden (GNU):  @ref{Scanning Directory Content}.
-
address@hidden _SC_ARG_MAX
address@hidden _SC_ARG_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_ASYNCHRONOUS_IO
address@hidden _SC_ASYNCHRONOUS_IO
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_ATEXIT_MAX
address@hidden _SC_ATEXIT_MAX
-
address@hidden (GNU):  @ref{Constants for Sysconf}.
-
address@hidden _SC_AVPHYS_PAGES
address@hidden _SC_AVPHYS_PAGES
-
address@hidden (GNU):  @ref{Constants for Sysconf}.
-
address@hidden _SC_BC_BASE_MAX
address@hidden _SC_BC_BASE_MAX
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_BC_DIM_MAX
address@hidden _SC_BC_DIM_MAX
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_BC_SCALE_MAX
address@hidden _SC_BC_SCALE_MAX
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_BC_STRING_MAX
address@hidden _SC_BC_STRING_MAX
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_CHAR_BIT
address@hidden _SC_CHAR_BIT
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_CHARCLASS_NAME_MAX
address@hidden _SC_CHARCLASS_NAME_MAX
-
address@hidden (GNU):  @ref{Constants for Sysconf}.
-
address@hidden _SC_CHAR_MAX
address@hidden _SC_CHAR_MAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_CHAR_MIN
address@hidden _SC_CHAR_MIN
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_CHILD_MAX
address@hidden _SC_CHILD_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_CLK_TCK
address@hidden _SC_CLK_TCK
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_COLL_WEIGHTS_MAX
address@hidden _SC_COLL_WEIGHTS_MAX
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_DELAYTIMER_MAX
address@hidden _SC_DELAYTIMER_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_EQUIV_CLASS_MAX
address@hidden _SC_EQUIV_CLASS_MAX
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_EXPR_NEST_MAX
address@hidden _SC_EXPR_NEST_MAX
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_FSYNC
address@hidden _SC_FSYNC
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_GETGR_R_SIZE_MAX
address@hidden _SC_GETGR_R_SIZE_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_GETPW_R_SIZE_MAX
address@hidden _SC_GETPW_R_SIZE_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden SCHAR_MAX
address@hidden SCHAR_MAX
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden SCHAR_MIN
address@hidden SCHAR_MIN
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden sched_getaffinity
address@hidden int sched_getaffinity (pid_t @var{pid}, cpu_set_t address@hidden)
-
address@hidden (GNU):  @ref{CPU Affinity}.
-
address@hidden sched_getparam
address@hidden int sched_getparam (pid_t @var{pid}, const struct sched_param 
address@hidden)
-
address@hidden (POSIX):  @ref{Basic Scheduling Functions}.
-
address@hidden sched_get_priority_max
address@hidden int sched_get_priority_max (int address@hidden);
-
address@hidden (POSIX):  @ref{Basic Scheduling Functions}.
-
address@hidden sched_get_priority_min
address@hidden int sched_get_priority_min (int address@hidden);
-
address@hidden (POSIX):  @ref{Basic Scheduling Functions}.
-
address@hidden sched_getscheduler
address@hidden int sched_getscheduler (pid_t @var{pid})
-
address@hidden (POSIX):  @ref{Basic Scheduling Functions}.
-
address@hidden sched_rr_get_interval
address@hidden int sched_rr_get_interval (pid_t @var{pid}, struct timespec 
address@hidden)
-
address@hidden (POSIX):  @ref{Basic Scheduling Functions}.
-
address@hidden sched_setaffinity
address@hidden int sched_setaffinity (pid_t @var{pid}, const cpu_set_t 
address@hidden)
-
address@hidden (GNU):  @ref{CPU Affinity}.
-
address@hidden sched_setparam
address@hidden int sched_setparam (pid_t @var{pid}, const struct sched_param 
address@hidden)
-
address@hidden (POSIX):  @ref{Basic Scheduling Functions}.
-
address@hidden sched_setscheduler
address@hidden int sched_setscheduler (pid_t @var{pid}, int @var{policy}, const 
struct sched_param address@hidden)
-
address@hidden (POSIX):  @ref{Basic Scheduling Functions}.
-
address@hidden sched_yield
address@hidden int sched_yield (void)
-
address@hidden (POSIX):  @ref{Basic Scheduling Functions}.
-
address@hidden _SC_INT_MAX
address@hidden _SC_INT_MAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_INT_MIN
address@hidden _SC_INT_MIN
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_JOB_CONTROL
address@hidden _SC_JOB_CONTROL
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_LINE_MAX
address@hidden _SC_LINE_MAX
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_LOGIN_NAME_MAX
address@hidden _SC_LOGIN_NAME_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_LONG_BIT
address@hidden _SC_LONG_BIT
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_MAPPED_FILES
address@hidden _SC_MAPPED_FILES
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_MB_LEN_MAX
address@hidden _SC_MB_LEN_MAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_MEMLOCK
address@hidden _SC_MEMLOCK
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_MEMLOCK_RANGE
address@hidden _SC_MEMLOCK_RANGE
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_MEMORY_PROTECTION
address@hidden _SC_MEMORY_PROTECTION
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_MESSAGE_PASSING
address@hidden _SC_MESSAGE_PASSING
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_MQ_OPEN_MAX
address@hidden _SC_MQ_OPEN_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_MQ_PRIO_MAX
address@hidden _SC_MQ_PRIO_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_NGROUPS_MAX
address@hidden _SC_NGROUPS_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_NL_ARGMAX
address@hidden _SC_NL_ARGMAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_NL_LANGMAX
address@hidden _SC_NL_LANGMAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_NL_MSGMAX
address@hidden _SC_NL_MSGMAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_NL_NMAX
address@hidden _SC_NL_NMAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_NL_SETMAX
address@hidden _SC_NL_SETMAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_NL_TEXTMAX
address@hidden _SC_NL_TEXTMAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_NPROCESSORS_CONF
address@hidden _SC_NPROCESSORS_CONF
-
address@hidden (GNU):  @ref{Constants for Sysconf}.
-
address@hidden _SC_NPROCESSORS_ONLN
address@hidden _SC_NPROCESSORS_ONLN
-
address@hidden (GNU):  @ref{Constants for Sysconf}.
-
address@hidden _SC_NZERO
address@hidden _SC_NZERO
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_OPEN_MAX
address@hidden _SC_OPEN_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PAGESIZE
address@hidden _SC_PAGESIZE
-
address@hidden (GNU):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PHYS_PAGES
address@hidden _SC_PHYS_PAGES
-
address@hidden (GNU):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PII
address@hidden _SC_PII
-
address@hidden (POSIX.1g):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PII_INTERNET
address@hidden _SC_PII_INTERNET
-
address@hidden (POSIX.1g):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PII_INTERNET_DGRAM
address@hidden _SC_PII_INTERNET_DGRAM
-
address@hidden (POSIX.1g):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PII_INTERNET_STREAM
address@hidden _SC_PII_INTERNET_STREAM
-
address@hidden (POSIX.1g):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PII_OSI
address@hidden _SC_PII_OSI
-
address@hidden (POSIX.1g):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PII_OSI_CLTS
address@hidden _SC_PII_OSI_CLTS
-
address@hidden (POSIX.1g):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PII_OSI_COTS
address@hidden _SC_PII_OSI_COTS
-
address@hidden (POSIX.1g):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PII_OSI_M
address@hidden _SC_PII_OSI_M
-
address@hidden (POSIX.1g):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PII_SOCKET
address@hidden _SC_PII_SOCKET
-
address@hidden (POSIX.1g):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PII_XTI
address@hidden _SC_PII_XTI
-
address@hidden (POSIX.1g):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PRIORITIZED_IO
address@hidden _SC_PRIORITIZED_IO
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_PRIORITY_SCHEDULING
address@hidden _SC_PRIORITY_SCHEDULING
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_REALTIME_SIGNALS
address@hidden _SC_REALTIME_SIGNALS
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_RTSIG_MAX
address@hidden _SC_RTSIG_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_SAVED_IDS
address@hidden _SC_SAVED_IDS
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_SCHAR_MAX
address@hidden _SC_SCHAR_MAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_SCHAR_MIN
address@hidden _SC_SCHAR_MIN
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_SELECT
address@hidden _SC_SELECT
-
address@hidden (POSIX.1g):  @ref{Constants for Sysconf}.
-
address@hidden _SC_SEMAPHORES
address@hidden _SC_SEMAPHORES
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_SEM_NSEMS_MAX
address@hidden _SC_SEM_NSEMS_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_SEM_VALUE_MAX
address@hidden _SC_SEM_VALUE_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_SHARED_MEMORY_OBJECTS
address@hidden _SC_SHARED_MEMORY_OBJECTS
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_SHRT_MAX
address@hidden _SC_SHRT_MAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_SHRT_MIN
address@hidden _SC_SHRT_MIN
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_SIGQUEUE_MAX
address@hidden _SC_SIGQUEUE_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden SC_SSIZE_MAX
address@hidden SC_SSIZE_MAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_STREAM_MAX
address@hidden _SC_STREAM_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_SYNCHRONIZED_IO
address@hidden _SC_SYNCHRONIZED_IO
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_THREAD_ATTR_STACKADDR
address@hidden _SC_THREAD_ATTR_STACKADDR
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_THREAD_ATTR_STACKSIZE
address@hidden _SC_THREAD_ATTR_STACKSIZE
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_THREAD_DESTRUCTOR_ITERATIONS
address@hidden _SC_THREAD_DESTRUCTOR_ITERATIONS
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_THREAD_KEYS_MAX
address@hidden _SC_THREAD_KEYS_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_THREAD_PRIO_INHERIT
address@hidden _SC_THREAD_PRIO_INHERIT
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_THREAD_PRIO_PROTECT
address@hidden _SC_THREAD_PRIO_PROTECT
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_THREAD_PRIORITY_SCHEDULING
address@hidden _SC_THREAD_PRIORITY_SCHEDULING
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_THREAD_PROCESS_SHARED
address@hidden _SC_THREAD_PROCESS_SHARED
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_THREADS
address@hidden _SC_THREADS
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_THREAD_SAFE_FUNCTIONS
address@hidden _SC_THREAD_SAFE_FUNCTIONS
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_THREAD_STACK_MIN
address@hidden _SC_THREAD_STACK_MIN
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_THREAD_THREADS_MAX
address@hidden _SC_THREAD_THREADS_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_TIMER_MAX
address@hidden _SC_TIMER_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_TIMERS
address@hidden _SC_TIMERS
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_T_IOV_MAX
address@hidden _SC_T_IOV_MAX
-
address@hidden (POSIX.1g):  @ref{Constants for Sysconf}.
-
address@hidden _SC_TTY_NAME_MAX
address@hidden _SC_TTY_NAME_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_TZNAME_MAX
address@hidden _SC_TZNAME_MAX
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_UCHAR_MAX
address@hidden _SC_UCHAR_MAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_UINT_MAX
address@hidden _SC_UINT_MAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_UIO_MAXIOV
address@hidden _SC_UIO_MAXIOV
-
address@hidden (POSIX.1g):  @ref{Constants for Sysconf}.
-
address@hidden _SC_ULONG_MAX
address@hidden _SC_ULONG_MAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_USHRT_MAX
address@hidden _SC_USHRT_MAX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_VERSION
address@hidden _SC_VERSION
-
address@hidden (POSIX.1):  @ref{Constants for Sysconf}.
-
address@hidden _SC_VERSION
address@hidden _SC_VERSION
-
address@hidden (POSIX.2):  @ref{Constants for Sysconf}.
-
address@hidden _SC_WORD_BIT
address@hidden _SC_WORD_BIT
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_XOPEN_CRYPT
address@hidden _SC_XOPEN_CRYPT
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_XOPEN_ENH_I18N
address@hidden _SC_XOPEN_ENH_I18N
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_XOPEN_LEGACY
address@hidden _SC_XOPEN_LEGACY
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_XOPEN_REALTIME
address@hidden _SC_XOPEN_REALTIME
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_XOPEN_REALTIME_THREADS
address@hidden _SC_XOPEN_REALTIME_THREADS
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_XOPEN_SHM
address@hidden _SC_XOPEN_SHM
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_XOPEN_UNIX
address@hidden _SC_XOPEN_UNIX
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_XOPEN_VERSION
address@hidden _SC_XOPEN_VERSION
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_XOPEN_XCU_VERSION
address@hidden _SC_XOPEN_XCU_VERSION
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_XOPEN_XPG2
address@hidden _SC_XOPEN_XPG2
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_XOPEN_XPG3
address@hidden _SC_XOPEN_XPG3
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden _SC_XOPEN_XPG4
address@hidden _SC_XOPEN_XPG4
-
address@hidden (X/Open):  @ref{Constants for Sysconf}.
-
address@hidden seekdir
address@hidden void seekdir (DIR address@hidden, off_t @var{pos})
-
address@hidden (BSD):  @ref{Random Access Directory}.
-
address@hidden select
address@hidden int select (int @var{nfds}, fd_set address@hidden, fd_set 
address@hidden, fd_set address@hidden, struct timeval address@hidden)
-
address@hidden/types.h} (BSD):  @ref{Waiting for I/O}.
-
address@hidden sem_destroy
address@hidden int sem_destroy (sem_t * @var{sem})
-
address@hidden (POSIX):  @ref{POSIX Semaphores}.
-
address@hidden sem_getvalue
address@hidden int sem_getvalue (sem_t * @var{sem}, int * @var{sval})
-
address@hidden (POSIX):  @ref{POSIX Semaphores}.
-
address@hidden sem_init
address@hidden int sem_init (sem_t address@hidden, int @var{pshared}, unsigned 
int @var{value})
-
address@hidden (POSIX):  @ref{POSIX Semaphores}.
-
address@hidden sem_post
address@hidden int sem_post (sem_t * @var{sem})
-
address@hidden (POSIX):  @ref{POSIX Semaphores}.
-
address@hidden sem_trywait
address@hidden int sem_trywait (sem_t * @var{sem})
-
address@hidden (POSIX):  @ref{POSIX Semaphores}.
-
address@hidden sem_wait
address@hidden int sem_wait (sem_t * @var{sem})
-
address@hidden (POSIX):  @ref{POSIX Semaphores}.
-
address@hidden send
address@hidden int send (int @var{socket}, void address@hidden, size_t 
@var{size}, int @var{flags})
-
address@hidden/socket.h} (BSD):  @ref{Sending Data}.
-
address@hidden sendmsg
address@hidden int sendmsg (int @var{socket}, const struct msghdr 
address@hidden, int @var{flags})
-
address@hidden/socket.h} (BSD):  @ref{Receiving Datagrams}.
-
address@hidden sendto
address@hidden int sendto (int @var{socket}, void address@hidden size_t 
@var{size}, int @var{flags}, struct sockaddr address@hidden, socklen_t 
@var{length})
-
address@hidden/socket.h} (BSD):  @ref{Sending Datagrams}.
-
address@hidden setcontext
address@hidden int setcontext (const ucontext_t address@hidden)
-
address@hidden (SVID):  @ref{System V contexts}.
-
address@hidden setdomainname
address@hidden int setdomainname (const char address@hidden, size_t 
@var{length})
-
address@hidden (Unknown origin):  @ref{Host Identification}.
-
address@hidden setegid
address@hidden int setegid (gid_t @var{newgid})
-
address@hidden (POSIX.1):  @ref{Setting Groups}.
-
address@hidden seteuid
address@hidden int seteuid (uid_t @var{neweuid})
-
address@hidden (POSIX.1):  @ref{Setting User ID}.
-
address@hidden setfsent
address@hidden int setfsent (void)
-
address@hidden (BSD):  @ref{fstab}.
-
address@hidden setgid
address@hidden int setgid (gid_t @var{newgid})
-
address@hidden (POSIX.1):  @ref{Setting Groups}.
-
address@hidden setgrent
address@hidden void setgrent (void)
-
address@hidden (SVID, BSD):  @ref{Scanning All Groups}.
-
address@hidden setgroups
address@hidden int setgroups (size_t @var{count}, gid_t address@hidden)
-
address@hidden (BSD):  @ref{Setting Groups}.
-
address@hidden sethostent
address@hidden void sethostent (int @var{stayopen})
-
address@hidden (BSD):  @ref{Host Names}.
-
address@hidden sethostid
address@hidden int sethostid (long int @var{id})
-
address@hidden (BSD):  @ref{Host Identification}.
-
address@hidden sethostname
address@hidden int sethostname (const char address@hidden, size_t @var{length})
-
address@hidden (BSD):  @ref{Host Identification}.
-
address@hidden setjmp
address@hidden int setjmp (jmp_buf @var{state})
-
address@hidden (ISO):  @ref{Nonlocal Details}.
-
address@hidden setkey
address@hidden void setkey (const char address@hidden)
-
address@hidden (BSD, SVID):  @ref{DES Encryption}.
-
address@hidden setkey_r
address@hidden void setkey_r (const char address@hidden, struct crypt_data * 
@var{data})
-
address@hidden (GNU):  @ref{DES Encryption}.
-
address@hidden setlogmask
address@hidden int setlogmask (int @var{mask})
-
address@hidden (BSD):  @ref{setlogmask}.
-
address@hidden setmntent
address@hidden FILE * setmntent (const char address@hidden, const char 
address@hidden)
-
address@hidden (BSD):  @ref{mtab}.
-
address@hidden setnetent
address@hidden void setnetent (int @var{stayopen})
-
address@hidden (BSD):  @ref{Networks Database}.
-
address@hidden setnetgrent
address@hidden int setnetgrent (const char address@hidden)
-
address@hidden (BSD):  @ref{Lookup Netgroup}.
-
address@hidden setpgid
address@hidden int setpgid (pid_t @var{pid}, pid_t @var{pgid})
-
address@hidden (POSIX.1):  @ref{Process Group Functions}.
-
address@hidden setpgrp
address@hidden int setpgrp (pid_t @var{pid}, pid_t @var{pgid})
-
address@hidden (BSD):  @ref{Process Group Functions}.
-
address@hidden setpriority
address@hidden int setpriority (int @var{class}, int @var{id}, int 
@var{niceval})
-
address@hidden/resource.h} (BSD,POSIX):  @ref{Traditional Scheduling Functions}.
-
address@hidden setprotoent
address@hidden void setprotoent (int @var{stayopen})
-
address@hidden (BSD):  @ref{Protocols Database}.
-
address@hidden setpwent
address@hidden void setpwent (void)
-
address@hidden (SVID, BSD):  @ref{Scanning All Users}.
-
address@hidden setregid
address@hidden int setregid (gid_t @var{rgid}, gid_t @var{egid})
-
address@hidden (BSD):  @ref{Setting Groups}.
-
address@hidden setreuid
address@hidden int setreuid (uid_t @var{ruid}, uid_t @var{euid})
-
address@hidden (BSD):  @ref{Setting User ID}.
-
address@hidden setrlimit
address@hidden int setrlimit (int @var{resource}, const struct rlimit 
address@hidden)
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden setrlimit64
address@hidden int setrlimit64 (int @var{resource}, const struct rlimit64 
address@hidden)
-
address@hidden/resource.h} (Unix98):  @ref{Limits on Resources}.
-
address@hidden setservent
address@hidden void setservent (int @var{stayopen})
-
address@hidden (BSD):  @ref{Services Database}.
-
address@hidden setsid
address@hidden pid_t setsid (void)
-
address@hidden (POSIX.1):  @ref{Process Group Functions}.
-
address@hidden setsockopt
address@hidden int setsockopt (int @var{socket}, int @var{level}, int 
@var{optname}, void address@hidden, socklen_t @var{optlen})
-
address@hidden/socket.h} (BSD):  @ref{Socket Option Functions}.
-
address@hidden setuid
address@hidden int setuid (uid_t @var{newuid})
-
address@hidden (POSIX.1):  @ref{Setting User ID}.
-
address@hidden setutent
address@hidden void setutent (void)
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden setutxent
address@hidden void setutxent (void)
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden SHRT_MAX
address@hidden SHRT_MAX
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden SHRT_MIN
address@hidden SHRT_MIN
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden shutdown
address@hidden int shutdown (int @var{socket}, int @var{how})
-
address@hidden/socket.h} (BSD):  @ref{Closing a Socket}.
-
address@hidden S_IEXEC
address@hidden S_IEXEC
-
address@hidden/stat.h} (BSD):  @ref{Permission Bits}.
-
address@hidden S_IFBLK
address@hidden S_IFBLK
-
address@hidden/stat.h} (BSD):  @ref{Testing File-Type}.
-
address@hidden S_IFCHR
address@hidden S_IFCHR
-
address@hidden/stat.h} (BSD):  @ref{Testing File-Type}.
-
address@hidden S_IFDIR
address@hidden S_IFDIR
-
address@hidden/stat.h} (BSD):  @ref{Testing File-Type}.
-
address@hidden S_IFIFO
address@hidden S_IFIFO
-
address@hidden/stat.h} (BSD):  @ref{Testing File-Type}.
-
address@hidden S_IFLNK
address@hidden S_IFLNK
-
address@hidden/stat.h} (BSD):  @ref{Testing File-Type}.
-
address@hidden S_IFMT
address@hidden int S_IFMT
-
address@hidden/stat.h} (BSD):  @ref{Testing File-Type}.
-
address@hidden S_IFREG
address@hidden S_IFREG
-
address@hidden/stat.h} (BSD):  @ref{Testing File-Type}.
-
address@hidden S_IFSOCK
address@hidden S_IFSOCK
-
address@hidden/stat.h} (BSD):  @ref{Testing File-Type}.
-
address@hidden SIGABRT
address@hidden int SIGABRT
-
address@hidden (ISO):  @ref{Program-Error Signals}.
-
address@hidden sigaction
address@hidden int sigaction (int @var{signum}, const struct sigaction 
*restrict @var{action}, struct sigaction *restrict @var{old-action})
-
address@hidden (POSIX.1):  @ref{Advanced Signal-Handling}.
-
address@hidden sigaddset
address@hidden int sigaddset (sigset_t address@hidden, int @var{signum})
-
address@hidden (POSIX.1):  @ref{Signal Sets}.
-
address@hidden SIGALRM
address@hidden int SIGALRM
-
address@hidden (POSIX.1):  @ref{Alarm Signals}.
-
address@hidden sigaltstack
address@hidden int sigaltstack (const stack_t *restrict @var{stack}, stack_t 
*restrict @var{oldstack})
-
address@hidden (XPG):  @ref{Signal Stack}.
-
address@hidden sig_atomic_t
address@hidden sig_atomic_t
-
address@hidden (ISO):  @ref{Atomic Types}.
-
address@hidden sigblock
address@hidden int sigblock (int @var{mask})
-
address@hidden (BSD):  @ref{Blocking in BSD}.
-
address@hidden SIG_BLOCK
address@hidden SIG_BLOCK
-
address@hidden (POSIX.1):  @ref{Process Signal-Mask}.
-
address@hidden SIGBUS
address@hidden int SIGBUS
-
address@hidden (BSD):  @ref{Program-Error Signals}.
-
address@hidden SIGCHLD
address@hidden int SIGCHLD
-
address@hidden (POSIX.1):  @ref{Job Control Signals}.
-
address@hidden SIGCLD
address@hidden int SIGCLD
-
address@hidden (SVID):  @ref{Job Control Signals}.
-
address@hidden SIGCONT
address@hidden int SIGCONT
-
address@hidden (POSIX.1):  @ref{Job Control Signals}.
-
address@hidden sigdelset
address@hidden int sigdelset (sigset_t address@hidden, int @var{signum})
-
address@hidden (POSIX.1):  @ref{Signal Sets}.
-
address@hidden sigemptyset
address@hidden int sigemptyset (sigset_t address@hidden)
-
address@hidden (POSIX.1):  @ref{Signal Sets}.
-
address@hidden SIGEMT
address@hidden int SIGEMT
-
address@hidden (BSD):  @ref{Program-Error Signals}.
-
address@hidden SIG_ERR
address@hidden sighandler_t SIG_ERR
-
address@hidden (ISO):  @ref{Basic Signal-Handling}.
-
address@hidden sigfillset
address@hidden int sigfillset (sigset_t address@hidden)
-
address@hidden (POSIX.1):  @ref{Signal Sets}.
-
address@hidden SIGFPE
address@hidden int SIGFPE
-
address@hidden (ISO):  @ref{Program-Error Signals}.
-
address@hidden sighandler_t
address@hidden sighandler_t
-
address@hidden (GNU):  @ref{Basic Signal-Handling}.
-
address@hidden SIGHUP
address@hidden int SIGHUP
-
address@hidden (POSIX.1):  @ref{Termination Signals}.
-
address@hidden SIGILL
address@hidden int SIGILL
-
address@hidden (ISO):  @ref{Program-Error Signals}.
-
address@hidden SIGINFO
address@hidden int SIGINFO
-
address@hidden (BSD):  @ref{Miscellaneous Signals}.
-
address@hidden SIGINT
address@hidden int SIGINT
-
address@hidden (ISO):  @ref{Termination Signals}.
-
address@hidden siginterrupt
address@hidden int siginterrupt (int @var{signum}, int @var{failflag})
-
address@hidden (BSD):  @ref{BSD Handler}.
-
address@hidden SIGIO
address@hidden int SIGIO
-
address@hidden (BSD):  @ref{Asynchronous-I/O Signals}.
-
address@hidden SIGIOT
address@hidden int SIGIOT
-
address@hidden (Unix):  @ref{Program-Error Signals}.
-
address@hidden sigismember
address@hidden int sigismember (const sigset_t address@hidden, int @var{signum})
-
address@hidden (POSIX.1):  @ref{Signal Sets}.
-
address@hidden sigjmp_buf
address@hidden sigjmp_buf
-
address@hidden (POSIX.1):  @ref{Nonlocal Exits and Signals}.
-
address@hidden SIGKILL
address@hidden int SIGKILL
-
address@hidden (POSIX.1):  @ref{Termination Signals}.
-
address@hidden siglongjmp
address@hidden void siglongjmp (sigjmp_buf @var{state}, int @var{value})
-
address@hidden (POSIX.1):  @ref{Nonlocal Exits and Signals}.
-
address@hidden SIGLOST
address@hidden int SIGLOST
-
address@hidden (GNU):  @ref{Operation Error Signals}.
-
address@hidden sigmask
address@hidden int sigmask (int @var{signum})
-
address@hidden (BSD):  @ref{Blocking in BSD}.
-
address@hidden signal
address@hidden sighandler_t signal (int @var{signum}, sighandler_t @var{action})
-
address@hidden (ISO):  @ref{Basic Signal-Handling}.
-
address@hidden sigpause
address@hidden int sigpause (int @var{mask})
-
address@hidden (BSD):  @ref{Blocking in BSD}.
-
address@hidden sigpending
address@hidden int sigpending (sigset_t address@hidden)
-
address@hidden (POSIX.1):  @ref{Checking for Pending Signals}.
-
address@hidden SIGPIPE
address@hidden int SIGPIPE
-
address@hidden (POSIX.1):  @ref{Operation Error Signals}.
-
address@hidden SIGPOLL
address@hidden int SIGPOLL
-
address@hidden (SVID):  @ref{Asynchronous-I/O Signals}.
-
address@hidden sigprocmask
address@hidden int sigprocmask (int @var{how}, const sigset_t *restrict 
@var{set}, sigset_t *restrict @var{oldset})
-
address@hidden (POSIX.1):  @ref{Process Signal-Mask}.
-
address@hidden SIGPROF
address@hidden int SIGPROF
-
address@hidden (BSD):  @ref{Alarm Signals}.
-
address@hidden SIGQUIT
address@hidden int SIGQUIT
-
address@hidden (POSIX.1):  @ref{Termination Signals}.
-
address@hidden SIGSEGV
address@hidden int SIGSEGV
-
address@hidden (ISO):  @ref{Program-Error Signals}.
-
address@hidden sigsetjmp
address@hidden int sigsetjmp (sigjmp_buf @var{state}, int @var{savesigs})
-
address@hidden (POSIX.1):  @ref{Nonlocal Exits and Signals}.
-
address@hidden sigsetmask
address@hidden int sigsetmask (int @var{mask})
-
address@hidden (BSD):  @ref{Blocking in BSD}.
-
address@hidden SIG_SETMASK
address@hidden SIG_SETMASK
-
address@hidden (POSIX.1):  @ref{Process Signal-Mask}.
-
address@hidden sigset_t
address@hidden sigset_t
-
address@hidden (POSIX.1):  @ref{Signal Sets}.
-
address@hidden sigstack
address@hidden int sigstack (const struct sigstack address@hidden, struct 
sigstack address@hidden)
-
address@hidden (BSD):  @ref{Signal Stack}.
-
address@hidden SIGSTOP
address@hidden int SIGSTOP
-
address@hidden (POSIX.1):  @ref{Job Control Signals}.
-
address@hidden sigsuspend
address@hidden int sigsuspend (const sigset_t address@hidden)
-
address@hidden (POSIX.1):  @ref{Sigsuspend}.
-
address@hidden SIGSYS
address@hidden int SIGSYS
-
address@hidden (Unix):  @ref{Program-Error Signals}.
-
address@hidden SIGTERM
address@hidden int SIGTERM
-
address@hidden (ISO):  @ref{Termination Signals}.
-
address@hidden SIGTRAP
address@hidden int SIGTRAP
-
address@hidden (BSD):  @ref{Program-Error Signals}.
-
address@hidden SIGTSTP
address@hidden int SIGTSTP
-
address@hidden (POSIX.1):  @ref{Job Control Signals}.
-
address@hidden SIGTTIN
address@hidden int SIGTTIN
-
address@hidden (POSIX.1):  @ref{Job Control Signals}.
-
address@hidden SIGTTOU
address@hidden int SIGTTOU
-
address@hidden (POSIX.1):  @ref{Job Control Signals}.
-
address@hidden SIG_UNBLOCK
address@hidden SIG_UNBLOCK
-
address@hidden (POSIX.1):  @ref{Process Signal-Mask}.
-
address@hidden SIGURG
address@hidden int SIGURG
-
address@hidden (BSD):  @ref{Asynchronous-I/O Signals}.
-
address@hidden SIGUSR1
address@hidden int SIGUSR1
-
address@hidden (POSIX.1):  @ref{Miscellaneous Signals}.
-
address@hidden SIGUSR2
address@hidden int SIGUSR2
-
address@hidden (POSIX.1):  @ref{Miscellaneous Signals}.
-
address@hidden sigvec
address@hidden int sigvec (int @var{signum}, const struct sigvec 
address@hidden,struct sigvec address@hidden)
-
address@hidden (BSD):  @ref{BSD Handler}.
-
address@hidden SIGVTALRM
address@hidden int SIGVTALRM
-
address@hidden (BSD):  @ref{Alarm Signals}.
-
address@hidden sigwait
address@hidden int sigwait (const sigset_t address@hidden, int address@hidden)
-
address@hidden (POSIX):  @ref{Threads and Signal-Handling}.
-
address@hidden SIGWINCH
address@hidden int SIGWINCH
-
address@hidden (BSD):  @ref{Miscellaneous Signals}.
-
address@hidden SIGXCPU
address@hidden int SIGXCPU
-
address@hidden (BSD):  @ref{Operation Error Signals}.
-
address@hidden SIGXFSZ
address@hidden int SIGXFSZ
-
address@hidden (BSD):  @ref{Operation Error Signals}.
-
address@hidden S_IREAD
address@hidden S_IREAD
-
address@hidden/stat.h} (BSD):  @ref{Permission Bits}.
-
address@hidden S_IRGRP
address@hidden S_IRGRP
-
address@hidden/stat.h} (POSIX.1):  @ref{Permission Bits}.
-
address@hidden S_IROTH
address@hidden S_IROTH
-
address@hidden/stat.h} (POSIX.1):  @ref{Permission Bits}.
-
address@hidden S_IRUSR
address@hidden S_IRUSR
-
address@hidden/stat.h} (POSIX.1):  @ref{Permission Bits}.
-
address@hidden S_IRWXG
address@hidden S_IRWXG
-
address@hidden/stat.h} (POSIX.1):  @ref{Permission Bits}.
-
address@hidden S_IRWXO
address@hidden S_IRWXO
-
address@hidden/stat.h} (POSIX.1):  @ref{Permission Bits}.
-
address@hidden S_IRWXU
address@hidden S_IRWXU
-
address@hidden/stat.h} (POSIX.1):  @ref{Permission Bits}.
-
address@hidden S_ISBLK
address@hidden int S_ISBLK (mode_t @var{m})
-
address@hidden/stat.h} (POSIX):  @ref{Testing File-Type}.
-
address@hidden S_ISCHR
address@hidden int S_ISCHR (mode_t @var{m})
-
address@hidden/stat.h} (POSIX):  @ref{Testing File-Type}.
-
address@hidden S_ISDIR
address@hidden int S_ISDIR (mode_t @var{m})
-
address@hidden/stat.h} (POSIX):  @ref{Testing File-Type}.
-
address@hidden S_ISFIFO
address@hidden int S_ISFIFO (mode_t @var{m})
-
address@hidden/stat.h} (POSIX):  @ref{Testing File-Type}.
-
address@hidden S_ISGID
address@hidden S_ISGID
-
address@hidden/stat.h} (POSIX):  @ref{Permission Bits}.
-
address@hidden S_ISLNK
address@hidden int S_ISLNK (mode_t @var{m})
-
address@hidden/stat.h} (GNU):  @ref{Testing File-Type}.
-
address@hidden S_ISREG
address@hidden int S_ISREG (mode_t @var{m})
-
address@hidden/stat.h} (POSIX):  @ref{Testing File-Type}.
-
address@hidden S_ISSOCK
address@hidden int S_ISSOCK (mode_t @var{m})
-
address@hidden/stat.h} (GNU):  @ref{Testing File-Type}.
-
address@hidden S_ISUID
address@hidden S_ISUID
-
address@hidden/stat.h} (POSIX):  @ref{Permission Bits}.
-
address@hidden S_ISVTX
address@hidden S_ISVTX
-
address@hidden/stat.h} (BSD):  @ref{Permission Bits}.
-
address@hidden S_IWGRP
address@hidden S_IWGRP
-
address@hidden/stat.h} (POSIX.1):  @ref{Permission Bits}.
-
address@hidden S_IWOTH
address@hidden S_IWOTH
-
address@hidden/stat.h} (POSIX.1):  @ref{Permission Bits}.
-
address@hidden S_IWRITE
address@hidden S_IWRITE
-
address@hidden/stat.h} (BSD):  @ref{Permission Bits}.
-
address@hidden S_IWUSR
address@hidden S_IWUSR
-
address@hidden/stat.h} (POSIX.1):  @ref{Permission Bits}.
-
address@hidden S_IXGRP
address@hidden S_IXGRP
-
address@hidden/stat.h} (POSIX.1):  @ref{Permission Bits}.
-
address@hidden S_IXOTH
address@hidden S_IXOTH
-
address@hidden/stat.h} (POSIX.1):  @ref{Permission Bits}.
-
address@hidden S_IXUSR
address@hidden S_IXUSR
-
address@hidden/stat.h} (POSIX.1):  @ref{Permission Bits}.
-
address@hidden size_t
address@hidden size_t
-
address@hidden (ISO):  @ref{Important Data Types}.
-
address@hidden SO_BROADCAST
address@hidden SO_BROADCAST
-
address@hidden/socket.h} (BSD):  @ref{Socket-Level Options}.
-
address@hidden SOCK_DGRAM
address@hidden int SOCK_DGRAM
-
address@hidden/socket.h} (BSD):  @ref{Communication Styles}.
-
address@hidden socket
address@hidden int socket (int @var{namespace}, int @var{style}, int 
@var{protocol})
-
address@hidden/socket.h} (BSD):  @ref{Creating a Socket}.
-
address@hidden socketpair
address@hidden int socketpair (int @var{namespace}, int @var{style}, int 
@var{protocol}, int @address@hidden)
-
address@hidden/socket.h} (BSD):  @ref{Socket Pairs}.
-
address@hidden SOCK_RAW
address@hidden int SOCK_RAW
-
address@hidden/socket.h} (BSD):  @ref{Communication Styles}.
-
address@hidden SOCK_RDM
address@hidden int SOCK_RDM
-
address@hidden/socket.h} (BSD):  @ref{Communication Styles}.
-
address@hidden SOCK_SEQPACKET
address@hidden int SOCK_SEQPACKET
-
address@hidden/socket.h} (BSD):  @ref{Communication Styles}.
-
address@hidden SOCK_STREAM
address@hidden int SOCK_STREAM
-
address@hidden/socket.h} (BSD):  @ref{Communication Styles}.
-
address@hidden SO_DEBUG
address@hidden SO_DEBUG
-
address@hidden/socket.h} (BSD):  @ref{Socket-Level Options}.
-
address@hidden SO_DONTROUTE
address@hidden SO_DONTROUTE
-
address@hidden/socket.h} (BSD):  @ref{Socket-Level Options}.
-
address@hidden SO_ERROR
address@hidden SO_ERROR
-
address@hidden/socket.h} (BSD):  @ref{Socket-Level Options}.
-
address@hidden SO_KEEPALIVE
address@hidden SO_KEEPALIVE
-
address@hidden/socket.h} (BSD):  @ref{Socket-Level Options}.
-
address@hidden SO_LINGER
address@hidden SO_LINGER
-
address@hidden/socket.h} (BSD):  @ref{Socket-Level Options}.
-
address@hidden SOL_SOCKET
address@hidden int SOL_SOCKET
-
address@hidden/socket.h} (BSD):  @ref{Socket-Level Options}.
-
address@hidden SO_OOBINLINE
address@hidden SO_OOBINLINE
-
address@hidden/socket.h} (BSD):  @ref{Socket-Level Options}.
-
address@hidden SO_RCVBUF
address@hidden SO_RCVBUF
-
address@hidden/socket.h} (BSD):  @ref{Socket-Level Options}.
-
address@hidden SO_REUSEADDR
address@hidden SO_REUSEADDR
-
address@hidden/socket.h} (BSD):  @ref{Socket-Level Options}.
-
address@hidden SO_SNDBUF
address@hidden SO_SNDBUF
-
address@hidden/socket.h} (BSD):  @ref{Socket-Level Options}.
-
address@hidden SO_STYLE
address@hidden SO_STYLE
-
address@hidden/socket.h} (GNU):  @ref{Socket-Level Options}.
-
address@hidden SO_TYPE
address@hidden SO_TYPE
-
address@hidden/socket.h} (BSD):  @ref{Socket-Level Options}.
-
address@hidden speed_t
address@hidden speed_t
-
address@hidden (POSIX.1):  @ref{Line Speed}.
-
address@hidden ssignal
address@hidden sighandler_t ssignal (int @var{signum}, sighandler_t 
@var{action})
-
address@hidden (SVID):  @ref{Basic Signal-Handling}.
-
address@hidden SSIZE_MAX
address@hidden int SSIZE_MAX
-
address@hidden (POSIX.1):  @ref{General Limits}.
-
address@hidden ssize_t
address@hidden ssize_t
-
address@hidden (POSIX.1):  @ref{I/O Primitives}.
-
address@hidden stack_t
address@hidden stack_t
-
address@hidden (XPG):  @ref{Signal Stack}.
-
address@hidden stat
address@hidden int stat (const char address@hidden, struct stat address@hidden)
-
address@hidden/stat.h} (POSIX.1):  @ref{Reading Attributes}.
-
address@hidden stat64
address@hidden int stat64 (const char address@hidden, struct stat64 
address@hidden)
-
address@hidden/stat.h} (Unix98):  @ref{Reading Attributes}.
-
address@hidden STDERR_FILENO
address@hidden STDERR_FILENO
-
address@hidden (POSIX.1):  @ref{Descriptors and Streams}.
-
address@hidden STDIN_FILENO
address@hidden STDIN_FILENO
-
address@hidden (POSIX.1):  @ref{Descriptors and Streams}.
-
address@hidden STDOUT_FILENO
address@hidden STDOUT_FILENO
-
address@hidden (POSIX.1):  @ref{Descriptors and Streams}.
-
address@hidden STREAM_MAX
address@hidden int STREAM_MAX
-
address@hidden (POSIX.1):  @ref{General Limits}.
-
address@hidden strsignal
address@hidden char * strsignal (int @var{signum})
-
address@hidden (GNU):  @ref{Signal Messages}.
-
address@hidden struct aiocb
address@hidden struct aiocb
-
address@hidden (POSIX.1b):  @ref{Asynchronous-I/O Signals}.
-
address@hidden struct aiocb64
address@hidden struct aiocb64
-
address@hidden (POSIX.1b):  @ref{Asynchronous-I/O Signals}.
-
address@hidden struct aioinit
address@hidden struct aioinit
-
address@hidden (GNU):  @ref{Configuration of AIO}.
-
address@hidden struct dirent
address@hidden struct dirent
-
address@hidden (POSIX.1):  @ref{Directory Entries}.
-
address@hidden struct exit_status
address@hidden struct exit_status
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden struct flock
address@hidden struct flock
-
address@hidden (POSIX.1):  @ref{File Locks}.
-
address@hidden struct fstab
address@hidden struct fstab
-
address@hidden (BSD):  @ref{fstab}.
-
address@hidden struct FTW
address@hidden struct FTW
-
address@hidden (XPG4.2):  @ref{Working with Directory Trees}.
-
address@hidden struct group
address@hidden struct group
-
address@hidden (POSIX.1):  @ref{Group Data Structure}.
-
address@hidden struct hostent
address@hidden struct hostent
-
address@hidden (BSD):  @ref{Host Names}.
-
address@hidden struct if_nameindex
address@hidden struct if_nameindex
-
address@hidden/if.h} (IPv6 basic API):  @ref{Interface Naming}.
-
address@hidden struct in6_addr
address@hidden struct in6_addr
-
address@hidden/in.h} (IPv6 basic API):  @ref{Host Address Data Type}.
-
address@hidden struct in_addr
address@hidden struct in_addr
-
address@hidden/in.h} (BSD):  @ref{Host Address Data Type}.
-
address@hidden struct iovec
address@hidden struct iovec
-
address@hidden/uio.h} (BSD):  @ref{Scatter-Gather}.
-
address@hidden struct linger
address@hidden struct linger
-
address@hidden/socket.h} (BSD):  @ref{Socket-Level Options}.
-
address@hidden struct mntent
address@hidden struct mntent
-
address@hidden (BSD):  @ref{mtab}.
-
address@hidden struct msghdr
address@hidden struct msghdr
-
address@hidden/socket.h} (BSD):  @ref{Receiving Datagrams}.
-
address@hidden struct netent
address@hidden struct netent
-
address@hidden (BSD):  @ref{Networks Database}.
-
address@hidden struct passwd
address@hidden struct passwd
-
address@hidden (POSIX.1):  @ref{User Data Structure}.
-
address@hidden struct protoent
address@hidden struct protoent
-
address@hidden (BSD):  @ref{Protocols Database}.
-
address@hidden struct rlimit
address@hidden struct rlimit
-
address@hidden/resource.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden struct rlimit64
address@hidden struct rlimit64
-
address@hidden/resource.h} (Unix98):  @ref{Limits on Resources}.
-
address@hidden struct rusage
address@hidden struct rusage
-
address@hidden/resource.h} (BSD):  @ref{Resource Usage}.
-
address@hidden struct sched_param
address@hidden struct sched_param
-
address@hidden (POSIX):  @ref{Basic Scheduling Functions}.
-
address@hidden struct servent
address@hidden struct servent
-
address@hidden (BSD):  @ref{Services Database}.
-
address@hidden struct sgttyb
address@hidden struct sgttyb
-
address@hidden (BSD):  @ref{BSD Terminal Modes}.
-
address@hidden struct sigaction
address@hidden struct sigaction
-
address@hidden (POSIX.1):  @ref{Advanced Signal-Handling}.
-
address@hidden struct sigstack
address@hidden struct sigstack
-
address@hidden (BSD):  @ref{Signal Stack}.
-
address@hidden struct sigvec
address@hidden struct sigvec
-
address@hidden (BSD):  @ref{BSD Handler}.
-
address@hidden struct sockaddr
address@hidden struct sockaddr
-
address@hidden/socket.h} (BSD):  @ref{Address Formats}.
-
address@hidden struct sockaddr_in
address@hidden struct sockaddr_in
-
address@hidden/in.h} (BSD):  @ref{Internet Address Formats}.
-
address@hidden struct sockaddr_un
address@hidden struct sockaddr_un
-
address@hidden/un.h} (BSD):  @ref{Local Namespace Details}.
-
address@hidden struct stat
address@hidden struct stat
-
address@hidden/stat.h} (POSIX.1):  @ref{Attribute Meanings}.
-
address@hidden struct stat64
address@hidden struct stat64
-
address@hidden/stat.h} (LFS):  @ref{Attribute Meanings}.
-
address@hidden struct termios
address@hidden struct termios
-
address@hidden (POSIX.1):  @ref{Mode Data Types}.
-
address@hidden struct utimbuf
address@hidden struct utimbuf
-
address@hidden (POSIX.1):  @ref{File Times}.
-
address@hidden struct utsname
address@hidden struct utsname
-
address@hidden/utsname.h} (POSIX.1):  @ref{Platform Type}.
-
address@hidden stty
address@hidden int stty (int @var{filedes}, struct sgttyb * attributes)
-
address@hidden (BSD):  @ref{BSD Terminal Modes}.
-
address@hidden S_TYPEISMQ
address@hidden int S_TYPEISMQ (struct stat address@hidden)
-
address@hidden/stat.h} (POSIX):  @ref{Testing File-Type}.
-
address@hidden S_TYPEISSEM
address@hidden int S_TYPEISSEM (struct stat address@hidden)
-
address@hidden/stat.h} (POSIX):  @ref{Testing File-Type}.
-
address@hidden S_TYPEISSHM
address@hidden int S_TYPEISSHM (struct stat address@hidden)
-
address@hidden/stat.h} (POSIX):  @ref{Testing File-Type}.
-
address@hidden SUN_LEN
address@hidden int SUN_LEN (@emph{struct sockaddr_un *} @var{ptr})
-
address@hidden/un.h} (BSD):  @ref{Local Namespace Details}.
-
address@hidden _SVID_SOURCE
address@hidden _SVID_SOURCE
-
-(GNU):  @ref{Feature-Test Macros}.
-
address@hidden SV_INTERRUPT
address@hidden int SV_INTERRUPT
-
address@hidden (BSD):  @ref{BSD Handler}.
-
address@hidden SV_ONSTACK
address@hidden int SV_ONSTACK
-
address@hidden (BSD):  @ref{BSD Handler}.
-
address@hidden SV_RESETHAND
address@hidden int SV_RESETHAND
-
address@hidden (Sun):  @ref{BSD Handler}.
-
address@hidden swapcontext
address@hidden int swapcontext (ucontext_t *restrict @var{oucp}, const 
ucontext_t *restrict @var{ucp})
-
address@hidden (SVID):  @ref{System V contexts}.
-
address@hidden symlink
address@hidden int symlink (const char address@hidden, const char 
address@hidden)
-
address@hidden (BSD):  @ref{Symbolic Links}.
-
address@hidden SYMLINK_MAX
address@hidden SYMLINK_MAX
-
address@hidden (POSIX.1):  @ref{File Minimums}.
-
address@hidden sync
address@hidden int sync (void)
-
address@hidden (X/Open):  @ref{Synchronizing I/O}.
-
address@hidden sysconf
address@hidden long int sysconf (int @var{parameter})
-
address@hidden (POSIX.1):  @ref{Sysconf Definition}.
-
address@hidden sysctl
address@hidden int sysctl (int address@hidden, int @var{nlen}, void 
address@hidden,
-
address@hidden (BSD):  @ref{System Parameters}.
-
address@hidden syslog
address@hidden void syslog (int @var{facility_priority}, char address@hidden, 
...)
-
address@hidden (BSD):  @ref{syslog; vsyslog}.
-
address@hidden system
address@hidden int system (const char address@hidden)
-
address@hidden (ISO):  @ref{Running a Command}.
-
address@hidden sysv_signal
address@hidden sighandler_t sysv_signal (int @var{signum}, sighandler_t 
@var{action})
-
address@hidden (GNU):  @ref{Basic Signal-Handling}.
-
address@hidden tcdrain
address@hidden int tcdrain (int @var{filedes})
-
address@hidden (POSIX.1):  @ref{Line Control}.
-
address@hidden tcflag_t
address@hidden tcflag_t
-
address@hidden (POSIX.1):  @ref{Mode Data Types}.
-
address@hidden tcflow
address@hidden int tcflow (int @var{filedes}, int @var{action})
-
address@hidden (POSIX.1):  @ref{Line Control}.
-
address@hidden tcflush
address@hidden int tcflush (int @var{filedes}, int @var{queue})
-
address@hidden (POSIX.1):  @ref{Line Control}.
-
address@hidden tcgetattr
address@hidden int tcgetattr (int @var{filedes}, struct termios address@hidden)
-
address@hidden (POSIX.1):  @ref{Mode Functions}.
-
address@hidden tcgetpgrp
address@hidden pid_t tcgetpgrp (int @var{filedes})
-
address@hidden (POSIX.1):  @ref{Terminal Access Functions}.
-
address@hidden tcgetsid
address@hidden pid_t tcgetsid (int @var{fildes})
-
address@hidden (Unix98):  @ref{Terminal Access Functions}.
-
address@hidden TCSADRAIN
address@hidden TCSADRAIN
-
address@hidden (POSIX.1):  @ref{Mode Functions}.
-
address@hidden TCSAFLUSH
address@hidden TCSAFLUSH
-
address@hidden (POSIX.1):  @ref{Mode Functions}.
-
address@hidden TCSANOW
address@hidden TCSANOW
-
address@hidden (POSIX.1):  @ref{Mode Functions}.
-
address@hidden TCSASOFT
address@hidden TCSASOFT
-
address@hidden (BSD):  @ref{Mode Functions}.
-
address@hidden tcsendbreak
address@hidden int tcsendbreak (int @var{filedes}, int @var{duration})
-
address@hidden (POSIX.1):  @ref{Line Control}.
-
address@hidden tcsetattr
address@hidden int tcsetattr (int @var{filedes}, int @var{when}, const struct 
termios address@hidden)
-
address@hidden (POSIX.1):  @ref{Mode Functions}.
-
address@hidden tcsetpgrp
address@hidden int tcsetpgrp (int @var{filedes}, pid_t @var{pgid})
-
address@hidden (POSIX.1):  @ref{Terminal Access Functions}.
-
address@hidden telldir
address@hidden off_t telldir (DIR address@hidden)
-
address@hidden (BSD):  @ref{Random Access Directory}.
-
address@hidden TEMP_FAILURE_RETRY
address@hidden TEMP_FAILURE_RETRY (@var{expression})
-
address@hidden (GNU):  @ref{Interrupted Primitives}.
-
address@hidden tempnam
address@hidden char * tempnam (const char address@hidden, const char 
address@hidden)
-
address@hidden (SVID):  @ref{Temporary Files}.
-
address@hidden tmpfile
address@hidden FILE * tmpfile (void)
-
address@hidden (ISO):  @ref{Temporary Files}.
-
address@hidden tmpfile64
address@hidden FILE * tmpfile64 (void)
-
address@hidden (Unix98):  @ref{Temporary Files}.
-
address@hidden TMP_MAX
address@hidden int TMP_MAX
-
address@hidden (ISO):  @ref{Temporary Files}.
-
address@hidden tmpnam
address@hidden char * tmpnam (char address@hidden)
-
address@hidden (ISO):  @ref{Temporary Files}.
-
address@hidden tmpnam_r
address@hidden char * tmpnam_r (char address@hidden)
-
address@hidden (GNU):  @ref{Temporary Files}.
-
address@hidden TOSTOP
address@hidden tcflag_t TOSTOP
-
address@hidden (POSIX.1):  @ref{Local Modes}.
-
address@hidden truncate
address@hidden int truncate (const char address@hidden, off_t @var{length})
-
address@hidden (X/Open):  @ref{File Size}.
-
address@hidden truncate64
address@hidden int truncate64 (const char address@hidden, off64_t @var{length})
-
address@hidden (Unix98):  @ref{File Size}.
-
address@hidden TRY_AGAIN
address@hidden TRY_AGAIN
-
address@hidden (BSD):  @ref{Host Names}.
-
address@hidden ttyname
address@hidden char * ttyname (int @var{filedes})
-
address@hidden (POSIX.1):  @ref{Is It a Terminal}.
-
address@hidden ttyname_r
address@hidden int ttyname_r (int @var{filedes}, char address@hidden, size_t 
@var{len})
-
address@hidden (POSIX.1):  @ref{Is It a Terminal}.
-
address@hidden TZNAME_MAX
address@hidden int TZNAME_MAX
-
address@hidden (POSIX.1):  @ref{General Limits}.
-
address@hidden UCHAR_MAX
address@hidden UCHAR_MAX
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden ucontext_t
address@hidden ucontext_t
-
address@hidden (SVID):  @ref{System V contexts}.
-
address@hidden uid_t
address@hidden uid_t
-
address@hidden/types.h} (POSIX.1):  @ref{Reading Persona}.
-
address@hidden UINT_MAX
address@hidden UINT_MAX
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden ulimit
address@hidden int ulimit (int @var{cmd}, ...)
-
address@hidden (BSD):  @ref{Limits on Resources}.
-
address@hidden ULONG_LONG_MAX
address@hidden ULONG_LONG_MAX
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden ULONG_MAX
address@hidden ULONG_MAX
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden umask
address@hidden mode_t umask (mode_t @var{mask})
-
address@hidden/stat.h} (POSIX.1):  @ref{Setting Permissions}.
-
address@hidden umount
address@hidden int umount (const char address@hidden)
-
address@hidden/mount.h} (SVID, GNU):  @ref{Mount-Unmount-Remount}.
-
address@hidden umount2
address@hidden int umount2 (const char address@hidden, int @var{flags})
-
address@hidden/mount.h} (GNU):  @ref{Mount-Unmount-Remount}.
-
address@hidden uname
address@hidden int uname (struct utsname address@hidden)
-
address@hidden/utsname.h} (POSIX.1):  @ref{Platform Type}.
-
address@hidden union wait
address@hidden union wait
-
address@hidden/wait.h} (BSD):  @ref{BSD Wait Functions}.
-
address@hidden unlink
address@hidden int unlink (const char address@hidden)
-
address@hidden (POSIX.1):  @ref{Deleting Files}.
-
address@hidden unlockpt
address@hidden int unlockpt (int @var{filedes})
-
address@hidden (SVID, XPG4.2):  @ref{Allocation}.
-
address@hidden updwtmp
address@hidden void updwtmp (const char address@hidden, const struct utmp 
address@hidden)
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden USER_PROCESS
address@hidden USER_PROCESS
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden USER_PROCESS
address@hidden USER_PROCESS
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden USHRT_MAX
address@hidden USHRT_MAX
-
address@hidden (ISO):  @ref{Range of Type}.
-
address@hidden utime
address@hidden int utime (const char address@hidden, const struct utimbuf 
address@hidden)
-
address@hidden (POSIX.1):  @ref{File Times}.
-
address@hidden utimes
address@hidden int utimes (const char address@hidden, struct timeval 
@address@hidden)
-
address@hidden/time.h} (BSD):  @ref{File Times}.
-
address@hidden utmpname
address@hidden int utmpname (const char address@hidden)
-
address@hidden (SVID):  @ref{Manipulating the Database}.
-
address@hidden utmpxname
address@hidden int utmpxname (const char address@hidden)
-
address@hidden (XPG4.2):  @ref{XPG Functions}.
-
address@hidden va_alist
address@hidden va_alist
-
address@hidden (Unix):  @ref{Old Varargs}.
-
address@hidden va_arg
address@hidden @var{type} va_arg (va_list @var{ap}, @var{type})
-
address@hidden (ISO):  @ref{Argument Macros}.
-
address@hidden __va_copy
address@hidden void __va_copy (va_list @var{dest}, va_list @var{src})
-
address@hidden (GNU):  @ref{Argument Macros}.
-
address@hidden va_dcl
address@hidden va_dcl
-
address@hidden (Unix):  @ref{Old Varargs}.
-
address@hidden va_end
address@hidden void va_end (va_list @var{ap})
-
address@hidden (ISO):  @ref{Argument Macros}.
-
address@hidden va_list
address@hidden va_list
-
address@hidden (ISO):  @ref{Argument Macros}.
-
address@hidden va_start
address@hidden void va_start (va_list @var{ap})
-
address@hidden (Unix):  @ref{Old Varargs}.
-
address@hidden va_start
address@hidden void va_start (va_list @var{ap}, @var{last-required})
-
address@hidden (ISO):  @ref{Argument Macros}.
-
address@hidden VDISCARD
address@hidden int VDISCARD
-
address@hidden (BSD):  @ref{Other Special}.
-
address@hidden VDSUSP
address@hidden int VDSUSP
-
address@hidden (BSD):  @ref{Signal Characters}.
-
address@hidden VEOF
address@hidden int VEOF
-
address@hidden (POSIX.1):  @ref{Editing Characters}.
-
address@hidden VEOL
address@hidden int VEOL
-
address@hidden (POSIX.1):  @ref{Editing Characters}.
-
address@hidden VEOL2
address@hidden int VEOL2
-
address@hidden (BSD):  @ref{Editing Characters}.
-
address@hidden VERASE
address@hidden int VERASE
-
address@hidden (POSIX.1):  @ref{Editing Characters}.
-
address@hidden versionsort
address@hidden int versionsort (const void address@hidden, const void 
address@hidden)
-
address@hidden (GNU):  @ref{Scanning Directory Content}.
-
address@hidden versionsort64
address@hidden int versionsort64 (const void address@hidden, const void 
address@hidden)
-
address@hidden (GNU):  @ref{Scanning Directory Content}.
-
address@hidden vfork
address@hidden pid_t vfork (void)
-
address@hidden (BSD):  @ref{Creating a Process}.
-
address@hidden VINTR
address@hidden int VINTR
-
address@hidden (POSIX.1):  @ref{Signal Characters}.
-
address@hidden VKILL
address@hidden int VKILL
-
address@hidden (POSIX.1):  @ref{Editing Characters}.
-
address@hidden vlimit
address@hidden int vlimit (int @var{resource}, int @var{limit})
-
address@hidden/vlimit.h} (BSD):  @ref{Limits on Resources}.
-
address@hidden VLNEXT
address@hidden int VLNEXT
-
address@hidden (BSD):  @ref{Other Special}.
-
address@hidden VMIN
address@hidden int VMIN
-
address@hidden (POSIX.1):  @ref{Noncanonical Input}.
-
address@hidden VQUIT
address@hidden int VQUIT
-
address@hidden (POSIX.1):  @ref{Signal Characters}.
-
address@hidden VREPRINT
address@hidden int VREPRINT
-
address@hidden (BSD):  @ref{Editing Characters}.
-
address@hidden VSTART
address@hidden int VSTART
-
address@hidden (POSIX.1):  @ref{Start/Stop Characters}.
-
address@hidden VSTATUS
address@hidden int VSTATUS
-
address@hidden (BSD):  @ref{Other Special}.
-
address@hidden VSTOP
address@hidden int VSTOP
-
address@hidden (POSIX.1):  @ref{Start/Stop Characters}.
-
address@hidden VSUSP
address@hidden int VSUSP
-
address@hidden (POSIX.1):  @ref{Signal Characters}.
-
address@hidden vsyslog
address@hidden void vsyslog (int @var{facility_priority}, char address@hidden, 
va_list arglist)
-
address@hidden (BSD):  @ref{syslog; vsyslog}.
-
address@hidden VTIME
address@hidden int VTIME
-
address@hidden (POSIX.1):  @ref{Noncanonical Input}.
-
address@hidden vtimes
address@hidden int vtimes (struct vtimes @var{current}, struct vtimes 
@var{child})
-
address@hidden (vtimes.h):  @ref{Resource Usage}.
-
address@hidden VWERASE
address@hidden int VWERASE
-
address@hidden (BSD):  @ref{Editing Characters}.
-
address@hidden wait
address@hidden pid_t wait (int address@hidden)
-
address@hidden/wait.h} (POSIX.1):  @ref{Process Completion}.
-
address@hidden wait3
address@hidden pid_t wait3 (union wait address@hidden, int @var{options}, 
struct rusage address@hidden)
-
address@hidden/wait.h} (BSD):  @ref{BSD Wait Functions}.
-
address@hidden wait4
address@hidden pid_t wait4 (pid_t @var{pid}, int address@hidden, int 
@var{options}, struct rusage address@hidden)
-
address@hidden/wait.h} (BSD):  @ref{Process Completion}.
-
address@hidden waitpid
address@hidden pid_t waitpid (pid_t @var{pid}, int address@hidden, int 
@var{options})
-
address@hidden/wait.h} (POSIX.1):  @ref{Process Completion}.
-
address@hidden WCHAR_MAX
address@hidden WCHAR_MAX
-
address@hidden (GNU):  @ref{Range of Type}.
-
address@hidden WCOREDUMP
address@hidden int WCOREDUMP (int @var{status})
-
address@hidden/wait.h} (BSD):  @ref{Process-Completion Status}.
-
address@hidden WEXITSTATUS
address@hidden int WEXITSTATUS (int @var{status})
-
address@hidden/wait.h} (POSIX.1):  @ref{Process-Completion Status}.
-
address@hidden WIFEXITED
address@hidden int WIFEXITED (int @var{status})
-
address@hidden/wait.h} (POSIX.1):  @ref{Process-Completion Status}.
-
address@hidden WIFSIGNALED
address@hidden int WIFSIGNALED (int @var{status})
-
address@hidden/wait.h} (POSIX.1):  @ref{Process-Completion Status}.
-
address@hidden WIFSTOPPED
address@hidden int WIFSTOPPED (int @var{status})
-
address@hidden/wait.h} (POSIX.1):  @ref{Process-Completion Status}.
-
address@hidden W_OK
address@hidden int W_OK
-
address@hidden (POSIX.1):  @ref{Testing File Access}.
-
address@hidden write
address@hidden ssize_t write (int @var{filedes}, const void address@hidden, 
size_t @var{size})
-
address@hidden (POSIX.1):  @ref{I/O Primitives}.
-
address@hidden writev
address@hidden ssize_t writev (int @var{filedes}, const struct iovec 
address@hidden, int @var{count})
-
address@hidden/uio.h} (BSD):  @ref{Scatter-Gather}.
-
address@hidden WSTOPSIG
address@hidden int WSTOPSIG (int @var{status})
-
address@hidden/wait.h} (POSIX.1):  @ref{Process-Completion Status}.
-
address@hidden WTERMSIG
address@hidden int WTERMSIG (int @var{status})
-
address@hidden/wait.h} (POSIX.1):  @ref{Process-Completion Status}.
-
address@hidden X_OK
address@hidden int X_OK
-
address@hidden (POSIX.1):  @ref{Testing File Access}.
-
address@hidden _XOPEN_SOURCE
address@hidden _XOPEN_SOURCE
-
-(X/Open):  @ref{Feature-Test Macros}.
-
address@hidden _XOPEN_SOURCE_EXTENDED
address@hidden _XOPEN_SOURCE_EXTENDED
-
-(X/Open):  @ref{Feature-Test Macros}.
-
address@hidden This file is generated by summary.awk from the Texinfo sources.
-
address@hidden table
address@hidden
address@hidden @rm
address@hidden iftex
-
address@hidden Installation
address@hidden %MENU% How to install the GNU C Library
address@hidden Installing the @acronym{GNU} C Library
-
-Before you do anything else, you should read the file @file{FAQ} located
-at the top level of the source tree.  This file answers common questions
-and describes problems you may experience with compilation and
-installation.  It is updated more frequently than this manual.
-
-Features can be added to @acronym{GNU} libc via @dfn{add-on} bundles.
-These are separate tar files, which you unpack into the top level of
-the source tree.  Then you give @code{configure} the
address@hidden option to activate them, and they will be
-compiled into the library.  As of the 2.2 release, one important
-component of glibc is distributed as ``official'' add-ons---the
-LinuxThreads add-on.  Unless you are doing an unusual installation,
-you should get this.
-
-Support for @acronym{POSIX} threads is maintained by someone else, so
-it's in a separate package.  It is only available for
address@hidden/Linux systems, but this will change in the future.  Get
-it from the same place you got the main bundle; the file is
address@hidden@var{VERSION}.tar.gz}.
-
-You will need recent versions of several @acronym{GNU}
-tools---definitely @acronym{GCC} and @acronym{GNU} Make, and possibly
-others (@pxref{Tools for Compilation}).
-
address@hidden Configuring and Compiling
address@hidden Configuring and Compiling @acronym{GNU} libc
address@hidden configuring
address@hidden compiling
-
address@hidden libc can be compiled in the source directory, but we
-strongly advise building it in a separate build directory.  For
-example, if you have unpacked the glibc sources in
address@hidden/src/gnu/glibc-2.3}, create a directory
address@hidden/src/gnu/glibc-build} to put the object files in.  This allows
-removing the whole build directory in case an error occurs, which is
-the safest way to get a fresh start and should always be done.
-
->From your object directory, run the shell script @file{configure}
-located at the top level of the source tree.  In the scenario above,
-you'd type:
-
address@hidden
-$ ../glibc-2.3/configure @address@hidden
address@hidden smallexample
-
-Please note that even if you're building in a separate build directory,
-the compilation needs to modify a few files in the source
-directory, especially some files in the manual subdirectory.
-
address@hidden
address@hidden takes many options, but you can get away with knowing
-only two: @samp{--prefix} and @samp{--enable-add-ons}.  The
address@hidden option tells @code{configure} where you want glibc
-installed. This defaults to @file{/usr/local}.  The
address@hidden option tells @code{configure} to use all the
-add-on bundles it finds in the source directory.  Since important
-functionality is provided in add-ons, you should always specify this
-option.
-
-It may also be useful to set the @var{CC} and @var{CFLAGS} variables in
-the environment when running @code{configure}.  @var{CC} selects the C
-compiler that will be used, and @var{CFLAGS} sets optimization options
-for the compiler.
-
-The following list describes all of the available options for
- @code{configure}:
-
address@hidden @samp
address@hidden address@hidden
-Install machine-independent data files in subdirectories of
address@hidden@var{directory}}.  The default is to install in @file{/usr/local}.
-
address@hidden address@hidden
-Install the library and other machine-dependent files in subdirectories
-of @address@hidden  The default is to the @samp{--prefix}
-directory if that option is specified, or @file{/usr/local} otherwise.
-
address@hidden address@hidden
-Look for kernel header files in @var{directory}, not
address@hidden/usr/include}.  Glibc needs information from the kernel's private
-header files.  Glibc will normally look in @file{/usr/include} for them,
-but if you specify this option, it will look in @var{DIRECTORY} instead.
-
-This option is primarily of use on a system where the headers in
address@hidden/usr/include} come from an older version of glibc.  Conflicts
-can occasionally happen in this case.  Linux libc5 qualifies as an
-older version of glibc.  You can also use this option if you want to
-compile glibc with a newer set of kernel headers than the ones found
-in @file{/usr/include}.
-
address@hidden address@hidden
-Enable add-on packages in your source tree.  If this option is specified
-with no list, it enables all the add-on packages it finds.  If you do
-not wish to use some add-on packages that you have present in your source
-tree, give this option a list of the add-ons that you @emph{do} want
-used, like this: @samp{--enable-add-ons=linuxthreads}
-
address@hidden address@hidden
-This option is currently only useful on @acronym{GNU}/Linux systems.  The
address@hidden parameter should have the form X.Y.Z and describes the
-smallest version of the Linux kernel the generated library is expected
-to support.  The higher the @var{version} number is, the less
-compatibility code is added, and the faster the code gets.
-
address@hidden address@hidden
-Use the binutils (assembler and linker) in @address@hidden, not
-the ones the C compiler would default to.  You can use this option if
-the default binutils on your system cannot deal with all the constructs
-in the @acronym{GNU} C Library.  In that case, @code{configure} will detect the
-problem and suppress these constructs, so that the library will still be
-usable, but functionality may be lost---for example, you can't build a
-shared libc with old binutils.
-
address@hidden --without-fp
-Use this option if your computer lacks hardware floating-point support
-and your operating system does not emulate an @acronym{FPU}.
-
address@hidden disable static doesn't work currently
address@hidden @item --disable-static
address@hidden Don't build static libraries.  Static libraries aren't that 
useful
address@hidden days, but we recommend you build them in case you need them.
-
address@hidden --disable-shared
-Don't build shared libraries even if it is possible.  Not all systems
-support shared libraries; you need @acronym{ELF} support and (currently) the 
@acronym{GNU}
-linker.
-
address@hidden --disable-profile
-Don't build libraries with profiling information.  You may want to use
-this option if you don't plan to do profiling.
-
address@hidden --enable-omitfp
-Use maximum optimization for the normal (static and shared)
-libraries, and compile separate static libraries with debugging
-information and no optimization.  We recommend not doing this.  The extra
-optimization doesn't gain you much, it may provoke compiler bugs, and you
-won't be able to trace bugs through the C library.
-
address@hidden --disable-versioning
-Don't compile the shared libraries with symbol version information.
-Doing this will make the resulting library incompatible with old
-binaries, so it's not recommended.
-
address@hidden --enable-static-nss
-Compile static versions of the @acronym{NSS} (Name-Service Switch)
-libraries.  This is not recommended because it defeats the purpose of
address@hidden; a program linked statically with the @acronym{NSS}
-libraries cannot be dynamically reconfigured to use a different name
-database.
-
address@hidden --without-tls
-By default, the C library is built with support for thread-local
-storage if the tools used support it.  By using @samp{--without-tls}
-this can be prevented, though there generally is no reason, since
-using this option creates compatibility problems.
-
address@hidden address@hidden
address@hidden address@hidden
-These options are for cross-compiling.  If you specify both options
-and @var{build-system} is different from @var{host-system},
address@hidden will prepare to cross-compile glibc from
address@hidden to be used on @var{host-system}.  You'll probably
-need the @samp{--with-headers} option too, and you may have to
-override @command{configure}'s selection of the compiler and/or
-binutils.
-
-If you only specify @samp{--host}, @code{configure} will prepare for a
-native compile but use what you specify instead of guessing what your
-system is. This is most useful to change the @acronym{CPU} submodel.  For 
example,
-if @code{configure} guesses your machine as @code{i586-pc-linux-gnu} but
-you want to compile a library for 386es, give
address@hidden or just @samp{--host=i386-linux} and add
-the appropriate compiler flags (@samp{-mcpu=i386} will do the trick) to
address@hidden
-
-If you specify just @samp{--build}, @code{configure} will get confused.
address@hidden table
-
-To build the library and related programs, type @code{make}.  This will
-produce a lot of output, some of which may look like errors from
address@hidden but isn't.  Look for error messages from @code{make}
-containing @samp{***}.  Those indicate that something is seriously wrong.
-
-The compilation process can take several hours.  Expect at least two
-hours for the default configuration on i586 for @acronym{GNU}/Linux.  For Hurd,
-times are much longer.  Some complex modules may take a very long time
-to compile, as much as several minutes on slower machines.  Do not
-panic if the compiler appears to hang.
-
-If you want to run a parallel make, simply pass the @samp{-j} option
-with an appropriate numeric parameter to @code{make}.  You need a recent
address@hidden @code{make} version, though.
-
-To build and run test programs that exercise some of the library
-facilities, type @code{make check}.  If it does not complete
-successfully, do not use the built library, and report a bug after
-verifying that the problem is not already known (@pxref{Reporting
-Bugs}).  Some of the tests assume they are not being run by
address@hidden  We recommend you compile and test glibc as an
-unprivileged user.
-
-Before reporting bugs, make sure there is no problem with your system.
-The tests (and later installation) use some preexisting files of the
-system such as @file{/etc/passwd}, @file{/etc/nsswitch.conf} and
-others.  These files must all contain correct and sensible content.
-
-To format the @acronym{GNU} C Library reference manuals for printing,
-type @address@hidden dvi}}.  You need a working @TeX{} installation to
-do this.  The distribution already includes the on-line formatted
-version of the manual, as Info files.  You can regenerate those with
address@hidden@code{make info}}, but it shouldn't be necessary.
-
-The library has a number of special-purpose configuration parameters
-that you can find in @file{Makeconfig}.  These can be overwritten with
-the file @file{configparms}.  To change them, create a
address@hidden in your build directory and add values as
-appropriate for your system.  The file is included and parsed by
address@hidden and has to follow the conventions for makefiles.
-
-It is easy to configure the @acronym{GNU} C Library for cross-compilation by
-setting a few variables in @file{configparms}.  Set @code{CC} to the
-cross-compiler for the target you configured the library for; it is
-important to use this same @code{CC} value when running
address@hidden, like this: @address@hidden configure
address@hidden  Set @code{BUILD_CC} to the compiler to use for programs
-run on the build system as part of compiling the library.  You may need to
-set @code{AR} and @code{RANLIB} to cross-compiling versions of @code{ar}
-and @code{ranlib} if the native tools are not configured to work with
-object files for the target you configured for.
-
-
address@hidden Running make install
address@hidden Installing the C Library
address@hidden installing
-
-To install the library and its header files, and the Info files of the
-manual, type @code{env LANGUAGE=C LC_ALL=C make install}.  This will
-build things, if necessary, before installing them; however, you should
-still compile everything first.  If you are installing glibc as your
-primary C library, we recommend that you shut the system down to
-single-user mode first, and reboot afterward.  This minimizes the risk
-of breaking things when the library changes out from underneath.
-
-If you're upgrading from Linux libc5 or some other C library, you need to
-replace the @file{/usr/include} with a fresh directory before installing
-it.  The new @file{/usr/include} should contain the Linux headers, but
-nothing else.
-
-You must first build the library (@samp{make}), optionally check it
-(@samp{make check}), switch the include directories, and then install
-(@samp{make install}).  The steps must be done in this order.  Not
-moving the directory before install will result in an unusable mixture
-of header files from both libraries, but configuring, building, and
-checking the library requires the ability to compile and run programs
-against the old library.
-
-If you are upgrading from a previous installation of glibc 2.0 or 2.1,
address@hidden install} will do the entire job.  You do not need to remove
-the old includes---if you want to do so anyway, you must then follow
-the order given above.
-
-You may also need to reconfigure @acronym{GCC} to work with the new library.  
The
-easiest way to do that is to figure out the compiler switches to make it
-work again (@samp{-Wl,--dynamic-linker=/lib/ld-linux.so.2} should work on
address@hidden/Linux systems) and use them to recompile gcc.  You can also edit 
the specs
-file (@file{/usr/lib/gcc-lib/@var{TARGET}/@var{VERSION}/specs}), but that
-is a bit of a black art.
-
-You can install glibc somewhere other than where you configured it to go
-by setting the @code{install_root} variable on the command line for
address@hidden install}.  The value of this variable is prepended to all the
-paths for installation.  This is useful when setting up a chroot
-environment or preparing a binary distribution.  The directory should be
-specified with an absolute file-name.
-
-Glibc 2.2 includes a daemon called @code{nscd}, which you may or may
-not want to run.  @code{nscd} caches name-service lookups; it can
-dramatically improve performance with @acronym{NIS}+, and may help
-with @acronym{DNS} as well.
-
-One auxiliary program, @file{/usr/libexec/pt_chown}, is installed setuid
address@hidden  This program is invoked by the @code{grantpt} function; it
-sets the permissions on a pseudoterminal so it can be used by the
-calling process.  This means programs like @code{xterm} and
address@hidden do not have to be setuid to get a pty.  (There may be
-other reasons why they need privileges.)  If you are using a 2.1 or
-newer Linux kernel with the @code{devptsfs} or @code{devfs} file-systems
-providing pty slaves, you don't need this program; otherwise you do.
-The source for @file{pt_chown} is in @file{login/programs/pt_chown.c}.
-
-After installation, you might want to configure the time zone and
-locale installation of your system.  The @acronym{GNU} C Library comes
-with a locale database that gets configured with @code{localedef}.
-For example, to set up a German locale with name @code{de_DE}, simply
-issue the command @samp{localedef -i de_DE -f ISO-8859-1 de_DE}.  To
-configure all locales that are supported by glibc, you can issue from
-your build directory the command @samp{make
-localedata/install-locales}.
-
-To configure the locally used timezone, set the @code{TZ} environment
-variable.  The script @code{tzselect} helps you to select the right
-value.  As an example, for Germany, @code{tzselect} would tell you to
-use @samp{TZ='Europe/Berlin'}.  For a system-wide installation (the
-given paths are for an installation with @samp{--prefix=/usr}), link
-the time zone file that is in @file{/usr/share/zoneinfo} to the file
address@hidden/etc/localtime}.  For Germany, you might execute @samp{ln -s
-/usr/share/zoneinfo/Europe/Berlin /etc/localtime}.
-
address@hidden Tools for Compilation
address@hidden Recommended Tools for Compilation
address@hidden installation tools
address@hidden tools, for installing library
-
-We recommend installing the following @acronym{GNU} tools before attempting to
-build the @acronym{GNU} C Library:
-
address@hidden @bullet
address@hidden
address@hidden @code{make} 3.79 or newer
-
-You need the latest version of @acronym{GNU} @code{make}.  Modifying
-the @acronym{GNU} C Library to work with other @code{make} programs
-would be so difficult that we recommend you port @acronym{GNU}
address@hidden instead.  We recommend @acronym{GNU} @code{make} version
-3.79.  All earlier versions have severe bugs or lack features.
-
address@hidden
address@hidden 3.2 or newer
-
-The @acronym{GNU} C Library can only be compiled with the
address@hidden C Compiler family.  As of the 2.3 release, @acronym{GCC}
-3.2 or higher is required.  As of this writing, @acronym{GCC} 3.2 is
-the compiler we advise to use.
-
-You can use whatever compiler you like to compile programs that use 
@acronym{GNU}
-libc, but be aware that both @acronym{GCC} 2.7 and 2.8 have bugs in their
-floating-point support that may be triggered by the math library.
-
-Check the @acronym{FAQ} for any special compiler issues on particular 
platforms.
-
address@hidden
address@hidden @code{binutils} 2.13 or later
-
-You must use @acronym{GNU} @code{binutils} (as and ld) to build the
address@hidden C Library.  No other assembler and linker has the
-necessary functionality at the moment.
-
address@hidden
address@hidden @code{texinfo} 3.12f
-
-To correctly translate and install the Texinfo documentation, you need
-this version of the @code{texinfo} package.  Earlier versions do not
-understand all the tags used in the document, and the installation
-mechanism for the info files is not present or works differently.
-
address@hidden
address@hidden @code{awk} 3.0, or some other @acronym{POSIX} awk
-
address@hidden is used in several places to generate files.  The scripts
-should work with any @acronym{POSIX}-compliant @code{awk} implementation;
address@hidden 3.0 and @code{mawk} 1.3 are known to work.
-
address@hidden
-Perl 5
-
-Perl is not required, but it is used if present to test the
-installation.  We may decide to use it elsewhere in the future.
-
address@hidden
address@hidden @code{sed} 3.02 or newer
-
address@hidden is used in several places to generate files.  Most scripts
-work with any version of @code{sed}.  The known exception is the
-script @code{po2test.sed} in the @code{intl} subdirectory, which is
-used to generate @code{msgs.h} for the test suite.  This script works
-correctly only with @acronym{GNU} @code{sed} 3.02.  If you like to run
-the test suite, you should definitely upgrade @code{sed}.
-
address@hidden
-If you change any of the @file{configure.in} files, you will also need
address@hidden @code{autoconf} 2.12 or higher.
-
address@hidden
-If you change any of the message translation files, you will need
address@hidden @code{gettext} 0.10.36 or later.
-
address@hidden itemize
-
address@hidden
-You may also need these packages if you upgrade your source tree using
-patches, although we try to avoid this.
-
address@hidden Supported Configurations
address@hidden Supported Configurations
address@hidden configurations, all supported
-
-The @acronym{GNU} C Library currently supports configurations that match the
-following patterns:
-
address@hidden
address@hidden@var{*}-linux
address@hidden
address@hidden
address@hidden
address@hidden@var{*}-gnu
address@hidden@var{*}-linux
address@hidden
address@hidden
address@hidden@var{*}-linux
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden smallexample
-
-Former releases of this library (version 2.1 and/or 2.0) used to run on
-the following configurations:
-
address@hidden
address@hidden
address@hidden
address@hidden smallexample
-
-Very early releases (version 1.09.1 and perhaps earlier versions) used
-to run on the following configurations:
-
address@hidden
-alpha-dec-osf1
address@hidden
address@hidden@var{*}-bsd4.3
address@hidden@var{*}-isc2.2
address@hidden@address@hidden
address@hidden@var{*}-sco3.2
address@hidden@var{*}-sco3.2v4
address@hidden@var{*}-sysv
address@hidden@var{*}-sysv4
address@hidden
address@hidden
-i960-nindy960-none
-m68k-hp-bsd4.3
-m68k-mvme135-none
-m68k-mvme136-none
-m68k-sony-newsos3
-m68k-sony-newsos4
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden
address@hidden smallexample
-
-Since no one has volunteered to test and fix these configurations,
-they are not supported at the moment.  They probably don't compile;
-they definitely don't work anymore.  Porting the library is not hard.
-If you are interested in doing a port, please contact the glibc
-maintainers by sending electronic mail to @email{bug-glibc@@gnu.org}.
-
-Valid cases of @address@hidden include @samp{i386}, @samp{i486},
address@hidden and @samp{i686}.  All of those configurations produce a
-library that can run on this processor and newer processors.  The
address@hidden compiler by default generates code that's optimized for
-the machine it's configured for and will use the instructions
-available on that machine.  For example, if your @acronym{GCC} is
-configured for @samp{i686}, gcc will optimize for @samp{i686} and
-might issue some @samp{i686} specific instructions.  To generate code
-for other models, you have to configure for that model and give
address@hidden the appropriate @samp{-march=} and @samp{-mcpu=}
-compiler switches via @var{CFLAGS}.
-
address@hidden Linux
address@hidden Specific Advice for @acronym{GNU}/Linux Systems
address@hidden upgrading from libc5
address@hidden kernel header files
-
-If you are installing @acronym{GNU} libc on a @acronym{GNU}/Linux
-system, you need to have the header files from a 2.2 or newer kernel
-around for reference.  For some architectures, like ia64, sh and hppa,
-you need at least headers from kernel 2.3.99 (sh and hppa) or 2.4.0
-(ia64).  You do not need to use that kernel, just have its headers
-where glibc can access them.  The easiest way to do this is to unpack
-it in a directory such as @file{/usr/src/linux-2.2.1}.  In that
-directory, run @samp{make config} and accept all the defaults.  Then
-run @samp{make include/linux/version.h}.  Finally, configure glibc
-with the option @samp{--with-headers=/usr/src/linux-2.2.1/include}.
-Use the most recent kernel you can get your hands on.
-
-An alternate tactic is to unpack the 2.2 kernel and run @samp{make
-config} as above; then, rename or delete @file{/usr/include}, create a
-new @file{/usr/include}, and make symbolic links of
address@hidden/usr/include/linux} and @file{/usr/include/asm} into the kernel
-sources.  You can then configure glibc with no special options.  This
-tactic is recommended if you are upgrading from libc5, since you need to
-get rid of the old header files anyway.
-
-After installing @acronym{GNU} libc, you may need to remove or rename
address@hidden/usr/include/linux} and @file{/usr/include/asm}, and replace
-them with copies of @file{include/linux} and
address@hidden/address@hidden taken from the Linux source
-package that supplied kernel headers for building the library.
address@hidden will be the machine architecture for which the
-library was built, such as @samp{i386} or @samp{alpha}.  You do not
-need to do this if you did not specify an alternate kernel header
-source using @samp{--with-headers}.  The intent here is that these
-directories should be copies of, @strong{not} symlinks to, the kernel
-headers used to build the library.
-
address@hidden/usr/include/net} and @file{/usr/include/scsi} should
address@hidden be symlinks into the kernel sources.  @acronym{GNU} libc
-provides its own versions of these files.
-
address@hidden/Linux expects some components of the libc installation to be in
address@hidden/lib} and some in @file{/usr/lib}.  This is handled automatically
-if you configure glibc with @samp{--prefix=/usr}.  If you set some other
-prefix or allow it to default to @file{/usr/local}, then all the
-components are installed there.
-
-If you are upgrading from libc5, you need to recompile every shared
-library on your system against the new library for the sake of new
-code, but keep the old libraries around for old binaries to use.  This
-is complicated and difficult.  Consult the Glibc2 HOWTO at
address@hidden:// www.imaxx.net/ ~thrytis/ glibc} for address@hidden
-HOWTO is no longer maintained at this site. However, as of this
-printing, older editions are still available there, as well as contact
-information for the new maintainer.}
-
-You cannot use @code{nscd} with 2.0 kernels, due to bugs in the
-kernel-side thread support.  @code{nscd} happens to hit these bugs
-particularly hard, but you might have problems with any threaded
-program.
-
address@hidden Reporting Bugs
address@hidden Reporting Bugs
address@hidden reporting bugs
address@hidden bugs, reporting
-
-There are probably bugs in the @acronym{GNU} C Library.  There are certainly
-errors and omissions in this manual.  If you report them, they will get
-fixed.  If you don't, no one will ever know about them and they will
-remain unfixed for all eternity, if not longer.
-
-It is a good idea to verify that the problem has not already been
-reported.  Bugs are documented in two places: The file @file{BUGS}
-describes a number of well known bugs and the bug tracking system has a
address@hidden interface at
address@hidden:// www-gnats.gnu.org:8080/ cgi-bin/ wwwgnats.pl}.  The 
@acronym{WWW}
-interface gives you access to open and closed reports.  A closed report
-normally includes a patch or a hint on solving the problem.
-
-To report a bug, first you must find it.  With any luck, this will be the
-hard part.  Once you've found a bug, make sure it's really a bug.  A
-good way to do this is to see if the @acronym{GNU} C Library behaves the same 
way
-some other C library does.  If so, probably you are wrong and the
-libraries are right (but not necessarily).  If not, one of the libraries
-is probably wrong.  It might not be the @acronym{GNU} library.  Many historical
-Unix C libraries permit things that we don't, such as closing a file
-twice.
-
-If you think you have found some way in which the @acronym{GNU} C Library does 
not
-conform to the @acronym{ISO} and @acronym{POSIX} standards (@pxref{Standards 
and
-Portability}), that is definitely a bug.  Report it!
-
-Once you're sure you've found a bug, try to narrow it down to the
-smallest test case that reproduces the problem.  In the case of a C
-library, you really only need to narrow it down to one library
-function call, if possible.  This should not be too difficult.
-
-The final step when you have a simple test case is to report the bug.
-Do this using the @code{glibcbug} script.  It is installed with libc, or
-if you haven't installed it, will be in your build directory.  Send your
-test case, the results you got, the results you expected, and what you
-think the problem might be (if you've thought of anything).
address@hidden will insert the configuration information we need to
-see, and ship the report off to @email{bugs@@gnu.org}.  Don't send
-a message there directly; it is fed to a program that expects mail to be
-formatted in a particular way.  Use the script.
-
-If you are not sure how a function should behave, and this manual
-doesn't tell you, that's a bug in the manual.  Report that too!  If the
-function's behavior disagrees with the manual, then either the library
-or the manual has a bug, so report the disagreement.  If you find any
-errors or omissions in this manual, please report them to the Internet
-address @email{bug-glibc-manual@@gnu.org}.  If you refer to specific
-sections of the manual, please include the section names for easier
-identification.
-
address@hidden Maintenance, Contributors, Installation, Top
address@hidden %MENU% How to enhance and port the GNU C Library
address@hidden Library Maintenance
-
address@hidden Source Layout
address@hidden Adding New Functions
-
-The process of building the library is driven by the makefiles, which
-make heavy use of special features of @acronym{GNU} @code{make}.  The makefiles
-are very complex, and you probably don't want to try to understand them.
-But what they do is fairly straightforward, and only requires that you
-define a few variables in the right places.
-
-The library sources are divided into subdirectories, grouped by topic.
-
-The @file{string} subdirectory has all the string-manipulation
-functions, @file{math} has all the mathematical functions, etc.
-
-Each subdirectory contains a simple makefile, called @file{Makefile},
-which defines a few @code{make} variables and then includes the global
-makefile @file{Rules} with a line like:
-
address@hidden
-include ../Rules
address@hidden smallexample
-
address@hidden
-The basic variables that a subdirectory makefile defines are
-
address@hidden @code
address@hidden subdir
-This is the name of the subdirectory, for example @file{stdio}.  This
-variable @emph{must} be defined.
-
address@hidden headers
-This has the names of the header files in this section of the library,
-such as @file{stdio.h}.
-
address@hidden routines
address@hidden aux
-These are the names of the modules (source files) in this section of
-the library.  These should be simple names, such as @samp{strlen}
-(rather than complete file-names, such as @file{strlen.c}).  Use
address@hidden for modules that define functions in the library, and
address@hidden for auxiliary modules containing things like data
-definitions.  But the values of @code{routines} and @code{aux} are
-just concatenated, so there really is no practical address@hidden
-
address@hidden tests
-This has the names of test programs for this section of the library.
-These should be simple names, such as @samp{tester} (rather than
-complete file names, such as @file{tester.c}).  @address@hidden tests}}
-will build and run all the test programs.  If a test program needs
-input, put the test data in a file called
address@hidden@var{test-program}.input}; it will be given to the test program
-on its standard input.  If a test program wants to be run with
-arguments, put the arguments (all on a single line) in a file called
address@hidden@var{test-program}.args}.  Test programs should exit with zero
-status when the test passes, and nonzero status when the test
-indicates a bug in the library or error in building.
-
address@hidden others
-This has the names of ``other'' programs associated with this section
-of the library.  These are programs that are not tests per se, but are
-other small programs included with the library.  They are built by
address@hidden@samp{make address@hidden
-
address@hidden install-lib
address@hidden install-data
address@hidden install
-These are files to be installed by @address@hidden install}}.  Files
-listed in @samp{install-lib} are installed in the directory specified
-by @samp{libdir} in @file{configparms} or @file{Makeconfig}
-(@pxref{Installation}).  Files listed in @code{install-data} are
-installed in the directory specified by @samp{datadir} in
address@hidden or @file{Makeconfig}.  Files listed in
address@hidden are installed in the directory specified by
address@hidden in @file{configparms} or @address@hidden
-
address@hidden distribute
-This has other files from this subdirectory that should be put into a
-distribution tar file.  You need not list here the makefile itself or
-the source and header files listed in the other standard variables.
-Only define @code{distribute} if there are files used in an unusual
-way that should go into the distribution.
-
address@hidden generated
-This has Files that are generated by @file{Makefile} in this
-subdirectory.  These files will be removed by @address@hidden clean}},
-and they will never go into a distribution.
-
address@hidden extra-objs
-This has extra object files that are built by @file{Makefile} in this
-subdirectory.  This should be a list of file names like @file{foo.o};
-the files will actually be found in whatever directory object files
-are being built in.  These files will be removed by @address@hidden
-clean}}.  This variable is used for secondary object files needed to
-build @code{others} or @code{tests}.
address@hidden table
-
address@hidden Porting
address@hidden Porting the @acronym{GNU} C Library
-
-The @acronym{GNU} C Library is written to be easily portable to a variety of
-machines and operating systems.  Machine- and operating system-dependent
-functions are well separated to make it easy to add implementations for
-new machines or operating systems.  This section describes the layout of
-the library source tree and explains the mechanisms used to select
-machine-dependent code to use.
-
-All the machine-dependent and operating system-dependent files in the
-library are in the subdirectory @file{sysdeps} under the top-level
-library source directory.  This directory contains a hierarchy of
-subdirectories (@pxref{Hierarchy Conventions}).
-
-Each subdirectory of @file{sysdeps} contains source files for a
-particular machine or operating system, or for a class of machine or
-operating system (for example, systems by a particular vendor, or all
-machines that use @acronym{IEEE} 754 floating-point format).  A
-configuration specifies an ordered list of these subdirectories.  Each
-subdirectory implicitly appends its parent directory to the list.  For
-example, specifying the list @file{unix/bsd/vax} is equivalent to
-specifying the list @file{unix/bsd/vax unix/bsd unix}.  A subdirectory
-can also specify that it implies other subdirectories that are not
-directly above it in the directory hierarchy.  If the file
address@hidden exists in a subdirectory, it lists other subdirectories
-of @file{sysdeps} that are appended to the list, appearing after the
-subdirectory containing the @file{Implies} file.  Lines in an
address@hidden file that begin with a @samp{#} character are ignored
-as comments.  For example, @file{unix/bsd/Implies} contains:@refill
address@hidden
-# BSD has Internet-related things.
-unix/inet
address@hidden smallexample
address@hidden
-and @file{unix/Implies} contains:
address@hidden 300
address@hidden
-posix
address@hidden smallexample
-
address@hidden
-So the final list is @file{unix/bsd/vax unix/bsd unix/inet unix posix}.
-
address@hidden has a ``special'' subdirectory called @file{generic}.
-It is always implicitly appended to the list of subdirectories, so you
-needn't put it in an @file{Implies} file, and you should not create
-any subdirectories under it intended to be new specific categories.
address@hidden serves two purposes.  First, the makefiles do not
-bother to look for a system-dependent version of a file that's not in
address@hidden  This means that any system-dependent source file must
-have an analogue in @file{generic}, even if the routines defined by
-that file are not implemented on other platforms.  Second, the
address@hidden version of a system-dependent file is used if the
-makefiles do not find a version specific to the system you're
-compiling for.
-
-If it is possible to implement the routines in a @file{generic} file
-in machine-independent C, using only other machine-independent
-functions in the C library, then you should do so.  Otherwise, make
-them stubs.  A @dfn{stub} function is a function that cannot be
-implemented on a particular machine or operating system.  Stub
-functions always return an error, and set @code{errno} to
address@hidden (Function not implemented)address@hidden Loosemore et
-al., ``Error Reporting'' (see chap. 1, n. 1).}  If you define a stub
-function, you must place the statement
address@hidden(@var{function})}, where @var{function} is the name
-of your function, after its definition; also, you must include the
-file @code{<stub-tag.h>} into your file.  This causes the function to
-be listed in the installed @code{<gnu/stubs.h>}, and makes
address@hidden ld warn when the function is used.
-
-Some rare functions are only useful on specific systems and aren't
-defined at all on others; these do not appear anywhere in the
-system-independent source code or makefiles (including the
address@hidden directory), only in the system-dependent @file{Makefile}
-in the specific system's subdirectory.
-
-If you come across a file that is in one of the main source
-directories (@file{string}, @file{stdio}, etc.), and you want to write
-a machine- or operating system-dependent version of it, move the file
-into @file{sysdeps/generic} and write your new implementation in the
-appropriate system-specific subdirectory.  If a file is to be
-system-dependent, it @emph{must not} appear in one of the main
-source address@hidden
-
-There are a few special files that may exist in each subdirectory of
address@hidden:
-
address@hidden Blank lines after items make the table look better.
address@hidden @file
address@hidden Makefile
-
-This is a makefile for this machine or operating system, or class of
-machine or operating system.  This file is included by the library
-makefile @file{Makerules}, which is used by the top-level makefile and
-the subdirectory makefiles.  It can change the variables set in the
-including makefile or add new rules.  It can use @acronym{GNU}
address@hidden conditional directives based on the variable @samp{subdir}
-(see above) to select different sets of variables and rules for
-different sections of the library.  It can also set the @code{make}
-variable @samp{sysdep-routines}, to specify extra modules to be
-included in the library.  You should use @samp{sysdep-routines} rather
-than adding modules to @samp{routines} because the latter is used in
-determining what to distribute for each subdirectory of the main
-source address@hidden
-
-Each makefile in a subdirectory in the ordered list of subdirectories to
-be searched is included in order.  Since several system-dependent
-makefiles may be included, each should append to @samp{sysdep-routines}
-rather than simply setting it:
-
address@hidden
-sysdep-routines := $(sysdep-routines) foo bar
address@hidden smallexample
-
address@hidden 1000
address@hidden Subdirs
-
-This file contains the names of new whole subdirectories under the
-top-level library source tree that should be included for this system.
-These subdirectories are treated just like the system-independent
-subdirectories in the library source tree, such as @file{stdio} and
address@hidden
-
-Use this when there are completely new sets of functions and header
-files that should go into the library for the system this subdirectory
-of @file{sysdeps} implements.  For example,
address@hidden/unix/inet/Subdirs} contains @file{inet}; the @file{inet}
-directory contains various network-oriented operations that only make
-sense to put in the library on systems that support the
address@hidden
-
address@hidden Dist
-
-This file contains the names of files (relative to the subdirectory of
address@hidden in which it appears) that should be included in the
-distribution.  List any new files used by rules in the @file{Makefile}
-in the same directory, or header files used by the source files in
-that directory.  You don't need to list files that are implementations
-(either C or assembly source) of routines whose names are given in the
-machine-independent makefiles in the main source tree.
-
address@hidden configure
-
-This file is a shell script fragment to be run at configuration time.
-The top-level @file{configure} script uses the shell @code{.} command to
-read the @file{configure} file in each system-dependent directory
-chosen, in order.  The @file{configure} files are often generated from
address@hidden files using Autoconf.
-
-A system-dependent @file{configure} script will usually add things to
-the shell variables @samp{DEFS} and @samp{config_vars}; see the
-top-level @file{configure} script for details.  The script can check
-for @address@hidden@var{package}}} options that were passed to the
-top-level @file{configure}.  For an option
address@hidden@address@hidden@var{value}}} @file{configure}, sets the
-shell variable @address@hidden@var{package}}} (with any dashes in
address@hidden converted to underscores) to @var{value}; if the option
-is just @address@hidden@var{package}}} (no argument), then it sets
address@hidden@address@hidden to @samp{yes}.
-
address@hidden configure.in
-
-This file is an Autoconf input fragment to be processed into the file
address@hidden in this address@hidden David MacKenzie et
-al., ``Introduction'' in @emph{Autoconf: Generating Automatic
-Configuration Scripts} (December 2002),
address@hidden:// www.gnu.org/ software/ autoconf/ manual/ autoconf-2.57/ 
autoconf.html}.}
-You should write either @file{configure} or @file{configure.in}, but
-not both.  The first line of @file{configure.in} should invoke the
address@hidden macro @samp{GLIBC_PROVIDES}.  This macro does several
address@hidden calls for Autoconf macros that are used by the
-top-level @file{configure} script; without this, those macros might be
-invoked again unnecessarily by Autoconf.
address@hidden table
-
-That is the general system for how system dependencies are isolated.
address@hidden
-The next section explains how to decide what directories in
address@hidden to use.  @ref{Porting to Unix}, has some tips on porting
-the library to Unix variants.
address@hidden iftex
-
address@hidden Hierarchy Conventions
address@hidden Layout of the @file{sysdeps} Directory Hierarchy
-
-A @acronym{GNU} configuration name has three parts: the @acronym{CPU}
-type, the manufacturer's name, and the operating system.
address@hidden uses these to pick the list of system-dependent
-directories to look for.  If the @samp{--nfp} option is @emph{not}
-passed to @file{configure}, the directory @address@hidden/fpu} is
-also used.  The operating system often has a @dfn{base operating
-system}; for example, if the operating system is @samp{Linux}, the
-base operating system is @samp{unix/sysv}.  The algorithm used to pick
-the list of directories is simple: @file{configure} makes a list of
-the base operating system, manufacturer, @acronym{CPU} type and
-operating system, in that order.  It then concatenates all these
-together with slashes in between, to produce a directory name; for
-example, the configuration @address@hidden results in
address@hidden/sysv/linux/i386/i686}.  @file{configure} then tries
-removing each element of the list in turn, so @file{unix/sysv/linux}
-and @file{unix/sysv} are also tried, among others.  Since the precise
-version number of the operating system is often not important, and it
-would be very inconvenient, for example, to have identical
address@hidden and @file{irix6.3} directories, @file{configure} tries
-successively less specific operating-system names by removing trailing
-suffixes starting with a period.
-
-As an example, here is the complete list of directories that would be
-tried for the configuration @address@hidden (with the
address@hidden and @file{linuxthreads} add-on):
-
address@hidden
-sysdeps/i386/elf
-crypt/sysdeps/unix
-linuxthreads/sysdeps/unix/sysv/linux
-linuxthreads/sysdeps/pthread
-linuxthreads/sysdeps/unix/sysv
-linuxthreads/sysdeps/unix
-linuxthreads/sysdeps/i386/i686
-linuxthreads/sysdeps/i386
-linuxthreads/sysdeps/pthread/no-cmpxchg
-sysdeps/unix/sysv/linux/i386
-sysdeps/unix/sysv/linux
-sysdeps/gnu
-sysdeps/unix/common
-sysdeps/unix/mman
-sysdeps/unix/inet
-sysdeps/unix/sysv/i386/i686
-sysdeps/unix/sysv/i386
-sysdeps/unix/sysv
-sysdeps/unix/i386
-sysdeps/unix
-sysdeps/posix
-sysdeps/i386/i686
-sysdeps/i386/i486
-sysdeps/libm-i387/i686
-sysdeps/i386/fpu
-sysdeps/libm-i387
-sysdeps/i386
-sysdeps/wordsize-32
-sysdeps/ieee754
-sysdeps/libm-ieee754
-sysdeps/generic
address@hidden smallexample
-
-Different machine architectures are conventionally subdirectories at
-the top level of the @file{sysdeps} directory tree.  For example,
address@hidden@file{sysdeps/sparc}} and @address@hidden/m68k}}.  These contain
-files specific to those machine architectures, but not specific to any
-particular operating system.  There might be subdirectories for
-specializations of those architectures, such as
address@hidden@file{sysdeps/m68k/68020}}. Code that is specific to the
-floating-point coprocessor used with a particular machine should go in
address@hidden@file{sysdeps/@var{machine}/fpu}}.
-
-There are a few directories at the top level of the @file{sysdeps}
-hierarchy that are not for particular machine architectures.
-
address@hidden @file
address@hidden generic
-As described above (@pxref{Porting}), this is the subdirectory
-that every configuration implicitly uses after all others.
-
address@hidden ieee754
-This directory is for code using the @acronym{IEEE} 754 floating-point
-format, where the C type @code{float} is @acronym{IEEE} 754
-single-precision format, and @code{double} is @acronym{IEEE} 754
-double-precision format.  Usually, this directory is referred to in
-the @file{Implies} file in a machine architecture-specific directory,
-such as @file{m68k/Implies}.
-
address@hidden libm-ieee754
-This directory contains an implementation of a mathematical library
-usable on platforms which use @address@hidden 754}-conformant
-floating-point arithmetic.
-
address@hidden libm-i387
-This is a special case.  Ideally, the code should be in
address@hidden/i386/fpu}, but for various reasons it is kept aside.
-
address@hidden posix
-This directory contains implementations of things in the library in
-terms of @acronym{POSIX}.1 functions.  This includes some of the 
@acronym{POSIX}.1
-functions themselves.  Of course, @acronym{POSIX}.1 cannot be completely
-implemented in terms of itself, so a configuration using just
address@hidden cannot be complete.
-
address@hidden unix
-This is the directory for Unix-like things (@pxref{Porting to Unix}).
address@hidden implies @file{posix}.  There are some special-purpose
-subdirectories of @file{unix}:
-
address@hidden @file
address@hidden unix/common
-This directory is for things common to both @acronym{BSD} and System V release 
4.
-Both @file{unix/bsd} and @file{unix/sysv/sysv4} imply @file{unix/common}.
-
address@hidden unix/inet
-This directory is for @code{socket} and related functions on Unix systems.
address@hidden/inet/Subdirs} enables the @file{inet} top-level subdirectory.
address@hidden/common} implies @file{unix/inet}.
address@hidden table
-
address@hidden mach
-This is the directory for things based on the Mach microkernel from 
@acronym{CMU}
-(including the @acronym{GNU} operating system).  Other basic operating systems
-(@acronym{VMS}, for example) would have their own directories at the top level 
of
-the @file{sysdeps} hierarchy, parallel to @file{unix} and @file{mach}.
address@hidden table
-
address@hidden Porting to Unix
address@hidden Porting the @acronym{GNU} C Library to Unix Systems
-
-Most Unix systems are fundamentally very similar.  There are variations
-between different machines, and variations in what facilities are
-provided by the kernel.  But the interface to the operating system
-facilities is, for the most part, pretty uniform and simple.
-
-The code for Unix systems is in the directory @file{unix}, at the top
-level of the @file{sysdeps} hierarchy.  This directory contains
-subdirectories (and subdirectory trees) for various Unix variants.
-
-The functions that are system calls in most Unix systems are
-implemented in assembly code, which is generated automatically from
-specifications in files named @file{syscalls.list}.  There are several
-such files, one in @file{sysdeps/unix} and others in its
-subdirectories.  Some special system-calls are implemented in files
-that are named with a suffix of @samp{.S}; for example,
address@hidden  Files ending in @samp{.S} are run through the C
-preprocessor before being fed to the assembler.
-
-These files all use a set of macros that should be defined in
address@hidden  The @file{sysdep.h} file in @file{sysdeps/unix}
-partially defines them; a @file{sysdep.h} file in another directory must
-finish defining them for the particular machine and operating system
-variant.  See @file{sysdeps/unix/sysdep.h} and the machine-specific
address@hidden implementations to see what these macros are and what
-they should address@hidden
-
-The system-specific makefile for the @file{unix} directory
-(@file{sysdeps/unix/Makefile}) gives rules to generate several files
-from the Unix system you are building the library on (which is assumed
-to be the target system you are building the library @emph{for}).  All
-the generated files are put in the directory where the object files are
-kept; they should not affect the source tree itself.  The files
-generated are @file{ioctls.h}, @file{errnos.h}, @file{sys/param.h}, and
address@hidden (for the @file{stdio} section of the library).
-
address@hidden
address@hidden This section might be a good idea if it is finished,
address@hidden but there's no point including it as it stands. --rms
address@hidden @appendixsec Compatibility with Traditional C
-
address@hidden ??? This section is really short now.  Want to keep it? --roland
-
address@hidden It's not anymore true.  glibc 2.1 cannot be used with K&R 
compilers.
address@hidden --drepper
-
-Although the @acronym{GNU} C Library implements the @address@hidden C} library 
facilities, you
address@hidden use the @acronym{GNU} C Library with traditional, 
address@hidden'' C
-compilers.  However, you need to be careful because the content and
-organization of the @acronym{GNU} C Library header files differs from that of
-traditional C implementations.  This means you may need to make changes
-to your program in order to get it to compile.
address@hidden ignore
-
address@hidden Contributors, Free Manuals, Maintenance, Top
address@hidden %MENU% Who wrote what parts of the GNU C Library
address@hidden Contributors to the @acronym{GNU} C Library
-
-The @acronym{GNU} C Library was written originally by Roland McGrath, and is
-currently maintained by Ulrich Drepper.  Some parts of the library were
-contributed or worked on by other people.
-
address@hidden @bullet
address@hidden
-The @code{getopt} function and related code was written by
-Richard Stallman, @w{David J.} MacKenzie and @w{Roland McGrath}.
-
address@hidden
-The merge sort function @code{qsort} was written by Michael J. Haertel.
-
address@hidden
-The quick sort function used as a fallback by @code{qsort} was written
-by Douglas C. Schmidt.
-
address@hidden
-The memory-allocation functions @code{malloc}, @code{realloc} and
address@hidden and related code were written by Michael J. Haertel,
address@hidden Gloger} and @w{Doug Lea}.
-
address@hidden
-Fast implementations of many of the string functions (@code{memcpy},
address@hidden, etc.) were written by Torbj@"orn Granlund.
-
address@hidden
-The @file{tar.h} header file was written by David J. MacKenzie.
-
address@hidden
-The port to the @acronym{MIPS} DECStation running Ultrix 4
-(@code{mips-dec-ultrix4})
-was contributed by Brendan Kehoe and Ian Lance Taylor.
-
address@hidden
-The @acronym{DES} encryption function @code{crypt} and related functions were
-contributed by Michael Glad.
-
address@hidden
-The @code{ftw} and @code{nftw} functions were contributed by Ulrich Drepper.
-
address@hidden
-The start-up code to support address@hidden shared libraries was
-contributed by Tom Quinn.
-
address@hidden
-The @code{mktime} function was contributed by Paul Eggert.
-
address@hidden
-The port to the Sequent Symmetry running Dynix version 3
-(@code{i386-sequent-bsd}) was contributed by Jason Merrill.
-
address@hidden
-The time zone support code is derived from the public-domain time zone
-package by Arthur David Olson and his many contributors.
-
address@hidden
-The port to the @acronym{DEC} Alpha running @acronym{OSF}/1 
(@code{alpha-dec-osf1}) was
-contributed by Brendan Kehoe, using some code written by Roland McGrath.
-
address@hidden
-The port to @acronym{SGI} machines running Irix 4 (@code{mips-sgi-irix4}) was
-contributed by Tom Quinn.
-
address@hidden
-The port of the Mach and Hurd code to the @acronym{MIPS} architecture
-(@address@hidden) was contributed by Kazumoto Kojima.
-
address@hidden
-The floating-point printing function used by @code{printf} and friends
-and the floating-point reading function used by @code{scanf},
address@hidden and friends were written by Ulrich Drepper.  The
-multiprecision integer functions used in those functions are taken from
address@hidden @acronym{MP}, which was contributed by Torbj@"orn Granlund.
-
address@hidden
-The internationalization support in the library, and the support
-programs @code{locale} and @code{localedef}, were written by Ulrich
-Drepper.  Ulrich Drepper adapted the support code for message catalogs
-(@file{libintl.h}, etc.) from the @acronym{GNU} @code{gettext} package, which 
he
-also wrote.  He also contributed the @code{catgets} support and the
-entire suite of multibyte and wide-character support functions
-(@file{wctype.h}, @file{wchar.h}, etc.).
-
address@hidden
-The implementations of the @file{nsswitch.conf} mechanism and the files
-and @acronym{DNS} backends for it were designed and written by Ulrich Drepper 
and
-Roland McGrath, based on a backend interface defined by Peter Eriksson.
-
address@hidden
-The port to Linux i386/@acronym{ELF} (@address@hidden) was
-contributed by Ulrich Drepper, based in large part on work done in
-Hongjiu Lu's Linux version of the @acronym{GNU} C Library.
-
address@hidden
-The port to Linux/m68k (@address@hidden) was
-contributed by Andreas Schwab.
-
address@hidden
-The ports to Linux/@acronym{ARM} (@address@hidden) and @acronym{ARM}
-standalone (@address@hidden), as well as parts of the
-IPv6 support code, were contributed by Philip Blundell.
-
address@hidden
-Richard Henderson contributed the @acronym{ELF} dynamic-linking code
-and other support for the Alpha processor.
-
address@hidden
-David Mosberger-Tang contributed the port to Linux/Alpha
-(@address@hidden).
-
address@hidden
-The port to Linux on PowerPC (@address@hidden)
-was contributed by Geoffrey Keating.
-
address@hidden
-Miles Bader wrote the argp argument-parsing package, and the argz/envz
-interfaces.
-
address@hidden
-Stephen R. van den Berg contributed a highly-optimized @code{strstr} function.
-
address@hidden
-Ulrich Drepper contributed the @code{hsearch} and @code{drand48}
-families of functions; reentrant @address@hidden@code{_r}} versions of the
address@hidden family; System V shared memory and @acronym{IPC} support code; 
and
-several highly-optimized string functions for address@hidden processors.
-
address@hidden
-The math functions are taken from @code{fdlibm-5.1} by Sun
-Microsystems, as modified by J.T. Conklin, Ian Lance Taylor, Ulrich
-Drepper, Andreas Schwab and Roland McGrath.
-
address@hidden
-The @code{libio} library used to implement @code{stdio} functions on
-some platforms was written by Per Bothner and modified by Ulrich Drepper.
-
address@hidden
-Eric Youngdale and Ulrich Drepper implemented versioning of objects on
-the symbol level.
-
address@hidden
-Thorsten Kukuk provided an implementation for @acronym{NIS} (@acronym{YP}) and 
@acronym{NIS}+,
-securelevel 0, 1 and 2.
-
address@hidden
-Andreas Jaeger provided a test suite for the math library.
-
address@hidden
-Mark Kettenis implemented the utmpx interface and an utmp daemon.
-
address@hidden
-Ulrich Drepper added character conversion functions (@code{iconv}).
-
address@hidden
-Thorsten Kukuk provided an implementation for a caching daemon for 
@acronym{NSS}
-(nscd).
-
address@hidden
-Tim Waugh provided an implementation of the @acronym{POSIX}.2 wordexp function 
family.
-
address@hidden
-Mark Kettenis provided a Hesiod @acronym{NSS} module.
-
address@hidden
-The Internet-related code (most of the @file{inet} subdirectory) and
-several other miscellaneous functions and header files have been
-included from 4.4 @acronym{BSD} with little or no modification.  The copying
-permission notice for this code can be found in the file @file{LICENSES}
-in the source distribution.
-
address@hidden
-The random-number generation functions @code{random}, @code{srandom},
address@hidden and @code{initstate}, which are also the basis for the
address@hidden and @code{srand} functions, were written by Earl T. Cohen
-for the University of California at Berkeley and are copyrighted by
-the Regents of the University of California.  They have undergone
-minor changes to fit into the @acronym{GNU} C Library and to fit the
address@hidden@acronym{ISO} C} standard, but the functional code is
-Berkeley'address@hidden
-
address@hidden
-The @acronym{DNS}-resolver code is taken directly from @acronym{BIND}
-4.9.5, which includes copyrighted code from UC Berkeley and from
-Digital Equipment Corporation.  See the file @file{LICENSES} for the
-text of the @acronym{DEC} license.
-
address@hidden
-The code to support Sun @acronym{RPC} is taken verbatim from Sun's
address@hidden@sc{rpcsrc-4.0}} distribution; see the file @file{LICENSES} for 
the
-text of the license.
-
address@hidden
-Some of the support code for Mach is taken from Mach 3.0 by @acronym{CMU};
-the file if_ppp.h is also copyright by @acronym{CMU}, but under a different 
license;
-see the file @file{LICENSES} for the text of the licenses.
-
address@hidden
-Many of the @acronym{IA}64 math functions are taken from a collection of
-``Highly Optimized Mathematical Functions for Itanium'' that Intel
-makes available under a free license; see the file @file{LICENSES} for
-details.
-
address@hidden
-The @code{getaddrinfo} and @code{getnameinfo} functions and supporting
-code were written by Craig Metz; see the file @file{LICENSES} for
-details on their licensing.
-
address@hidden
-Many of the @acronym{IEEE} 64-bit double precision math functions
-(in the @file{sysdeps/ieee754/dbl-64} subdirectory) come
-from the @acronym{IBM} Accurate Mathematical Library, contributed by 
@acronym{IBM}.
-
address@hidden itemize
-
-
-
address@hidden Free Manuals, Copying, Contributors, Top
address@hidden Free Software Needs Free Documentation
address@hidden free documentation
-
-The biggest deficiency in the free software community today is not in
-the software---it is the lack of good free documentation that we can
-include with the free software.  Many of our most important
-programs do not come with free reference manuals and free introductory
-texts.  Documentation is an essential part of any software package;
-when an important free software package does not come with a free
-manual and a free tutorial, that is a major gap.  We have many such
-gaps today.
-
-Consider Perl, for instance.  The tutorial manuals that people
-normally use are nonfree.  How did this come about?  Because the
-authors of those manuals published them with restrictive terms---no
-copying, no modification, source files not available---which exclude
-them from the free software world.
-
-That wasn't the first time this sort of thing happened, and it was far
-from the last.  Many times we have heard a @acronym{GNU} user eagerly describe 
a
-manual that he is writing, his intended contribution to the community,
-only to learn that he had ruined everything by signing a publication
-contract to make it nonfree.
-
-Free documentation, like free software, is a matter of freedom, not
-price.  The problem with the nonfree manual is not that publishers
-charge a price for printed copies---that in itself is fine.  (The Free
-Software Foundation sells printed copies of manuals, too.)  The
-problem is the restrictions on the use of the manual.  Free manuals
-are available in source code form, and give you permission to copy and
-modify.  Nonfree manuals do not allow this.
-
-The criteria of freedom for a free manual are roughly the same as for
-free software.  Redistribution (including the normal kinds of
-commercial redistribution) must be permitted, so that the manual can
-accompany every copy of the program, both on-line and on paper.
-
-Permission for modification of the technical content is crucial too.
-When people modify the software, adding or changing features, if they
-are conscientious they will change the manual too---so they can
-provide accurate and clear documentation for the modified program.  A
-manual that leaves you no choice but to write a new manual to document
-a changed version of the program is not really available to our
-community.
-
-Some kinds of limits on the way modification is handled are
-acceptable.  For example, requirements to preserve the original
-author's copyright notice, the distribution terms, or the list of
-authors, are ok.  It is also no problem to require modified versions
-to include notice that they were modified.  Even entire sections that
-may not be deleted or changed are acceptable, as long as they deal
-with nontechnical topics (like this one).  These kinds of restrictions
-are acceptable because they don't obstruct the community's normal use
-of the manual.
-
-However, it must be possible to modify all the @emph{technical}
-content of the manual, and then distribute the result in all the usual
-media, through all the usual channels.  Otherwise, the restrictions
-obstruct the use of the manual, it is not free, and we need another
-manual to replace it.
-
-Please spread the word about this issue.  Our community continues to
-lose manuals to proprietary publishing.  If we spread the word that
-free software needs free reference manuals and free tutorials, perhaps
-the next person who wants to contribute by writing documentation will
-realize, before it is too late, that only free manuals contribute to
-the free software community.
-
-If you are writing documentation, please insist on publishing it under
-the @acronym{GNU} Free Documentation License or another free documentation
-license.  Remember that this decision requires your approval---you
-don't have to let the publisher decide.  Some commercial publishers
-will use a free license if you insist, but they will not propose the
-option; it is up to you to raise the issue and say firmly that this is
-what you want.  If the publisher you are dealing with refuses, please
-try other publishers.  If you're not sure whether a proposed license
-is free, write to @email{licensing@@gnu.org}.
-
-You can encourage commercial publishers to sell more free, copylefted
-manuals and tutorials by buying them, and particularly by buying
-copies from the publishers that paid for their writing or for major
-improvements.  Meanwhile, try to avoid buying nonfree documentation
-at all.  Check the distribution terms of a manual before you buy it,
-and insist that whoever seeks your business must respect your freedom.
-Check the history of the book, and try reward the publishers that have
-paid or pay the authors to work on it.
-
-The Free Software Foundation maintains a list of free documentation
-published by other publishers, at
address@hidden:// www.fsf.org/ doc/ other-free-books.html}.
-
-
address@hidden lgpl-appendix
address@hidden Copying, Documentation License, Free Manuals, Top
address@hidden lgpl-appendix
address@hidden @acronym{GNU} Lesser General Public License
address@hidden ifset
address@hidden lgpl-appendix
address@hidden @acronym{GNU} Lesser General Public License
address@hidden ifclear
-
address@hidden @acronym{LGPL}, Lesser General Public License
address@hidden Version 2.1, February 1999
-
address@hidden
-Copyright @copyright{} 1991, 1999 Free Software Foundation, Inc.
-51 Franklin St -- Fifth Floor, Boston, MA 02110-1301, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser @acronym{GPL}.  It also 
counts
-as the successor of the @acronym{GNU} Library Public License, version 2, hence 
the
-version number 2.1.]
address@hidden display
-
address@hidden Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the @acronym{GNU} General Public
-Licenses are intended to guarantee your freedom to share and change
-free software---to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software---typically libraries---of the Free
-Software Foundation and other authors who decide to use it.  You can use
-it too, but we suggest you first think carefully about whether this
-license or the ordinary General Public License is the better strategy to
-use in any particular case, based on the explanations below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of it
-in new free programs; and that you are informed that you can do these
-things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most @acronym{GNU} software, including some libraries, is covered by the
-ordinary @acronym{GNU} General Public License.  This license, the 
@acronym{GNU} Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into nonfree programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the @dfn{Lesser} General Public License because it
-does @emph{Less} to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing nonfree programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, nonfree programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used nonfree libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in nonfree
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the @acronym{GNU} C Library in
-nonfree programs enables many more people to use the whole @acronym{GNU}
-operating system, as well as its variant, the @acronym{GNU}/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-``work based on the library'' and a ``work that uses the library''.  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
address@hidden
address@hidden TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
address@hidden iftex
address@hidden
address@hidden GNU LESSER GENERAL PUBLIC LICENSE
address@hidden TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
address@hidden ifinfo
-
address@hidden 0
address@hidden
-This License Agreement applies to any software library or other program
-which contains a notice placed by the copyright holder or other
-authorized party saying it may be distributed under the terms of this
-Lesser General Public License (also called ``this License'').  Each
-licensee is addressed as ``you''.
-
-  A ``library'' means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The ``Library'', below, refers to any such software library or work
-which has been distributed under these terms.  A ``work based on the
-Library'' means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term ``modification''.)
-
-  ``Source code'' for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
address@hidden
-You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
address@hidden
-You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
address@hidden a
address@hidden
-The modified work must itself be a software library.
-
address@hidden
-You must cause the files modified to carry prominent notices
-stating that you changed the files and the date of any change.
-
address@hidden
-You must cause the whole of the work to be licensed at no
-charge to all third parties under the terms of this License.
-
address@hidden
-If a facility in the modified Library refers to a function or a
-table of data to be supplied by an application program that uses
-the facility, other than as an argument passed when the facility
-is invoked, then you must make a good faith effort to ensure that,
-in the event an application does not supply such function or
-table, the facility still operates, and performs whatever part of
-its purpose remains meaningful.
-
-(For example, a function in a library to compute square roots has
-a purpose that is entirely well-defined independent of the
-application.  Therefore, Subsection 2d requires that any
-application-supplied function or table used by this function must
-be optional: if the application does not supply it, the square
-root function must still compute square roots.)
address@hidden enumerate
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
address@hidden
-You may opt to apply the terms of the ordinary @acronym{GNU} General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary @acronym{GNU} General Public License, version 
2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary @acronym{GNU} General Public License has appeared, then you can 
specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary @acronym{GNU} General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
address@hidden
-You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
address@hidden
-A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a ``work that uses the Library''.  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a ``work that uses the Library'' with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a ``work that uses the
-library''.  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a ``work that uses the Library'' uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
address@hidden
-As an exception to the Sections above, you may also combine or
-link a ``work that uses the Library'' with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
address@hidden a
address@hidden
-Accompany the work with the complete corresponding
-machine-readable source code for the Library including whatever
-changes were used in the work (which must be distributed under
-Sections 1 and 2 above); and, if the work is an executable linked
-with the Library, with the complete machine-readable ``work that
-uses the Library'', as object code and/or source code, so that the
-user can modify the Library and then relink to produce a modified
-executable containing the modified Library.  (It is understood
-that the user who changes the contents of definitions files in the
-Library will not necessarily be able to recompile the application
-to use the modified definitions.)
-
address@hidden
-Use a suitable shared library mechanism for linking with the Library.  A
-suitable mechanism is one that (1) uses at run time a copy of the
-library already present on the user's computer system, rather than
-copying library functions into the executable, and (2) will operate
-properly with a modified version of the library, if the user installs
-one, as long as the modified version is interface-compatible with the
-version that the work was made with.
-
address@hidden
-Accompany the work with a written offer, valid for at
-least three years, to give the same user the materials
-specified in Subsection 6a, above, for a charge no more
-than the cost of performing this distribution.
-
address@hidden
-If distribution of the work is made by offering access to copy
-from a designated place, offer equivalent access to copy the above
-specified materials from the same place.
-
address@hidden
-Verify that the user has already received a copy of these
-materials or that you have already sent this user a copy.
address@hidden enumerate
-
-  For an executable, the required form of the ``work that uses the
-Library'' must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies the
-executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
address@hidden
-You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
address@hidden a
address@hidden
-Accompany the combined library with a copy of the same work
-based on the Library, uncombined with any other library
-facilities.  This must be distributed under the terms of the
-Sections above.
-
address@hidden
-Give prominent notice with the combined library of the fact
-that part of it is a work based on the Library, and explaining
-where to find the accompanying uncombined form of the same work.
address@hidden enumerate
-
address@hidden
-You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
address@hidden
-You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
address@hidden
-Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
address@hidden
-If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
address@hidden
-If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
address@hidden
-The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-``any later version'', you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
address@hidden
-If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
address@hidden
address@hidden NO WARRANTY
address@hidden iftex
address@hidden
address@hidden NO WARRANTY
address@hidden ifinfo
-
address@hidden
-BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY ``AS IS'' WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
address@hidden
-IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
address@hidden enumerate
-
address@hidden
address@hidden END OF TERMS AND CONDITIONS
address@hidden iftex
address@hidden
address@hidden END OF TERMS AND CONDITIONS
address@hidden ifinfo
-
address@hidden
address@hidden How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.  It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-``copyright'' line and a pointer to where the full notice is found.
-
address@hidden
address@hidden line to give the library's name and an idea of what it does.}
-Copyright (C) @var{year}  @var{name of author}
-
-This library is free software; you can redistribute it and/or modify it
-under the terms of the @acronym{GNU} Lesser General Public License as 
published by
-the Free Software Foundation; either version 2.1 of the License, or (at
-your option) any later version.
-
-This library is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the @acronym{GNU}
-Lesser General Public License for more details.
-
-You should have received a copy of the @acronym{GNU} Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
-USA.
address@hidden smallexample
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a ``copyright disclaimer'' for the library, if
-necessary.  Here is a sample; alter the names:
-
address@hidden
-Yoyodyne, Inc., hereby disclaims all copyright interest in the library
-`Frob' (a library for tweaking knobs) written by James Random Hacker.
-
address@hidden of Ty Coon}, 1 April 1990
-Ty Coon, President of Vice
address@hidden smallexample
-
-That's all there is to it!
-
-
address@hidden Documentation License, Concept Index, Copying, Top
-
address@hidden @acronym{GNU} Free Documentation License
-
address@hidden @acronym{FDL}, @acronym{GNU} Free Documentation License
address@hidden Version 1.1, March 2000
-
address@hidden
-Copyright @copyright{} 2000 Free Software Foundation, Inc.
-51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
address@hidden display
-
address@hidden 0
address@hidden
-PREAMBLE
-
-The purpose of this License is to make a manual, textbook, or other
-written document @dfn{free} in the sense of freedom: to assure everyone
-the effective freedom to copy and redistribute it, with or without
-modifying it, either commercially or noncommercially.  Secondarily,
-this License preserves for the author and publisher a way to get
-credit for their work, while not being considered responsible for
-modifications made by others.
-
-This License is a kind of ``copyleft'', which means that derivative
-works of the document must themselves be free in the same sense.  It
-complements the @acronym{GNU} General Public License, which is a copyleft
-license designed for free software.
-
-We have designed this License in order to use it for manuals for free
-software, because free software needs free documentation: a free
-program should come with manuals providing the same freedoms that the
-software does.  But this License is not limited to software manuals;
-it can be used for any textual work, regardless of subject matter or
-whether it is published as a printed book.  We recommend this License
-principally for works whose purpose is instruction or reference.
-
address@hidden
-APPLICABILITY AND DEFINITIONS
-
-This License applies to any manual or other work that contains a
-notice placed by the copyright holder saying it can be distributed
-under the terms of this License.  The ``Document'', below, refers to any
-such manual or work.  Any member of the public is a licensee, and is
-addressed as ``you''.
-
-A ``Modified Version'' of the Document means any work containing the
-Document or a portion of it, either copied verbatim, or with
-modifications and/or translated into another language.
-
-A ``Secondary Section'' is a named appendix or a front-matter section of
-the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall subject
-(or to related matters) and contains nothing that could fall directly
-within that overall subject.  (For example, if the Document is in part a
-textbook of mathematics, a Secondary Section may not explain any
-mathematics.)  The relationship could be a matter of historical
-connection with the subject or with related matters, or of legal,
-commercial, philosophical, ethical or political position regarding
-them.
-
-The ``Invariant Sections'' are certain Secondary Sections whose titles
-are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License.
-
-The ``Cover Texts'' are certain short passages of text that are listed,
-as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License.
-
-A ``Transparent'' copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, whose contents can be viewed and edited directly and
-straightforwardly with generic text editors or (for images composed of
-pixels) generic paint programs or (for drawings) some widely available
-drawing editor, and that is suitable for input to text formatters or
-for automatic translation to a variety of formats suitable for input
-to text formatters.  A copy made in an otherwise Transparent file
-format whose markup has been designed to thwart or discourage
-subsequent modification by readers is not Transparent.  A copy that is
-not ``Transparent'' is called ``Opaque''.
-
-Examples of suitable formats for Transparent copies include plain
address@hidden without markup, Texinfo input format, address@hidden input 
format,
address@hidden or @acronym{XML} using a publicly available
address@hidden, and standard-conforming simple @acronym{HTML} designed
-for human modification.  Opaque formats include PostScript,
address@hidden, proprietary formats that can be read and edited only by
-proprietary word processors, @acronym{SGML} or @acronym{XML} for which
-the @acronym{DTD} and/or processing tools are not generally available,
-and the machine-generated @acronym{HTML} produced by some word
-processors for output purposes only.
-
-The ``Title Page'' means, for a printed book, the title page itself,
-plus such following pages as are needed to hold, legibly, the material
-this License requires to appear in the title page.  For works in
-formats which do not have any title page as such, ``Title Page'' means
-the text near the most prominent appearance of the work's title,
-preceding the beginning of the body of the text.
-
address@hidden
-VERBATIM COPYING
-
-You may copy and distribute the Document in any medium, either
-commercially or noncommercially, provided that this License, the
-copyright notices, and the license notice saying this License applies
-to the Document are reproduced in all copies, and that you add no other
-conditions whatsoever to those of this License.  You may not use
-technical measures to obstruct or control the reading or further
-copying of the copies you make or distribute.  However, you may accept
-compensation in exchange for copies.  If you distribute a large enough
-number of copies you must also follow the conditions in section 3.
-
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-
address@hidden
-COPYING IN QUANTITY
-
-If you publish printed copies of the Document numbering more than 100,
-and the Document's license notice requires Cover Texts, you must enclose
-the copies in covers that carry, clearly and legibly, all these Cover
-Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
-the back cover.  Both covers must also clearly and legibly identify
-you as the publisher of these copies.  The front cover must present
-the full title with all words of the title equally prominent and
-visible.  You may add other material on the covers in addition.
-Copying with changes limited to the covers, as long as they preserve
-the title of the Document and satisfy these conditions, can be treated
-as verbatim copying in other respects.
-
-If the required texts for either cover are too voluminous to fit
-legibly, you should put the first ones listed (as many as fit
-reasonably) on the actual cover, and continue the rest onto adjacent
-pages.
-
-If you publish or distribute Opaque copies of the Document numbering
-more than 100, you must either include a machine-readable Transparent
-copy along with each Opaque copy, or state in or with each Opaque copy
-a publicly-accessible computer-network location containing a complete
-Transparent copy of the Document, free of added material, which the
-general network-using public has access to download anonymously at no
-charge using public-standard network protocols.  If you use the latter
-option, you must take reasonably prudent steps, when you begin
-distribution of Opaque copies in quantity, to ensure that this
-Transparent copy will remain thus accessible at the stated location
-until at least one year after the last time you distribute an Opaque
-copy (directly or through your agents or retailers) of that edition to
-the public.
-
-It is requested, but not required, that you contact the authors of the
-Document well before redistributing any large number of copies, to give
-them a chance to provide you with an updated version of the Document.
-
address@hidden
-MODIFICATIONS
-
-You may copy and distribute a Modified Version of the Document under
-the conditions of sections 2 and 3 above, provided that you release
-the Modified Version under precisely this License, with the Modified
-Version filling the role of the Document, thus licensing distribution
-and modification of the Modified Version to whoever possesses a copy
-of it.  In addition, you must do these things in the Modified Version:
-
address@hidden A
address@hidden
-Use in the Title Page (and on the covers, if any) a title distinct
-from that of the Document, and from those of previous versions
-(which should, if there were any, be listed in the History section
-of the Document).  You may use the same title as a previous version
-if the original publisher of that version gives permission.
-
address@hidden
-List on the Title Page, as authors, one or more persons or entities
-responsible for authorship of the modifications in the Modified
-Version, together with at least five of the principal authors of the
-Document (all of its principal authors, if it has less than five).
-
address@hidden
-State on the Title page the name of the publisher of the
-Modified Version, as the publisher.
-
address@hidden
-Preserve all the copyright notices of the Document.
-
address@hidden
-Add an appropriate copyright notice for your modifications
-adjacent to the other copyright notices.
-
address@hidden
-Include, immediately after the copyright notices, a license notice
-giving the public permission to use the Modified Version under the
-terms of this License, in the form shown in the Addendum below.
-
address@hidden
-Preserve in that license notice the full lists of Invariant Sections
-and required Cover Texts given in the Document's license notice.
-
address@hidden
-Include an unaltered copy of this License.
-
address@hidden
-Preserve the section entitled ``History'', and its title, and add to
-it an item stating at least the title, year, new authors, and
-publisher of the Modified Version as given on the Title Page.  If
-there is no section entitled ``History'' in the Document, create one
-stating the title, year, authors, and publisher of the Document as
-given on its Title Page, then add an item describing the Modified
-Version as stated in the previous sentence.
-
address@hidden
-Preserve the network location, if any, given in the Document for
-public access to a Transparent copy of the Document, and likewise
-the network locations given in the Document for previous versions
-it was based on.  These may be placed in the ``History'' section.
-You may omit a network location for a work that was published at
-least four years before the Document itself, or if the original
-publisher of the version it refers to gives permission.
-
address@hidden
-In any section entitled ``Acknowledgements'' or ``Dedications'',
-preserve the section's title, and preserve in the section all the
-substance and tone of each of the contributor acknowledgements
-and/or dedications given therein.
-
address@hidden
-Preserve all the Invariant Sections of the Document,
-unaltered in their text and in their titles.  Section numbers
-or the equivalent are not considered part of the section titles.
-
address@hidden
-Delete any section entitled ``Endorsements''.  Such a section
-may not be included in the Modified Version.
-
address@hidden
-Do not retitle any existing section as ``Endorsements''
-or to conflict in title with any Invariant Section.
address@hidden enumerate
-
-If the Modified Version includes new front-matter sections or
-appendices that qualify as Secondary Sections and contain no material
-copied from the Document, you may at your option designate some or all
-of these sections as invariant.  To do this, add their titles to the
-list of Invariant Sections in the Modified Version's license notice.
-These titles must be distinct from any other section titles.
-
-You may add a section entitled ``Endorsements'', provided it contains
-nothing but endorsements of your Modified Version by various
-parties---for example, statements of peer review or that the text has
-been approved by an organization as the authoritative definition of a
-standard.
-
-You may add a passage of up to five words as a Front-Cover Text, and a
-passage of up to 25 words as a Back-Cover Text, to the end of the list
-of Cover Texts in the Modified Version.  Only one passage of
-Front-Cover Text and one of Back-Cover Text may be added by (or
-through arrangements made by) any one entity.  If the Document already
-includes a cover text for the same cover, previously added by you or
-by arrangement made by the same entity you are acting on behalf of,
-you may not add another; but you may replace the old one, on explicit
-permission from the previous publisher that added the old one.
-
-The author(s) and publisher(s) of the Document do not by this License
-give permission to use their names for publicity for or to assert or
-imply endorsement of any Modified Version.
-
address@hidden
-COMBINING DOCUMENTS
-
-You may combine the Document with other documents released under this
-License, under the terms defined in section 4 above for modified
-versions, provided that you include in the combination all of the
-Invariant Sections of all of the original documents, unmodified, and
-list them all as Invariant Sections of your combined work in its
-license notice.
-
-The combined work need only contain one copy of this License, and
-multiple identical Invariant Sections may be replaced with a single
-copy.  If there are multiple Invariant Sections with the same name but
-different contents, make the title of each such section unique by
-adding at the end of it, in parentheses, the name of the original
-author or publisher of that section if known, or else a unique number.
-Make the same adjustment to the section titles in the list of
-Invariant Sections in the license notice of the combined work.
-
-In the combination, you must combine any sections entitled ``History''
-in the various original documents, forming one section entitled
-``History''; likewise combine any sections entitled ``Acknowledgements'',
-and any sections entitled ``Dedications''.  You must delete all sections
-entitled ``Endorsements.''
-
address@hidden
-COLLECTIONS OF DOCUMENTS
-
-You may make a collection consisting of the Document and other documents
-released under this License, and replace the individual copies of this
-License in the various documents with a single copy that is included in
-the collection, provided that you follow the rules of this License for
-verbatim copying of each of the documents in all other respects.
-
-You may extract a single document from such a collection, and distribute
-it individually under this License, provided you insert a copy of this
-License into the extracted document, and follow this License in all
-other respects regarding verbatim copying of that document.
-
address@hidden
-AGGREGATION WITH INDEPENDENT WORKS
-
-A compilation of the Document or its derivatives with other separate
-and independent documents or works, in or on a volume of a storage or
-distribution medium, does not as a whole count as a Modified Version
-of the Document, provided no compilation copyright is claimed for the
-compilation.  Such a compilation is called an ``aggregate'', and this
-License does not apply to the other self-contained works thus compiled
-with the Document, on account of their being thus compiled, if they
-are not themselves derivative works of the Document.
-
-If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one quarter
-of the entire aggregate, the Document's Cover Texts may be placed on
-covers that surround only the Document within the aggregate.
-Otherwise they must appear on covers around the whole aggregate.
-
address@hidden
-TRANSLATION
-
-Translation is considered a kind of modification, so you may
-distribute translations of the Document under the terms of section 4.
-Replacing Invariant Sections with translations requires special
-permission from their copyright holders, but you may include
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections.  You may include a
-translation of this License provided that you also include the
-original English version of this License.  In case of a disagreement
-between the translation and the original English version of this
-License, the original English version will prevail.
-
address@hidden
-TERMINATION
-
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License.  Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License.  However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
address@hidden
-FUTURE REVISIONS OF THIS LICENSE
-
-The Free Software Foundation may publish new, revised versions
-of the @acronym{GNU} Free Documentation License from time to time.  Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.  See
address@hidden:// www.gnu.org/ copyleft/}.
-
-Each version of the License is given a distinguishing version number.
-If the Document specifies that a particular numbered version of this
-License ``or any later version'' applies to it, you have the option of
-following the terms and conditions either of that specified version or
-of any later version that has been published (not as a draft) by the
-Free Software Foundation.  If the Document does not specify a version
-number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.
address@hidden enumerate
-
address@hidden
address@hidden ADDENDUM: How to Use This License for Your Documents
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and
-license notices just after the title page:
-
address@hidden
-
-  Copyright (C)  @var{year}  @var{your name}.
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the @acronym{GNU} Free Documentation License, Version 1.1
-  or any later version published by the Free Software Foundation;
-  with the Invariant Sections being @var{list their titles}, with the
-  Front-Cover Texts being @var{list}, and with the Back-Cover Texts being 
@var{list}.
-  A copy of the license is included in the section entitled address@hidden
-  Free Documentation License''.
-
address@hidden smallexample
-
-If you have no Invariant Sections, write ``with no Invariant Sections''
-instead of saying which ones are invariant.  If you have no
-Front-Cover Texts, write ``no Front-Cover Texts'' instead of
-``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
-
-If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the @acronym{GNU} General Public License,
-to permit their use in free software.
-
address@hidden Local Variables:
address@hidden ispell-local-pdict: "ispell-dict"
address@hidden End:
-
-
-
address@hidden Concept Index, Type Index, Documentation License, Top
address@hidden Concept Index
-
address@hidden cp
-
address@hidden Type Index, Function Index, Concept Index, Top
address@hidden Type Index
-
address@hidden tp
-
address@hidden Function Index, Variable Index, Type Index, Top
address@hidden Function and Macro Index
-
address@hidden fn
-
address@hidden Variable Index, File Index, Function Index, Top
address@hidden Variable and Constant Macro Index
-
address@hidden vr
-
address@hidden File Index, , Variable Index, Top
address@hidden Program and File Index
-
address@hidden pg
-
-
address@hidden
-
address@hidden  LocalWords:  texinfo bindingoffset normaloffset FSF titlepage 
sp Loosemore
address@hidden  LocalWords:  Stallman Oram Drepper vskip ifnottex linuxthreads 
dfn cindex
address@hidden  LocalWords:  sc posix nonportable iso pre emph iec pindex gcc 
samp ansi al
address@hidden  LocalWords:  ieee online url sez popen pclose regex fnmatch 
getopt wordexp
address@hidden  LocalWords:  confstr SVID bsd XPG svid hsearch drand fmtmsg xpg 
xsi uref kB
address@hidden  LocalWords:  smallexample noindent Preprocesser undefining 
undef stdlib str
address@hidden  LocalWords:  mem wcs dirent fcntl defvr XOPEN defvrx Unices 
LARGEFILE ftell
address@hidden  LocalWords:  fseeko ftello ISOC libc lfs lbsd compat cpu Syslog 
setjmp RDWR
address@hidden  LocalWords:  longjmp pthreads multithreaded sizeof fileno creat 
unistd API
address@hidden  LocalWords:  deftypefun const pxref errno EACCES EEXIST EINTR 
EISDIR EMFILE
address@hidden  LocalWords:  RLIMIT NOFILE ENFILE ENOENT ENOSPC ENXIO NONBLOCK 
WRONLY EROFS
address@hidden  LocalWords:  deftypefn filedes itemx pread FSYNC desc pwrite 
lseek fseek fd
address@hidden  LocalWords:  ESPIPE buf deftp fpos INCR XTND fdopen opentype 
fopen stdin tv
address@hidden  LocalWords:  FSETLOCKING stdout vindex STDERR dup fclean fflush 
iovec iov
address@hidden  LocalWords:  struct len readv mmap mmapped PAGESIZE sysconf 
PROT vtable CLR
address@hidden  LocalWords:  mmaping msync mmaps malloc DENYWRITE GROWSDOWN 
EINVAL ENOMEM
address@hidden  LocalWords:  ENODEV ENOEXEC EAGAIN ETXTBSY freopen munmap unmap 
ASYNC addr
address@hidden  LocalWords:  EFAULT mremap MAYMOVE mmapable fallback madvise 
MADV WILLNEED
address@hidden  LocalWords:  prefaulted DONTNEED deftypevr SETSIZE ISSET nfds 
fds timeval
address@hidden  LocalWords:  EBADF usec fprintf stderr fsync fildes pthread 
fdatasync aio
address@hidden  LocalWords:  aiocb reqprio SIGEV sigev signo nbytes LIO NOP lio 
listio nent
address@hidden  LocalWords:  sigevent aiocbp ENOSYS reqpiro ECANCELED 
EINPROGRESS sig EIO
address@hidden  LocalWords:  NOWAIT timespec NOTCANCELED ALLDONE aioinit init 
num usedba cd
address@hidden  LocalWords:  numusers SGI Irix DUPFD GETFD SETFD pid CLOEXEC 
cloexec arg DT
address@hidden  LocalWords:  oldflags umask NOCTTY CTTY NOLINK lstat NOTRANS 
TRUNC SHLOCK
address@hidden  LocalWords:  ftruncate afterward EXLOCK NDELAY SIGIO NOATIME 
GETFL ACCMODE
address@hidden  LocalWords:  SETFL nonblock RDLCK WRLCK UNLCK GETLK lockp SETLK 
ENOLCK dir
address@hidden  LocalWords:  SETLKW EDEADLK SETOWN SIGURG GETOWN tcgetpgrp 
ESRCH IOCTLs PWD
address@hidden  LocalWords:  getpwuid getpwnam getcwd ERANGE xmalloc getwd 
chdir ENOTDIR ps
address@hidden  LocalWords:  fchdir dirname opendir readdir ino namlen dirfd 
reclen scandir
address@hidden  LocalWords:  cmp strcmp strcoll alphasort versionsort 
strverscmp eps cnt np
address@hidden  LocalWords:  perror ftw nftw func SLN oldname newname EMLINK 
EPERM EXDEV ns
address@hidden  LocalWords:  readlink MAXSYMLINKS symlinks ELOOP SYMLOOP 
symlink EDQUOT dev
address@hidden  LocalWords:  xrealloc nchars inode realpath EBUSY rmdir 
ENOTEMPTY mkdir uid
address@hidden  LocalWords:  nlink gid atime mtime ctime rdev blkcnt blksize 
longint fstat
address@hidden  LocalWords:  ISDIR ISREG ISFIFO ISLNK ISSOCK IFMT ISCHR IFCHR 
IFDIR IFBLK
address@hidden  LocalWords:  IFREG IFLNK IFSOCK IFIFO TYPEISMQ TYPEISSEM 
TYPEISSHM chown wb
address@hidden  LocalWords:  chgrp fchown chmod IRUSR IREAD IWUSR IWRITE IXUSR 
IEXEC IRWXU
address@hidden  LocalWords:  IRGRP IWGRP IXGRP IRWXG IROTH IWOTH IXOTH IRWXO 
ISUID ISGID de
address@hidden  LocalWords:  ISVTX tmp nondirectory EFTYPE getumask setuid 
setgid utime tvp
address@hidden  LocalWords:  utimbuf actime modtime utimes lutimes futimes 
EFBIG extralarge
address@hidden  LocalWords:  memcpy mknod tmpfile tmpnam tempnam nonreentrant 
mkstemp SUID
address@hidden  LocalWords:  reentrancy TMPDIR SGID tmpdir mktemp XXXXXX 
mkdtemp FIFOs EOF
address@hidden  LocalWords:  SIGPIPE EPIPE fgetc putchar fclose mypipe ferror 
mkfifo rlogin
address@hidden  LocalWords:  IPv namespace Namespaces socklen DGRAM SEQPACKET 
RDM sockaddr
address@hidden  LocalWords:  getsockname sa INET UNSPEC Inet ENOTSOCK 
EADDRNOTAVAIL IPPORT
address@hidden  LocalWords:  EADDRINUSE ptr ENOBUFS loopback eth IFNAMSIZ 
nametoindex un IP
address@hidden  LocalWords:  ifname indextoname ifindex nameindex freenameindex 
socketpair
address@hidden  LocalWords:  stddef strncpy offsetof strlen netinet uint 
flowinfo ifinfo af
address@hidden  LocalWords:  subsubsection subsubheading netmask INADDR 
localhost arpa inet
address@hidden  LocalWords:  aton ntoa ntop makeaddr lnaof netof pton netdb 
hostent buflen
address@hidden  LocalWords:  gethostbyname gethostbyaddr getaddrinfo 
getnameinfo errnop DNS
address@hidden  LocalWords:  gethostname hostbuf hstbuflen tmphstbuf herr 
realloc stayopen
address@hidden  LocalWords:  sethostent gethostent endhostent getservbyname 
USERRESERVED hd
address@hidden  LocalWords:  REUSEADDR servent proto getservbyport setservent 
getservent ok
address@hidden  LocalWords:  endservent endian htons ntohs htonl ntohl 
hostshort netshort
address@hidden  LocalWords:  hostlong netlong UDP RDP getprotobyname protoent 
setprotoent
address@hidden  LocalWords:  getprotobynumber getprotoent endprotoent hostname 
hostinfo OOB
address@hidden  LocalWords:  CCITT ENOTCONN EAFNOSUPPORT EPROTONOSUPPORT 
EOPNOTSUPP iftex
address@hidden  LocalWords:  EISCONN ETIMEDOUT ECONNREFUSED ENETUNREACH 
EWOULDBLOCK recv pw
address@hidden  LocalWords:  getpeername DONTROUTE MAXMSG clientname recvfrom 
sendmsg Inetd
address@hidden  LocalWords:  recvmsg msghdr recfrom sendto strcpy inetd tcp 
nowait tex grp
address@hidden  LocalWords:  setfilename settitle smallbook setchapternewpage 
dircategory
address@hidden  LocalWords:  paragraphindent direntry titlefont filll 
multitable Suvasa pwd
address@hidden  LocalWords:  columnfractions shortcontents shorttitlepage tms 
termios ssize
address@hidden  LocalWords:  getline isspace prioritization SIGTTIN fputc 
RDONLY writev CHR
address@hidden  LocalWords:  librt libpthread DSYNC execv BLK statbuf IFTODT 
DTTOIF dtype
address@hidden  LocalWords:  dirstream closedir NUL multithreading dp ep 
rewinddir telldir
address@hidden  LocalWords:  seekdir pos DNR SL unfreed ntfw ENAMETOOLONG ISBLK 
diskless SZ
address@hidden  LocalWords:  findex fchmod IPC misordered rsh addrtype 
signalled IMPLINK zw
address@hidden  LocalWords:  Hurd EALREADY EMSGSIZE SERVERHOST servername 
SIOCATMARK atmark
address@hidden  LocalWords:  sockatmark oob ftpd dgram udp talkd username 
SIGHUP getsockopt
address@hidden  LocalWords:  optname optval ENOPROTOOPT setsockopt optlen Argh 
hfuzz onoff
address@hidden  LocalWords:  KEEPALIVE OOBINLINE SNDBUF RCVBUF netent 
getnetbyname isatty
address@hidden  LocalWords:  getnetbyaddr setnetent getnetent endnetent ttyname 
ctermid EOL
address@hidden  LocalWords:  ENOTTY IXOFF IXON noncanonical ICANON lflag 
tcgetattr tcflag
address@hidden  LocalWords:  tcsetattr iflag oflag cflag NCCS TCSANOW TCSADRAIN 
TCSAFLUSH
address@hidden  LocalWords:  TCSASOFT CIGNORE SIGTTOU istrip INPCK IGNPAR 
PARMRK IGNBRK RET
address@hidden  LocalWords:  BRKINT SIGINT IGNCR ICRNL INLCR IXANY IMAXBEL 
OPOST ONLCR kbd
address@hidden  LocalWords:  OXTABS ONOEOT pseudoterminal CLOCAL HUPCL CREAD 
PARENB PARODD
address@hidden  LocalWords:  CSIZE CCTS OFLOW CTS RTS MDMBUF cfgetispeed 
cfgetospeed ECHOE
address@hidden  LocalWords:  tcsettattr ECHOPRT ECHOK ECHOKE ECHONL ECHOCTL 
ISIG INTR SUSP
address@hidden  LocalWords:  IEXTEN LNEXT NOFLSH TOSTOP ALTWERASE WERASE FLUSHO 
NOKERNINFO
address@hidden  LocalWords:  PENDIN EXTPROC roland cfsetospeed cfsetispeed 
cfsetspeed EXTA
address@hidden  LocalWords:  EXTB VINTR VDISABLE VEOF VEOL ESC csh filec cbreak 
multibyte
address@hidden  LocalWords:  DSUSP SIGTSTP VSTART VSTOP VLNEXT VDISCARD VSTATUS 
VMAX VMIN
address@hidden  LocalWords:  indices VTIME cfmakeraw sgtty sgttyb gtty stty sg 
ispeed xon
address@hidden  LocalWords:  ospeed tcsendbreak tcdrain tcflush TCIFLUSH 
TCOFLUSH TCIOFLUSH
address@hidden  LocalWords:  tcflow xoff TCOOFF TCOON TCIOFF TCION Noncanon 
tattr atexit ld
address@hidden  LocalWords:  SIGSEGV Pseudoterminals pseudoterminals getpt 
grantpt SIGCHLD
address@hidden  LocalWords:  unlockpt ptsname FIXME pty amaster aslave 
isastream ptem termp
address@hidden  LocalWords:  ldterm libutil openpty winsize winp forkpty 
waitpid getpid env
address@hidden  LocalWords:  getppid NPROC vfork argv execl execve execle 
execvp filenambe
address@hidden  LocalWords:  execlp MYPGRP pgid WNOHANG WUNTRACED ECHILD rusage 
sigchld ctl
address@hidden  LocalWords:  signum serrno WIFEXITED WEXITSTATUS WIFSIGNALED 
WTERMSIG IGN
address@hidden  LocalWords:  WCOREDUMP WIFSTOPPED WSTOPSIG termsig coredump 
retcode stopsig
address@hidden  LocalWords:  setpgid setsid SIGSTOP tmodes subshell getpgrp 
tcsetpgrp DFL
address@hidden  LocalWords:  noninteractively noninteractive SIGQUIT infile 
outfile errfile
address@hidden  LocalWords:  SIGCONT jlast jnext SIGKILL getsid getpgid setpgrp 
tcgetsid su
address@hidden  LocalWords:  NSS Microsystems Solaris ABI netgroup passwd rpc 
bootparams xr
address@hidden  LocalWords:  netmasks publickey nsswitch conf nis nisplus dns 
NOTFOUND nss
address@hidden  LocalWords:  notfound unavail tryagain ftable enum setpwent 
getpwent soname
address@hidden  LocalWords:  endpwent noop PARAMS nonconstant getuid getgid 
geteuid getegid
address@hidden  LocalWords:  getgroups ngroups seteuid neweuid newuid setreuid 
ruid euid rw
address@hidden  LocalWords:  setegid newgid setregid rgid egid setgroups 
initgroups jdoe ut
address@hidden  LocalWords:  getgrouplist uids ifdef endif rwsr myname cuserid 
getlogin LVL
address@hidden  LocalWords:  nonprivileged LOGNAME utmp inittab runlevel 
setutent getutent
address@hidden  LocalWords:  getutid getutline pututline endutent utmpname WTMP 
updwtmp YP
address@hidden  LocalWords:  wtmp utmpx setutxent getutxent endutxent getutxid 
getutxline
address@hidden  LocalWords:  pututxline utmpxname getutmp getutmpx logwtmp 
gecos fgetpwent
address@hidden  LocalWords:  putpwent getgrgid getgrnam fgetgrent setgrent 
getgrent printf
address@hidden  LocalWords:  endgrent Throckmorton Snurd snurd friedman tami 
netgroups FQDN
address@hidden  LocalWords:  groupname setnetgrent getnetgrent innetgr hostp 
userp domainp
address@hidden  LocalWords:  endnetgrent hostid domainname MAXHOSTNAMELEN 
sethostname uname
address@hidden  LocalWords:  getdomainnname getdomainname setdomainname 
gethostid sethostid
address@hidden  LocalWords:  targetted utsname sysname sparc sony mips dec 
nodename proc fs
address@hidden  LocalWords:  fstab mtab MNTTAB mntent getfsent getfsspec 
getfsfile vfstype
address@hidden  LocalWords:  mntops getsubopt Suboptions RQ RO passno setfsent 
threadsafe
address@hidden  LocalWords:  getfs endfsent getmntent addmntent hasmntopt mnt 
fsname nfs ro
address@hidden  LocalWords:  MNTTYPE MNTOPT suid NOSUID nosuid NOAUTO noauto 
setmntent MGC
address@hidden  LocalWords:  endmntent mentent bufsize getmentent unmounting 
fstype rwflag
address@hidden  LocalWords:  filesystems multibit RMT NOEXEC NODEV MANDLOCK 
NODIRATIME nlen
address@hidden  LocalWords:  cdrom ENOTBLK superblock umount unmounts unbusy 
sysctl newlen
address@hidden  LocalWords:  syslog VM FREEPG oldval newval bdflush TZNAME asa 
LOCALEDEF ar
address@hidden  LocalWords:  localedef CLK TCK CHARCLASS unistdh REALTIME 
MEMLOCK PRIO MQ
address@hidden  LocalWords:  DELAYTIMER RTSIG SEM NSEMS SIGQUEUE PII XTI OSI 
UIO MAXIOV bc
address@hidden  LocalWords:  CLTS GETGR GETPW ATTR STACKADDR STACKSIZE obase 
EXPR expr ONLN
address@hidden  LocalWords:  getpagesize NPROCESSORS AVPHYS XCU ENH SHM NZERO 
SCHAR SHRT NL
address@hidden  LocalWords:  UCHAR ULONG USHRT ARGMAX LANGMAX MSGMAX NMAX 
SETMAX TEXTMAX Za
address@hidden  LocalWords:  strerror pathconf fpathconf MAXNAMLEN XFER MAXBUF 
FILESIZEBITS
address@hidden  LocalWords:  CFLAGS LDFLAGS LINTFLAGS CFR glibcbug getpass 
plaintext nread
address@hidden  LocalWords:  lineptr seedchars UVWXYZabcdefghijklmnopqrstuvwxyz 
iSaq rB ecb
address@hidden  LocalWords:  jJPPvAPECNaaWzMK NIST setkey edflag deftypefunx 
SUNRPC MAXDATA
address@hidden  LocalWords:  HW DESERR NOHWDEVICE HWERROR cbc ivec des 
setparity getrusage
address@hidden  LocalWords:  ru stime maxrss ixrss idrss minflt majflt nswap 
inblock msgsnd
address@hidden  LocalWords:  oublock msgrcv nsignals nvcsw nivcsw vtimes 
nonnull vm idsrss
address@hidden  LocalWords:  inblk oublk getrlimit setrlimit rlimit rlim 
SIGXCPU FSIZE RSS
address@hidden  LocalWords:  SIGXFSZ OFILE brk sbrk NLIMITS ulimit cmd GETFSIZE 
SETFSIZE rr
address@hidden  LocalWords:  vlimit LIM COR sched mlock mlockall nitty param 
setscheduler
address@hidden  LocalWords:  getscheduler getparam setparam getpriority 
setpriority niceval
address@hidden  LocalWords:  PGRP NUMA bitset bitsets getaffinity cpuset 
setaffinity avphys
address@hidden  LocalWords:  nprocs getloadavg loadavg nelem Syslogd Klogd 
vsyslog openlog
address@hidden  LocalWords:  ident closelog mylibrary ODELAY glibc MAKEPRI AUTH 
LPR CRON va
address@hidden  LocalWords:  cron AUTHPRIV EMERG CRIT arglist initlog 
setlogmask logmask uc
address@hidden  LocalWords:  UPTO exampleprog jmp siglongjmp sigjmp sigsetjmp 
savesigs ucp
address@hidden  LocalWords:  ucontext setcontext ss makecontext getcontext 
swapcontext oucp
address@hidden  LocalWords:  fp nswitching sigaction itimerval sigfillset 
SIGPROF setitimer
address@hidden  LocalWords:  ITIMER NSIG reraising FPE INTDIV SUBRNG FLTOVF 
FLTDIV FLTUND
address@hidden  LocalWords:  DECOVF SIGILL SIGBUS SIGABRT SIGIOT iot SIGTRAP 
SIGEMT SIGSYS
address@hidden  LocalWords:  SIGTERM SIGALRM SIGVTALRM SIGPOLL SIGCLD SIGLOST 
SIGUSR sysv
address@hidden  LocalWords:  deftypevrx SIGWINCH SIGINFO strsignal psignal 
siglist ssignal
address@hidden  LocalWords:  sighandler deinstalled sigset sigemptyset 
siginterrupt ONSTACK
address@hidden  LocalWords:  NOCLDSTOP sighup sigint sigprocmask prev obstack 
alloc defmac
address@hidden  LocalWords:  Nonatomic nonatomic gsignal raise'd tstp ESCRH 
killpg usr frob
address@hidden  LocalWords:  synch sigaddset sigdelset sigismember sigmask 
ifset oldset sv
address@hidden  LocalWords:  SETMASK SIGFPE sigpending sigsuspend oldmask 
SIGSTKSZ sigstack
address@hidden  LocalWords:  sigaltstack MINSIGSTKSZ oldstack downward upward 
onstack sem
address@hidden  LocalWords:  sigvec RESETHAND failflag sigblock sigsetmask 
sigpause attr ap
address@hidden  LocalWords:  joinable retval attrname setdetachstate 
setguardsize setscope
address@hidden  LocalWords:  setinheritsched setschedparam setschedpolicy 
setstack setattr
address@hidden  LocalWords:  setstackaddr setstacksize getdetachstate 
getguardsize getscope
address@hidden  LocalWords:  getinheritsched getschedparam getschedpolicy 
getstack getattr
address@hidden  LocalWords:  getstackaddr getstacksize detachstate schedpolicy 
doc'd atrr
address@hidden  LocalWords:  setpolicy ENOTSUP schedparam inheritsched 
LinuxThreads cond pc
address@hidden  LocalWords:  stackaddr stacksize guardsize timedwait testcancel 
sigwait mut
address@hidden  LocalWords:  nanosleep setcancelstate oldstate setcanceltype 
oldtype mutex
address@hidden  LocalWords:  Mutexes ual clusion mutexes mutexattr ERRORCHECK 
trylock nsec
address@hidden  LocalWords:  timedlock abstime settype gettype condattr 
gettimeofday semctl
address@hidden  LocalWords:  relocks semop SysV pshared trywait PowerPC 
Ultrasparc async Wl
address@hidden  LocalWords:  getvalue sval TSD destr setspecific reassociate 
destructors TZ
address@hidden  LocalWords:  getspecific newmask atfork flockfile funlockfile 
cancelled src
address@hidden  LocalWords:  setconcurrency getconcurrency NDEBUG errnum 
Variadic variadic
address@hidden  LocalWords:  stdarg varargs dest Variadics nonprototype alist 
dcl deffn awk
address@hidden  LocalWords:  ptrdiff LONGBITS WCHAR significand Nonnormalized 
denormal LDBL
address@hidden  LocalWords:  toward MANT smallfonts texi IFLOW CSTOPB INTOVF 
argc VDSUSP
address@hidden  LocalWords:  VERASE VKILL VQUIT VREPRINT VSUSP VWERASE 
textfonts binutils
address@hidden  LocalWords:  appendixsec FPU omitfp versioning tls submodel 
linux mcpu dvi
address@hidden  LocalWords:  Makeconfig configparms RANLIB ranlib nscd devptsfs 
devfs ln po
address@hidden  LocalWords:  localedata tzselect mawk sed intl msgs autoconf 
gettext cris
address@hidden  LocalWords:  hppa ia powerpc linuxaout osf linuxecoff isc sco 
nindy mvme se
address@hidden  LocalWords:  newsos config HOWTO subdir args libdir datadir 
bindir objs nfp
address@hidden  LocalWords:  sysdeps unix Makerules sysdep Subdirs DEFS 
appendixsubsec irix
address@hidden  LocalWords:  libm wordsize coprocessor fpu conformant mach 
microkernel CMU
address@hidden  LocalWords:  syscalls ioctls errnos errlist rms drepper qsort 
Haertel Kehoe
address@hidden  LocalWords:  Gloger Granlund DECStation ultrix mktime Eggert 
Dynix sgi argp
address@hidden  LocalWords:  Kazumoto Kojima scanf strtod multiprecision 
catgets wchar argz
address@hidden  LocalWords:  backends backend Eriksson Hongjiu Blundell 
Mosberger Keating
address@hidden  LocalWords:  Bader envz strstr fdlibm Conklin libio Bothner 
Youngdale Kukuk
address@hidden  LocalWords:  securelevel Kettenis srandom setstate initstate 
srand ppp Metz
address@hidden  LocalWords:  Itanium nonfree copylefted lgpl ifclear GPL inline 
sublicense
address@hidden  LocalWords:  Yoyodyne FDL noncommercially DTD PostScript PDF 
retitle pdict
address@hidden  LocalWords:  printindex cp tp fn vr

Index: intro-elisp-2.5.html
===================================================================
RCS file: intro-elisp-2.5.html
diff -N intro-elisp-2.5.html
--- intro-elisp-2.5.html        17 Apr 2008 14:23:15 -0000      1.10
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,175 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>An Introduction to Programming in Emacs Lisp, Revised Second 
Edition</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/intro-elisp-2.5.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>An Introduction to Programming in Emacs Lisp</h3>
-
-by Robert J. Chassell<br>
-
-Revised Second Edition<br>
-
-<p>
-
-<table border="0" cellpadding="0" cellspacing="2" width="415">
-
-<tr>
-
-<td width="170">
-<img src="intro-elisp-2.5.png" width="170" height="220" border="1"
-alt="Introduction to Emacs Lisp book cover image">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-
-<td width="225">
-306 Pages<br>
-Cover Price: $35.00<br>
-<b>Web price sales special<br>
-40% off - Now $21.00!</b><br>
-January 2004<br>
-ISBN 1-882114-56-6<br>
-Trade Paper, Lay Flat Binding<br>
-<a href="/software/emacs/emacs-lisp-intro/">On-line version</a><br>
-<a href="http://order.fsf.org/";><i>Order Now!</i></a><br>
-
-A book review <a href="Intro-Elisp-Review1.pdf"><i>Free Software
-Magazine's Book Review</i></a> of the previous edition. (PDF
-Format)<br> </td>
-
-</tr>
-</table>
-
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-<table cellspacing="5"><tr><td>
-
-<p>
-This tutorial an elementary introduction to teach non-programmers how
-to customize their work environment; it can also be used as an
-introduction to programming basics. It includes numerous exercises and
-sample programs; the author also walks you through the actual source
-code of several GNU Emacs commands. A handy reference appendix is
-included.
-</p>
-
-<p>
-Emacs Lisp is a simple, complete, and powerful programming
-language. It is the building block of GNU Emacs, which is an
-integrated development environment with special features for scanning
-and parsing text as well as for handling multiple files, buffers,
-displays, windows, and sub-processors.
-</p>
-
-This book will show you:<br>
-<ul>
-
-<li>how to set variables and write function definitions
-<li>How to use &quot;if&quot; and &quot;let&quot;
-<li>How to write &quot;while&quot; loops and recursive loops
-<li>how to search for a word or expression
-<li>how to customize GNU Emacs for yourself, even when it is shared on a 
network.
-<li>how to debug programs
-<li>and much more.
-
-</ul>
-
-<p>
-This revised second edition covers new features included in GNU Emacs
-version 21, while remaining compatible with earlier versions.
-</p>
-
-
-About the author:<br> 
-<p>
-Robert J. Chassell has worked with GNU Emacs since 1985. He writes and
-edits, teaches GNU Emacs and Emacs Lisp, and speaks throughout the
-world on software freedom. He has an abiding interest in social and
-economic history and flies his own airplane.
-</p>
-</table></tr></td>
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-</p>
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006 
<BR> 
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-</p>
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-</p>
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/04/17 14:23:15 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: intro-elisp-2.5.png
===================================================================
RCS file: intro-elisp-2.5.png
diff -N intro-elisp-2.5.png
Binary files /tmp/cvsNk1CC2 and /dev/null differ

Index: isbn.html
===================================================================
RCS file: isbn.html
diff -N isbn.html
--- isbn.html   4 Jun 2007 17:49:33 -0000       1.30
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,249 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Information for Resellers</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Information for Resellers</h3>
-
-<p>
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/isbn.html">English</a>
-]
-
-<br>
-<P
-<HR
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-
-<table cellspacing=5><tr><td>
-
-
-<h3>BOOKS IN PRINT</h3>
-<b>List sorted by publication date; most recent is listed first.</b><br>
-
-<ul>
-
-<li><a href="book8.html">GNU Make: A Program for Directing
-Recompilation</a><br>
-Authors: Richard M. Stallman, Roland McGrath and Paul D. Smith<br>
-ISBN: 1-882114-83-3<br>
-Retail Price: $25.00 US<br>
-Publication Date: June 2004 <br>
-
-<li><a href="http://www.gnupress.org/clib-fund.html";>GNU C Library:
-Application Fundamentals</a><br>
-Authors: Sandra Loosemore, et al<br>
-ISBN:  ISBN 1-882114-22-1<br>
-Retail Price: $60.00<br>
-Publication Date: March 2004<br>
-Hardcover<br>
-
-<li><a href="http://www.gnupress.org/clib-system.html";>GNU C Library:
-System & Network Applications</a><br>
-Authors: Sandra Loosemore, et al<br>
-ISBN:  ISBN 1-882114-24-8<br>
-Retail Price: $60.00<br>
-Publication Date: March 2004<br>
-Hardcover<br>
-
-<li><a href="http://www.gnupress.org/radius.html";>GNU Radius: A
-Reference Manual</a><br>
-Author: Sergey Poznyakoff<br>
-ISBN: 1-882114-69-8<br>
-Retail Price: $25.00<br>
-Publication Date: October 2003<br>
-
-<li><a href="mdk.html">GNU MDK: The MIX Development Kit</a> <it>New
-Revised First Edition</it><br>
-Author: Jose' Antonio Ortega Ruiz<br>
-ISBN: 1-882114-29-9<br>
-Retail Price: $20.00 US<br>
-Publication Date: September 2003<br>
-
-<li><a href="book10.html">Bison Manual: Using the YACC-compatible
-Parser Generator, for Version 1.875</a><it> New Eighth Edition</it><br>
-Authors: Charles Donnelly and Richard M. Stallman<br>
-ISBN: 1-882114-23-X<br>
-Retail Price: $25.00<br>
-Publication Date: September 2003<br>
-
-<li><a href="book13.html">Free Software, Free Society: Selected Essays
-         of Richard M. Stallman</a><br>
-Author: Richard M. Stallman<br>
-Introduction: Lawrence Lessig<br>
-ISBN: 1-882114-98-1<br>
-Retail Price: $24.95 US<br>
-Publication Date: October 2002<br>
-Hardcover with dust jacket
-
-<li><a href="emacs15.html">GNU Emacs Manual, 15th Edition for Version
-21</a><br>
-Author: Richard M. Stallman<br>
-ISBN: 1-882114-85-X<br>
-Retail Price: $45.00 US<br>
-Publication Date: August 2002<br>
-
-<li><a href="book9.html">Texinfo: The GNU Documentation Format, for
-Version 4</a><br>
-Author: Robert J. Chassell & Richard M. Stallman<br>
-ISBN: 1-882114-67-1<br>
-Retail Price: $25.00 US <br>
-Publication Date: September 1999 <br>
-
-<li><a href="book11.html">Flex: The Lexical Scanner Generator, for
-Version 2.3.7</a><br>
-Author: G. T. Nicol<br>
-ISBN: 1-882114-21-3<br>
-Retail Price: $20.00 US<br>
-Publication Date: February 1993<br>
-</ul>
-
-
-<h3>SOFTWARE IN PRINT</h3>
-
-<ul>
-<li><a href="http://www.gnu.org/order/source18.html";>GNU Source Code
-         CD Set,</a> 18th Edition<br>
-Retail Price: $45.00 US<br>
-Publication Date: May 2004<br>
-
-<li><a href="http://www.gnu.org/order/binaries.html";>GNU Binaries
-         3-CD Set,</a> 8th Edition<br>
-ISBN: 1-882114-93-0<br>
-Retail Price: $45.00 US<br>
-Publication Date: June 2002<br>
-</ul>
-
-
-<H3>OUT OF PRINT</H3>
-<ul>
-
-<li><a href="book5.html">Using and Porting GNU CC, for Version 2.95</a><br>
-Author: Richard M. Stallman<br>
-ISBN: 1-882114-38-8<br>
-Retail Price: $35.00 US<br>
-Publication Date: July 1999<br>
-
-<li><a href="http://www.gnupress.org/using.html";>Using GCC: The GNU
-Compiler Collection Reference Manual</a><br>
-Authors: Richard M. Stallman and the GCC Developer Community <br>
-ISBN: 1-882114-39-6<br>
-Retail Price: $45.00<br>
-Publication Date: October 2003<br>
-
-<li><a href="book3.html">GNU Emacs Lisp Reference Manual, for Emacs
-Version 21</a><br>
-Author: Lewis, LaLiberte & Stallman<br>
-ISBN: 1-882114-73-6<br>
-Retail Price: $60.00 US<br>
-Publication Date: May 2000<br>
-Replacement edition not yet planned.<br>
-
-<li><a href="http://www.gnupress.org/intro-elisp-2.5.html";>An
-Introduction to Programming in Emacs Lisp, Revised Second
-Edition</a><br>
-Author: Robert J. Chassell<br>
-ISBN: 1-882114-56-6<br>
-Retail Price: $35.00 US<br>
-Publication Date: January 2004<br>
-
-<li><a href="book7.html">Debugging with GDB: The GNU Source-Level
-Debugger</a><br>
-Author: Stallman, Pesch, Shebs, et al.<br>
-ISBN: 1-882114-88-4<br>
-Retail Price: $30.00 US <br>
-Publication Date: January 2002<br>
-
-<li><a href="book6.html">GNU C Library Reference Manual (2
-volume set)</a><br> 
-ISBN: 1-882114-55-8<br>
-The two-volume set has been split into two seperate
-replacement titles:<br>
-<a href="http://www.gnu.org/doc/clib-fund.html";>GNU C Library:
-Application Fundamentals</a><br>
-<a href="http://www.gnu.org/doc/clib-system.html";>GNU C Library:
-System & Network Applications</a><br>
-
-<li><a href="book12.html">The Termcap Manual: The Termcap Library and
-Data Base, 3d Edition</a><br>
-ISBN: 1-882114-87-6<br>
-No replacement title. Permanently Out-Of-Print.<br>
-
-<li><a href="windows.html">GNU Software for MS-Windows and MS-DOS
- (book with CD) Second Edition</a><br>
-Author: Hagerty, Weisshaus & Zaretskii<br>
-ISBN: 1-882114-58-2<br>
-Publication Date: June 2001<br>
-No replacement title. Permanently Out-Of-Print.<br>
-</ul>
-
-</tr></td>
-</table>
-
-<P
-<hr>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>,
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 2001, 2002, 2003, 2004, 2005, 2006 
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2007/06/04 17:49:33 $ $Author: ward $ 
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: libc-manual.html
===================================================================
RCS file: libc-manual.html
diff -N libc-manual.html
--- libc-manual.html    5 May 2005 19:37:09 -0000       1.5
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,118 +0,0 @@
-<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<HTML>
-<HEAD>
-<TITLE>The GNU C Library Ref. Man. - GNU Project - Free Software Foundation 
(FSF)</TITLE>
-<LINK REV="made" HREF="mailto:address@hidden";>
-</HEAD>
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#1F00FF" ALINK="#FF0000" 
VLINK="#9900DD">
-<a href="gdb.html name="top"></a>
-<h3>The GNU C Library Reference Manual</H3>
-
-<p><b>Sandra Loosemore with Richard M. Stallman, Roland McGrath, Andrew </b>
-<b>Oram, and Ulrich Drepper.</b>
-Edition 0.09 Draft, last updated 28 August 1999, for Version 2.2 Beta.
-1080 pages, 31 chapters and 6 appendices (2 volume set).  ISBN: 1-882114-54-X.
-(The table of contents and index are printed in full in each volume, so the
-actual page count is over 1100 pages.)
-
-<p>The GNU C library, described in this manual, defines all of the library
-functions that are specified by the ANSI C Standard, as well as additional
-features specific to POSIX and other derivatives of the Unix operating
-system, and extensions specific to the GNU system.
-
-<p>This manual tells you how to use the facilities of the GNU library,
-including both what Unix refers to as "library functions" and "system calls".
-
-<h4>Chapters</h4>
-
-<ol>
-<li>Introduction
-<li>Error Reporting
-<li>Memory Allocation
-<li>Character Handling
-<li>String and Array Utilities
-<li>Character Set Handling
-<li>Locales and Internationalization
-<li>Message Translation
-<li>Searching and Sorting
-<li>Pattern Matching
-<li>Input/Output Overview
-<li>Input/Output on Streams
-<li>Low-Level Input/Output
-<li>File System Interface
-<li>Pipes and FIFOs
-<li>Sockets
-<li>Low-level Terminal Interface
-<li>Mathematics
-<li>Arithmetic Functions
-<li>Date and Time
-<li>Non-Local Exits
-<li>Signal Handling
-<li>Process Startup & Termination
-<li>Processes
-<li>Job Control
-<li>System Databases and Name Service Switch
-<li>Users and Groups
-<li>System Information
-<li>System Configuration Parameters
-<li>DES Encryption and Password Handling
-<li>POSIX Threads
-</ol>
-
-<h4>Appendixes</h4>
-<p>A. C Language Facilities in the Library<br>
-B. Summary of Library Facilities<br>
-C. Installing the GNU C Library<br>
-D. Library Maintenance<br>
-E. Contributors to the GNU C Library<br>
-F. GNU Library General Public License<br>
-
-<h4>Indexes</h4>
-<ol>
-<li>Concept Index
-<li>Type Index
-<li>Function and Macro Index
-<li>Variable and Constant Macro Index
-<li>Program and File Index
-</ol>
-
-<h4>Why order the book?</h4>
-
-For several reasons:
-
-<ul>
-<li>Reading a book is easier than reading text online.  
-<li>You can take it with you without a computer.  
-<li>Weighing in at 4 pounds, it can be used as part of a personal fitness 
routine.
-<li>The book has a lay-flat binding that's made to stay open on your desk. 
-<li>To help support the work of the Free Software Foundation.
-</ul>
-
-<p>
-<a href="http://order.fsf.org/"; name="ordform">
-Free Software Foundation Order Form</a>
-
-<HR>
-
-Return to <A HREF="http://www.gnu.org/home.html";>GNU's home page</A>.
-
-<P>
-
-Please send comments on these web pages to
-
-<A HREF="mailto:address@hidden";><EM>address@hidden</EM></A>,
-send other questions to
-<A HREF="mailto:address@hidden";><EM>address@hidden</EM></A>.
-<P>
-Copyright (C) 1998, 1999 Free Software Foundation, Inc.,
-51 Franklin St, Fifth Floor, Boston, MA  02110,  USA
-<P>
-Verbatim copying and distribution of this entire article is
-permitted in any medium, provided this notice is preserved.<P>
-Updated:
-<!-- hhmts start -->
-20 Mar 2000 tower
-<!-- hhmts end -->
-<HR>
-</BODY>
-</HTML>

Index: make-manual.html
===================================================================
RCS file: make-manual.html
diff -N make-manual.html
--- make-manual.html    5 May 2005 19:37:09 -0000       1.5
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,84 +0,0 @@
-<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<HTML>
-<HEAD>
-<TITLE>GNU Make Manual - GNU Project - Free Software Foundation (FSF)</TITLE>
-<LINK REV="made" HREF="mailto:address@hidden";>
-</HEAD>
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#1F00FF" ALINK="#FF0000" 
VLINK="#9900DD">
-<a href="gdb.html" name="top"></a>
-<h3>GNU Make, A Program for Directing Recompilation</h3>
-
-<p>
-<A HREF=/doc/cover/make-front-big.jpg><IMG SRC=/doc/cover/make-front-small.jpg 
-ALT=" [Front cover of GNU Make Manual] " BORDER=0></A>
-<A HREF=/doc/cover/make-back-big.jpg><IMG SRC=/doc/cover/make-back-small.jpg 
-ALT=" [Back cover of GNU Make Manual] " BORDER=0></A>
-<p>
-Richard M. Stallman and Roland McGrath.  Make verion 3.79.
-ISBN: 1-882114-81-7.  174 pages.<br>
-
-<p><CITE> GNU Make </CITE> 
-(For Version 3.79) describes GNU
-       <CODE>make</CODE>, a program used to rebuild parts of other programs.
-
-<p>The manual
-       tells how to write "makefiles", which specify how a program is to be
-       compiled and how its files depend on each other.
-<p>It has an
-       introductury chapther with a sample makefile, and describes in detail
-       how to write the makefiles for your own programs and how to run Make to
-       update them.
-
-<p><CITE>GNU Make</CITE> provides a complete explanation of 
-<code>make</code>, 
-both the standard features familiar to most programmers and the many 
-extended features of GNU <code>make</code>.  A convenient appendix 
-serves as a quick reference for experts.
-
-<h4>About <CITE>GNU Make</CITE></h4>
-The <CITE>Make</CITE> utility automates the process of compilation. When the 
source files of a large program change, Make automatically determines which 
pieces need to be updated and recompiles only those files. All you do is type 
"make".
-<p>
-GNU <CITE>Make</CITE> is fully compliant with the POSIX.2 standard, and also 
has many powerful extensions: flexible implicit pattern rules, an extensive set 
of text manipulation functions, conditional evaluation of makefiles, support 
for parallel command execution, automatic updating of makefiles, and more.
-<p>
-There is more information on GNU <CITE>Make</CITE> <A 
HREF=/software/make/make.html>here</A>.
-
-<h4>Why order the book?</h4>
-
-For several reasons:
-
-<ul>
-<li>Reading a book is easier than reading text online.  
-<li>You can take it with you without a computer.  
-<li>It's almost pocket size, easily fitting into a briefcase or pack.
-<li>The book has a lay-flat binding that's made to stay open on your desk. 
-<li>To help support the work of the Free Software Foundation.
-</ul>
-
-<p>
-<a href="http://order.fsf.org/"; name="ordform">
-Free Software Foundation Order Form</a>
-
-<HR>
-
-Return to <A HREF="http://www.gnu.org/home.html";>GNU's home page</A>.
-
-<P>
-
-Please send comments on these web pages to
-
-<A HREF="mailto:address@hidden";><EM>address@hidden</EM></A>,
-send other questions to
-<A HREF="mailto:address@hidden";><EM>address@hidden</EM></A>.
-<P>
-Copyright (C) 1998, 1999 Free Software Foundation, Inc.,
-51 Franklin St, Fifth Floor, Boston, MA  02110,  USA
-<P>
-Verbatim copying and distribution of this entire article is
-permitted in any medium, provided this notice is preserved.<P>
-Updated:
-<!-- hhmts start -->
-20 Jun 2000 3diff
-<!-- hhmts end -->
-<HR>
-</BODY>
-</HTML>

Index: mdk-1.5-cover.png
===================================================================
RCS file: mdk-1.5-cover.png
diff -N mdk-1.5-cover.png
Binary files /tmp/cvsTr0LN4 and /dev/null differ

Index: mdk.html
===================================================================
RCS file: mdk.html
diff -N mdk.html
--- mdk.html    19 May 2008 23:01:55 -0000      1.8
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,176 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/book16.html">English</a>
-]
-
-<P>
-<HR>
-
-<h4>GNU Software Manuals Series</h4>
-
- <h3>GNU MDK: GNU MIX Development Kit</h3>
-
-<p>
-
-<table border="0" cellpadding="0" cellspacing="2" width="445">
-
-<tr>
-
-<td width="200">
-<img src="mdk-1.5-cover.png" width="170" height="222" border="1" alt="GNU MDK 
book cover image">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-</td>
-
-<td width="250">
-Author: Jos&eacute; Antonio Ortega Ruiz<br> ISBN: 1-882114-29-9<br>
-Perfect bound, trade paper<br> $20.00<br> 116 Pages<br> Publication
-Date: September 2003<br> Revised First Edition<br> <br> <a
-href="http://order.fsf.org/";><i>Order Now!</i></a><br> </td> </tr>
-</table>
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-
-<table cellspacing="5"><tr><td>
-<p>
-The MIX is a mythical computer designed by Donald Knuth in his
-monumental work &quot;The Art Of Computer Programming&quot;. MIXAL
-(the Mix Assembly Language) is its assembler.  You can learn about MIX
-and MIXAL as an introduction to computer architecture or assembly
-programming, as a companion to Knuth's book, or just for fun!
-<p>
-The MIX's architecture is a simplified version of real CISC CPUs. It
-features registers, memory cells, an overflow toggle, comparison
-flags, input-output devices, and a set of binary instructions
-executable by its virtual CPU.  It is powerful and complete enough to
-provide a virtual development platform for writing quite complex
-programs, and useful for learning new programming techniques.
-
-<p>
-The following tools come with MDK:
-<br>
-
-<ul>
-<li> mixasm A MIXAL assembler to run and debug MIXAL source code
-<li> mixvm A MIX virtual machine emulation using a command line
-     interface
-<li> gmixvm A GTK+ GUI graphical interface for the MIX
-<li> mixguile A Guile shell with an embedded assembler and built-in 
-     Scheme commands
-<li> mixvm.el A Lisp program to run mixvm inside of an Emacs GUD buffer,
-     allowing concurrent editing and debugging of MIXAL programs
-</ul>
-<br>
-
-These tools allow you to:<br>
-
-<ul>
-<li> set breakpoints, run programs step by step, trace executed
-     instructions (great for debugging and learning)
-<li> set conditional breakpoints (register change, memory change, and more)
-<li> collect execution timing statistics
-<li> inspect and modify the MIX registers, flags and memory contents
-     at any step
-</ul>
-
-<p>
-This tutorial provides a thorough description of the MDK utilities.
-The latest version of the GNU MDK is easily downloadable from the Internet
-free of charge [instructions inside]. Executables exist for a wide
-range of free software platforms, as well as MS Windows and Macintosh.
-<p>
-
-<h4>About the Author:</h4>
-<p>
-Jose' Antonio Ortega Ruiz received his PhD from the University of
-Barcelona in Theoretical Physics in 1997. His interest is programming
-languages and methodologies, both at a practical and theoretical
-level. He is a fan of Donald Knuth and brought the MIX system to life
-following Knuth's original design.  Jose' currently teaches computer
-science classes at the Autonomous University of Barcelona, Spain.
-
-</tr></td>
-</table>
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to <a href="mailto:address@hidden";>
-<em>address@hidden</em></a>, send other questions to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 2001, 2002, 2003, 2004, 2005, 2006 
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/05/19 23:01:55 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: mdk.png
===================================================================
RCS file: mdk.png
diff -N mdk.png
Binary files /tmp/cvs76AEB3 and /dev/null differ

Index: onlinedoc.html
===================================================================
RCS file: onlinedoc.html
diff -N onlinedoc.html
--- onlinedoc.html      1 May 2006 10:04:13 -0000       1.5
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,142 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Online Documentation</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Online Documentation</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/onlinedoc.html">English</a>
-]
-
-<p>
-  [ <a href="gnupresspub.html">GNU Press</a> | 
-    <a href="doc.html">Documentation of the GNU project</a> | 
-    <a href="/home.html">GNU's home page</a> | 
-    <a href="/search.html">Search gnu.org</a>
-  ]
-
-<p>
-<hr>
-
-<p>
-All of the documentation listed below is covered by either a 
-<a href="/licenses/licenses.html#WhatIsCopyleft">Copyleft</a>, 
-<a href="/licenses/licenses.html#GPL">GPL,</a> or 
-<a href="/licenses/licenses.html#FDL">FDL</a> license granting you 
-permission to copy and redistribute it. If you use our on-line documentation, 
-please make a <a href="http://donate.fsf.org/";>donation</a> to the FSF to 
-help support our continuing work and maintenance of this site.
-
-<p>
-<a href="/order/ftp.html"> 
-<h4>FTP instructions for downloading documentation</h4>
-</a>
-
-<p>
-<a href="/doc/other-free-books.html">
-<h4>Non-GNU Free Books and Documentation</h4>
-</a>
-
-<p>
-<h4>ONLINE DOCUMENTATION</h4>
-<ul>
-<li><a href="/gnu/acct-6.3.2/accounting.html">acct-6.3.2</a>
-<li><a href="/gnu/autoconf-2.52/autoconf.html">autoconf-2.52</a>
-<li><a href="/gnu/autogen-5.3.6/autogen.html">autogen-5.3.6</a>
-<li><a href="/gnu/automake-1.6.1/automake.html">automake-1.6.1</a>
-<li><a href="/gnu/bash-2.05a/bashref.html">bash-2.05a</a>
-<li><a href="/gnu/bc-1.06/bc.html">bc-1.06</a>
-<li><a href="/gnu/bfd-2.9.1/bfd.html">bfd-2.9.1</a>
-<li><a href="/gnu/binutils-2.12/binutils.html">binutils-2.12</a>
-<li><a href="/gnu/bison-1.35/bison.html">bison-1.35</a>
-<li><a href="/gnu/cfengine-1.6.3/cfengine-Reference.html">cfengine-1.6.3</a>
-<li><a href="/gnu/cvs-1.9/cvs.html">cvs-1.9</a>
-<li><a href="/gnu/dc-1.05/dc.html">dc-1.05</a>
-<li><a href="/gnu/ddd/index.html">ddd</a>
-<li><a href="/gnu/dejagnu-1.3/dejagnu.html">dejagnu-1.3</a>
-<li><a href="/gnu/diffutils-2.8/diff.html">diffutils-2.8</a>
-<li><a href="/gnu/elisp-manual-20-2.5/elisp.html">elisp-manual-20-2.5</a>
-<li><a href="/gnu/elisp-manual-21-2.8/elisp.html">elisp-manual-21-2.8</a>
-<li><a href="/gnu/emacs-20.7/emacs.html">emacs-20.7</a>
-<li><a href="/gnu/emacs-21.2/emacs.html">emacs-21.2</a>
-<li><a href="/gnu/emacs-lisp-intro/emacs-lisp-intro.html">emacs-lisp-intro</a>
-<li><a href="/gnu/fileutils-4.1/fileutils.html">fileutils-4.1</a>
-<li><a href="/gnu/findutils-4.1/find.html">findutils-4.1</a>
-<li><a href="/gnu/finger-1.37/finger.html">finger-1.37</a>
-<li><a href="/gnu/flex-2.5.4/flex.html">flex-2.5.4</a>
-<li><a href="/gnu/gawk-3.1.0/gawk.html">gawk-3.1.0</a>
-<li><a href="/gnu/gas-2.9.1/as.html">gas-2.9.1</a>
-<li><a href="/software/gcc/onlinedocs/">gcc</a>
-<li><a href="/gnu/gdb-5.1.1/gdb.html">gdb-5.1.1</a>
-<li><a href="/gnu/gettext-0.11.2/gettext.html">gettext-0.11.2</a>
-<li><a href="/gnu/gleem/gleem.html">gleem-1.0</a>
-<li><a href="/gnu/glibc-2.2.3/libc.html">glibc-2.2.3</a>
-<li><a href="/gnu/gmp-4.0.1/gmp.html">gmp-4.0.1</a>
-<li><a href="/software/gnugo/gnugo-doc.html">gnugo-2.6</a>
-<li><a href="/gnu/gperf-2.7/gperf.html">gperf-2.7</a>
-<li><a href="/gnu/gprof-2.9.1/gprof.html">gprof-2.9.1</a>
-<li><a href="/gnu/grep-2.4/grep.html">grep-2.4</a>
-<li><a href="/gnu/grub-0.90/grub.html">grub-0.90</a>
-<li><a href="/gnu/gzip-1.2.4/gzip.html">gzip-1.2.4</a>
-<li><a href="/gnu/jwhois-2.4/jwhois.html">jwhois-2.4</a>
-<li><a href="/gnu/libtool-1.4.2/libtool.html">libtool-1.4.2</a>
-<li><a href="/gnu/ld-2.9.1/ld.html">ld-2.9.1</a>
-<li><a href="/gnu/m4-1.4/m4.html">m4-1.4</a>
-<li><a href="/gnu/mailutils-0.0.9b/mailutils.html">mailutils-0.0.9b</a>
-<li><a href="/gnu/make-3.79.1/make.html">make-3.79.1</a>
-<li><a href="/gnu/nana-1.14/nana.html">nana-1.14</a>
-<li><a href="/gnu/nano-0.9.99pre3">nano-0.9.99pre3</a>
-<li><a href="/gnu/plotutils-2.2/plotutils.html">plotutils-2.2</a>
-<li><a href="/software/radius/manual/">radius-0.95</a>
-<li><a href="/gnu/sed-3.02/sed.html">sed-3.02</a>
-<li><a href="/gnu/sharutils-4.2/sharutils.html">sharutils-4.2</a>
-<li><a href="/gnu/tar-1.12/tar.html">tar-1.12</a>
-<li><a href="/gnu/termcap-1.3/termcap.html">termcap-1.3</a>
-<li><a href="/gnu/termutils-2.0/tput.html">termutils-2.0</a>
-<li><a href="/gnu/texinfo-4.0/texinfo.html">texinfo-4.0</a>
-<li><a href="/gnu/texinfo-3.12/texinfo.html">texinfo-3.12</a>
-<li><a href="/gnu/texinfo-3.9/texinfo.html">texinfo-3.9</a>
-<li><a href="/gnu/textutils-2.0/textutils.html">textutils-2.0</a>
-<li><a href="/gnu/wget-1.8.1/wget.html">wget-1.8.1</a>
-</ul>
-
-<p>
-<hr>
-
-
-
-<P>
-Return to <a href="/home.html">GNU's home page</a>
-
-<p>
-Please send comments on these web pages to <a href="mailto:address@hidden";>
-<em>address@hidden</em></a>, send other questions to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2005, 2006 <BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2006/05/01 10:04:13 $ $Author: ramprasadb $ 
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: placeholder.jpg
===================================================================
RCS file: placeholder.jpg
diff -N placeholder.jpg
Binary files /tmp/cvsFtERn7 and /dev/null differ

Index: radius.html
===================================================================
RCS file: radius.html
diff -N radius.html
--- radius.html 23 Feb 2008 12:19:01 -0000      1.11
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,184 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>GNU Radius Manual</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/radius.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>GNU Radius: A Reference Manual</h3>
-By Sergey Poznyakoff<br>
-
-<br>
-
-<table border="0" cellpadding="0" cellspacing="2" width="600">
-
-<tr>
-
-<td width="170">
-<img src="Radius-frontcover.jpg" width="170" height="225" border="1" 
alt="Radius Manual cover image">
-</td>
-
-<td width="20">
-<br>
-
-</td>
-</td>
-
-<td width="410">
-188 Pages.<br>
-Cover Price: $25.00<br>
-October 2003, for Radius 1.1<br>
-ISBN 1-882114-69-8<br>
-Trade Paper, Perfect Binding<br>
-<a href="http://order.fsf.org/#manuals";><i>Order Now!</i></a><br>
-
-</td>
-</tr>
-</table>
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-<table cellspacing="5"><tr><td>
-
-<p>
-Master all the customizable features that make GNU Radius great!
-Design your own authentication and accounting tables with no
-restrictions. Communicate with MySQL, PostgreSQL, ODBC and
-non-standard Radius servers. Choose your authentication scheme from
-the many options available.  Use on a single server or run a whole
-ISP.  This manual only assumes basic Unix-like system and networking
-knowledge, and no previous knowledge of the Radius protocol.
- 
-<p>
-
-GNU Radius is a server program for remote user authentication and
-accounting. It is useful in a wide variety of applications from
-dial-up user services to voice-over IP systems.  Designed to handle
-ISP workloads, it can be scaled for any network that needs a
-centralized authentication and/or accounting service for its
-workstations.  Use the built-in extension language to write your own
-special-case rules for parsing and restructuring non-standard terminal
-server packets. GNU Radius is highly extensible and can be easily
-adapted to your system's needs.
-<p>
- 
-<b>Several built-in accounting methods</b>:<br>
-<ul>
-<li> SQL accounting
-<li> Unix accounting
-<li> Plain text detailed accounting
-<li> Or create your own accounting method with your choice of the two
-built-in extension languages!
-</ul>
-
-<b>A wide variety of authentication methods</b>:<br>
-<ul>
-<li> User supplied authentication data via answering terminal server
-login/password prompts
-<li> PAP or CHAP protocols
-<li> System or internal database storage of user's personal data
-<li> SQL or PAM authentication
-</ul>
-<p> 
-GNU Radius allows any authentication and accounting table structure,
-and the system administrator designs Radius's queries used to store
-and retrieve records.  Perfect for creating non-English user
-interfaces.
-<p>
-
-<b>About the book</b>:<br>
- <p>
-The manual will allow a novice user to master the GNU Radius
-system. It assumes the reader has basic knowledge about Unix-like
-systems and general networking. No knowledge of the Radius protocol is
-assumed.
- <p>
- 
-<b>About the Author</b>:<br>
- <p>
-Sergey Poznyakoff is the author and maintainer for GNU Radius.  He was
-born in 1970 in Odessa, Ukraine and graduated from the Odessa State
-Maritime Academy.  He works in Odessa as a programmer and system
-administrator on Unix-like systems, and actively volunteers for
-several GNU Projects.
-
-</table>
-
-<P>
-<hr>
-
-<p>
-Please send comments on these web pages to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>, 
-send other questions to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 2003, 2004, 2005, 2006 
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/02/23 12:19:01 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: resellers.es.html
===================================================================
RCS file: resellers.es.html
diff -N resellers.es.html
--- resellers.es.html   21 Aug 2006 13:23:32 -0000      1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,284 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentaci&#243;n del proyecto GNU - Informaci&#243;n para 
vendedores</title>
-<link rev="made" href="mailto:address@hidden";>
-<link rev="translated" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Informaci&#243;n para vendedores</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.es.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [imagen de la cabeza de un &#241;u] " width="129" height="122"></a>
-
-[ <!-- Por favor mantenga el orden alfabetico de esta lista -->
-  <a href="/doc/resellers.html">English</a>
-| <a href="/doc/resellers.es.html">Espa&#241;ol</a>
-]
-
-
-<br>
-<br>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><li><a href="isbn.html">Lista ISBN</a></td></tr>
-
-<tr><td><li><a href="termsofsale.html">Condiciones de venta</a></td></tr>
-
-<tr><td><li><a href="creditapp.html">Solicitud de cr&eacute;dito</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/gnupresspub.es.html";>P&#225;gina 
principal de ediciones GNU</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.es.html#Anchor-BOOK-61299";>Material 
impreso</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.es.html#Anchor-Software";>Software 
disponible en CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>Listado mediante 
ISBN</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>Art&#237;culos 
GNU</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Vestimenta</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Carteles 
decorativos</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Material diverso 
</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Formulario de pedido</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.es.html";>Para 
autores</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.es.html";>Para 
vendedores</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>Para 
docentes</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contacte con 
nosotros</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>P&#225;gina principal de la 
FSF</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>P&#225;gina principal del proyecto 
GNU</a></td></tr>
-
-</table>
-
-<table cellspacing="5"><tr><td>
-
-<h3>Nueva edici&#243;n del exitoso manual de Make </h3>
-
-
-<a href="book8.html">GNU Make: A Program for Directing
-Recompilation</a><br>
-Autores: Richard M. Stallman, Roland McGrath y Paul D. Smith<br>
-ISBN: 1-882114-83-3<br>
-Precio a minoristas: 25,00 USD<br>
-Fecha de publicaci&#243;n: junio de de 2004 <br>
-<br>
-
-<a href="radius.html"> GNU Radius: A Reference
-Manual</a><br>
-Tema: Protocolos de redes<br>
-<p>
-NOTA: &quot;Radius&quot; de la editorial O'Reilly's trata de un programa
-diferente para el mismo protocolo, y por lo tanto estos dos t&#237;tulos son
-complementarios y no se excluyen. Sin embargo, resaltar&#237;an mas si ambos
-se encuentran juntos en la secci&oacute;n principal de redes.
-</p>
-<br>
-
-<a href="clib-fund.html">GNU C Library:
-Application Fundamentals</a><br>
-Tema: Compiladores de C<br>
-<p>
-NOTA: Este es un nuevo titulo en el mercado acerca de bibliotecas
- de C desde hace alg&#250;n tiempo.Estar&aacute; confeccionado en formato 
cl&aacute;sico, en su
- encuadernaci&oacute;n y llevara los t&iacute;tulos impresos en las tapas. 
Alcanza un nivel
- merecedor de ocupar un sitio en una biblioteca con la ventaja de un precio
- de minorista.</p>
-<br>
-
-<a href="clib-system.html">GNU C Library:
-System &amp; Network Applications</a><br>
-Tema: Compiladores de C<br>
-<p>
-NOTA: Este es un nuevo titulo en el mercado acerca de bibliotecas
- de C desde hace alg&uacute;n tiempo. Estar&aacute; confeccionado en formato 
cl&aacute;sico, en su
- encuadernaci&oacute;n y llevara los t&iacute;tulos impresos en las tapas. 
Alcanza un nivel
- merecedor de ocupar un sitio en una biblioteca con la ventaja de un precio
- de minorista.</p>
-<br>
-
-*   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *
-*   *   *   *   *   *   *   *   *<br>
-EDICIONES NUEVAS DE T&Iacute;TULOS EXISTENTES<br>
-*   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *
-*   *   *   *   *   *   *   *   *<br>
-
-
-Octava edici&oacute;n<br>
-<a href="book10.html">Bison Manual: Using the
-YACC-compatible Parser Generator, for Version 1.875</a><br>
-Tema: Utilidades<br>
-<p>
-Nota: Este es el &uacute;nico libro en el mercado, dedicado por completo a 
este tema.</p>
-
-Revisi&oacute;n de la primera edici&oacute;n<br>
-<a href="mdk.html">GNU MDK: The MIX Development
-Kit</a> <br>
-Tema: Donald Knuth, Assembly Programming or "Fun" titles.<br>
-<p>
-NOTA: Valorado igualmente como titulo divertido para seguidores de Knuth
-as&iacute; como para nuevos estudiantes de inform&aacute;tica.</p>
-
-*   *   *   *   *   *   *   *   *   *   *   *   *   *<br>
-AGOTADOS<br>
-*   *   *   *   *   *   *   *   *   *   *   *   *   *<br>
-
-GNU C Library Reference Manual (2 volume set) <br>
-Autores: Sandra Loosemore &amp; Richard M. Stallman<br>
-ISBN: 1-882114-55-8<br>
-Precio a minoristas: 60,00 USD<br>
-Fecha de publicaci&oacute;n: Julio de 2001<br>
-<p>
-INTERRUMPIDO. REEMPLAZOS PARA ESTE TEMA SON: ISBN 1-882114-22-1 y
-1-882114-24-8, los dos, libros de Bibliotecas GNU de C.</p>
-<br>
-Using and Porting GNU CC, for Version 2.95<br>
-Autor: Richard M. Stallman<br>
-ISBN: 1-882114-38-8<br>
-Precio a minoristas: 35,00 USD<br>
-Fecha de publicaci&oacute;n: Julio de 1999<br>
-<p>
-INTERRUMPIDO.REEMPLAZO PARA ESTE TEMA ES:ISBN 1-882114-39-6</p>
-<br>
-Using GCC: The GNU Compiler Collection Reference Manual for GCC v. 3.3.1
-<br>
-<p>
-<a href="using.html">Using GCC: The GNU
-Compiler Collection Reference Manual for GCC v. 3.3.1</a><br>
-Tema: Compiladores de C<br>
-<p>
-NOTA: Este libro es, principalmente, la nueva versi&oacute;n
- de GCC 3.3 presentada en Agosto. Esta es una vasta obra de referencia
-y no un tutorial; en la cubierta trasera del libro hay una nota de
-advertencia para el comprador. Es complementario a los t&iacute;tulos de la 
-editorial McGraw-Hill Osborne Media publicado el a&#241;o pasado,y al 
-pr&oacute;ximo titulo de APress, ambos tutoriales.
-</p>
-<p>
-INTERRUMPIDO SIN REEMPLAZO
-</p>
-<br>
-GNU MDK: The MIX Development Kit<br>
-Autor: Jose Antonio Ortega Ruiz<br>
-ISBN: 1-882114-62-0<br>
-Precio a minoristas: 16,95 USD<br>
-Fecha de publicaci&oacute;n: Agosto de 2002<br>
-<p>
-INTERRUMPIDO. REEMPLAZO DE NUEVA EDICI&Oacute;N, ANTERIORES A: ISBN 
1-882114-29-9
-</p>
-<br>
-Bison Manual: Using the YACC-compatible Parser Generator, for Version 1.35<br>
-Autores: Charles Donnelly y Richard M. Stallman<br>
-ISBN: 1-882114-34-5<br>
-Precio a minoristas: 20,00 USD<br>
-Fecha de publicaci&oacute;n: Agosto de 2002<br>
-<p>
-INTERRUMPIDO. REEMPLAZO DE NUEVA EDICI&Oacute;N, ANTERIORES A: ISBN 
1-882114-23-X
-</p>
-<br>
-Revisi&oacute;n de la segunda edici&oacute;n<br> <a
-href="intro-elisp-2.5.html">An Introduction to
-Programming in Emacs Lisp</a><br>
-Tema: Introducci&oacute;n a la programaci&oacute;n; LISP; Emacs.<br>
-<p>
-NOTA: Este es el &uacute;nico libro en el mercado, dedicado por completo a 
este tema.
-</p>
-<p>
-INTERRUMPIDO SIN REEMPLAZO
-</p>
-<br>
-The Termcap Manual: The Termcap Library and Data Base, 3d Edition<br>
-Autor: Richard M. Stallman<br>
-ISBN: 1-882114-87-6<br>
-Precio a minoristas: 15,00 USD<br>
-Fecha de publicaci&oacute;n: Agosto de 1997<br>
-<p>
-INTERRUMPIDO SIN REEMPLAZO
-</p>
-</table></tr></td>
-<hr>
-<h3>La mejor informaci&oacute;n acerca de venta de libros</h3>
-
-<a href="book13.html">Free Software, Free Society: Ensayos escogidos
-       de Richard M. Stallman</a> por Richard M. Stallman, Introducccion de:
-       Lawrence Lessig.  Precio: 24,95 $ (Tapa dura) ISBN
-       1-882114-98-1 <a href="rms-flyer.pdf"> PDF version of sales
-       flyer </a><br>
-<p>
-
-&#191;Es la sociedad tan libre solamente como lo sean sus ideas&#063; 
&#191;Supone un 
-desaf&iacute;o o amenaza la continuidad de la &#171;propiedad 
intelectual&#187; para el 
-potencial de la democracia intelectual en Internet&#063;. <i>Free Software, 
Free
-Society</i> constituye una fuente de ideas dentro de la permanente 
discusi&oacute;n
-relacionada con los derechos de autor y el software. Una obra actual con
-ideas y opiniones de verdaderas autoridades en este tema en evoluci&oacute;n.
-<p>
-La introducci&oacute;n es de Laurence Lessig, quien recientemente 
litig&oacute; con el caso Eldred
-hasta el Tribunal Supremo de los EE.UU.. El art&iacute;culo 
&quot;Interpretaci&oacute;n err&oacute;nea
-de los derechos de autor&quot; -Un conjunto de errores- nos habla exactamente
-acerca de este asunto y en contraposici&oacute;n a nuevas ampliaciones de los 
derechos
-de autor dentro del terreno constitucional. Este argumento fue por el que el
-Tribunal Supremo accedi&oacute; a tomar parte en el caso Eldred.
-<p>
-Por favor, <a href="Stallmanawards.html">PULSE AQU&Iacute;</a> para ver una 
lista de
-trabajos realizados, distinciones y honores del se&#241;or Stallman a lo largo 
de
-su amplia trayectoria.
-
-<hr>
-Por favor suscr&iacute;base a nuestra nueva lista de correo informativo 
mensual. En
-ella podr&aacute; encontrar avisos de nuevas publicaciones, disponibilidad de 
art&iacute;culos
-promocionales libres y ediciones interrumpidas o agotadas. Env&iacute;e un 
correo 
-electr&oacute;nico a <a
-href="mailto:address@hidden";>address@hidden</a> para darse de alta.
-
-<ul>
-<li><a href="isbn.html">Lista actual de libros impresos ISBN</a>
-<li><a href="gnupresspub.html#Anchor-BOOK-61299"><h4>LIBROS IMPRESOS</h4></a>
-<li><a href="termsofsale.html">Condiciones de venta</a>
-<li><a href="creditapp.html">Solicitud de cr&eacute;dito</a>
-</ul>
-
-<hr>
-
-<p>
-
-Por favor, envíe sus comentarios y preguntas sobre esta p&aacute;gina web a <a 
href="mailto:address@hidden";><em>address@hidden</em></a>,envie otras cuestiones 
a <a href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-
-Copyright &copy; 2001, 2002, 2003, 2004, 2005, 2006<br>
-Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 
02111-1307, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.<br>
-Se permite la copia literal y la distribuci&oacute;n de la totalidad de este 
articulo en cualquier medio, siempre que se mantenga esta nota.
-
-<p>
-Traducci&oacute;n: jul 2006 Enrique Errea
-
-<p>
-&#218;ltima actualización: 
-<!-- timestamp start -->
-$Date: 2006/08/21 13:23:32 $ $Autor: xavi_ $
-<!-- timestamp end -->
-<hr>
-
-</body>
-
-</html>

Index: resellers.html
===================================================================
RCS file: resellers.html
diff -N resellers.html
--- resellers.html      18 Aug 2006 13:27:07 -0000      1.27
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,283 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Information for Resellers</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Information for Resellers</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-  <a href="/doc/resellers.html">English</a>
-| <a href="/doc/resellers.es.html">Espa&#241;ol</a>
-]
-
-<br>
-<P>
-<HR>
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><li><a href="isbn.html">ISBN List</a></td></tr>
-
-<tr><td><li><a href="termsofsale.html">Terms of Sale</a></td></tr>
-
-<tr><td><li><a href="creditapp.html">Credit Application</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-<table cellspacing="5"><tr><td>
-
-<h3>New Edition of Bestselling Make Manual</h3>
-
-
-<a href="book8.html">GNU Make: A Program for Directing
-Recompilation</a><br>
-Authors: Richard M. Stallman, Roland McGrath and Paul D. Smith<br>
-ISBN: 1-882114-83-3<br>
-Retail Price: $25.00 US<br>
-Publication Date: June 2004 <br>
-<br>
-
-<a href="http://www.gnu.org/doc/radius.html";> GNU Radius: A Reference
-Manual</a><br>
-Subject: Networking protocols<br>
-<p>
-SALES NOTE: O'Reilly's "Radius" book is about a different program for
-the same protocol, so these two titles are complementary, not mutually
-exclusive.  They will also make a stronger presence when shelved
-together in the general networking section.
-</p>
-<br>
-
-<a href="http://www.gnu.org/doc/clib-fund.html";>GNU C Library:
-Application Fundamentals</a><br>
-Subject: C Compilers<br>
-<p>
-SALES NOTE: This is the first new book on C libraries on the market in
-some time.  This title will have a sewn binding with a printed
-casebound cover. Designed to meet library standards, but still priced
-for retail sales.
-</p>
-<br>
-
-<a href="http://www.gnu.org/doc/clib-system.html";>GNU C Library:
-System & Network Applications</a><br>
-Subject: C Compilers<br>
-<p>
-SALES NOTE: This is the first new book on C libraries on the market in
-some time.  This title will have a sewn binding with a printed
-casebound cover. Designed to meet library standards, but still
-priced for retail sales.
-</p>
-<br>
-
-*   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *
-*   *   *   *   *   *   *   *   *<br>
-NEW EDITIONS OF EXISTING TITLES<br>
-*   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *
-*   *   *   *   *   *   *   *   *<br>
-
-
-Eighth Edition<br>
-<a href="http://www.gnu.org/doc/book10.html";>Bison Manual: Using the
-YACC-compatible Parser Generator, for Version 1.875</a><br>
-Subject: Utilities<br>
-<p>
-SALES NOTE: This is the only book on the market devoted wholly to this
-subject.
-</p>
-
-Revised First Edition<br>
-<a href="http://www.gnu.org/doc/mdk.html";>GNU MDK: The MIX Development
-Kit</a> <br>
-Subject: Donald Knuth, Assembly Programming or "Fun" titles.<br>
-<p>
-SALES NOTE: Priced to move as a "fun" title for Knuth fans as well as
-new computer science students.
-</p>
-
-*   *   *   *   *   *   *   *   *   *   *   *   *   *<br>
-OUT OF PRINT<br>
-*   *   *   *   *   *   *   *   *   *   *   *   *   *<br>
-
-<b>GNU C Library Reference Manual</b> (2 volume set) <br>
-Author: Sandra Loosemore & Richard M. Stallman<br>
-ISBN: 1-882114-55-8<br>
-Retail Price: $60.00 US<br>
-Publication Date: July 2001<br>
-<p>
-DISCONTINUED. SAME-SUBJECT REPLACEMENTS ARE ISBNS 1-882114-22-1 and
-1-882114-24-8, the two GNU C Library books.</p>
-<br>
-<b>Using and Porting GNU CC</b>, for Version 2.95<br>
-Author: Richard M. Stallman<br>
-ISBN: 1-882114-38-8<br>
-Retail Price: $35.00 US<br>
-Publication Date: July 1999<br>
-<p>
-DISCONTINUED. SAME-SUBJECT REPLACEMENT IS 1-882114-39-6, 
-</p>
-<br>
-<b>Using GCC: The GNU Compiler Collection Reference Manual for GCC v. 3.3.1</b>
-<br>
-<p>
-<a href="http://www.gnu.org/doc/using.html";>Using GCC: The GNU
-Compiler Collection Reference Manual for GCC v. 3.3.1</a><br>
-Subject: C Compilers<br>
-<p>
-SALES NOTE: This book is for the major new version of GCC 3.3
-released in August.  It is an exhaustive reference work, and not a
-tutorial; the back cover has a note warning the buyer.  This is
-complementary to the McGraw-Hill Osborne Media book published last
-year, and to the upcoming APress title, which are both tutorials.
-</p>
-<p>
-DISCONTINUED WITH NO REPLACEMENT
-</p>
-<br>
-<b>GNU MDK: The MIX Development Kit</b><br>
-Author: Jose' Antonio Ortega Ruiz<br>
-ISBN: 1-882114-62-0<br>
-Retail Price: $16.95 US<br>
-Publication Date: August 2002<br>
-<p>
-OUT OF PRINT. NEW EDITION REPLACEMENT, ABOVE. ISBN 1-882114-29-9
-</p>
-<br>
-<b>Bison Manual: Using the YACC-compatible Parser Generator</b>, for Version 
1.35<br>
-Author: Charles Donnelly and Richard M. Stallman<br>
-ISBN: 1-882114-34-5<br>
-Retail Price: $20.00<br>
-Publication Date: August 2002<br>
-<p>
-OUT OF PRINT. NEW EDITION REPLACEMENT, ABOVE. ISBN 1-882114-23-X
-</p>
-<br>
-Revised Second Edition<br> <a
-href="http://www.gnu.org/doc/intro-elisp-2.5.html";>An Introduction to
-Programming in Emacs Lisp</a><br>
-Subject: Programming, Introduction; LISP; Emacs.<br>
-<p>
-SALES NOTE: This is the only book on the market devoted wholly to this
-subject.
-</p>
-<p>
-DISCONTINUED WITH NO REPLACEMENT
-</p>
-<br>
-<b>The Termcap Manual: The Termcap Library and Data Base</b>, 3d Edition<br>
-Author: Richard M. Stallman<br>
-ISBN: 1-882114-87-6<br>
-Retail Price: $15.00 US<br>
-Publication Date: August 1997<br>
-<p>
-DISCONTINUED WITH NO REPLACEMENT.
-</p>
-</table></tr></td>
-<hr>
-<h3>Best Selling Title Information</h3>
-
-<a href="book13.html">Free Software, Free Society: Selected Essays of
-       Richard M. Stallman</a> By Richard M. Stallman, Introduction:
-       Lawrence Lessig Cover Price $24.95 (Hardcover) ISBN
-       1-882114-98-1 <a href="rms-flyer.pdf"> PDF version of sales
-       flyer </a><br>
-<p>
-Is a society only as free as its ideas?  Is the Internet's potential
-for intellectual democracy being challenged by the perpetuation of
-intellectual property? Free Software, Free Society is an important
-source of ideas in the on-going discussion regarding copyrights and
-software.  It is a timely and authoritative book by important
-participants in this on-going conversation.
-
-<p>
-The Introduction is by Laurence Lessig who recently argued the Eldred
-case before the Supreme Court.  The article "Misinterpreting Copyright
-- A Series of Errors" speaks directly to this issue, opposing the new
-copyright extension on constitutional grounds.  This is the same
-argument that made the Supreme Court agree to hear the Eldred case.
-
-<p>
-Please <a href="Stallmanawards.html">CLICK HERE</a> to see a list of
-Stallman's achievements, awards and honors over the years.
-
-<P>
-<hr>
-Please sign up for our new, once a month, info-only email list. It
-will announce new titles, free promotional items available, and
-editions going out of print. Send email to <a
-href="mailto:address@hidden";>address@hidden</a> to signup!
-
-<ul>
-<li><a href="isbn.html">List of Current Books in Print ISBNs</a></li>
-<li><a href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>
-    <b>BOOKS IN PRINT</b></a></li>
-<li><a href="termsofsale.html">Terms of Sale</a></li>
-<li><a href="creditapp.html">Credit Application</a></li>
-</ul>
-
-<P>
-<hr>
-
-<p>
-  Please send comments on these web pages to <a href="mailto:address@hidden";>
-  <em>address@hidden</em></a>, send other questions to 
-  <a href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 2001, 2002, 2003, 2004, 2005, 2006 
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2006/08/18 13:27:07 $ $Author: xavi_ $ 
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: texinfo-manual.html
===================================================================
RCS file: texinfo-manual.html
diff -N texinfo-manual.html
--- texinfo-manual.html 5 May 2005 19:37:09 -0000       1.4
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,111 +0,0 @@
-<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<HTML>
-<HEAD>
-<TITLE>Texinfo Manual - GNU Project - Free Software Foundation (FSF)</TITLE>
-<LINK REV="made" HREF="mailto:address@hidden";>
-</HEAD>
-<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#1F00FF" ALINK="#FF0000" 
VLINK="#9900DD">
-<H3>Texinfo Manual</H3>
-
-<p><b><i>The GNU Documentation Format</i></b>
-
-<p>For Texinfo Version 3.11, August 1997.
-Robert J. Chassell and Richard M. Stallman.
-Cover art by Etienne Suvasa.  ISBN: 1-882114-65-5
-
-<p>The <CITE>Texinfo</CITE> manual explains the markup
-language that produces our online Info documentation &amp; typeset
-hardcopies.  
-
-<p>It tells you how to make tables, lists, chapters and menus, footnotes &amp;
-indices, and both number and unnumbered sections and appencies,
- cross references, &amp; how to catch mistakes, as well as table
-of contents, automatically numbered lists and other parts of an essay,
-novel, or technical manual.
-
-<h4>Chapters</h4>
-
-<ol>
-<li>Overview of Texinfo
-<li>Using Texinfo Mode
-<li>Beginning a Texinfo File,
-<li>Ending a Texinfo File
-<li>Chapter Structuring
-<li>Nodes
-<li>Menus
-<li>Cross References
-<li>Marking Words and Phrases
-<li>Quotations and Examples
-<li>Lists and Tables
-<li>Creating Indices
-<li>Special Insertions
-<li>Making and Preventing Breaks
-<li>Definition Commands
-<li>Footnotes
-<li>Conditionally Visible Text
-<li>Macros: Defining New Texinfo Commands
-<li>Format &amp; Print Hardcopy
-<li>Creating an Info File
-<li>Installing an Info File     
-</ol>
-
-<h3>Appendixes</h3>
-
-<ol>
-<li>@-Command List
-<li>Tips &amp; Hints
-<li>A Sample Texinfo File
-<li>Sample Permissions
-<li>Include Files
-<li>Page Headings
-<li>Formatting Mistakes
-<li>Refilling Paragraphs
-<li>@-Command Syntax
-<li>How to Obtain Tex
-</ol>
-
-<p>The manual includes a complete short sample Texinfo file.  
-It explains how to typeset and print hardcopy, and how to create 
-and install an Info file.
-
-<p>This second edition describes over 50 new commands and contains
-21 chapters, 10 appendices &amp; 2 indexes.
-
-<h4>Why order the book?</h4>
-
-For several reasons:
-
-<ul>
-<li>Reading a book is easier than reading text online.  
-<li>You can take it with you without a computer.  
-<li>It's almost pocket size, easily fitting into a briefcase or pack.
-<li>The book has a lay-flat binding that's made to stay open on your desk. 
-<li>To help support the work of the Free Software Foundation.
-</ul>
-<p>
-<a href="http://order.fsf.org/"; name="ordform">
-Free Software Foundation Order Form</a>
-
-<HR>
-
-Return to <A HREF="/home.html">GNU's home page</A>.
-<P>
-
-Please send comments on these web pages to
-
-<A HREF="mailto:address@hidden";><EM>address@hidden</EM></A>,
-send other questions to
-<A HREF="mailto:address@hidden";><EM>address@hidden</EM></A>.
-<P>
-Copyright (C) 1998, 1999 Free Software Foundation, Inc.,
-51 Franklin St, Fifth Floor, Boston, MA  02110,  USA
-<P>
-Verbatim copying and distribution of this entire article is
-permitted in any medium, provided this notice is preserved.<P>
-Updated:
-<!-- hhmts start -->
-20 Mar 2000 tower
-<!-- hhmts end -->
-<HR>
-</BODY>
-</HTML>

Index: texinfo.jpg
===================================================================
RCS file: texinfo.jpg
diff -N texinfo.jpg
Binary files /tmp/cvsMZVk79 and /dev/null differ

Index: tmppage.html
===================================================================
RCS file: tmppage.html
diff -N tmppage.html
--- tmppage.html        5 May 2005 19:37:09 -0000       1.4
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,218 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
- 
-<p>
-
- <a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/tmppage.html">English</a>
-]
-
-
-<p>
-
- Go to <a href="gnupresspub.html">GNU Press</a><br>
-Go to <a href="doc.html">Documentation of the GNU project</a><br>
-Return to <a href="/home.html">GNU's home page</a>
-
-
-<p>
-
- 
-<hr>
-
- 
-<p>
-
- <h3>GNU Software for MS-Windows and MS-DOS and Compatible Systems (2nd 
edition) (book with CD)</h3>
-
- by D. Hagerty, M. Weisshaus &amp; E. Zaretskii
-
-
-<p>
-
- <table border="0" cellpadding="0" cellspacing="2" width="400">
-
-
-<tr>
-
-
-<td>
-<img src="windows.jpg" width="170" height="231" border="1" alt="GNU Software 
for MS-Windows and MS-DOS and Compatible Systems book cover image">
-
-</td>
-
-
-<td>
-150 Pages plus CD-ROM<br>
-Cover Price: $35.00<br>
-June 2001<br>
-ISBN 1-882114-58-2<br>
-Trade Paper Perfect Bound<br>
-
-
-</td>
-
-
-</tr>
-</table>
-
-
-<p>
-
- [ <a href="/order/windows.html">English</a>
-| <a href="/order/windows.fr.html">French</a> ]
-
-
-<p>
-
- The CD contains a collection of executables and source code for popular GNU 
programs that run on a Microsoft Windows machine. The accompanying book 
contains a detailed installation guide.
-
-
-<p>
-
- This second edition is updated for Windows ME and NT, as well as being 
backwards-compatible for Windows 2000, 98, 95 and 3.X. It can also be used on 
MS-DOS Versions 4 and up.
-
-
-<p>
-
- Programs include: the DOS and Windows versions of our popular GNU C and C++ 
Compiler, DJGPP and Cygwin; a full-sized Emacs, our popular editor; the Perl 
programming language; the multi-lingual GNU Debugger, GDB; GNU Make, our 
popular automated update compiler utility; Gzip, a file-compression program; 
and Bash, a versatile shell.
-
-
-<p>
-
- Other programs included are: GNU Binary utilities including the GNU assembler 
and linker, Bison, cpio, diff, Flex, GNU Awk, Fileutils, Findutils, 
Ghostscript, grep, groff, IDutils, ispell, less, TeX, Texinfo, the GNU Text 
Utilities, RCS, sed, and the GNU Shell Utilities.
-
-
-<p>
-
- The GNU Project has spent the past 15 years developing a Unix-like operating 
system whose name is <a href="/gnu/gnu-history.html">GNU</a>. Over the years, 
various GNU programs have been ported to MS-DOS and MS-Windows. Now we have 
published a collection of these ports, and some other free software, with 
convenient installation facilities, on a CD-ROM that comes in a book.
-
-
-<p>
-
- The GNU packages on the CD-ROM range from the versatile GNU shell <a 
href="/software/bash/bash.html">Bash</a> to a powerful text editor and 
programming environment (<a href="/software/emacs/emacs.html">GNU Emacs</a> 
20.5) and a widely-used file-compression utility (<a 
href="/software/gzip/gzip.html">Gzip</a> 1.2.4a). The second edition now 
includes <a href="http://www.gimp.org";>GIMP</a>, the GNU Image Manipulation 
Program (as of 2000-10-07).
-
-
-<p>
-
- For developers, this CD-ROM contains <a 
href="http://www.delorie.com/djgpp/";>DJGPP</a>, the MS-DOS port of <a 
href="/software/gcc/gcc.html">GCC</a> 2.95.2, which is a C++ and ANSI C 
compiler with a POSIX-compliant C library. In addition, it provides a full 
programming toolkit, from editor to debugger to project maintenance utilities. 
DJGPP supports a flat 32-bit address space with built-in virtual memory and 
more.
-
-
-<p>
-
- The contents also include the following:
-<ul>
-<li><a href="/software/autoconf/autoconf.html">autoconf</a> 2.13,
-<li><a href="/software/automake/automake.html">automake</a> 1.4,
-<li>the GNU calculator <a href="/software/bc/bc.html">bc</a> 1.05,
-<li>the GNU <a href="/software/binutils/binutils.html">Binutils</a> 2.10 
(including the GNU assembler and linker),
-<li><a href="/software/bison/bison.html">Bison</a> 1.28 (a parser generator),
-<li><a href="/software/calc/calc.html">Calc</a> (the Emacs calculation 
package),
-<li>cperf 2.1a,
-<li><a href="/software/cpio/cpio.html">cpio</a> 2.4.2,
-<li>CVS 1.10, a powerful version control system,
-<li><a href="/software/diffutils/diffutils.html">Diffutils</a> 2.7.2,
-<li>the simple editor <a href="/software/ed/ed.html">ed 0.2</a>,
-<li><a href="/software/elib/elib.html">elib</a>,
-<li><a href="/software/enscript/enscript.html">enscript</a> 1.6.1,
-<li><a href="/software/fileutils/fileutils.html">Fileutils</a> 3.16,
-<li><a href="/software/findutils/findutils.html">Findutils</a> 4.1,
-<li>Flex 2.5.4,
-<li><a href="/software/gawk/gawk.html">GNU Awk</a> 3.0.6,
-<li><a href="/software/gdb/gdb.html">gdb</a> 5.0,
-<li><a href="/software/gdbm/gdbm.html">gdbm</a> 1.8.0,
-<li>gettext 0.10.35, an internationalization tool,
-<li>gmp 3.11,
-<li><a href="/software/gnugo/gnugo.html">GNU Go</a> 2.6,
-<li><a href="http://www.gnu-pascal.de";>GPC</a> 2.1alpha, the GNU Pascal 
Compiler,
-<li><a href="/software/gperf/gperf.html">gperf</a> 2.7.2,
-<li><a href="/software/grep/grep.html">grep</a> 2.4,
-<li><a href="/software/groff/groff.html">groff</a> 1.16,
-<li><a href="/software/hello/hello.html">hello</a> 1.3,
-<li><a href="/software/idutils/idutils.html">ID Utils</a> 3.2,
-<li><a href="/software/indent/indent.html">indent</a> 2.2.5,
-<li><a href="/software/ispell/ispell.html">Ispell</a> 3.12,
-<li><a href="/software/less/less.html">less</a> 358,
-<li><a href="/software/m4/m4.html">m4</a> 1.4,
-<li><a href="/software/make/make.html">GNU Make</a> 3.79.1,
-<li>MARST 2.0,
-<li>p2c 1.2,
-<li><a href="/software/patch/patch.html">patch</a> 2.5.3,
-<li><a href="/software/perl/perl.html">Perl</a> 5.005,
-<li><a href="/software/rcs/rcs.html">RCS</a> 5.7,
-<li><a href="/software/recode/recode.html">recode</a> 3.5,
-<li><a href="/software/sed/sed.html">sed</a> 3.02,
-<li><a href="/software/shellutils/shellutils.html">GNU Sh-utils</a> 1.12,
-<li><a href="/software/sharutils/sharutils.html">sharutils</a> 4.2c,
-<li><a href="/software/tar/tar.html">tar</a> 1.12a,
-<li>TeX (including LaTex and <a 
href="/software/texinfo/texinfo.html">Texinfo</a> 4.0),
-<li>the GNU Text Utilities (<a 
href="/software/textutils/textutils.html">textutils</a>) 2.0, and
-<li>web2c 7.2.
-</ul>
-
-
-<p>
-
- Since the CD is published by the Free Software Foundation, the entire 
contents are <a href="/philosophy/free-sw.html">free software</a>; the source 
code is included, and you have the right to copy, modify and redistribute all 
of the software.
-
-
-<p>
-
- The programs on the CD-ROM should run on the following systems: All X86 
systems (Intel 386, 486, Pentium, Pentium Pro, Cyrix 586, 686, Celeron, Duron, 
etc.) running MS-DOS 4.0 and higher, Windows 3.1/3.11, Windows 95/98/ME/2000 
and NT 3/4.
-
-
-<p>
-
- NOTE: Some copies of the CD-ROM as released mid-September 2001 have a 
replication problem that prevents the installation of NTEmacs. The FSF would 
like to apologize to purchasers of that edition, and they can receive a full 
refund on request. A new edition of the CD has now (2001-10-23) been 
replicated, and customers who purchased it directly from the FSF will be sent a 
new CD. If you purchased it through a bookstore, you can either return it to 
the store, or write to the FSF at address@hidden with your address and the name 
of the bookstore where you purchased it, and we will send you a new CD.
-
-
-<p>
-
- We do not aim to make GNU software run best on MS Windows -- we write it for 
the GNU operating system. GNU software can enhance proprietary Microsoft 
systems in technical respects, but if you want freedom, you can't get it with a 
proprietary Microsoft operating system. To be free, you need to replace the 
proprietary system with a free operating system, such as <a 
href="http://www.debian.org";>Debian GNU/Linux</a>.
-
-
-<hr>
-
- Go to <a href="/order/order.html#WindowsBook">order form</a><br>
-Go to <a href="gnupresspub.html">GNU Press</a><br>
-Go to <a href="doc.html">Documentation of the GNU project</a><br>
-<a href="/search.html">Search gnu.org</a><br>
-Return to <a href="/home.html">GNU's home page</a>
-
-
-<p>
-
- Comments on these web pages to <a 
href="mailto:address@hidden";><em>address@hidden</em></a>, send other questions 
to <a href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-
-<p>
-
- Copyright (C) 1996, 1997, 1998, 1999, 2001 Free Software Foundation, Inc., 51 
Franklin St, Fifth Floor, Boston, MA 02110, USA
-
-
-<p>
-
- Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-
-<p>
-
- Last updated: <!-- timestamp start -->$Date: 2005/05/05 19:37:09 $ $Author: 
novalis $ <!-- timestamp end -->
-</body>
-
-</html>
-
-

Index: upcomingtitles.html
===================================================================
RCS file: upcomingtitles.html
diff -N upcomingtitles.html
--- upcomingtitles.html 1 May 2006 10:04:13 -0000       1.12
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,69 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Upcoming titles</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>New from GNU Press</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/upcomingtitles.html">English</a>
-]
-
-<P>
-  [
-    <a href="gnupresspub.html">GNU Press</a> | 
-    <a href="doc.html">Documentation of the GNU project</a> | 
-    <a href="/search.html">Search gnu.org</a>
-  ]
-
-<p>
-<HR>
-
-Dear Readers, <br>
-<p>
-Currently there are no titles ready for announcement.  Please check
-      back by the end of Summer, 2003.  We hope to have several titles
-      to announce by then!
-<p>
-Best Regards,<br>
-<br>
-Lisa M. Goldstein<br>
-Managing Editor<br>
-
-<P>
-<HR>
-
-<P>
-Return to <a href="/home.html">GNU's home page</a>
-
-<p>
-Please send comments on these web pages to <a href="mailto:address@hidden";>
-<em>address@hidden</em></a>, send other questions to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006 
<BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2006/05/01 10:04:13 $ $Author: ramprasadb $ 
-<!-- timestamp end -->
-<HR>
-</body>
-</html>
-

Index: using.html
===================================================================
RCS file: using.html
diff -N using.html
--- using.html  18 Apr 2008 12:12:58 -0000      1.9
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,164 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Using GCC: The GNU Compiler Collection Reference Manual</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/using.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>Using GCC: The GNU Compiler Collection Reference Manual</h3>
-
-By Richard M. Stallman and the GCC Developer Community<br><p>
-
-<table border="0" cellpadding="0" cellspacing="2" width="600">
-
-<tr>
-<td width="170">
-<img src="Using-frontcover.png" width="170" height="225" border="1"
-alt="Using GCC Manual cover image">
-</td>
-
-<td width="20">
-  <br>
-</td>
-
-<td width="410">
-432 Pages.<br> Cover Price: $45.00<br>October 2003, for GCC version
-3.3.1 <br> ISBN 1-882114-39-6<br> Trade Paper, Lay Flat Binding<br> <a
-href="http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/";>On-line
-version</a><br> <a href="http://order.fsf.org/#manuals";><i>Order
-Now!</i></a><br>
-
-</td>
-</tr>
-</table>
-
-<P>
-<HR>
-
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-<table cellspacing="5"><tr><td>
-
-<p>
-The definitive reference manual for the most widely used compiler in
-the world, written by the program's original author and its current
-developers.  The GNU Compiler Collection is a full-featured ANSI C
-compiler with support for C, C++, Objective C, Java and Fortran as
-well as libraries for all these languages, such as libstdc++ and
-libgcj.  
-</p>
-
-This book covers:<br>
-<ul>
-<li> The complete list of GCC command options.
-<li> All the Objective-C runtime features.
-<li> GCC support for C and C++ language standards.
-<li> Extending C and C++ beyond the current standards.
-<li> Special features of GCC's C, C++, and ObjC support.
-<li> Fine tuning programs for your platform of choice.
-</ul>
-
-<p>
-This reference is intended for intermediate or above programmers.  It
-assumes that the reader is already familiar with the basics of either
-C, C++ or Objective C languages.  This edition of the book covers new
-features included with GCC version 3.3, while remaining compatible
-with earlier versions.
-</p> 
-
-About the Authors<br>
-<p>
-Richard M. Stallman is the original author of GCC and this manual. He
-is the founder of the Free Software movement and Project GNU. He was
-recently awarded the 2001 Takeda Award for Techno-Entrepreneurial
-Achievements in Social/Economic Well-Being. He also co-wrote the GNU
-Press' <a href="http://www.gnu.org/doc/book7.html";>Debugging with
-GDB</a> and <a href="http://www.gnu.org/doc/book8.html";>GNU Make</a>
-manuals.
-</p>
-<p>
-The GCC developer community has been improving GCC since its first
-release in 1987. They are a world-wide community of individuals and
-companies dedicated to developing GCC into a world-class optimizing
-compiler, able to run on a wide variety of systems.  It is a diverse
-community of free software enthusiasts who develop libraries,
-documentation, test cases, optimization techniques and continuously
-expand architecture support for GCC.
-</table>
-
-<P>
-<HR>
-
-<p>
-Please send comments on these web pages to <a href="mailto:address@hidden";>
-<em>address@hidden</em></a>, send other questions to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>.
-</p>
-
-<p>
-Copyright &copy; 2003, 2004, 2005, 2006 Free Software Foundation, Inc., 51 
Franklin St,
-Fifth Floor, Boston, MA 02110-1301, USA
-</p>
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-</p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2008/04/18 12:12:58 $
-<!-- timestamp end -->
-<hr>
-</body>
-</html>
-

Index: volunteer-distribution.html
===================================================================
RCS file: volunteer-distribution.html
diff -N volunteer-distribution.html
--- volunteer-distribution.html 1 May 2006 10:04:13 -0000       1.5
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,130 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation - GNU Project - Free Software Foundation (FSF)</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Documentation of the GNU Project</h3>
-
-<p>
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/doc.html">English</a>
-]
-<table cellspacing="5"><tr><td>
-
-<P>
-<HR>
-
-<h2>Instructions to Friends of GNU on how to get GNU Press books into
-their local bookstores.</h2>
-<p>
-
-<p>
-First visit <a href=" www.gnupress.org">www.gnupress.org</a> to
-familiarize yourself with the current title list.  Also visit the <a
-href="http://www.gnupress.org/resellers.html";>Information for
-Resellers</a> link, and notice which books are being specifically
-marketed to bookstores, and what points are being made in the sales
-pitch.  Also visit the <a
-href="http://www.gnupress.org/upcomingtitles.html";>Upcoming New Titles
-and New Editions</a> link, to see what is on the horizon.
-<p>
-<p>
-Contact several bookstores in your region with good-sized technical
-sections.  Don't select more than one branch each of chain
-stores. Find out whether they stock GNU Press books, and whether or not
-all their distributors stock GNU Press books.
-<p>
-<p>
-If the bookstore does not stock GNU Press books but one or more of their
-distributors does:
-<p>
-<p>
-Call or visit the store and ask to speak to the person in charge of
-technical book section.  (The average person working on the store
-floor cannot help you in this matter.)  Ask why they don't hold GNU
-books in stock. Point out to the bookstore that the GNU project
-provides many of the main programs used by programmers and system
-administrators, and that they are missing stocking the definitive
-books for these programs. This may be sufficient to encourage the
-bookstore to inquire to their distributor.
-<p>
-<p>
-If some or all of the bookstore's distributors do not supply GNU Press
-books: Ask the bookstore employee the name and telephone number of the
-distributors they purchase from - doing the same for 3 or 4 computer
-bookshops will give a good picture of the main distributors in your
-region to focus on.
-<p>
-Telephone the distributors to verify whether they do or don't stock
-GNU Press books. If not, find out the name of the person responsible
-for specifying which books the distributor stocks.
-<p>
-Tell the purchasing manager you are ringing on behalf of GNU
-Press. Explain what the GNU project is, making sure the purchasing
-manager is clear the GNU project publishes definitive books for a
-range of programs published as part of the GNU project, and that the
-programs are common to many. Point the purchasing manager to the
-www.gnupress.org web site. Sometimes a purchasing manager will be
-sufficiently technically oriented to discuss the ubiquity of programs
-such as GNU Make and GCC. Once the purchasing manager has understood
-these issues, he is likely to want to see samples of GNU Press books,
-perhaps two or three titles to get a feel for the breadth and depth of
-coverage and the quality of writing style. At this stage, you should
-contact GNU Press to co-ordinate. Send email to <a 
href-"mailto:address@hidden";>
-<em>address@hidden</em></a>.
-<p>
-When making your sales pitch, good books to mention are GNU Make, MDK
-and Free Software Free Society. This gives a cross section of
-technical manual, 'fun' book and philosophical book.
-<p>
-Find out when it is convenient to contact the purchasing manager
-after he has received the sample books. Call the purchasing manager
-around the designated time. If he isn't available, repeat contact
-attempts in around 10 day intervals.
-<p>
-When the purchasing manager has agreed to carry GNU Press books, a
-contract will need to be drawn up. This should be done between GNU
-Press <a href-"mailto:address@hidden";><em>address@hidden</em></a> and the
-distributor directly.
-</table>
-
-<P>
-<HR>
-
-<P>
-Return to <A HREF="/home.html">GNU's home page</A>.
-
-<p>
-Please send comments on these web pages to <a href="mailto:address@hidden";>
-<em>address@hidden</em></a>, send other questions to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 2002, 2003, 2005, 2006 
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-
-Updated: <!-- timestamp start -->$Date: 2006/05/01 10:04:13 $ $Author: 
ramprasadb $ <!-- timestamp end -->
-
-<hr>
-
-</body>
-
-</html>
-
-
-
-

Index: windows.html
===================================================================
RCS file: windows.html
diff -N windows.html
--- windows.html        4 Jun 2007 17:46:32 -0000       1.17
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,256 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Books in Print</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Books in Print</h3>
-
-<p>
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-[ <!-- Please keep this list alphabetical -->
-<a href="/doc/windows.html">English</a>
-]
-
-<P>
-<HR>
-
-<h3>GNU Software for MS-Windows and MS-DOS and Compatible Systems (2nd 
edition) (book with CD)</h3>
-<P>
-by D. Hagerty, M. Weisshaus &amp; E. Zaretskii
-
-<p>
-<table border="0" cellpadding="0" cellspacing="2" width="400">
-
-<tr>
-
-<td>
-<img src="windows.jpg" width="170" height="231" border="1" 
-alt="GNU Software for MS-Windows and MS-DOS and Compatible Systems book cover 
image">
-</td>
-
-<td>
-150 Pages plus CD-ROM<br>
-<b>Permanently out of stock</b>
-June 2001<br>
-ISBN 1-882114-58-2<br>
-Trade Paper Perfect Bound<br><br>
-
-</td>
-</tr>
-</table>
-
-<p>
-
-[ <a href="/order/windows.html">English</a>
-| <a href="/order/windows.fr.html">French</a> ]
-
-<P>
-  [ 
-    <a href="/order/order.html#WindowsBook">Order Form</a> | 
-    <a href="gnupresspub.html">GNU Press</a> | 
-    <a href="doc.html">Documentation of the GNU project</a> | 
-    <a href="/search.html">Search gnu.org</a>
-  ]
-
-<P>
-<HR>
-
-<br>
-
-<table style="margin-right: 10px; float: left" frame="box" bgcolor="f2f2f9" 
cellspacing="5">
-
-<tr><td><a href="http://www.gnupress.org";>GNU Press Home Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-BOOK-61299";>Books In 
Print</a></td></tr>
-
-<tr><td><a 
href="http://www.gnupress.org/gnupresspub.html#Anchor-Software";>Software on 
CD</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/isbn.html";>ISBN List</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html";>GNU Gear Page</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Clothing";>Clothing</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org/gear/gear.html#Anchor-Wall-Art";>Wall 
Art</a></td></tr>
-
-<tr><td><a 
href="http://www.gnu.org/gear/gear.html#Anchor-Other-Fan-Gear";>Other Fan 
Gear</a></td></tr>
-
-<tr><td><a href="http://order.fsf.org/";>Order Form</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/potentialauthors.html";>For 
Authors</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/resellers.html";>For 
Resellers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/teachingprofessionals.html";>For 
Teachers</a></td></tr>
-
-<tr><td><a href="http://www.gnupress.org/doc/contact.html";>Contact 
Us</a></td></tr>
-
-<tr><td><a href="http://www.fsf.org";>FSF Home Page</a></td></tr>
-
-<tr><td><a href="http://www.gnu.org";>GNU Project Home</a></td></tr>
-
-</table>
-
-<table cellspacing="5"><tr><td>
-
-<p>
-
-The CD contains a collection of executables and source code for popular GNU 
programs that run on a Microsoft Windows machine. The accompanying book 
contains a detailed installation guide.
-
-<p>
-
-This second edition is updated for Windows ME and NT, as well as being
-backwards-compatible for Windows 2000, 98, 95 and 3.X. It can also be
-used on MS-DOS Versions 4 and up.  Note, this version was not
-configured for Windows XP.
-
-<p>
-
-Programs include: the DOS and Windows versions of our popular GNU C and C++ 
Compiler, DJGPP and Cygwin; a full-sized Emacs, our popular editor; the Perl 
programming language; the multi-lingual GNU Debugger, GDB; GNU Make, our 
popular automated update compiler utility; Gzip, a file-compression program; 
and Bash, a versatile shell.
-
-<p>
-
-Other programs included are: GNU Binary utilities including the GNU assembler 
and linker, Bison, cpio, diff, Flex, GNU Awk, Fileutils, Findutils, 
Ghostscript, grep, groff, IDutils, ispell, less, TeX, Texinfo, the GNU Text 
Utilities, RCS, sed, and the GNU Shell Utilities.
-
-<p>
-
-The GNU Project has spent the past 15 years developing a Unix-like operating 
system whose name is <a href="/gnu/gnu-history.html">GNU</a>. Over the years, 
various GNU programs have been ported to MS-DOS and MS-Windows. Now we have 
published a collection of these ports, and some other free software, with 
convenient installation facilities, on a CD-ROM that comes in a book.
-
-<p>
-
-The GNU packages on the CD-ROM range from the versatile GNU shell <a
-href="/software/bash/bash.html">Bash</a> to a powerful text editor and
-programming environment (<a href="/software/emacs/emacs.html">GNU
-Emacs</a> 20.5) and a widely-used file-compression utility (<a
-href="/software/gzip/gzip.html">Gzip</a> 1.2.4a). The second edition
-now includes <a href="http://www.gimp.org";>GIMP</a>, the GNU Image
-Manipulation Program (as of 2000-10-07).
-
-<p>
-
-For developers, this CD-ROM contains <a
-href="http://www.delorie.com/djgpp/";>DJGPP</a>, the MS-DOS port of <a
-href="/software/gcc/gcc.html">GCC</a> 2.95.2, which is a C++ and ANSI
-C compiler with a POSIX-compliant C library. In addition, it provides
-a full programming toolkit, from editor to debugger to project
-maintenance utilities. DJGPP supports a flat 32-bit address space with
-built-in virtual memory and more.
-</table></tr></td>
-<p>
-
-The contents also include the following:
-<ul>
-<li><a href="/software/autoconf/autoconf.html">autoconf</a> 2.13,
-<li><a href="/software/automake/automake.html">automake</a> 1.4,
-<li>the GNU calculator <a href="/software/bc/bc.html">bc</a> 1.05,
-<li>the GNU <a href="/software/binutils/binutils.html">Binutils</a> 2.10 
(including the GNU assembler and linker),
-<li><a href="/software/bison/bison.html">Bison</a> 1.28 (a parser generator),
-<li><a href="/software/calc/calc.html">Calc</a> (the Emacs calculation 
package),
-<li>cperf 2.1a,
-<li><a href="/software/cpio/cpio.html">cpio</a> 2.4.2,
-<li>CVS 1.10, a powerful version control system,
-<li><a href="/software/diffutils/diffutils.html">Diffutils</a> 2.7.2,
-<li>the simple editor <a href="/software/ed/ed.html">ed 0.2</a>,
-<li><a href="/software/elib/elib.html">elib</a>,
-<li><a href="/software/enscript/enscript.html">enscript</a> 1.6.1,
-<li><a href="/software/fileutils/fileutils.html">Fileutils</a> 3.16,
-<li><a href="/software/findutils/findutils.html">Findutils</a> 4.1,
-<li>Flex 2.5.4,
-<li><a href="/software/gawk/gawk.html">GNU Awk</a> 3.0.6,
-<li><a href="/software/gdb/gdb.html">gdb</a> 5.0,
-<li><a href="/software/gdbm/gdbm.html">gdbm</a> 1.8.0,
-<li>gettext 0.10.35, an internationalization tool,
-<li>gmp 3.11,
-<li><a href="/software/gnugo/gnugo.html">GNU Go</a> 2.6,
-<li><a href="http://www.gnu-pascal.de";>GPC</a> 2.1alpha, the GNU Pascal 
Compiler,
-<li><a href="/software/gperf/gperf.html">gperf</a> 2.7.2,
-<li><a href="/software/grep/grep.html">grep</a> 2.4,
-<li><a href="/software/groff/groff.html">groff</a> 1.16,
-<li><a href="/software/hello/hello.html">hello</a> 1.3,
-<li><a href="/software/idutils/idutils.html">ID Utils</a> 3.2,
-<li><a href="/software/indent/indent.html">indent</a> 2.2.5,
-<li><a href="/software/ispell/ispell.html">Ispell</a> 3.12,
-<li><a href="/software/less/less.html">less</a> 358,
-<li><a href="/software/m4/m4.html">m4</a> 1.4,
-<li><a href="/software/make/make.html">GNU Make</a> 3.79.1,
-<li>MARST 2.0,
-<li>p2c 1.2,
-<li><a href="/software/patch/patch.html">patch</a> 2.5.3,
-<li><a href="/software/perl/perl.html">Perl</a> 5.005,
-<li><a href="/software/rcs/rcs.html">RCS</a> 5.7,
-<li><a href="/software/recode/recode.html">recode</a> 3.5,
-<li><a href="/software/sed/sed.html">sed</a> 3.02,
-<li><a href="/software/shellutils/shellutils.html">GNU Sh-utils</a> 1.12,
-<li><a href="/software/sharutils/sharutils.html">sharutils</a> 4.2c,
-<li><a href="/software/tar/tar.html">tar</a> 1.12a,
-<li>TeX (including LaTex and <a 
href="/software/texinfo/texinfo.html">Texinfo</a> 4.0),
-<li>the GNU Text Utilities (<a 
href="/software/textutils/textutils.html">textutils</a>) 2.0, and
-<li>web2c 7.2.
-</ul>
-
-<p>
-Since the CD is published by the Free Software Foundation, the entire contents 
-are <a href="/philosophy/free-sw.html">free software</a>; the source code is 
-included, and you have the right to copy, modify and redistribute all of the 
-software.
-
-<p>
-The programs on the CD-ROM should run on the following systems: All X86 
systems 
-(Intel 386, 486, Pentium, Pentium Pro, Cyrix 586, 686, Celeron, Duron, etc.) 
-running MS-DOS 4.0 and higher, Windows 3.1/3.11, Windows 95/98/ME/2000 
-and NT 3/4.
-
-<p>
-NOTE: Some copies of the CD-ROM as released mid-September 2001 had a
-replication problem that prevents the installation of NTEmacs. The FSF
-would like to apologize to purchasers of that edition.  All CDs still
-in stock were replaced, but some books were already sent to
-distributors and bookstores.  If you have purchased a defective CD
-through a bookstore, you can return it to the store for
-replacement. You may also send email to address@hidden with your
-address and the name of the bookstore where you purchased it, and we
-will send you a new CD.
-
-<p>
-
-We do not aim to make GNU software run best on MS Windows -- we write it for 
-the GNU operating system. GNU software can enhance proprietary Microsoft 
systems 
-in technical respects, but if you want freedom, you can't get it with a 
-proprietary Microsoft operating system. To be free, you need to replace the 
-proprietary system with a free operating system, 
-such as <a href="http://www.debian.org";>Debian GNU/Linux</a>.
-
-<P>
-<HR>
-
-<P>
-Return to <a href="/home.html">GNU's home page</a>
-
-<p>
-Please send comments on these web pages to <a href="mailto:address@hidden";>
-<em>address@hidden</em></a>, send other questions to 
-<a href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-<p>
-Copyright &copy; 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2006 
<BR>
-Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
02110-1301, USA
-
-<p>
-Verbatim copying and distribution of this entire article is permitted in any 
medium, provided this notice is preserved.
-
-<p>
-Updated: 
-<!-- timestamp start -->
-$Date: 2007/06/04 17:46:32 $ $Author: ward $ 
-<!-- timestamp end -->
-<HR>
-</body>
-</html>
-

Index: windows.jpg
===================================================================
RCS file: windows.jpg
diff -N windows.jpg
Binary files /tmp/cvs4YNg6a and /dev/null differ

Index: Press-use/20th-mug.png
===================================================================
RCS file: Press-use/20th-mug.png
diff -N Press-use/20th-mug.png
Binary files /tmp/cvs7OC5Kb and /dev/null differ

Index: Press-use/GNU-Press-styleguide.aux
===================================================================
RCS file: Press-use/GNU-Press-styleguide.aux
diff -N Press-use/GNU-Press-styleguide.aux
--- Press-use/GNU-Press-styleguide.aux  6 May 2003 19:21:03 -0000       1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,21 +0,0 @@
-'xrdef {Basic points of style-title}{Basic points of style}
-'xrdef {Basic points of style-pg}{1}
-'xrdef {Basic points of style-snt}{Chapter'tie1}
-'xrdef {Ordering your text-title}{Ordering your text}
-'xrdef {Ordering your text-pg}{3}
-'xrdef {Ordering your text-snt}{Chapter'tie2}
-'xrdef {Code examples-title}{Code examples}
-'xrdef {Code examples-pg}{5}
-'xrdef {Code examples-snt}{Chapter'tie3}
-'xrdef {Metaphors-title}{Metaphors}
-'xrdef {Metaphors-pg}{6}
-'xrdef {Metaphors-snt}{Chapter'tie4}
-'xrdef {English usage-title}{English usage}
-'xrdef {English usage-pg}{7}
-'xrdef {English usage-snt}{Chapter'tie5}
-'xrdef {Texinfo usage-title}{Texinfo usage}
-'xrdef {Texinfo usage-pg}{9}
-'xrdef {Texinfo usage-snt}{Chapter'tie6}
-'xrdef {Format while writing-title}{Format As You Write}
-'xrdef {Format while writing-pg}{10}
-'xrdef {Format while writing-snt}{Chapter'tie7}

Index: Press-use/GNU-Press-styleguide.cp
===================================================================
RCS file: Press-use/GNU-Press-styleguide.cp
diff -N Press-use/GNU-Press-styleguide.cp

Index: Press-use/GNU-Press-styleguide.fn
===================================================================
RCS file: Press-use/GNU-Press-styleguide.fn
diff -N Press-use/GNU-Press-styleguide.fn

Index: Press-use/GNU-Press-styleguide.ky
===================================================================
RCS file: Press-use/GNU-Press-styleguide.ky
diff -N Press-use/GNU-Press-styleguide.ky

Index: Press-use/GNU-Press-styleguide.log
===================================================================
RCS file: Press-use/GNU-Press-styleguide.log
diff -N Press-use/GNU-Press-styleguide.log
--- Press-use/GNU-Press-styleguide.log  6 May 2003 19:21:03 -0000       1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,202 +0,0 @@
-This is pdfTeX, Version 3.14159-1.00a-pretest-20011114-ojmw (Web2C 7.3.7) 
(format=pdftex 2002.3.22)  6 MAY 2003 15:17
-**/home/opus/website/doc/Press-use/GNU-Press-styleguide.texi
-(/home/opus/website/doc/Press-use/GNU-Press-styleguide.texi{/usr/share/texmf/pd
-ftex/config/pdftex.cfg}
-Babel <v3.7h> and hyphenation patterns for american, french, german, ngerman, n
-ohyphenation, loaded.
-(/usr/share/texmf/tex/texinfo/texinfo.tex
-Loading texinfo [version 2002-03-26.08]: Basics,
-\bindingoffset=\dimen16
-\normaloffset=\dimen17
-\pagewidth=\dimen18
-\pageheight=\dimen19
-\outerhsize=\dimen20
-\outervsize=\dimen21
-\cornerlong=\dimen22
-\cornerthick=\dimen23
-\topandbottommargin=\dimen24
-\headlinebox=\box16
-\footlinebox=\box17
-\margin=\insert252
-\EMsimple=\toks12
-\singlespaceskip=\skip18
-\groupinvalidhelp=\toks13
-\mil=\dimen25
-\exdentamount=\skip19
-\inmarginspacing=\skip20
- pdf,
-\tempnum=\count26
-\lnkcount=\count27
-\filename=\toks14
-\filenamelength=\count28
-\pgn=\count29
-\toksA=\toks15
-\toksB=\toks16
-\toksC=\toks17
-\toksD=\toks18
-\boxA=\box18
-\countA=\count30
-
-(/usr/share/texmf/pdftex/plain/misc/pdfcolor.tex) fonts,
-\sffam=\fam8
-\textleading=\dimen26
-\mainmagstep=\count31
-\fontdepth=\count32
- page headings,
-\titlepagetopglue=\skip21
-\titlepagebottomglue=\skip22
-\evenheadline=\toks19
-\oddheadline=\toks20
-\evenfootline=\toks21
-\oddfootline=\toks22
-
-tables,
-\tableindent=\dimen27
-\itemindent=\dimen28
-\itemmargin=\dimen29
-\itemmax=\dimen30
-\itemno=\count33
-\multitableparskip=\skip23
-\multitableparindent=\skip24
-\multitablecolspace=\dimen31
-\multitablelinespace=\skip25
-\colcount=\count34
- conditionals, indexing,
-\secondaryindent=\skip26
-\partialpage=\box19
-\doublecolumnhsize=\dimen32
- sectioning,
-\chapno=\count35
-\secno=\count36
-\subsecno=\count37
-\subsubsecno=\count38
-\appendixno=\count39
-\absseclevel=\count40
-\secbase=\count41
-\chapheadingskip=\skip27
-\secheadingskip=\skip28
-\subsecheadingskip=\skip29
- toc,
-\tocfile=\write0
-\contentsrightmargin=\skip30
-\savepageno=\count42
-\lastnegativepageno=\count43
-\shortappendixwidth=\dimen33
-\tocindent=\dimen34
- environments,
-\errorbox=\box20
-\lispnarrowing=\skip31
-\envskipamount=\skip32
-\circthick=\dimen35
-\cartouter=\dimen36
-\cartinner=\dimen37
-\normbskip=\skip33
-\normpskip=\skip34
-\normlskip=\skip35
-\lskip=\skip36
-\rskip=\skip37
-\tabw=\dimen38
-\copyingbox=\box21
- defuns,
-\defbodyindent=\skip38
-\defargsindent=\skip39
-\deftypemargin=\skip40
-\deflastargmargin=\skip41
-\parencount=\count44
- macros,
-\macscribble=\write1
-\paramno=\count45
-\macname=\toks23
-
-cross references,
-\auxfile=\write2
-\savesfregister=\count46
-\footnoteno=\count47
- (/usr/share/texmf/tex/plain/dvips/epsf.tex
-\epsffilein=\read0
-\epsfframemargin=\dimen39
-\epsfframethickness=\dimen40
-\epsfrsize=\dimen41
-\epsftmp=\dimen42
-\epsftsize=\dimen43
-\epsfxsize=\dimen44
-\epsfysize=\dimen45
-\pspoints=\dimen46
-\epsfnoopenhelp=\toks24
-)
-\noepsfhelp=\toks25
- localization,
-\nolanghelp=\toks26
-\defaultparindent=\dimen47
-
-and turning on texinfo input format.) (./GNU-Press-styleguide.aux)
address@hidden@write3
address@hidden@write4
address@hidden@write5
address@hidden@write6
address@hidden@write7
address@hidden@write8
- [1
-\openout2 = `GNU-Press-styleguide.aux'.
-
-\openout3 = `GNU-Press-styleguide.cp'.
-
-\openout4 = `GNU-Press-styleguide.fn'.
-
-\openout5 = `GNU-Press-styleguide.vr'.
-
-\openout6 = `GNU-Press-styleguide.tp'.
-
-\openout7 = `GNU-Press-styleguide.ky'.
-
-\openout8 = `GNU-Press-styleguide.pg'.
-
-{/usr/share/texmf/dvips/config/pdftex.map}] Chapter 1
-\openout0 = `GNU-Press-styleguide.toc'.
-
- [1] Chapter 2 [2] [3] Chapter 3
-[4] Chapter 4 [5] Chapter 5 [6]
-Underfull \hbox (badness 10000) in paragraph at lines 438--440
- /address@hidden/Bad:/address@hidden/`/address@hidden/@dfn{logical operator} 
(or 
-operator on Boolean
-
address@hidden(7.60416+2.43333)x361.34999
address@hidden(@leftskip) 79.49742
address@hidden 10000
address@hidden -57.81621
-./address@hidden/B
-./address@hidden/a
-.etc.
-
-
-Underfull \hbox (badness 10000) in paragraph at lines 441--443
- /address@hidden/Good:/address@hidden/`/address@hidden/@dfn{logical operator} 
(an
- operator on Boolean
-
address@hidden(7.60416+2.43333)x361.34999
address@hidden(@leftskip) 79.49742
address@hidden 10000
address@hidden -57.81621
-./address@hidden/G
-./address@hidden/o
-.etc.
-
-[7] Chapter 6 [8] Chapter 7 [9] [10] ) 
-Here is how much of TeX's memory you used:
- 1492 strings out of 12477
- 16464 string characters out of 89681
- 38789 words of memory out of 263001
- 2499 multiletter control sequences out of 10000+0
- 31784 words of font info for 110 fonts, out of 400000 for 1000
- 19 hyphenation exceptions out of 1000
- 12i,7n,10p,286b,264s stack positions out of 300i,100n,500p,50000b,4000s
-</usr/share/texmf/fonts/type1/bluesky/cm/
-cmtt8.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmsltt10.pfb></usr/share/tex
-mf/fonts/type1/bluesky/cm/cmcsc10.pfb></usr/share/texmf/fonts/type1/bluesky/cm/
-cmr8.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmsy9.pfb></usr/share/texmf/f
-onts/type1/bluesky/cm/cmsl10.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmb10
-.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmtt10.pfb></usr/share/texmf/font
-s/type1/bluesky/cm/cmti10.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmsy10.p
-fb></usr/share/texmf/fonts/type1/bluesky/cm/cmr10.pfb></usr/share/texmf/fonts/t
-ype1/bluesky/cm/cmbx12.pfb>
-Output written on GNU-Press-styleguide.pdf (11 pages, 99100 bytes).

Index: Press-use/GNU-Press-styleguide.pdf
===================================================================
RCS file: Press-use/GNU-Press-styleguide.pdf
diff -N Press-use/GNU-Press-styleguide.pdf
Binary files /tmp/cvsbcvnoh and /dev/null differ

Index: Press-use/GNU-Press-styleguide.pg
===================================================================
RCS file: Press-use/GNU-Press-styleguide.pg
diff -N Press-use/GNU-Press-styleguide.pg

Index: Press-use/GNU-Press-styleguide.texi
===================================================================
RCS file: Press-use/GNU-Press-styleguide.texi
diff -N Press-use/GNU-Press-styleguide.texi
--- Press-use/GNU-Press-styleguide.texi 6 May 2003 19:21:03 -0000       1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,632 +0,0 @@
-\input texinfo       @c -*-texinfo-*-
address@hidden %** start of header
address@hidden styleguide.info
address@hidden GNU Style Guide
address@hidden setchapternewpage odd
address@hidden edition-major-minor-number 4.15
address@hidden
address@hidden finalout
address@hidden %** end of header
-
address@hidden
- ## Summary of shell commands to create various output formats:
-
-    ## Info output
-    makeinfo --no-split --paragraph-indent=0 --verbose style.texi
-
-    ## DVI output
-    texi2dvi style.texi
-
-    ## HTML output
-    makeinfo --html --no-split --verbose style.texi
-
-    ## Plain text output
-    makeinfo --fill-column=70 --no-split --paragraph-indent=0 \
-    --verbose --no-headers --output=style.txt style.texi
-
-    ## DocBook output
-    makeinfo --docbook --no-split --paragraph-indent=0 --verbose style.texi
-
-    ## XML output
-    makeinfo --xml --no-split --paragraph-indent=0 --verbose style.texi
-
address@hidden ignore
-
address@hidden
address@hidden 10
address@hidden @titlefont{A Style Guide for GNU Documentation}
address@hidden 12pt
address@hidden by Ron Hale-Evans
address@hidden 12pt
address@hidden Based largely on comments by Robert J. Chassell
address@hidden and Richard M. Stallman
address@hidden 0pt plus 1fill
address@hidden Copyright @copyright{} 2001 Free Software Foundation, Inc.
address@hidden titlepage
-
address@hidden
address@hidden Top, Basic points of style, (dir), (dir)
address@hidden A guide to writing documentation in the GNU style.
-
-Copyright @copyright{} 2001 Free Software Foundation, Inc.
address@hidden ifnottex
-
address@hidden
-* Basic points of style::       
-* Ordering your text::          
-* Code examples::               
-* Metaphors::                   
-* English usage::               
-* Texinfo usage::               
-* Format while writing::        
address@hidden menu
-
address@hidden Basic points of style, Ordering your text, Top, Top
address@hidden Basic points of style
-
address@hidden
-The goal of free GNU documentation is to help the users and developers
-of GNU software.  There is no need for you to provide examples for
-software running under other operating systems.  In particular, there
-is no need for you to provide examples for operating systems that take
-away your freedom.
-
address@hidden @bullet
address@hidden
-Show, don't just tell.  Use plenty of examples (but don't be
-overly redundant).
-
address@hidden
-Move slowly.  Do not impose too much of a cognitive load at once
-on the reader.
-
address@hidden
-Explain things in detail if you are writing a tutorial for a novice.
-Since one tends to under-explain anyway, pretend you are writing for
-an intelligent person who lives in an undeveloped country and is
-unfamiliar with the technology you are explaining.
-
address@hidden
-Don't say too little.  If you cannot include enough information on a
-topic to do more than tantalize a novice, omit it entirely.
-
address@hidden
-Do not assume the reader has specific knowledge of mathematics or
-computer science when it is possible she doesn't.  You may have to
-explain what an integer is or what a byte is, at least at the level of
-a tutorial.
-
address@hidden
-Explain your value judgments.  For example, if you say a code snippet
-is or is not ``useful'', explain @emph{why} it is or is not.  Value
-judgments can only be formed by people with knowledge of the relevant
-subject, and if the reader had the knowledge you use to form your
-judgments, she probably wouldn't need to read your documentation!
-
address@hidden
-If necessary, repeat yourself, especially if the information you are
-repeating is important and might be missed the first time.  Also, if
-your reader is unlikely to remember a minor point that is nevertheless
-important to understand a major one, it is acceptable to repeat the
-information.
-
address@hidden
-Avoid editorializing, either about things outside the text (``As we
-know, every operating system but GNU sucks''), or about the text
-itself (``At last, we can address@hidden'').
-
address@hidden
-Design your text for a blind person; this is a good discipline.
-Documents, especially web pages, turn out much better.  When you want
-to know how a document will sound to a blind person, you can run it
-through Festival or Emacspeak.
-
address@hidden
-Diagrams are sometimes helpful.  Similarly, tables and lists of
-categories (variable types, types of operator, etc.) can help the
-reader encompass a large amount of information without a lot of
-superfluous connective text.
-
address@hidden
-Think of problems the reader might encounter --- ``gotchas'' that you
-might have experienced yourself --- then point them out.  For example,
-in C and C++, point out the difference between @code{=} and @code{==}.
-
address@hidden
-Explain conventions.  Note that software programming and usage often
-relies on conventions that are not obvious.  For example, a @samp{0}
-return code in a C program signifies ``zero errors''.  It is good to
-explain a convention such as this.
-
address@hidden
-Always tell people how to pronounce code when you introduce new
-terms. For example, if you are explaining pointers, tell the reader
-that @code{*my_ptr} can be pronounced ``the contents of the memory
-location @code{my_ptr}.''  The idea is to teach those who sound things
-out when reading to pronounce code the right way, rather than to come
-up with an idiosyncratic, personal method of reading, which can hurt
-their ability to learn the language.
-
-People who do not pronounce words, but depend entirely upon
-visualization, will not care much for this, but will not be hurt.
-Indeed, they will benefit, since they need to learn pronunciation in
-order to talk with other programmers.
-
address@hidden
-Qualify your statements.  Don't simply say, for example,
-``Parameters must have their types declared.''  Must @emph{all}
-parameters have their types declared?  If so, say so; if not, state
-which parameters must have their types declared and which must not;
-and give examples where necessary.
address@hidden itemize
-
address@hidden Ordering your text, Code examples, Basic points of style, Top
address@hidden Ordering your text
-
address@hidden
-Write about first things first.
-
address@hidden @bullet
address@hidden
-Write about the most important things in a section first.  You may
-want to give each its own subsection.  Don't make the mistake of
-writing, ``Blah, blah, and blah.  Oh, and by the way, this is really
-important: @dots{}''
-
address@hidden
-Put important notes to the reader in subsections of their own.
-This tells the reader the notes  really are important.
-
-While ``first things first'' usually applies, in some cases, the very
-end of a section is the best place for an important note, perhaps
-prefixed with @samp{@@address@hidden:@}}.  People tend to remember
-best the things they are shown first and last. Also, an important note
-can sometimes tie up a section very nicely.
-
address@hidden
-Order the information in your nodes from simple to complex.
-
address@hidden
-Don't use terms without defining them, at least in a brief,
-preliminary way.  Do not use them @emph{in the process of} defining
-them.  Here, for example, is a classic error: @samp{This variable can
-take only @@address@hidden address@hidden: true and false.}
-
address@hidden
-Make your assumptions clear @emph{before} you use them.  For example,
-if you assume that the reader knows basic trigonometry, say so before
-you launch into an example involving it.  You might also give pointers
-to where the reader could @emph{learn} about the subject in question.
-
address@hidden 1500
address@hidden
-Recursion and nested data structures are difficult.  Your text can
-easily get out of control.  Be extra careful to phrase your
-explanations clearly so the reader does not end up in a tangle.
-
address@hidden @strong
address@hidden Bad:
-``All variables local to a block are invisible outside
-their block, but visible within every block their block contains.''
-
address@hidden Good:
-``A local variable is visible within its own block and
-the ones that block contains, but invisible outside its own block.''
address@hidden table
-
address@hidden
-If your chapter is titled ``About foo and
-bar'', do not discuss your topics in the order ``bar'' and ``foo''.  Be
-parallel and consistent throughout the section in question.  This may
-mean you will have to order your text carefully in advance, but your
-readers will thank you.
-
address@hidden
-If you have two tables or lists of information that discuss the
-same items, combine them!  Don't make the reader flip from one to the
-other, correlating them in her head.
-
address@hidden
-Don't combine different topics in the same paragraph or node.  If
-you want to start a new topic, start a new paragraph or a new node.
-
address@hidden
-After you have made an important point in a paragraph, end the
-paragraph and let the reader ``walk away with'' that information.
-Don't clutter the paragraph with details, trailing off into
-irrelevance; save the details for later.
-
address@hidden
-When you are explaining a feature of a program, it is often helpful to
-awaken the reader's interest by first outlining a problem the feature
-solves or a need it fulfills.  Write text that ``motivates'' the
-reader to understand why the feature is needed.  You should assume
-that most people will not themselves think that they need the feature
-ahead of time, and that when the feature is introduced, only the
-really smart readers will figure out for themselves why it is a good
-idea.
-
address@hidden itemize
-
address@hidden Code examples, Metaphors, Ordering your text, Top
address@hidden Code examples
-
address@hidden
-Examples should follow the GNU style.  Consult the @cite{GNU
-Coding Standards} for further information.
-
address@hidden @bullet
address@hidden
-Give sample output for code examples wherever possible.
-
address@hidden
-Don't waste the reader's time with frivolous examples that have no
-real use.  For example, in the @cite{GNU C Tutorial}, it was judged too
-frivolous to show the reader how to print out the values of pointers (of
-the pointers themselves, not the addresses pointed to), even though
-earlier editions of the book had done so.
-
address@hidden
-When you discuss a function, do not include the parentheses in
-its name unless you are illustrating a function call.  For example, use
address@hidden rather than @code{cos()}.
-
address@hidden
-In an example, snuggle code up to the @code{@@example} and
address@hidden@code{@@end example}} lines; do not insert blank lines between the
-lines containing the formatting commands and the lines containing the
-code.
-
address@hidden
-Always check your code examples by compiling and running them before
-including them in your text.  This applies even to small examples.
-Double-check your mathematical examples as well as your code.  Nothing
-will make your reader lose confidence in your documentation faster
-than catching you in a simple error.
-
address@hidden
-Use the present ``timeless'' tense when talking about what a code
-example does.  Example: ``The @code{foo} function takes an integer
-variable @code{bar} and multiplies it by 5.''
-
address@hidden
-Put ellipses inside dummy code blocks, unless you want to imply
-they are no-ops.
-
address@hidden
-In examples of code, use all-caps only for macros and the like that
-are normally written in uppercase letters.  Use lowercase letters for
-everything else.
-
address@hidden
-Don't use examples that will become dated.  You don't know how
-long your text will be read.  Example: If you are writing in the year
-2002, and you want to use an example of a variable containing a year,
-rather than creating a variable called @code{cur_year} and making it
-equal to @samp{2002}, it is better to create a variable called
address@hidden and make it equal to @samp{1969}.
-
address@hidden
-In your code examples, use variable names that are concrete rather
-than abstract.  Concrete names are less confusing.  For example, a
-variable called @code{cost_of_lunch} is better than one called
address@hidden or @code{foo}.  On the other hand, do not use
-variable names that are so concrete that the example itself takes over
-and the lesson it is supposed to convey is lost.
-
address@hidden
-Satisfy the reader's curiosity about whether alternate coding
-practices are possible, but make your recommendations clear.
address@hidden itemize
-
address@hidden Metaphors, English usage, Code examples, Top
address@hidden Metaphors
-
address@hidden
-People reason using metaphors.
-
address@hidden @bullet
address@hidden
-Develop your metaphors explicitly.  For example, if you say local
-variables are ``invisible'' outside their functions, explain that this
-usage stems from a metaphor in which functions are something like
-buildings and local variables are like people looking from one building
-to another.
-
address@hidden
-Jargon often has a metaphorical underpinning.  For example,
-pointers ``point to'' memory addresses.  It is helpful to explain these
-metaphorical underpinnings when introducing a jargon term.
-
address@hidden
-Explain where your metaphors fail.  For example, when explaining
-pointers in C, explain that while, with the same finger, you can point to
-anything you like in real life (whether it be animal, vegetable, or
-mineral) a given pointer can only point to a certain type of variable
-(only to integers or only to floats, for example).
-
address@hidden
-Use a metaphor consistently; do not mix metaphors.
-For example, when discussing local variables, do not at one point say
-they are ``invisible'' outside their functions and at another point
-say that they are ``nonexistent'' outside their functions.  Stick to
-one metaphor or the other.
-
-If you @emph{must} use more than one metaphor, introduce transitional
-material and explain how and why you are switching metaphors.
-
address@hidden
-Avoid idioms and implicit metaphors wherever possible.
-People translate GNU documentation into many different languages.
-English idioms such as ``this feature opens the door to the
-possibility of @dots{}'' only make more work for translators whose
-languages do not possess the idiom.
address@hidden itemize
-
address@hidden English usage, Texinfo usage, Metaphors, Top
address@hidden English usage
-
address@hidden
-!!! is it really true that early editions of `The Elements of Style'
-are now in the public domain?  I cannot find my copy to check when it
-was first copyrighted.  In the US, the recent change in law kept books
-that were published between 1923 and 1941 out of the public domain.
address@hidden ignore
-
address@hidden
-Consult good books on English style.  For example, a classic text is
address@hidden Elements of Style} by Strunk and White.  Early editions of
-it are now in the public domain and are therefore free in the GNU
-sense.
-
address@hidden
-Also consult the @cite{GNU Coding Standards}, which discusses
-documentation as well as code.
-
address@hidden @bullet
address@hidden
-Don't mention non-free software by name unless it is unavoidable.
-
address@hidden
-Refer to GNU more and Unix less.
-
-Always write ``GNU/Linux'', never just ``Linux'', unless you are
-only referring to the Linux kernel.
-
address@hidden
-Use ``illegal'' only for matters of the law and government.  For
-violations of the rules of C or other languages, use ``invalid''.
-
address@hidden
-Always address the reader as ``you''.  Example: ``If you want to
-display the diagram, press the @key{RET} key.''
-
address@hidden
-Use ``must'', ``should'', ``may'', and ``can'' appropriately.  Do not
-conflate them when discussing actions you must, should, may, or can
-perform while using software.
-
address@hidden
-Examples are not ``given'' but ``shown''.  Only
-useful stand-alone programs qualify as gifts.
-
address@hidden 1500
address@hidden
-``Kinds of'' and ``types of'' are followed by a singular noun.
-For example:
-
address@hidden @strong
address@hidden Bad:
-``kinds of computers'', ``types of variables''
-
address@hidden Good:
-``kinds of computer'', ``types of variable''
address@hidden table
-
address@hidden
-There should be no text between ``as follows'' and what is said to
-follow.
-
address@hidden 1500
address@hidden
-Be careful to separate English from C code (or the code of whatever
-computer language you are using).  For example, in the first example
-below, the English word ``or'' might be confused by the reader with
-the Boolean operator @sc{or}.
-
address@hidden @strong
address@hidden Bad:
address@hidden@@address@hidden address@hidden (or operator on Boolean values)}
-
address@hidden Good:
address@hidden@@address@hidden address@hidden (an operator on Boolean values)}
address@hidden table
-
address@hidden
-Failure to process negatives is a common problem in reading.  Phrase
-your text so that a reader is not likely to miss an important ``not''.
-Do not repeat the negative information in a manner that could make it
-appear positive.
-
address@hidden
-Distinguish computer science terms and jargon from the language of the
-reader's everyday experience.  For example, you may need to tell the
-reader that the Boolean value @code{true} is true and only true, while
-in real life ``true'' might mean ``only partly true'', as in ``that's
-a true story, although parts are exaggerated''.
-
address@hidden 1500
address@hidden
-Most people except LISP programmers dislike parentheses.  Use as
-few as possible.  If you can, avoid using parentheses in tables.
-
address@hidden @strong
address@hidden Bad:
-unary plus (example: @code{+5})
-
address@hidden Good:
-unary plus, example: @code{+5}
address@hidden table
-
address@hidden
-Use language precisely.  For example, when discussing C, a
-``declaration'' is not the same as a ``definition''.  Many distinct
-terms sound alike and are used in similar ways, but that is no excuse
-for @emph{you} to conflate them, or to fail to distinguish them for
-your readers.  Moreover, don't simply say that two terms are
-different, but explain their differences.
-
-Similarly, distinguish one use of a jargon word from another.  For
-example:  ``value of a variable'' vs. ``passing by value''.
address@hidden itemize
-
address@hidden Texinfo usage, Format while writing, English usage, Top
address@hidden Texinfo usage
-
address@hidden
-Please read the Texinfo manual through; it will do you good.
-
address@hidden @bullet
address@hidden
-Use @samp{@@code}, @samp{@@samp}, @samp{@@file}, etc. correctly;
-for clarification,
address@hidden
-see the @cite{Texinfo Manual}.
address@hidden iftex
address@hidden
-see the @cite{Texinfo Manual}.
address@hidden ifhtml
address@hidden
-see @ref{Top, , , texinfo, The Texinfo Manual}.
address@hidden ifinfo
-
address@hidden
-Use @samp{@@xref} properly; never use it in mid-sentence.
-
address@hidden
-To emphasize, use @samp{@@emph} or @samp{@@strong}, not all-caps.
-
address@hidden
-For meta-syntactic variables, use @samp{@@var}, not angle brackets.
-
address@hidden
-End every sentence with two spaces so Emacs can see where
-sentences begin and end.  (See
address@hidden
-the ``Sentences'' section in @cite{The GNU Emacs Manual},
address@hidden iftex
address@hidden
-the ``Sentences'' section in @cite{The GNU Emacs Manual},
address@hidden ifhtml
address@hidden
address@hidden, , The GNU Emacs Manual, emacs, The GNU Emacs Manual},
address@hidden ifinfo
-which describes convenient sentence-related commands.)
-
address@hidden
-Use @samp{@@group} to hold together examples that should stay all
-on one page.
-
-Note that the @code{@@group} command does not currently work with the
address@hidden@@table} command.  Instead, use the @code{@@need} command with
address@hidden@@table}.  Similarly, use the  @code{@@need} command before a
-plain text paragraph that introduces an example or list.
address@hidden
-(See the @cite{Texinfo Manual}.)
address@hidden iftex
address@hidden
-(See the @cite{Texinfo Manual}.)
address@hidden ifhtml
address@hidden
-(@xref{Top, , , texinfo, The Texinfo Manual}.)
address@hidden ifinfo
-
address@hidden
-Never use typesetting commands for markup!  Always use logical
-markup instead.  You gain nothing in Info by putting ``Important:'' in
-boldface.  Unless your reader uses an unusual stylesheet, you will not
-help Emacspeak, either.  Replace @samp{@@address@hidden:@}} with
address@hidden@@address@hidden:@}} so formatting software can figure out
-how to handle the markup appropriately.  The use of typesetting markup
-is the bane of the HTML world; logical markup works better, and one
-reason that XML was invented.
-
-The only legitimate use of a typesetting command in GNU
-documentation is to cause plain, explanatory text in a table or example
-to be in a Roman font.  Use the @code{@@r} command to do this.
-
address@hidden itemize
-
address@hidden Format while writing,  , Texinfo usage, Top
address@hidden Format As You Write
-
address@hidden
-Format your text as you write.  This eases your final cleanup.
-
address@hidden
-Then, at the end of your project, again check how your text will look
-in Info, on a Web page, and typeset for printing.  Listen to it as
-well; or, at at the very least, consider how it sounds when read out
-loud.
-
address@hidden @bullet
address@hidden
-As you write, make sure your file will compile as an Info document.
-In GNU Emacs, you can do the following:
-
address@hidden
address@hidden
-Run @kbd{C-c C-m C-b} (@code{makeinfo-buffer}), then
address@hidden
-run @kbd{C-u C-c C-u C-a} (which is @code{texinfo-all-menus-update},
-with a prefix argument); then
address@hidden
-fix the remaining errors, then
address@hidden
-repeat this sequence until there are no more errors.
address@hidden enumerate
-
address@hidden
-Run the spell-checker!
-
address@hidden
-When polishing the text, make sure your page layout is attractive; for
-example, make sure you don't use too much whitespace.  You can group
-chunks of text together with the @code{@@group} and @code{@@need}
-commands.
-
address@hidden 1500
address@hidden
-In tables and code examples, line up columns neatly:
-
address@hidden:}
address@hidden
-a: 1
-b :  2
-c:3
address@hidden smallexample
-
address@hidden:}
address@hidden
-a : 1
-b : 2
-c : 3
address@hidden smallexample
-
address@hidden
-When you email your manuscript to your editor, consider compressing it
-with @code{gzip} and sending it as a uuencoded or base-64 encoded
-attachment.  This will prevent it from being mangled in email.  Some
-email programs transform a @samp{From} at the start of a line to
address@hidden>From}.  Gzipped and encoded attachments are not vulnerable to
-this sort of corruption.  (Short documents without a @samp{From} at
-the start of a line do not need to be compressed and encoded.)
-
address@hidden
-As I said before, look at your text in all three major output formats:
-in Info, on a Web page, and typeset for printing.  In addition, listen
-to it; or else consider how it sounds when read out loud.
address@hidden itemize
-
address@hidden
-

Index: Press-use/GNU-Press-styleguide.toc
===================================================================
RCS file: Press-use/GNU-Press-styleguide.toc
diff -N Press-use/GNU-Press-styleguide.toc
--- Press-use/GNU-Press-styleguide.toc  6 May 2003 19:21:03 -0000       1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,7 +0,0 @@
-\chapentry{Basic points of style}{1}{1}
-\chapentry{Ordering your text}{2}{3}
-\chapentry{Code examples}{3}{5}
-\chapentry{Metaphors}{4}{6}
-\chapentry{English usage}{5}{7}
-\chapentry{Texinfo usage}{6}{9}
-\chapentry{Format As You Write}{7}{10}

Index: Press-use/GNU-Press-styleguide.tp
===================================================================
RCS file: Press-use/GNU-Press-styleguide.tp
diff -N Press-use/GNU-Press-styleguide.tp

Index: Press-use/GNU-Press-styleguide.vr
===================================================================
RCS file: Press-use/GNU-Press-styleguide.vr
diff -N Press-use/GNU-Press-styleguide.vr

Index: Press-use/PengyandGnu-banner.tif
===================================================================
RCS file: Press-use/PengyandGnu-banner.tif
diff -N Press-use/PengyandGnu-banner.tif
Binary files /tmp/cvsTnfFli and /dev/null differ

Index: Press-use/PengyandGnu.tif
===================================================================
RCS file: Press-use/PengyandGnu.tif
diff -N Press-use/PengyandGnu.tif
Binary files /tmp/cvssD6A2o and /dev/null differ

Index: Press-use/Shirt-1.png
===================================================================
RCS file: Press-use/Shirt-1.png
diff -N Press-use/Shirt-1.png
Binary files /tmp/cvsABxGoT and /dev/null differ

Index: Press-use/Shirt-3.png
===================================================================
RCS file: Press-use/Shirt-3.png
diff -N Press-use/Shirt-3.png
Binary files /tmp/cvsVywrSR and /dev/null differ

Index: Press-use/Shirt-6.png
===================================================================
RCS file: Press-use/Shirt-6.png
diff -N Press-use/Shirt-6.png
Binary files /tmp/cvsizLfvS and /dev/null differ

Index: Press-use/form2.pdf
===================================================================
RCS file: Press-use/form2.pdf
diff -N Press-use/form2.pdf
Binary files /tmp/cvsBZXoeV and /dev/null differ

Index: Press-use/form3.pdf
===================================================================
RCS file: Press-use/form3.pdf
diff -N Press-use/form3.pdf
Binary files /tmp/cvsImcNMV and /dev/null differ

Index: Press-use/tech-doc.html
===================================================================
RCS file: Press-use/tech-doc.html
diff -N Press-use/tech-doc.html
--- Press-use/tech-doc.html     5 May 2005 19:37:09 -0000       1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,140 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<html>
-
-<head>
-<title>Documentation of the GNU project -- Information for
-      Documentation Volunteers</title>
-<link rev="made" href="mailto:address@hidden";>
-</head>
-
-<body bgcolor="#FFFFFF" text="#000000" link="#1F00FF" alink="#FF0000" 
vlink="#9900DD">
-<h3>Information for Proofreading and Other Documentation Volunteers</h3>
-
-<p>
-
-<a href="/graphics/agnuhead.html"><img src="/graphics/gnu-head-sm.jpg"
- alt=" [image of the Head of a GNU] " width="129" height="122"></a>
-
-<p>
-Go to <a href="gnupresspub.html">GNU Press</a><br>
-Go to <a href="doc.html">Documentation of the GNU project</a><br>
-Return to <a href="/home.html">GNU's home page</a>
-<p>
-
-<hr>
-
-<p>
-This page is a roughly designed working page for people actively
-      involved in proofreading for GNU Press.  For a more
-      complete introduction to GNU Press, please see our regular <a
-      href="http://www.gnupress.org";>home page</a>.
-</p>
-<p>
-To join the announce-only mailing list <a
-href="http://mail.gnu.org/mailman/listinfo/tech-doc";>tech-doc at
-gnupress.org</a> or read its archives to learn about new projects.
-</p>
-
-<h4>GNU C Library Manuals Project</h4>
-<p>
-The current project is technical and English editing review of the GNU
-C Library Reference Manual.  The manual has been split into 2
-separate, stand alone volumes.  I would appreciate it if some
-volunteers would take a moment to give it a holistic look, and see how
-well the split was made.  Does a book feel like it is "missing"
-something?  Does information not flow correctly?
-</p>
-<p> 
-
-Please go to the following URLs for a copy of the two manuals.  It
-is available in both original Texinfo type-formatting version (as one
-very large text file), and as a PDF version.
-
-<b>Texinfo Versions</b><br>
-
-<a href="http://www.gnu.org/doc/Press-use/CLibBook1.texinfo";>Book
-One</a>  <br>
-
-<a href="http://www.gnu.org/doc/Press-use/CLibBook2.texinfo";>Book Two</a><br>
-<br>
-<b> PDF Versions</b><br>
-
-<a href="http://www.gnu.org/doc/Press-use/book1.pdf";>Book One</a><br>
-<a href="http://www.gnu.org/doc/Press-use/book2.pdf";>Book Two</a><br>
-<br>
-
-For those who would like to see the single-volume version as a
-reference, <a href="http://www.gnu.org/manual/glibc-2.2.5/libc.html";>
-Click Here</a>.<br>
-
-<h4>On-line resources for Documentation Standards</h4>
-
-A draft version of a Style Guide for GNU Documentation<br>
-<a href="http://www.gnu.org/doc/Press-use/GNU-Press-styleguide.pdf";>PDF 
format</a><br>
-<a href="http://www.gnu.org/doc/Press-use/GNU-Press-styleguide.texi";>Texinfo 
format</a><br>
-
-<p>
-The program GCC has it's own <a
-       href="http://gcc.gnu.org/codingconventions.html";>protocol
-       manual</a>. Please check for technical terminology standards
-       specific to this manual.
-<p>
-
-<a href="/prep/standards.html#SEC31">Click Here</a> for the section of
-      the Free Software Foundation's general coding standards relating
-      specifically to documentation.
-
-<p>
-Our preferred standard for documentation formatting is the simple but
-powerful language Texinfo. It is a front-end for Donald Knuth's TeX,
-like it's younger and more famous sibling, LaTeX. <a
-href="http://www.gnu.org/manual/texinfo-4.2/texinfo.html";> Click
-Here</a> to see the on-line manual for Texinfo.
-<p>
-Richard M. Stallman&#146;s <a href="/prep/maintain.html">Information
-for Maintainers</a> Manual is not completely germane to this level of
-development, but technical editors might like to take a look at it.
-<p>
-
-General background: A copy of <a
-href="/licenses/licenses.html#FDL">The Free Documentation License</a>,
-which covers this manual.
-
-<hr>
-
-<p>
-
-FSF &amp; GNU inquiries &amp; questions to <a
-href="mailto:address@hidden";><em>address@hidden</em></a>. Other <a
-href="/home.html#ContactInfo">ways to contact</a> the FSF.
-
-<p>
-
-Comments on these web pages to <a
-href="mailto:address@hidden";><em>address@hidden</em></a>,
-send other questions to <a
-href="mailto:address@hidden";><em>address@hidden</em></a>.
-
-
-<p>
-
-Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003 Free Software
-Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301,
-USA
-
-<p>
-
-Verbatim copying and distribution of this entire article is permitted
-in any medium, provided this notice is preserved.
-
-<p>
-
-Updated: <!-- timestamp start -->$Date: 2005/05/05 19:37:09 $ $Author:
-opus $ <!-- timestamp end -->
-
-<hr>
-
-</body>
-
-</html>

Index: Press-use/3-image/3-image-master.eps
===================================================================
RCS file: Press-use/3-image/3-image-master.eps
diff -N Press-use/3-image/3-image-master.eps
--- Press-use/3-image/3-image-master.eps        1 Mar 2004 14:50:25 -0000       
1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,11745 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%BoundingBox: 10 10 202 202
-%%HiResBoundingBox: 10.759375 10.759375 201.839014 201.839014
-%.....................................
-%%Creator: GNU Ghostscript 653 (epswrite)
-%%CreationDate: 2004/01/12 09:32:22
-%%DocumentData: Clean7Bit
-%%EndComments
-%%BeginProlog
-% This copyright applies to everything between here and the %%EndProlog:
-% Copyright (C) 2002 artofcode LLC, Benicia, CA. All rights reserved.
-%%BeginResource: procset GS_epswrite_1_0_1001
-/GS_epswrite_1_0_1001 80 dict dup begin
-/PageSize 2 array def/setpagesize{ PageSize aload pop 3 index eq exch
-4 index eq and{ pop pop pop}{ PageSize dup  1
-5 -1 roll put 0 4 -1 roll put dup where{ exch get exec}
-{ pop/setpagedevice where
-{ pop 1 dict dup /PageSize PageSize put setpagedevice}
-{ /setpage where{ pop PageSize aload pop pageparams 3 {exch pop} repeat
-setpage}if}ifelse}ifelse}ifelse} bind def
-/!{bind def}bind def/#{load def}!/N/counttomark #
-/rG{3{3 -1 roll 255 div}repeat setrgbcolor}!/G{255 div setgray}!/K{0 G}!
-/r6{dup 3 -1 roll rG}!/r5{dup 3 1 roll rG}!/r3{dup rG}!
-/w/setlinewidth #/J/setlinecap #
-/j/setlinejoin #/M/setmiterlimit #/d/setdash #/i/setflat #
-/m/moveto #/l/lineto #/c/rcurveto #
-/p{N 2 idiv{N -2 roll rlineto}repeat}!
-/P{N 0 gt{N -2 roll moveto p}if}!
-/h{p closepath}!/H{P closepath}!
-/lx{0 rlineto}!/ly{0 exch rlineto}!/v{0 0 6 2 roll c}!/y{2 copy c}!
-/re{4 -2 roll m exch dup lx exch ly neg lx h}!
-/^{3 index neg 3 index neg}!
-/f{P fill}!/f*{P eofill}!/s{H stroke}!/S{P stroke}!
-/q/gsave #/Q/grestore #/rf{re fill}!
-/Y{P clip newpath}!/Y*{P eoclip newpath}!/rY{re Y}!
-/|={pop exch 4 1 roll 3 array astore cvx exch 1 index def exec}!
-/|{exch string readstring |=}!
-/+{dup type/nametype eq{2 index 7 add -3 bitshift 2 index mul}if}!
-/@/currentfile #/${+ @ |}!
-/B{{2 copy string{readstring pop}aload pop 4 array astore cvx
-3 1 roll}repeat pop pop true}!
-/Ix{[1 0 0 1 11 -2 roll exch neg exch neg]exch}!
-/,{true exch Ix imagemask}!/If{false exch Ix imagemask}!/I{exch Ix image}!
-/|X{exch string readhexstring |=}!/$X{+ @ |X}!
-/@X{{currentfile ( ) readhexstring pop}}!
-end readonly def
-%%EndResource
-/pagesave null def
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-GS_epswrite_1_0_1001 begin
-/pagesave save store 100 dict begin
-0.1 0.1 scale
-%%EndPageSetup
-gsave mark
-Q q
-0 0 250000 0 0 250000 ^ Y
-10 w
-191 G
-2013.39 1062.99 m
-0 524.89 -425.51 950.4 -950.4 950.4 c
--524.89 0 -950.4 -425.51 -950.4 -950.4 c
-0 -524.89 425.51 -950.4 950.4 -950.4 c
-524.89 0 950.4 425.51 950.4 950.4 c
-S
-255 G
-809.992 490.992 528 528 re
-f
-K
-946.39 712.31 m
-2.34 -1.76 3.84 -4.4 7.04 -3.52 c
--0.13 -2.98 -1.07 -5.84 -1.32 -8.8 c
--0.25 -4.09 0.44 -8.23 0.44 -12.32 c
-0 -6.24 -0.55 -12.76 0.08 -18.92 c
-0.33 -3.27 1.34 -6.47 2 -9.68 c
-0.36 -1.76 0.39 -3.56 0.83 -5.28 c
-3.19 -12.43 8.85 -24.7 14.68 -36.08 c
-2.75 -5.38 7.29 -11.03 11.53 -15.33 c
-2.96 -3 6.17 -5.79 8.59 -9.31 c
-1.7 -2.42 4.98 -5.55 4.83 -8.8 c
--0.07 -1.1 -0.74 -2.09 -1.18 -3.08 c
-5.2 1.54 0.52 7.73 -0.88 10.56 c
-2.74 -2.64 6.06 -4.62 7.42 -8.36 c
-1.09 -2.98 -0.38 -5.72 -3.46 -6.16 c
-0 -0.88 p
-4.4 0.24 5.64 4.05 4.29 7.92 c
--1.33 3.8 -4.06 5.64 -6.93 8.24 c
--1.67 1.56 -3.14 3.35 -4.84 4.92 c
--6.08 5.6 -11.96 11.79 -16.28 18.96 c
--2.88 4.84 -4.85 10.24 -7.18 15.4 c
--5.79 12.86 -10.32 25.89 -11.67 40.04 c
--0.34 3.62 -0.07 7.37 -0.07 11 c
-0 6.79 -0.8 13.52 0.33 20.24 c
-0.4 2.35 0.76 4.97 2.02 7.04 c
-2.46 4.04 6.81 6.6 11.29 7.71 c
-2.04 0.51 4.18 0.57 6.16 1.29 c
-5.47 2 9.68 5.34 14.52 8.6 c
--1.47 -3.33 -3.12 -7.77 -1.95 -11.44 c
-1.06 -3.31 4.67 -5.87 4.33 -9.68 c
--0.18 -2.06 -2 -4 -3.02 -5.72 c
--1.34 -2.28 -1.73 -5.93 -0.48 -8.36 c
-2.14 -4.16 8.48 -4.14 10.93 -8.06 c
-0.91 -1.45 -0.57 -2.77 -1.45 -3.82 c
--1.32 -1.62 -2.42 -3.55 -2.52 -5.72 c
--0.22 -4.63 4.04 -7.63 8.24 -7.92 c
-1.63 -0.05 3.23 0.44 4.84 0.33 c
-1.19 -0.11 2.34 -0.57 3.52 -0.77 c
--0.89 -1.03 -2.03 -1.93 -2.75 -3.09 c
--1.54 -2.45 -0.77 -5.8 1.87 -7.07 c
-3.08 -1.52 6.01 -0.84 8.75 -3.38 c
-0.8 -0.74 1.61 -1.59 1.61 -2.75 c
-0 -3.07 -4.25 -4.58 -5.96 -6.59 c
-7.92 2.64 p
--1.58 -1.58 -3.33 -3.09 -4.72 -4.84 c
--0.63 -0.8 -1.09 -1.64 -1.29 -2.64 c
--1.47 -7.15 6.45 -9.12 10.84 -12.76 c
-3.53 -2.96 6.17 -7.25 11.01 -8.36 c
--0.73 1.75 -2.94 2.63 -4.4 3.86 c
--2.37 1.99 -4.04 4.59 -6.6 6.39 c
--3.12 2.19 -7.72 3.24 -9.56 6.91 c
--2.39 4.77 4.62 8.8 7.36 11.88 c
-1.12 1.24 1.85 2.64 2.85 3.96 c
-0.95 1.25 2.33 2.12 3.61 0.7 c
-1.89 -2.1 -2.12 -4.41 -3.37 -5.57 c
--3 -2.79 -5.42 -8.32 -3.4 -12.28 c
-1.49 -2.95 4.98 -3.87 7.8 -5.01 c
-3.04 -1.22 5.16 -3.1 7.48 -5.28 c
-1.76 -1.62 3.66 -3.12 4.22 -5.55 c
-0.58 -2.49 -0.79 -4.23 -2.15 -6.16 c
--3.17 -4.48 -9.39 -9.68 -6.03 -15.84 c
-1.61 -2.87 4.6 -2.03 7.03 -3.4 c
-1.21 -0.68 1.77 -2.12 2.59 -3.2 c
-1.14 -1.55 2.49 -3.11 4.02 -4.29 c
-1.03 -0.8 2.44 -0.99 2.64 -2.31 c
-2.2 -0.28 4.98 -0.12 7.04 -1.11 c
-4.84 -2.41 5.28 -8.89 2.36 -12.97 c
--0.78 -1.08 -1.77 -1.96 -2.8 -2.79 c
--3.98 -3.2 -9.78 -5.88 -9.68 -11.73 c
-0 -1.5 0.36 -2.72 1.42 -3.83 c
-0.86 -0.89 1.94 -1.58 2.98 -2.23 c
-1.42 -0.89 2.83 -1.72 4.4 -2.3 c
--0.91 1.88 -3.4 3.48 -3.36 5.72 c
-0.03 1.45 1.11 2.84 1.92 3.96 c
-2.46 3.42 5.83 5.28 8.91 8.01 c
-4.85 4.28 5.4 11.16 3.53 17.07 c
--0.44 0 p
-0 -4.86 1.4 -9.34 -1.67 -13.64 c
--4.49 -6.22 -13.22 -8.22 -13.29 -17.16 c
--3.4 1.98 -4.46 5 -2.07 8.36 c
-3.92 5.51 12.32 7.18 13.02 14.96 c
-0.64 7.04 -5.32 11.38 -9.39 16.28 c
--1.34 1.61 -2.9 3.17 -3.4 5.28 c
--0.61 2.56 1.47 5.13 2.28 7.48 c
--1.17 -0.66 -1.76 -1.43 -2.31 -2.64 c
--3.19 -6.29 2.59 -11.54 6.71 -15.84 c
--6.6 1.52 -4.84 4.64 -1.76 3.52 p
--1.82 1.97 -0.77 4.4 0.36 6.6 c
-2.38 4.51 7.4 6.78 8.88 11.88 c
--1.65 -1.06 -2.64 -2.97 -3.98 -4.4 c
--3.94 -4.08 -7.34 -7.7 -7.46 -13.64 c
--1.18 0.16 -2.41 0.33 -3.52 0.82 c
--7.55 3.32 0 12.05 3.08 15.46 c
-0.88 0.98 1.95 1.89 2.57 3.08 c
-0.95 1.76 0.95 4.22 0.46 6.16 c
--1.54 5.43 -7.43 8.78 -12.27 10.64 c
--3.24 1.23 -7.92 2.32 -8.36 6.52 c
--0.22 2.85 1.65 6.34 3.52 8.32 c
-1.51 1.51 3.67 2.68 4.2 4.88 c
-0.77 3.18 -2.13 4.24 -4.64 3.52 c
--0.78 3.73 -3.17 5.43 -6.16 7.59 c
--2.71 1.96 -5.5 4.11 -8.36 5.84 c
--1.88 1.09 -3.96 1.88 -5.72 3.26 c
--2.33 1.88 -5.58 5.18 -5.81 8.39 c
--0.16 2.29 1.29 3.83 -0.1 6.1 c
--0.79 1.29 -2.2 1.91 -3.34 2.85 c
--2.41 1.98 -4.95 4.25 -5.84 7.33 c
--0.6 2.08 -0.06 4.07 0.08 6.16 c
-0.18 2.64 -0.08 5.28 -0.53 7.92 c
--0.51 2.98 -2.37 5.16 -3.41 7.92 c
--0.94 2.48 -0.89 4.94 -0.2 7.48 c
-1.28 4.74 4.62 7.02 7.96 10.31 c
-5.36 5.28 11.01 10.57 14.35 17.41 c
-3.83 7.85 7.74 16.49 9.55 25.08 c
-1.29 6.13 2.24 12.32 3.28 18.48 c
-0.3 2.09 1.18 4.07 1.57 6.16 c
-0.93 5.51 0.67 11.24 3.57 16.28 c
-1.93 3.26 5.71 5.71 8.36 8.36 c
--1.32 -3.52 1.32 -3.96 0.44 -3.52 -3.96 -5.72 p
-2.77 0.13 5.08 3.73 6.79 5.72 c
-2.32 2.64 4.39 5.58 6.61 8.36 c
-2.88 3.7 6.35 7.41 6.84 12.32 c
--3.08 1.59 0.17 3.95 -0.44 6.6 c
--6.43 -6.6 -4.57 -0.24 -4.84 -1.08 -6.94 -0.32 -1.87 -1.88 -4.09 -3.83 1.03 
-0.57 -3.7 -3.41 
--2.08 -3.12 -6.54 -6.67 p
-3.3 0.08 5.8 4.35 8.36 6.16 c
--3.96 -5.72 1.76 0.88 -5.28 -7.48 -6.6 -6.6 p
-2.79 0.66 4.98 2.96 7.04 4.84 c
-3.66 3.45 6.73 7.74 9.52 11.88 c
-2.03 3.01 3.51 5.98 6.32 8.36 c
-2.86 2.48 5.28 4.66 9.24 4.84 c
--1.08 -1.81 -3.14 -2.27 -4.64 -3.69 c
--3.9 -3.79 -7.81 -7.93 -9.69 -13.03 c
--1.51 -3.96 -1.07 -7.92 -1.72 -11.88 c
--0.44 -2.54 -1.31 -4.97 -1.79 -7.48 c
--1.15 -5.98 -1.78 -12.08 -3.04 -18.04 c
--0.68 -2.88 -2 -5.56 -2.88 -8.36 c
--2.64 -8.19 -5.59 -17.05 -11.29 -23.69 c
--1.03 -1.15 -2.09 -2.47 -3.3 -3.39 c
--1.42 -1.08 -3.01 -1.6 -4.33 -2.84 c
-0.51 1.3 3.19 3.68 0.88 3.96 c
-2.64 4.4 p
--2.69 -1.45 -4.41 -4.73 -6.35 -7.04 c
--3.22 -3.81 -7.04 -7.33 -10.88 -10.48 c
--1.32 -1.08 -6.11 -3.76 -4.33 -5.8 c
-0 -0.44 -7.48 -2.2 p
-1.32 1.99 3.5 3.64 2.64 6.16 c
--0.44 0 p
--1.79 -2.23 -3.81 -5.28 -6.53 -6.39 c
--1.31 -0.57 -3.08 -0.21 -4.47 -0.22 c
--3.13 -0.03 -7.13 -0.01 -10.12 -0.9 c
--2.77 -0.86 -4.22 -2.94 -6.64 -4.24 c
--1.88 -1.02 -4.17 -0.48 -6.12 -1.46 c
--2.23 -1.12 -3.34 -3.32 -5.36 -4.61 c
--1.05 -0.67 -2.26 -0.67 -3.44 -0.89 c
--1.76 -0.39 -3.4 -1.13 -4.84 -2.21 c
--3.09 -2.32 -5.41 -5.05 -9.24 -6.11 c
--2.05 -0.58 -3.96 -0.87 -5.35 1.06 c
--3.25 4.7 1.97 9.6 4.91 12.76 c
-3.52 3.75 8.57 6.43 10.51 11.44 c
-1.56 4.03 -0.58 8.61 1.49 12.32 c
-2.08 3.78 6.48 5.08 8.24 9.24 c
-1.68 3.87 0.88 7.85 0.88 11.88 c
--0.01 2.02 -0.5 3.78 1.76 4.4 c
-0 -4.4 p
-1.99 1.07 2.05 2.77 2.49 4.84 c
-0.87 4.09 1.66 8.2 2.35 12.32 c
-0.69 3.71 0.87 8.36 2.32 11.88 c
-1.49 3.52 4.2 6.54 5.68 10.12 c
-1.21 2.93 2.53 5.85 3.68 8.8 c
-0.89 2.28 1.29 4.56 2.75 6.6 c
-1.22 1.7 2.92 2.87 4.27 4.4 c
-4.44 5.24 9.36 10.74 15.19 14.46 c
-4.31 2.7 9.36 4.02 14.08 5.88 c
-1.76 0.71 3.43 1.85 5.28 2.53 c
-3.92 1.43 8.22 2.36 12.32 3.09 c
-5.72 1.11 10.27 1.65 13.64 7.04 c
-0.44 0 p
-1.76 -1.15 3.68 -0.28 5.28 0.88 c
-0.44 -1.32 3.08 1.76 -0.88 -3.08 5.72 2.2 2.59 0.37 1.81 3.15 -2.64 0 1.32 
5.28 
-2.64 -5.3 -0.44 -4.82 4.84 3.96 0.44 0 -0.44 -3.52 3.08 0.44 0 -1.76 3.96 
-1.32 
-1.76 4.4 2.64 -0.88 p
-0.09 -1.98 1.28 -2.2 3.08 -2.2 c
-0 -3.08 8.36 6.52 7.92 4.04 p
-2.19 -2.06 3.73 -0.51 6.16 0.27 c
-1.96 0.61 3.77 0.61 5.72 1.49 c
-1.3 -5.45 1.54 -12.57 6.68 -16.28 c
-1.41 -0.94 3.16 -1.1 4.76 -1.65 c
-1.42 -0.55 2.64 -1.32 3.96 -2.05 c
-1.44 -0.81 2.98 -1.42 4.4 -2.24 c
-1.72 -0.99 2.79 -2.26 4.84 -1.97 c
--1.57 2.9 -4.68 3.95 -7.48 5.39 c
--1.61 0.77 -3.13 1.87 -4.84 2.48 c
--1.16 0.41 -2.42 0.49 -3.52 1.13 c
--1.56 0.83 -2.5 2.31 -3.44 3.76 c
--2.76 4.27 -4.36 9.93 -3.16 14.96 c
-2.48 -5.84 2.64 -11.88 7.56 -16.64 c
-1.83 -1.84 4.96 -3.68 7.4 -4.48 c
-2.03 -0.66 4.36 -0.46 6.07 -1.95 c
-2.04 -1.78 2.29 -4.34 2.29 -6.85 c
-3.04 1.07 1.5 5.1 0.09 7.03 c
--2.29 3.08 -5.57 5.29 -7.71 8.37 c
--3.53 5.08 -5.02 12.76 -5.14 18.92 c
-0.44 0 p
-0.44 -1.57 1.46 -2.86 1.96 -4.4 c
-1.41 -4.4 1.93 -8.39 4.61 -12.32 c
-1.27 -1.87 2.98 -3.43 4.88 -4.65 c
-1.42 -0.91 3.05 -1.57 4.15 -2.89 c
-2.3 -2.74 2.61 -7.21 2.45 -10.63 c
-0 -1.29 0 -2.68 -0.77 -3.83 c
--1.23 -1.76 -4.34 -2.64 -6.27 -3.52 c
-0 -0.88 p
-6.13 -2.29 14.62 0.08 15.75 7.48 c
-0.62 4.04 -1.33 7.35 -3.43 10.56 c
-7.92 5.68 7.41 3.49 11.95 -0.37 0.88 -2.64 0 -1.32 3.08 3.08 0.44 0 -2.2 -4.84 
p
-2.49 0.44 4.22 2.13 5.28 4.4 c
-0.88 0 0.44 -3.08 p
-2 0.16 4.17 1.3 6.16 0.87 c
-1.66 -0.43 2.78 -1.81 4.4 -2.2 c
-1.26 -0.3 2.54 -0.07 3.77 -0.48 c
-2.96 -1 5.88 -3.02 8.55 -4.56 c
-6.03 -3.62 11.66 -8.33 16.05 -13.86 c
-3.75 -4.84 6.35 -10.43 9.14 -15.84 c
-5.31 -10.29 10.24 -20.8 16.08 -30.8 c
-4.59 -7.92 8.66 -16.05 13.47 -23.76 c
-2.23 -3.58 4.95 -6.79 9.49 -5.72 c
--3.68 -5.37 -8.4 -6.01 -14.52 -5.72 c
--0.25 2 -2.86 1.04 -4.4 0.83 c
--4.15 -0.56 -10.05 -2.26 -13.64 0.49 c
-2.4 0.44 7.04 0.25 6.6 3.52 c
--5.01 -1.59 -10.2 -2.08 -15.4 -1.21 c
--1.49 0.25 -2.92 0.9 -4.4 1.21 c
--7.58 1.88 -14.52 4.62 -20.24 10.12 c
--2.2 2.11 -4.4 4.4 -5.95 7.04 c
--1.19 1.92 -1.8 4.4 -3.73 5.72 c
--0.44 -10.56 -0.44 0 -3.27 10.56 -0.87 4.38 3.03 3.67 1.11 3.83 -7.04 -5.28 
2.2 4.4 p
--1.56 -1 -2.36 -2.74 -3.98 -3.75 c
--3.11 -1.97 -11.56 -1.36 -11.86 3.31 c
-4.92 -0.91 11.37 0.1 12.22 6.16 c
-0.27 1.91 -0.34 3.89 -0.78 5.72 c
-2.56 -0.44 4.32 -1.84 4.84 -4.4 c
-3.33 0.25 5.1 3.52 3.17 6.56 c
--1.05 1.61 -2.73 2.12 -4.49 2.24 c
-0.75 2.64 0.44 5.28 1.01 7.92 c
-0.28 1.26 1.09 2.31 1.51 3.52 c
-0.66 1.88 0.82 4.18 0.95 6.16 c
-0.61 8.91 -4.83 16.65 -10.96 22.63 c
--1.76 1.75 -3.44 3.45 -5.28 5.09 c
--1.44 1.32 -2.4 2.48 -4.4 2.2 c
-0.87 -2.24 2.54 -3.87 4.05 -5.72 c
-5.29 -6.52 13.4 -12.21 14.36 -21.12 c
-0.27 -2.54 0.29 -5.57 -0.83 -7.92 c
--0.98 -2.07 -2.7 -3.38 -3.06 -5.72 c
-2.2 0.44 -0.88 -6.6 p
--2 0.82 -4.03 2.02 -6.16 2.47 c
--5.77 1.23 -14.14 -0.96 -18.92 -4.23 c
--1.76 6.13 2.51 12.32 7.92 15.26 c
-2.3 1.24 6.76 2.58 9.1 0.7 c
-0.84 -0.67 1.1 -1.79 1.46 -2.75 c
-0.88 0 p
-1.11 4.4 -2.51 5.28 -6.16 5.27 c
--4.85 -0.1 -10.12 -2.31 -11.88 -7.03 c
--0.44 0 p
-0.83 5.55 5.52 9.57 8.47 14.08 c
-0.93 1.42 2.88 3.03 2.97 4.8 c
-0.15 1.8 -2.28 3.4 -3.08 4.88 c
-4.84 1.76 p
--5.83 1.46 -10.57 -4.62 -12.68 -9.24 c
--1.84 -3.96 -2.52 -7.7 -3.36 -11.88 c
--0.97 -4.85 -2 -9.15 -0.82 -14.08 c
-0.58 -2.52 2.15 -5.19 3.36 -7.48 c
-2.64 -4.97 6.9 -8.95 9.98 -13.64 c
-1.57 -2.38 2.74 -5.02 4.15 -7.48 c
-3.12 -5.45 6.38 -10.82 9.49 -16.28 c
-2.31 -4.04 4.14 -8.5 6.02 -12.76 c
-0.86 -1.95 1.36 -4.05 2.87 -5.64 c
-2.99 -3.21 8.1 -6.47 12.67 -5.4 c
-2.1 0.48 4.17 1.17 6.16 1.99 c
-2.09 0.86 4.37 2.01 6.6 0.93 c
-2.91 -1.43 3.71 -4.47 4.71 -7.28 c
-0.73 -2.05 1.54 -4 1.89 -6.16 c
-0.85 -4.64 2.57 -11.36 0.43 -15.84 c
--2.75 -5.77 -10.16 -7.48 -15.39 -10.04 c
--4.75 -2.32 -9.49 -6.06 -13.64 -9.32 c
-2.64 3.96 p
--4.2 -1.34 -7.63 -4.69 -11 -7.39 c
--2.1 -1.68 -4.19 -3.08 -4.84 -5.81 c
-7.92 6.16 -3.96 -6.6 4.59 3.41 4.65 4.07 0.44 -0.44 -4.84 -6.6 5.39 4.72 4.29 
2.32 
--5.72 -7.04 7.92 7.04 p
--0.88 -1.76 -3.1 -3.96 -0.44 -4.84 c
-1.32 1.32 p
--1.32 -4.73 4.81 -8.23 7.92 -10.83 c
-1.75 -1.49 3.74 -3.5 2.31 -5.89 c
--0.67 -1.12 -1.74 -1.98 -2.75 -2.79 c
--1.33 -1.07 -2.78 -2.49 -4.4 -3.05 c
--2.2 -0.79 -4.85 -0.32 -7.04 -0.01 c
--2.69 0.32 -5.72 0.57 -8.36 0.68 c
--3.08 0.09 -6.63 0.23 -9.68 -0.2 c
--2.22 -0.35 -4.4 -1.15 -6.6 -1.48 c
--3.7 -0.55 -7.92 -0.9 -11.44 -2.12 c
--7.34 -2.53 -14.44 -7.75 -22.44 -8.19 c
--3.59 -0.15 -7.17 1.24 -10.56 2.2 c
-0 0.44 13.2 1.49 10.56 2.91 p
--1.32 2.02 -4.09 1.59 -6.16 0.88 c
--2.9 -0.88 -5.77 -2.55 -8.8 -2.94 c
--2.97 -0.39 -7.16 0.41 -10.12 0.94 c
--6.37 1.12 -10.69 5.41 -15 9.92 c
--5.32 5.58 -11.4 12.47 -10.96 20.68 c
-0.35 6.85 4.84 13.37 8.36 18.92 c
--0.44 0.44 p
--4.4 -3.12 -7.33 -9.88 -8.67 -14.96 c
--0.66 -2.49 -0.88 -5.1 -1.89 -7.48 c
--1.36 3.08 -3.56 5.87 -5.28 8.8 c
--2.06 3.52 -3.67 7.19 -6.6 10.12 c
--2.42 2.42 -5.33 4.48 -8.8 3.08 c
-0 -0.44 p
-8.92 -0.07 11.97 -10.12 15.61 -16.72 c
-2.97 -5.41 6.83 -10.41 10.46 -15.4 c
-5.13 -7.09 11 -14.79 18.81 -19.18 c
-4.84 -2.74 11 -5.28 16.72 -5.31 c
-5.85 -0.03 11.18 3.37 16.72 5.07 c
-10.09 2.96 21.12 3.56 31.24 0.06 c
-1.72 -0.55 3.83 -1.2 5.27 -2.34 c
-5.87 -4.62 5.18 -13.29 1.91 -19.22 c
--1.51 -2.73 -4.1 -2.2 -6.74 -2.2 c
--4.88 0 -9.68 -0.88 -14.52 0.22 c
--5.4 1.18 -11.74 1.54 -17.16 0.32 c
--4.4 -0.98 -8.39 -3.31 -12.76 -4.33 c
--2 -0.47 -4.12 -0.07 -6.16 -0.22 c
--2 -0.15 -3.86 -0.84 -5.72 -1.53 c
--2.89 -1.09 -5.64 -2.4 -8.36 -3.87 c
--1.64 -0.89 -2.95 -1.52 -3.52 -3.36 c
-7.92 3.96 -3.96 -5.28 5.7 3.31 5.74 2.41 -7.92 -7.92 7.04 4.84 3.52 1.76 0.44 
0 
-2.2 0.88 0 -0.44 p
--3.08 -1.32 -7.31 -3.58 -8.8 -6.6 c
-11.44 7.04 p
--1.22 -1.47 -3.08 -2.38 -4.11 -3.96 c
--0.55 -0.88 -0.75 -1.81 -1.08 -2.71 c
--1.4 -3.65 -3.39 -11.67 1.68 -13.13 c
--0.64 1.18 -1.65 2.2 -2.01 3.52 c
--1.13 4.2 1.08 8.12 2.45 11.88 c
-0.44 0 0 -1.32 2.64 0.44 p
--1.46 -3.43 -2.79 -8.84 -0.92 -12.32 c
-1.99 -3.69 7.84 -7.17 5.76 -11.88 c
--2.02 -4.73 -5.93 -10.12 -9.81 -13.46 c
--1.22 -1.07 -2.79 -1.36 -4.27 -1.94 c
--2.41 -0.8 -4.98 -1.86 -7.04 -3.39 c
--4.68 -3.47 -7.06 -7.25 -9.37 -12.45 c
--1.47 -3.31 -2.37 -7.49 -0.97 -11 c
-1.52 -3.82 4.85 -6.47 8.15 -8.69 c
-2.64 -1.79 5.65 -4.76 8.8 -5.39 c
--0.59 3.63 -4.16 4.84 -5.82 7.92 c
--2.71 4.97 -2.1 13.34 -0.14 18.48 c
-3.23 8.8 12.55 13.15 18.54 19.78 c
-1.85 2.04 3.87 3.88 4.67 6.62 c
-0.65 2.19 0.35 6.72 -0.59 8.8 c
--0.86 1.89 -2.63 3.23 -3.21 5.28 c
--1.25 4.4 1.48 9.68 4.59 12.72 c
-1.25 1.19 3.02 3.02 4.83 3.21 c
-2.88 0.3 2.15 -4.51 3.05 -6.25 c
-1.2 -2.3 3.12 -4.06 4.6 -6.16 c
-2.11 -3 3.73 -7.74 2.92 -11.45 c
--1.85 -8.47 -9.1 -12.47 -15.84 -16.74 c
--3.52 -2.22 -7.04 -4.82 -10.12 -7.58 c
--2.2 -2.08 -4.4 -4.72 -5.73 -7.36 c
--1.35 -2.64 -2.02 -5.28 -3.95 -7.48 c
-1.06 13 14.08 18.04 21.92 26.84 c
-5.17 5.86 5.8 12.32 5.8 19.8 c
--0.88 0 p
-0 -4.67 0.1 -9.87 -2.29 -14.08 c
--3.25 -5.72 -8.94 -10.38 -13.99 -14.52 c
--2.2 -1.76 -4.6 -3.2 -6.47 -5.3 c
--4.13 -4.63 -5.99 -11.03 -5.85 -17.14 c
-0.08 -3.24 0.63 -7.39 2.57 -10.12 c
-1.07 -1.45 2.7 -2.42 3.71 -3.96 c
-1.2 -1.84 1.12 -4.2 3.05 -5.56 c
-2.63 -1.92 6.07 -1.48 9.15 -1.11 c
-1.76 0.19 3.01 0.2 3.96 1.83 c
--4.6 -0.36 -11.95 -2.22 -13.2 3.96 c
-1.76 -0.9 3.25 -0.88 4.4 0.88 c
--0.96 -0.11 -2.09 -0.44 -3.08 -0.07 c
--2.34 0.83 -3.39 4.91 -3.87 7.11 c
--1.42 6.54 -1.15 15.84 2.99 21.52 c
-6.16 8.37 17.01 11.38 24.16 18.52 c
-2.13 2.18 3.46 5.2 4.68 7.92 c
-1.67 3.72 1.4 8.21 -0.32 11.88 c
--1.08 2.31 -3 4.4 -3.35 7.04 c
--0.42 2.87 1.07 5.71 2.78 7.92 c
-2.97 3.84 6.31 5.25 10.77 6.43 c
-1.94 0.51 3.67 1.4 5.72 1.47 c
-3.08 0.11 5.72 -1.35 8.8 0.01 c
-5.57 2.5 6.6 9.62 6.6 14.97 c
-0 1.96 0 3.86 -0.65 5.72 c
--0.84 2.2 -2.13 3.96 -3.75 5.72 c
-6.16 2.15 11.82 6.93 16.72 11.19 c
-1.93 1.67 4.4 4.05 3.07 6.85 c
--1.57 3.18 -5.71 5.98 -8.35 8.22 c
--1.44 1.21 -3.69 2.31 -3.21 4.54 c
-0.74 3.44 4.39 6.04 6.72 8.36 c
-2.13 2.13 4.05 4.4 6.17 6.6 c
-4.64 4.68 8.91 8.48 9.6 15.4 c
-0.42 4.17 -0.42 7.48 -1.44 11.44 c
--0.81 3.08 -1.39 6.16 -2.49 9.24 c
--0.89 2.5 -3.31 5.92 -6.15 6.42 c
--2.09 0.37 -4.26 -0.75 -6.12 -1.5 c
--4.4 -1.75 -8.87 -3.87 -13.2 -1.01 c
--1.04 0.69 -2.2 1.36 -3.08 2.32 c
--1.96 2.12 -0.88 5.99 -0.88 8.72 c
--0.04 3.08 -0.63 6.16 -0.88 9.24 c
--0.24 4.08 0 8.23 0 12.32 c
-0.44 0 p
-2.95 -8.59 13.2 -15.46 21.56 -18.22 c
-2.88 -0.96 5.93 -1.25 8.8 -2.15 c
-4.71 -1.48 9.58 -3.67 14.52 -4.2 c
-3.45 -0.37 7.04 0.3 10.56 0.51 c
-2.09 0.13 4.08 -0.59 6.16 -0.59 c
-3.52 0.14 8.57 0.58 11.39 2.89 c
-2.1 1.71 3.42 4.59 4.01 7.23 c
-0.44 1.76 0.43 3.46 0 5.28 c
--1.32 0 -3.12 -4.25 -2.6 1.17 -3.96 4.84 -13.64 24.64 p
-3.34 0 6.79 -0.24 10.12 0.07 c
-6.27 0.6 12.51 2.5 18.48 4.41 c
-7.48 2.41 13.75 6.7 19.8 11.68 c
-3.75 3.09 7.86 6.02 10.96 9.79 c
-6.95 8.46 11.92 18.71 15.44 29.04 c
-1.03 3.07 2.2 6.05 2.88 9.24 c
-1.33 6.6 1.08 13.13 1.52 19.8 c
-0.22 2.64 0.75 5.27 0.86 7.92 c
-0.27 6.16 -0.2 12.31 -0.79 18.48 c
--0.52 5.47 -0.62 10.84 -1.66 16.28 c
--0.61 2.88 -1.8 5.55 -2.62 8.36 c
--3.08 10.52 -7.37 19.72 -14.45 28.16 c
--1.66 1.98 -3.19 4.17 -5.14 5.89 c
--4.92 4.34 -11.09 7.21 -17.12 9.6 c
--3.22 1.23 -6.3 3.09 -9.68 3.87 c
--16.96 4.19 -35.2 -1.32 -50.6 -8.36 c
--4.95 -2.2 -9.46 -5.29 -14.52 -7.34 c
--5.36 -2.18 -12.4 -3.95 -18.04 -2.03 c
--2.71 0.92 -5.32 1.97 -7.92 3.17 c
--0.9 0.42 -2.24 1.18 -3.19 0.46 c
--1.65 -1.2 -0.33 -5.06 0.19 -6.58 c
-1.91 -6.6 9.56 -10.85 15.77 -12.36 c
-2.8 -0.68 5.52 -0.64 8.36 -0.91 c
-9.24 -0.88 18.48 0.01 27.72 -0.88 c
-6.16 -0.6 11.73 -3.09 17.16 -5.95 c
-2.76 -1.46 5.47 -2.77 7.92 -4.73 c
-5.56 -4.49 8.68 -10.36 11.19 -16.96 c
-5.17 -13.64 6.32 -29.53 2.01 -43.56 c
--2.64 -8.65 -8.8 -18.81 -18.04 -21.66 c
--9.71 -2.99 -20.28 1.86 -26.84 8.9 c
--5.41 5.88 -9.71 12.65 -14.65 18.92 c
--3.24 4.11 -6.4 8.53 -10.01 12.32 c
--3.51 3.68 -7.46 6.89 -11.42 10.03 c
--15.47 12.19 -35.71 23.85 -55.88 16.81 c
--2.94 -0.96 -5.34 -2.2 -7.92 -3.96 c
--3.56 -2.36 -7.2 -4.96 -11 -6.96 c
--2.06 -1.08 -3.84 -0.81 -4.84 -3.16 c
--1.67 1.85 -2.97 3.96 -4.84 5.64 c
--4.98 4.43 -11.46 7.81 -17.6 10.29 c
--2.2 0.89 -4.31 2.02 -6.6 2.66 c
--3.69 1.04 -7.64 1.32 -11.44 1.65 c
--7.98 0.7 -16.44 0.81 -24.2 -1.51 c
--3.27 -0.98 -6.23 -2.54 -9.24 -4.09 c
--12.76 -6.55 -23.21 -16.96 -32.37 -27.83 c
--5.14 -6.16 -9.72 -12.53 -15.08 -18.48 c
--8.16 -9.05 -16.23 -17.39 -26.91 -23.51 c
--3.82 -2.19 -7.82 -4.74 -12.32 -5.09 c
--4.4 -0.26 -6.45 1.91 -9.68 4.4 c
--8.06 6.38 -13.03 16.14 -13.2 26.4 c
--0.04 2.36 -0.52 4.66 -0.44 7.04 c
-0.69 15.4 4.84 31.47 15.53 43.1 c
-5.58 6.08 12.89 11.32 19.67 15.96 c
-4.7 3.22 11.23 3.63 16.72 4.48 c
-9.88 1.53 19.94 2.23 29.92 1.53 c
-2.82 -0.2 5.56 -0.92 8.36 -1.21 c
-2.81 -0.29 5.59 -0.08 8.36 -0.22 c
-4.08 -0.3 8.26 -0.65 12.32 0.14 c
-9.24 1.76 24.04 6.54 24.64 18.04 c
--2.21 -0.19 -4.03 -1.22 -6.16 -1.76 c
--3.08 -0.73 -7.04 -0.88 -10.12 -0.23 c
--6.72 1.27 -12.02 6.34 -17.6 9.87 c
--4.95 3.12 -11.16 5.21 -16.72 6.99 c
--6.23 1.98 -13.33 1.59 -19.8 1.85 c
--11.23 0.44 -22.36 1.39 -33.44 -1.07 c
--16.42 -3.65 -33.45 -9.49 -46.64 -20.26 c
--15.4 -12.56 -27.72 -30.23 -33.93 -49.08 c
--1.56 -4.7 -2.34 -9.68 -3.22 -14.52 c
--1.45 -8.02 -2.45 -15.59 -2.45 -23.76 c
-0 -12.32 1.32 -24.53 5.72 -36.08 c
-2.14 -5.52 5.6 -10.56 8.8 -15.4 c
-2.43 -3.57 4.68 -7.17 7.33 -10.56 c
-10.06 -12.85 22.15 -23.32 37.55 -29.12 c
-5.15 -1.95 10.79 -3.44 16.28 -3.91 c
-1.98 -0.18 5.43 -0.04 6.33 -2.21 c
-0.43 -1.03 0.27 -2.37 0.37 -3.47 c
-0.32 -4.3 -0.55 -9 -3.38 -12.32 c
--2.13 -2.42 -5.4 -3.88 -6.6 -7.04 c
--1.33 -3.52 0.04 -7.48 -0.94 -11 c
--0.63 -2.03 -2.18 -3.6 -3.71 -5 c
--1.08 -1.06 -2.38 -1.9 -3.52 -2.97 c
--1.11 -1.08 -2.06 -2.33 -3.12 -3.47 c
--3.48 -3.71 -9.26 -9.46 -5.57 -14.96 c
-2.08 -3.09 7.29 -2.67 10.44 -1.51 c
-1.02 0.37 1.95 1.05 3.01 1.33 c
-1.13 0.29 2.08 -0.3 3.15 -0.52 c
-1.32 -0.28 3.01 -0.27 4.4 -0.02 c
-4.55 0.74 8.2 4.26 11.44 7.34 c
-1.48 1.32 3.07 2.57 3.96 4.4 c
-f
-255 G
-908.11 819.23 -2.64 -0.88 P
--0.09 -3.1 -2.98 -4.89 -5.28 -6.64 c
--4.4 -3.3 -8.83 -5.86 -13.64 -8.36 c
--2.2 -1.11 -4.24 -2.49 -6.6 -3.03 c
-1.26 2.3 3.89 3.37 6.16 4.51 c
-4.55 2.28 11.56 4.89 14.08 9.57 c
--7.04 -3.44 -11.44 -6.76 -5.28 -2.13 7.48 4.82 6.16 3.8 5.28 4.59 p
--1.55 -0.88 -3.53 -2.74 -4.84 -0.88 c
--15.4 -8.36 7.92 5.43 4.84 4.35 7.04 6.93 p
--7.7 -2.96 -13.88 -10.76 -22.44 -11.88 c
-1.64 2.09 3.85 2.72 6.16 3.88 c
-4.51 2.25 11.23 5.16 13.64 9.76 c
--4.84 -0.88 0.88 2.2 p
--6.4 -2.66 -12.76 -7.74 -19.8 -8.36 c
-1.86 2.16 4.55 2.5 7.04 3.66 c
-3.96 1.86 7.92 3.91 11.88 5.98 c
-2.8 1.5 5.92 2.82 6.6 6.19 c
--15.84 -8.8 -0.44 0.44 0 0.88 12.32 6.85 4.84 4.15 -7.48 -4.05 -12.76 -6.95 
-7.92 -2.2 
-0 0.88 6.16 2.2 p
-0.15 3.39 6.47 5.44 9.24 6.6 c
-0 0.44 -7.04 -3.08 -0.44 1.32 -11.88 -4.4 p
-0.98 3.08 6.88 4.34 9.68 5.55 c
-5.28 2.29 10.76 4.31 15.84 7.08 c
-2.92 1.6 5.8 3.21 7.92 5.85 c
--2.39 -0.69 -4.4 -2.08 -6.6 -3.13 c
--5.33 -2.5 -11.1 -4.99 -16.72 -6.73 c
--2.4 -0.74 -6.7 -2.95 -8.36 -0.26 c
-7.2 0.15 14.62 4.11 21.12 6.92 c
-2.38 1 5.72 1.84 6.6 4.52 c
--10.56 -4.17 -4.4 -0.97 -8.8 -2.34 5.72 2.9 10.56 3.68 4.84 3.1 -18.92 -6.16 
-0.44 3.08 
-20.24 8.36 0 0.44 -24.64 -5.72 3.96 2.09 6.16 1.87 0 0.44 -12.32 -1.32 p
-1.49 2.71 6.01 2.4 8.8 2.6 c
-2 0.15 3.52 -0.04 3.96 2.24 c
-13.2 1.59 7.48 1.49 -4.4 -3.08 p
-2.15 -1.4 4.33 0.44 6.6 0.88 c
--0.44 -7.48 2.2 1.32 0.44 -0.44 -3.52 -6.6 6.16 3.08 0.44 -4.84 -3.08 -5.28 p
-3.6 -0.16 4.34 3.4 7.04 4.84 c
--3.08 -7.04 0.44 -0.44 3.08 1.76 -0.44 -5.28 1.76 -0.88 3.08 2.64 -3.08 -8.36 p
-3.2 1.63 7.04 7.04 7.92 10.56 c
--12.18 8.6 -13.79 26.5 -12.32 40.04 c
--2.2 0.44 -0.44 -1.32 p
--6.91 3.27 -14.14 6.11 -21.56 7.92 c
--2.67 0.73 -7.8 1.06 -9.24 3.52 c
-7.92 -0.17 15.94 -4.09 23.32 -6.6 c
--1 1.15 -6.29 2.93 -4.84 4.4 c
--2.65 3.19 -7.67 5.28 -11.44 6.91 c
--1.93 0.83 -3.77 1.25 -5.28 2.77 c
-3.48 0.44 7.16 -1.95 10.12 -3.56 c
-7.43 -4.02 14.34 -8.8 21.56 -13.16 c
-0.43 5.14 -4.39 3.31 -14.08 6.23 -6.16 3.36 6.6 -1.87 12.31 -4.03 2.89 -2.94 
4.16 -2.6 
-5.07 14.52 9.45 14.96 0 0.44 -4.84 5.28 1.76 0.44 p
--1.32 2.64 -4.41 6.1 -7.04 7.48 c
--0.99 0.61 -2.2 0.44 -3.15 1 c
--2.16 1.19 -3.57 2.91 -6.09 3.4 c
-5.28 -6.04 8.8 -9.8 p
--2.47 1.15 -3.96 3.32 -5.79 5.21 c
--2.63 2.63 -5.68 4.87 -8.29 7.55 c
--0.98 1.09 -3.72 4.78 -0.44 4.98 c
-0.88 0.05 1.84 -0.37 2.64 -0.58 c
-0 0.44 -3.52 3.52 p
-3.52 -0.93 6.56 -4.14 9.24 -6.6 c
-2.4 -2.2 4.94 -3.97 7.46 -5.96 c
-1.7 -1.34 3.98 -3.53 2.22 -5.48 c
-2.2 -3.96 8.36 6.75 7.04 5.03 5.72 4.47 7.48 2.76 8.8 2.5 3.73 1.82 0.67 6.6 
--0.19 8.8 -1.57 7.92 p
-2.06 -1.85 2.62 -4.84 3.02 -7.48 c
-0.88 -5.85 0.4 -11.44 -0.38 -17.16 c
-9.24 0 2.48 10.56 1.92 12.76 p
-3 -1.24 2.95 -4.15 2.44 -7.04 c
--0.32 -1.79 -0.68 -4.07 -1.56 -5.72 c
--0.52 -0.93 -1.36 -1.66 -1.82 -2.68 c
--1.09 -2.4 -1.85 -5.34 -2.58 -7.88 c
-1.57 0 3.78 -0.44 5.19 0.44 c
-3.17 1.91 3.15 8.66 3.17 11.88 c
--0.44 0 p
--0.48 -1.99 -0.44 -3.85 -2.64 -4.4 c
-0.98 2.61 1.09 5.59 1.28 8.36 c
-0.2 2.84 -0.12 5.24 3.12 6.16 c
-0.44 -5.72 0.44 0 0.95 5.28 1.79 -0.93 0.78 -4.79 0.88 0 p
-0 1.46 -0.12 2.94 -0.06 4.39 c
-0.02 0.45 0.01 1.33 0.65 1.49 c
-1.59 0.28 2.82 -3.95 3.19 -5 c
-0.9 -2.54 1.02 -6.22 -0.07 -8.8 c
--0.39 -0.88 -1.2 -1.45 -1.68 -2.31 c
--0.84 -1.52 -1.35 -2.97 -2.48 -4.29 c
-0.88 7.48 p
--2.12 -0.62 -2.03 -3.81 -2.64 -5.72 c
--0.88 0 0.44 10.56 -0.44 0 -1.76 -1.32 -2.64 -12.76 11 -0.44 1.19 7.48 0.57 
11.88 p
-3.04 -1.77 3.31 -7.5 2.2 -10.56 c
--0.44 -1.37 -1.32 -2.56 -1.68 -3.96 c
--0.52 -1.76 -0.85 -3.53 -1.4 -5.28 c
-3.96 0 1.97 6.6 -0.21 8.36 0.44 0.44 5.7 -0.53 2.66 -2.99 2.2 0.88 0 -11 
--1.76 -1.76 -1.76 0 0 -0.44 p
-2.2 -0.65 4.32 -0.03 6.6 0 c
-6.41 0.08 14.8 1.32 20.24 5 c
-2.56 1.71 4.78 3.75 5.28 6.88 c
--4.62 -1.32 -9.86 -2 -14.52 -0.6 c
--1.58 0.47 -2.94 1.46 -4.4 2.2 c
--3.57 1.8 -6.86 3.8 -10.12 6.13 c
--1.88 1.34 -3.59 2.83 -5.72 3.71 c
--10.44 4.65 -22.2 6.26 -33.44 6.31 c
--1.78 0.01 -3.52 0.69 -5.28 0.7 c
--5.18 0 -10.65 0.46 -15.84 -0.04 c
--4.4 -0.42 -8.57 -1.69 -12.76 -2.81 c
--2.32 -0.64 -4.74 -0.93 -7.04 -1.61 c
--6.5 -1.92 -12.47 -4.75 -18.48 -7.83 c
--5.29 -2.64 -10.6 -5.18 -15.4 -8.8 c
--3.83 -2.81 -6.78 -6.23 -10.12 -9.61 c
--3.85 -3.95 -8 -7.84 -11.19 -12.39 c
--2.89 -4.1 -5.12 -8.8 -7.4 -13.2 c
--2.23 -4.4 -4.55 -8.96 -6.05 -13.64 c
--1.12 -3.58 -1.54 -7.35 -2.39 -11 c
--0.51 -2.23 -1.41 -4.4 -1.81 -6.6 c
--1.3 -7.33 -1.43 -14.61 -1.1 -22 c
-0.46 -10.56 1.34 -21.46 5.68 -31.24 c
-2.9 -6.6 7.04 -12.32 10.55 -18.48 c
-1.54 -2.73 3.37 -7.36 6.31 -8.88 c
-1.05 -0.54 2.06 0.04 3 0.52 c
-1.76 0.88 3.51 1.98 5.28 2.94 c
-5.69 3.09 12.08 6.67 16.4 11.58 c
-1.82 2.07 3.25 3.88 3.84 6.6 c
-h
-1206.43 952.99 1.32 -2.2 P
-3.18 0.88 5.9 2.47 8.8 3.96 c
-1.32 0.8 2.53 1.41 3.52 0 c
-3.95 1.15 3.97 -0.15 8.36 2.96 -4.4 -5.72 12.32 7.04 -9.68 -7.92 p
-4.24 2.01 9.04 7.04 14.08 6.16 c
--1.76 -1.32 0 -0.44 6.16 0.44 0 -0.44 -3.08 -0.88 0 -0.44 7.48 0.8 7.48 0.08 p
--0.55 -2.05 -1.4 -2.84 -3.52 -3.08 c
-0 -0.44 p
-3.43 -1.46 4.84 -1.68 8.36 0 c
-0.44 -1.76 -1.32 -0.44 2.2 -2.64 -2.2 0 0 -0.88 3.96 0.31 3.08 -0.61 4.4 0.74 p
--1.42 -2.44 -5.81 -2.97 -8.36 -3.96 c
-0 -0.44 11 1.76 p
--1.03 -1.88 -2.82 -2.04 -4.84 -2.2 c
-0 -0.44 3.52 0 p
--1.43 -2.34 -5.82 -2.12 -8.36 -2.64 c
-0 -0.44 p
-2.12 0 4.84 1.16 6.16 -0.88 c
-7.04 0.88 0 -0.88 -1.32 -0.88 1.32 -0.44 -0.44 -1.76 0.88 -1.76 1.32 -0.44 0 
-0.88 
--1.32 -0.44 0 -0.88 1.32 -0.44 0 -0.88 -5.28 -1.76 0 -0.44 8.36 0.88 -1.76 
-1.76 
-1.32 -3.52 -3.52 -1.76 4.4 -0.88 0 -0.88 p
--5.32 -1.38 -12.12 -3.14 -15.84 -7.48 c
-7.92 3.44 5.72 1.84 0.44 -1.32 -11.44 -4.4 0 -0.44 p
-4.54 0 9.15 0.6 13.64 1.22 c
-1.84 0.26 4.12 0.74 4.84 -1.22 c
--5.72 -0.88 0 -0.88 5.72 -1.32 0 -0.88 -2.64 -0.44 0 -0.44 7.04 -1.32 -11 
-0.95 
--3.89 -0.62 -3.15 -1.5 0 -0.44 14.52 1.19 4.84 -1.19 -4.4 -0.46 -5.28 -0.42 
0.44 -2.2 p
-2.52 -0.11 6.9 0.11 8.36 -2.2 c
--2.72 0.44 -5.96 1.45 -7.92 -0.88 c
-3.52 -1.65 4.4 -0.99 0 -0.44 -5.28 0 -7.04 -0.56 -18.04 -5.15 -0.44 0.44 0 
0.88 
-12.76 3.96 0 0.44 p
--6.47 -0.13 -13.31 -3 -18.92 -6.16 c
--2.2 -1.15 -4.45 -2.2 -5.72 -4.4 c
-3.68 1.24 7.26 2.84 11 3.89 c
-6.53 1.83 13.91 2.69 20.68 2.71 c
-3.62 0 7.65 2.18 10.56 -0.88 c
--7.92 -0.88 -7.92 -0.04 -13.64 -2.01 -13.2 -4.11 -0.44 -4.4 6.16 1.76 -0.44 
1.76 p
-2.74 0.65 5.58 0.66 8.36 1.01 c
-3.52 0.44 6.98 1.08 10.56 0.71 c
-1.55 -0.16 2.87 -1.01 4.4 -1.27 c
-5.72 -0.72 12.32 -1.39 17.6 -3.96 c
--6.16 0 0 -0.44 1.76 -0.44 -0.44 -1.76 1.32 -1.76 -5.28 1.32 0 -0.44 p
-3.28 -1.76 6.09 -2.64 7.92 -6.16 c
--4.4 3.42 -4.4 0.04 -9.68 1.82 0 -0.44 p
-2.29 -0.78 4.32 -2.52 6.6 -3.13 c
-0.99 -0.27 2.07 -0.09 3.08 -0.26 c
-3.25 -0.57 8.04 -2.42 9.68 -5.41 c
--8.8 3.96 0 -0.44 p
-1.05 -0.58 2.74 -1.45 3.23 -2.64 c
-0.46 -1.12 0.21 -2.64 -1.03 -2.64 c
-2.64 -5.72 p
--1.43 1.32 -2.2 3.25 -3.61 4.65 c
--2.88 2.83 -7 4.59 -10.91 5.47 c
-0 -0.44 p
-3.45 -1.68 9.62 -3.83 10.56 -7.92 c
--5.28 2.2 5.28 -5.3 5.72 -4.82 -4.84 3.02 -5.28 2.26 -4.84 2.2 0 -0.44 1.32 
-3.08 p
-3.71 -2.64 9.43 -4.52 11.44 -8.8 c
--10.12 5.72 p
--1.32 -1.62 -4.72 0.99 -6.6 1.32 c
-5.28 -3.65 10.12 -6.91 -5.28 2.45 -7.04 3.27 0.74 -3.08 5.4 -4.85 3.98 -7.03 p
-1.75 2.17 2.14 4.92 3.05 7.48 c
-2.51 7.04 3.91 13.73 4.87 21.12 c
-0.21 1.2 0.69 2.32 0.82 3.52 c
-0.31 2.73 0.06 5.61 0.06 8.36 c
-0 5.46 -0.02 10.85 -0.44 16.28 c
--1.54 22.71 -6.76 48.4 -25.97 63.28 c
--3.8 2.94 -8.42 4.84 -12.75 6.84 c
--3.22 1.48 -6.33 3.34 -9.68 4.51 c
--5.03 1.76 -10.15 1.8 -15.4 1.93 c
--1.77 0 -3.52 0.44 -5.28 0.36 c
--4.55 -0.38 -8.87 -2.12 -13.2 -3.44 c
--3.65 -1.07 -7.06 -2.25 -10.56 -3.77 c
--2.49 -1.08 -4.61 -1.81 -6.16 -4.15 c
-f
-K
-973.67 962.23 -0.44 -2.64 P
--1.89 -1.32 -1.15 -4.15 -0.88 -6.16 c
-0.73 -5.52 0.19 -10.12 -1.32 -15.4 c
-1.76 -0.44 1.63 6.6 0.13 7.04 1.32 0 p
-0 3.62 0.7 8.32 -2.2 11 c
-h
-958.71 961.35 m
--0.45 -2.64 1.21 -5.03 1.95 -7.48 c
-1.13 -3.89 1.43 -7.92 0.69 -11.88 c
-0.44 -0.44 0.88 0 p
-1.71 4.57 0.61 10.01 -0.88 14.52 c
--0.69 2.08 -1.16 4.06 -3.08 5.28 c
-h
-967.95 961.35 0.44 -15.4 P
-2.07 0.69 1.76 2.48 1.76 4.4 c
-0 3.65 -0.21 7.41 -0.88 11 c
--1.32 0 h
-949.91 960.91 -0.44 -0.44 3.82 -8.36 1.46 -5.28 0.88 0 P
-0.85 3.35 -0.98 7.15 -2.46 10.12 c
--0.84 1.67 -1.57 3.08 -3.26 3.96 c
-h
-955.19 960.91 -0.44 -0.44 P
-1.9 -7.11 3.82 -13.33 1.76 -20.68 c
-1.76 -0.44 p
-1.32 5.57 1.32 10.31 -0.19 15.84 c
--0.6 2.16 -0.81 4.58 -2.89 5.72 c
-h
-946.83 960.47 4.67 -10.12 1.05 -10.12 P
-2.38 0.7 1.76 3.73 1.5 5.72 c
--0.55 3.72 -1.5 6.73 -3.16 10.12 c
--1.01 2.02 -1.73 3.85 -4.07 4.4 c
-h
-932.31 958.27 m
-1.76 -6.26 2.2 -13.31 2.2 -19.8 c
--0.44 0 p
--0.13 6.26 -0.96 12.7 -7.04 15.84 c
--0.44 -0.44 4.4 -11.44 -0.44 0 -3.08 3.65 -5.28 7.79 3.52 -9.24 -8.8 7.48 0.44 
-2.2 
--1.76 0.44 -0.44 -0.44 3.08 -3.97 2.2 -6.15 -9.24 7.04 p
--0.03 -2.2 1.97 -3.08 3.52 -4.29 c
-2.93 -2.42 5.28 -5.23 7.89 -8.03 c
-1.51 -1.65 2.5 -3.16 4.87 -2.64 c
--0.88 2.64 0.44 0 p
-0.88 -2.31 1.96 -7.53 4.84 -7.48 c
-0 7.48 0.44 0 0.88 -5.72 p
-3.08 1.55 2.92 4.82 2.95 7.92 c
-0.07 7.31 -0.44 14.87 -2.07 22 c
--1.76 -0.44 h
-943.75 958.27 m
-2.64 -6.96 3.8 -15.63 1.76 -22.88 c
-1.32 -0.44 p
-2.64 5.08 1.44 12.63 0.25 18.04 c
--0.47 2.15 -0.49 5.71 -3.33 5.28 c
-h
-937.59 940.67 m
-1.99 0.7 1.75 2.54 1.76 4.4 c
-0.44 0 0 -5.72 p
-2.2 -1.21 1.59 -3.1 1.32 -5.28 c
-3.05 0.87 3.29 3.38 3.52 6.16 c
-0.44 3.95 0.72 7.92 -0.34 11.88 c
--0.62 2.2 -1.86 5.23 -4.5 4.84 c
-2.2 -5.28 -1.76 -0.88 p
--0.44 1.93 -0.94 4.4 -2.23 6.01 c
--0.91 1.03 -2.08 0.54 -2.29 -0.76 c
--0.32 -1.82 0.56 -3.93 0.89 -5.69 c
-0.55 -3.24 0.99 -6.38 0.99 -9.68 c
-f
-255 G
-1245.89 956.37 0.29 0 -0.29 0 H
-1244.71 956.07 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1256.15 954.31 -10.12 -3.28 -10.43 -7 -3.9 -5.55 -2.83 -4.4 P
-2.2 8.22 8.6 14.01 15.84 18.04 c
-0 0.44 p
--5.84 -0.51 -10.67 -4.01 -14.38 -8.37 c
--1.99 -2.33 -3.08 -5.54 -5.86 -7.03 c
-1.26 3.08 0.06 3.52 3.96 7.92 -10.56 -5.78 -5.72 -0.87 -14.96 -5.68 4.4 2.72 
9.24 3.88 
-0 0.88 p
--2.35 0.09 -3.58 -1.53 -5.65 -2.38 c
--1.85 -0.77 -3.89 -0.75 -5.79 -1.22 c
--1.59 -0.39 -2.99 -1.41 -4.4 -2.18 c
--2 -1.09 -5.06 -3.46 -7.04 -1.7 c
--6.6 -1.76 7.92 4.84 -7.92 -2.12 -8.8 -0.52 p
-1.41 2.42 4.19 1.53 6.6 1.96 c
-4.14 0.68 9.04 2.24 12.76 4.2 c
--0.88 2.2 p
--5.42 -1.57 -11.44 -3.99 -17.16 -2.94 c
--3.72 0.69 -6.83 3.18 -10.56 3.82 c
-4.15 -14.23 21.03 -15.41 33.44 -14.56 c
-13.95 0.92 27.68 -1.54 39.6 -9.01 c
-3.86 -2.42 8 -5.15 10.56 -8.99 c
-0.88 0 p
-6.29 8.79 15.74 17.16 26.4 20.24 c
-0 0.44 p
--8.2 -0.36 -16.07 -4.84 -22 -10.2 c
--2.2 -2.01 -4.07 -4.4 -6.16 -6.52 c
--0.22 3.48 2.2 5.39 4.25 7.92 c
-1.39 1.74 2.57 3.78 3.67 5.72 c
--6.91 -2.76 -6.29 -6.04 9.68 12.76 p
--1.92 -0.56 -3.52 -2.06 -5.28 -0.88 c
-4.06 1.9 7.28 4.96 10.12 8.36 c
--5.63 -0.5 -8.63 -5.83 -11.52 -10.12 c
--0.71 -0.99 -1.75 -1.76 -2.56 -2.7 c
--1.47 -1.78 -2.64 -3.75 -4.4 -5.22 c
--0.27 3.38 -0.49 6.41 0.75 9.68 c
-2.43 6.37 9.71 10.47 15.53 13.2 c
-0 0.44 p
--6.18 -1.32 -13.44 -4.21 -16.54 -10.12 c
--1.62 -3.08 -1.06 -7.58 -3.26 -10.12 c
-0 8.3 3.77 15.04 11 19.18 c
-3.46 1.94 7.44 2.56 11 4.14 c
--0.44 0.44 h
-1245.45 952.85 0.29 0 -0.29 0 H
-1226.23 941.55 6.16 5.72 -0.88 1.32 0 0.44 2.2 2.64 P
--4.44 0.14 -6.35 -6.64 -7.48 -10.12 c
-h
-938.62 950.06 0.22 -0.59 -0.22 0.59 H
-917.35 949.91 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1258.35 948.15 4.84 1.76 -4.84 -1.76 H
-1220.95 949.03 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-938.91 948.59 0 -2.2 0.44 0 -0.44 2.2 H
-1238.99 931.43 0.44 0 P
-1.53 2.64 3.52 5.11 5.68 7.35 c
-2.02 2.15 4.33 4.07 4.44 7.17 c
-6.16 2.2 p
--2.2 0.59 -4.84 -1.12 -6.6 -2.23 c
--5.48 -3.4 -10.12 -7.73 -10.12 -14.49 c
-f
-K
-1015.03 947.27 -0.88 -8.36 1.76 -0.44 0 8.8 -0.88 0 H
-1204.23 936.27 7.48 3.08 13.64 6.16 -0.44 1.76 P
--2.68 -1.32 -5.18 -2.84 -7.92 -4.02 c
--2.47 -1.06 -5.06 -1.73 -7.48 -2.92 c
--2.06 -1.01 -4.55 -1.74 -5.28 -4.07 c
-h
-1018.99 945.95 0.84 -4.84 0.04 -4.84 P
-2.64 2.37 2.42 7.92 -0.88 9.68 c
-h
-903.27 945.07 m
--0.05 -3.21 3.94 -4.63 6.16 -6.39 c
-4.39 -3.46 8.09 -7.8 11 -12.53 c
-0.88 0 0.44 0.44 p
--0.91 3.82 -3.08 5.68 -5.72 8.36 c
--3.81 3.87 -7.92 7.62 -12.76 10.12 c
-f
-255 G
-1005.35 944.63 m
--0.61 -2.51 -0.61 -5.2 -3.08 -6.6 c
-0.88 3.96 -3.08 -6.6 5.53 -0.17 1.05 2.37 -1.3 7.04 p f
-K
-1025.15 944.63 0.44 -4.84 P
-1.47 1.57 1.96 4.04 -0.44 4.84 c
-f
-255 G
-1192.79 942.87 2.64 0.88 -2.64 -0.88 H
-1259.53 944.05 0.29 0 -0.29 0 H
-1258.79 941.11 0 -0.44 P
-3.86 0.72 6.85 0.7 10.12 3.08 c
--3.16 0.75 -7.21 -1.52 -10.12 -2.64 c
-h
-923.07 943.75 1.76 -2.2 -1.76 2.2 H
-1258.35 943.75 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-930.99 941.99 0.44 -3.52 0.44 0 -0.88 3.52 H
-1273.61 941.41 0.29 0 -0.29 0 H
-1272.29 940.97 0.29 0 -0.29 0 H
-1008.58 940.38 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 p f
-K
-1212.15 935.83 m
-2.64 0.26 9.24 1.67 9.24 4.84 c
--2.74 -0.93 -8.36 -1.89 -9.24 -4.84 c
-f
-255 G
-1270.53 940.53 0.29 0 -0.29 0 H
-1262.75 937.15 6.6 2.64 P
--2.25 0.44 -5.14 -0.97 -6.6 -2.64 c
-f
-K
-902.39 938.47 0 -0.44 5.09 -3.1 5.91 -5.26 P
-0.28 1.99 -0.88 3.01 -2.2 4.4 c
--2.33 2.36 -5.28 5.37 -8.8 4.4 c
-f
-255 G
-1271.85 938.77 0.29 0 -0.29 0 H
-1269.79 938.25 m
--0.12 -0.52 0 -0.76 0.59 -0.22 c
-0.26 0.26 -0.44 0.42 -0.59 0.22 c
-h
-1278.01 937.89 0.29 0 -0.29 0 H
-1256.59 935.54 m
--0.14 -0.45 -0.05 -0.59 0.29 -0.15 c
--0.29 0.15 h
-1257.03 931.87 -3.52 -3.08 3.52 3.08 f
-K
-895.35 931.43 8.36 -8.36 P
--2.64 1.88 -6.3 4.78 -9.68 3.96 c
-0 -0.88 10.12 -5.76 4.38 -1.72 5.74 -5.28 p
-0.37 2.59 -2.2 4.76 -3.98 6.41 c
--4.25 3.86 -8.89 10.83 -14.94 11.63 c
-f
-255 G
-1249.55 914.71 5.36 -10.56 2.56 -4.4 0 2.64 P
--1.42 1.98 0.4 3.96 1.65 5.72 c
-3.16 4.29 7.81 7.02 10.67 11.44 c
--3.96 0.53 -8.12 -3.17 -11 -5.48 c
--1 -0.81 -1.99 -2.02 -3.21 -2.52 c
--1.04 -0.42 -2.32 -0.03 -3.39 0.07 c
-7.04 7.68 9.68 7.28 0 0.44 -3.96 -0.88 0.44 1.76 p
--6.41 -2.7 -10.48 -9.05 -15.84 -13.2 c
-h
-1268.47 924.83 0 -0.44 1.76 0.44 -1.76 0 f
-K
-894.03 923.95 m
-0.73 -2.1 3.06 -2.29 4.84 -3.31 c
-3.08 -1.8 6.6 -4.35 9.22 -6.85 c
-1.57 -1.51 2.53 -3.51 4.86 -3.48 c
--1.76 3.69 -4.7 5.94 -7.92 8.31 c
--3.42 2.52 -6.63 4.89 -11 5.33 c
-f
-255 G
-1286.07 923.07 0 -0.44 1.76 0.44 -1.76 0 H
-1271.99 922.19 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 p f
-K
-889.19 921.31 m
-0.88 -2.8 4.67 -3.67 7.04 -5.03 c
-3.92 -2.25 7.45 -5.31 10.52 -8.61 c
-2.12 -2.27 3.96 -5.28 7.08 -6.16 c
--5.28 7.04 -13.2 10.26 -6.16 2.5 p f
-255 G
-1254.83 912.95 11.88 7.92 -4.4 -1.06 -7.48 -6.86 f
-K
-886.11 916.47 0 -0.88 16.72 -10.25 8.36 -7.79 P
--1.96 7.48 -10.74 11.7 -16.72 15.54 c
--2.41 1.55 -5.39 3.96 -8.36 3.38 c
-f
-255 G
-1279.03 916.47 m
--6.16 -2.91 -13.09 -6.16 -17.16 -11.88 c
-5.72 2.92 4.25 2.2 2.35 2.79 5.28 3.53 -0.44 0.44 h
-1264.51 912.51 0 -0.44 7.48 3.52 P
--2.56 0.88 -5.45 -1.76 -7.48 -3.08 c
-f
-K
-880.39 912.95 -0.44 -0.44 5.28 -3.22 9.68 -3.74 7.79 -5.87 4.97 -5.64 P
-1.67 3.52 -1.91 6.06 -4.4 8.28 c
--6.51 5.8 -14.71 8.28 -22.88 10.64 c
-f
-255 G
-964.87 846.95 4.4 -4.4 -2.64 6.16 3.08 -3.08 0.44 0 -2.2 3.52 3.96 -1.32 -0.88 
2.64 
-5.72 -6.16 -3.52 8.36 4.19 -4.4 2.85 -3.96 -6.16 11 0.44 0.44 0.88 0 3.96 
-3.08 
--1.32 4.4 4.17 -2.77 2.87 -4.71 0.44 0 -3.08 7.92 3.08 -1.32 -3.08 7.48 2.2 
-0.88 
-1.76 1.32 2.97 -7.04 2.75 -3.96 -3.39 8.36 -2.77 6.16 6.6 -10.12 0.44 0 -4.4 
9.24 
-1.76 0.44 P
-0.87 -2.72 2.61 -6.8 5.72 -7.04 c
--6.16 11.44 6.16 -5.29 3.52 -5.27 p
--0.44 4.66 -2.72 11.35 -7.04 13.64 c
-0 0.88 p
-4.31 -0.18 6.45 -6.64 7.63 -10.12 c
-0.5 -1.48 0.73 -3 2.05 -3.96 c
--3.52 9.68 -2.64 5.72 p
-3.18 -2.48 4.13 -5.72 5.66 -9.24 c
-0.83 -1.92 1.82 -3.64 2.26 -5.72 c
-0.44 0 -3.98 12.76 -2.18 4.84 p
-3.72 -1.89 3.96 -6.49 6.16 -9.68 c
-0.67 3.44 -2.71 7.67 -4.4 10.56 c
-3.87 -3.96 4.49 -11.88 0.44 0 p
--0.53 6.46 -3.12 12.06 -7.04 17.16 c
-3.2 -0.14 4.71 -4.58 6.16 -7.04 c
-0.44 0 -4.4 8.36 0.44 0.44 p
-3.96 -2.86 5.14 -7.62 7.04 -11.88 c
-0.44 0 -3.36 8.8 -2.8 4.84 p
-4.38 -2.06 6.49 -8.57 8.36 -12.76 c
-0.44 0 -1.5 6.6 -3.34 7.92 7.04 -10.56 -5.28 11.88 p
-2.61 -0.63 3.52 -3.56 4.84 -5.72 c
-3.73 -0.17 2.13 -6.6 4.4 -8.8 c
--0.98 6.6 -0.7 3.04 1.68 1.36 -1.76 8.36 3.52 -1.76 1.76 -3.96 1.76 0.44 p
--0.23 3.08 -2.35 5.6 -5.28 6.6 c
-0 0.88 p
-3.24 0.34 3.96 -2.5 6.29 -4.1 c
-1.19 -0.87 2.93 -1.24 4.27 -2.06 c
--4.84 11 1.76 0.44 p
-0.63 -2.2 1.76 -4.1 2.64 -6.16 c
-1.55 -3.34 2.08 -6.63 6.16 -7.04 c
--2.64 9.24 6.16 -9.68 -2.2 13.2 p
-4.84 -2.07 5.49 -8.58 7.92 -12.76 c
-0.44 0 -2.43 7.9 -1.53 4.42 5.83 -8.36 3.41 -5.28 0.44 0 -5.28 12.32 6.6 -7.92 
--2.64 7.48 1.76 0 -1.76 4.84 p
-2.64 -0.65 2.4 -3.08 3.45 -5.17 c
-0.59 -1.19 1.7 -2 2.27 -3.2 c
-1.66 -3.16 2.82 -6.75 3.96 -10.11 c
-0.44 0 0.23 3.52 -4.19 11 0.44 0.44 0.88 0 2.2 -5.28 0.44 0 -0.88 7.92 
-0.88 0 1.76 -3.52 -2.2 5.72 p
-2.58 -0.12 3.16 -2.64 3.52 -4.84 c
-0.7 -3.77 0.34 -9.49 3.96 -11.88 c
--0.88 6.16 1.32 0 -0.44 10.12 p
-1.07 -1.47 1.32 -3.26 2.36 -4.71 c
-0.72 -1.06 1.97 -1.46 2.34 -2.8 c
-0.92 -3.29 0.82 -8.54 4.1 -10.53 c
--0.03 1.76 -2.35 7.14 0 7.48 c
--0.44 4.84 1.76 0 p
-0 -1.48 0.36 -2.92 0.42 -4.4 c
-0.17 -3.96 -0.28 -8.53 2.22 -11.88 c
-0.97 3.28 -0.88 8.03 1.76 10.56 c
-0.44 -7.04 p
-1.67 1.22 0.88 2.63 0.44 4.4 c
-2.74 -0.44 3.81 -1.93 4.84 -4.4 c
-0.44 0 0 1.32 p
-3.16 -1.76 3.52 -7.3 3.96 -10.56 c
-1.18 2.82 0.88 9.08 -0.69 11.75 c
--0.51 0.85 -1.51 1.3 -2.13 1.98 c
--1.85 1.81 -3.46 3.68 -5.46 5.35 c
--8.1 6.76 -18.16 11.64 -28.67 13.28 c
--2.64 0.41 -5.28 0.03 -7.92 0.07 c
--2.34 0.03 -4.71 0.39 -7.04 0.31 c
--5.19 -0.2 -9.71 -1.69 -14.52 -3.47 c
--4.32 -1.6 -8.43 -2.99 -12.32 -5.55 c
--3.3 -2.17 -6.19 -4.83 -9.24 -7.31 c
--5.2 -4.23 -10.45 -8.67 -14.83 -13.78 c
--3.65 -4.18 -6.54 -8.9 -9.99 -13.2 c
--3.48 -4.4 -7.23 -8.45 -10.74 -12.76 c
--1.54 -1.89 -3.45 -3.52 -4.49 -5.72 c
-h
-1258.79 883.91 4.84 3.96 -3.96 -1.76 P
-1.53 3.08 5.72 5.43 8.8 7.04 c
-0 0.44 -3.96 -0.44 7.92 4.38 5.28 2.22 0 0.44 p
--6.79 0.71 -11.78 -4.73 -18.04 -6.16 c
-4.84 3.63 11 4.73 p
-0.11 2.44 2.43 2.74 4.4 3.52 c
-0 0.44 p
--6.86 -1.33 -14.52 -4.4 -19.36 -9.68 c
--0.44 0 -0.88 0.88 0 0.44 16.72 9.68 -5.72 -0.57 -8.8 -5.59 -3.28 -3.97 0.18 
-3.95 
-0.46 -9.68 h
-1126.35 905.47 0.44 -11.88 0.44 0 P
-1.27 3.75 1.27 8.13 0 11.88 c
--0.88 0 h
-1129.43 905.47 0.88 -16.28 0.44 0 P
-1.74 5.56 1.48 10.69 0 16.28 c
--1.32 0 h
-1132.07 905.47 0 -0.44 2.64 -0.88 -2.64 1.32 f
-K
-878.19 905.03 7.04 -4.3 18.04 -11.1 P
-0.42 2.91 -3.16 4.32 -5.28 5.72 c
--3.68 2.42 -7.56 4.65 -11.44 6.74 c
--2.76 1.48 -5.17 2.88 -8.36 2.94 c
-f
-255 G
-1120.63 904.15 -0.44 -2.64 1.32 0 0 2.64 -0.88 0 H
-1278.59 903.71 0 -0.44 2.2 0.44 -2.2 0 f
-K
-888.75 903.27 0 -0.88 10.56 -5.44 7.48 -4.24 -3.52 3.8 -8.8 5.33 -5.72 1.43 f
-255 G
-1277.13 903.13 0.29 0 -0.29 0 H
-1137.35 902.83 0.44 -4.4 2.2 0 0 -3.96 0.88 0 0 5.72 0.88 0 3.08 -7.92 P
-2.03 1.31 2.2 5.47 0.44 7.21 c
--0.64 0.65 -1.57 0.63 -2.39 0.95 c
--1.87 0.73 -3.63 1.72 -5.53 2.4 c
-h
-1143.07 902.83 2.2 -1.76 -2.2 1.76 H
-1113.59 901.07 m
--0.89 -2.1 -1.53 -4.84 1.32 -5.28 c
--0.44 5.28 -0.88 0 h
-1118.43 900.19 -0.06 -5.72 -0.38 -3.96 0.44 0 P
-0.31 2.09 0.75 4.57 2.64 5.72 c
-0 -2.2 p
-1.76 1.17 1.72 3.71 1.76 5.72 c
--4.4 0.44 h
-1291.21 900.05 0.29 0 -0.29 0 H
-1109.19 899.31 m
--2.44 -3.2 -2.64 -7.96 -2.64 -11.88 c
-0.44 0 1.28 7.04 0.92 4.84 h
-1150.55 898.87 1.32 -7.48 0.44 0 P
-0 2.56 0.79 6.07 -1.76 7.48 c
-h
-1124.3 898.14 0.29 -0.59 -0.29 0.59 H
-1273.31 894.91 0 -0.44 7.92 2.64 -7.92 -2.2 H
-1137.79 897.11 -1.32 -8.36 0.44 0 P
-0.73 2.59 1.97 5.72 0.88 8.36 c
-h
-1100.83 894.03 0 -0.88 2.64 -0.88 0.44 0.44 0 2.2 1.76 -0.44 0.44 2.2 -5.28 
-2.64 H
-1116.75 896.38 0.15 -0.51 -0.15 0.51 H
-1148.35 896.67 0 -2.64 0.44 0 -0.44 2.64 H
-1154.07 896.67 0 -5.72 P
-2.19 1.21 1.76 3.48 1.76 5.72 c
--1.76 0 h
-1158.47 894.91 1.32 -1.32 -1.32 1.32 H
-1070.47 894.47 0.44 -6.16 0.44 0 -0.88 6.16 H
-1280.79 894.47 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1161.55 892.71 0.88 -7.92 P
-2.01 0.17 2.64 -0.74 3.08 -2.64 c
-1.76 0.44 0.44 7.04 -6.16 3.08 h
-1265.39 889.63 0 -0.44 6.16 3.08 -6.16 -2.64 H
-1093.79 891.83 2.2 -3.52 -0.88 3.52 -1.32 0 H
-1158.47 891.39 0 -2.64 0.44 0 -0.44 2.64 H
-1091.47 890.6 m
-0.03 -0.36 0.38 -0.83 0.38 -0.18 c
-0 0.2 -0.39 0.3 -0.38 0.18 c
-h
-1102.59 890.51 1.32 -1.32 -1.32 1.32 H
-1028.23 889.63 3.96 -7.04 P
-0 2.64 -1.94 5.37 -3.96 7.04 c
-f
-K
-891.83 888.75 0 -0.88 2.64 -2.64 P
-4.62 -0.14 7.14 -4.19 11 -6.16 c
-0 1.95 -1.19 2.91 -2.64 4.14 c
--2.74 2.33 -7.16 6.28 -11 5.54 c
-f
-255 G
-1154.22 888.9 0.22 -0.51 -0.22 0.51 H
-1064.75 888.75 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1136.03 888.31 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1095.99 887.87 0.44 -3.96 0.88 0 -1.32 3.96 H
-1124.07 887.59 0.67 -0.16 -0.67 0.16 H
-1026.47 887.43 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1048.91 887.43 2.2 -7.48 P
-0.22 2.51 -0.61 5.51 -2.2 7.48 c
-h
-1073.11 887.43 1.32 -8.8 0.44 0 P
-0 2.75 0.8 7.04 -1.76 8.8 c
-h
-1158.18 887.14 0.29 -0.59 -0.29 0.59 H
-1169.47 886.99 m
-0.18 -2.27 0.22 -4.4 2.2 -5.72 c
-0.88 3.52 -3.08 2.2 h
-1099.07 886.11 0.88 -1.76 0.44 0.44 -1.32 1.32 H
-1025.15 885.23 1.32 -3.52 0.44 0 -1.76 3.52 H
-1069.59 885.23 0.44 -4.4 0.44 0 0 4.4 -0.88 0 H
-1157.74 884.5 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 p f
-K
-1271.99 882.59 0 -0.88 0.44 -0.44 P
-10.12 1.97 20.95 1.69 31.24 0.88 c
--1.53 2.42 -5.77 2.2 -8.36 2.18 c
--4.87 -0.12 -9.68 -0.04 -14.52 -0.42 c
--3 -0.17 -5.98 -0.13 -8.8 -1.32 c
-f
-255 G
-1039.67 883.47 1.76 -6.6 P
-0.83 1.73 -0.57 5.15 -1.76 6.6 c
-h
-1067.1 883.18 0.22 -0.51 -0.22 0.51 H
-1173.43 883.47 0 -3.52 0.44 0 -0.44 3.52 H
-1036.3 882.3 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 h
-1089.98 881.86 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 h
-1099.07 881.71 0 -0.44 1.32 -3.52 0.44 0 -0.44 4.4 -1.32 -0.44 H
-1112.27 881.71 0.88 -3.08 0.44 0 -1.32 3.08 H
-1175.63 881.27 -0.44 -3.08 P
-1.29 -1.43 0.69 -2.66 0.19 -4.4 c
--0.85 -2.92 -2.25 -5.74 -2.39 -8.8 c
-0.44 0 3.08 9.68 1.32 0 0 -4.4 0.44 0 0 1.76 1.76 -6.16 2.64 4.84 
-0 -3.52 0.44 0 2.64 3.08 -0.88 -8.8 1.32 2.64 1.32 0 0 -3.52 p
-2.33 -1.32 1.18 -3.52 0.88 -5.72 c
-3.96 0.88 0 3.08 0.44 0.44 0.88 0 0.44 -2.2 p
-2.47 -1.48 0.62 -3.99 0 -6.16 c
-1.58 0.88 3.2 4.29 2.64 6.16 c
--0.36 1.65 -1.83 3.05 -2.75 4.4 c
--3.44 5.06 -7.1 10.08 -11.35 14.52 c
--2.06 2.16 -4.12 4.35 -7.02 5.28 c
-h
-1102.59 880.83 m
-0.17 -5.93 2.82 -11.16 4.58 -16.72 c
-0.54 -1.76 0.58 -3.54 1.04 -5.28 c
-1.35 -5.17 4.63 -10.78 9.79 -12.76 c
-0.13 2.83 3.19 2.02 5.28 2.75 c
-3.01 1.05 5.28 2.66 6.6 5.61 c
--8.36 2.55 -4.95 2.73 -1.65 5.28 -0.44 0 p
-0 -2.64 0.36 -4.96 0.84 -7.48 c
-0.22 -1.13 0.18 -2.38 1.07 -3.23 c
-2.25 -2.15 6 -0.97 8.64 -0.29 c
--2.56 -5.12 -8.8 -1.86 -11.61 1.13 c
--1.42 1.51 -2.83 3.38 -3.23 5.47 c
--0.28 1.46 0.01 2.95 -0.4 4.4 c
--0.68 2.39 -2.38 4.34 -3.35 6.6 c
--1.23 2.89 -1.92 6.8 -3.85 9.24 c
-h
-1104.35 880.83 4.84 -11.44 2.91 -2.75 1.93 4.51 -0.44 0.44 -1.32 -0.44 P
--0.91 2.64 -2.45 7.26 -4.9 8.88 c
--0.88 0.58 -2.01 0.63 -3.02 0.8 c
-h
-1024.27 880.39 m
-0.44 -1.98 0.44 -4.53 2.64 -5.28 c
--2.64 5.28 p f
-K
-869.83 877.31 0 -0.88 7.04 0.13 10.12 -0.57 0 -0.44 -7.92 -0.88 0 -0.88 3.96 
-0.44 
--0.44 -1.76 5.72 0.88 -0.44 -1.76 P
--3.09 -0.21 -6.16 -0.32 -9.24 -0.45 c
--1.54 -0.06 -2.64 -0.22 -3.08 -1.75 c
-17.6 0.81 5.63 0.34 3.17 2.37 p
--1.38 2.93 -4.14 3.61 -7.04 4.54 c
--3.32 1.06 -7.1 0.97 -10.56 1.18 c
--4.84 0.39 -9.83 1.04 -14.52 -0.44 c
-f
-255 G
-1088.51 877.75 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1115.79 877.75 -0.88 -11 0.44 0 P
-1.26 3.08 2.49 8.01 0.44 11 c
-h
-1290.33 877.61 0.29 0 -0.29 0 H
-1117.99 877.31 0.44 -8.36 P
-2.88 1.68 1.32 5.59 1.32 8.36 c
--1.76 0 h
-1292.09 877.17 0.73 0 -0.73 0 H
-1059.62 876.58 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 h
-1128.55 876.87 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1293.55 876.87 0 -0.44 2.64 -0.44 -2.64 0.88 H
-1241.63 837.71 5.28 -3.52 1.32 3.52 2.64 0 -2.64 1.76 P
-1.26 2.19 2.47 1.56 4.4 0.44 c
--0.88 2.64 2.2 0 -1.76 1.76 0 0.44 2.2 0.88 -0.44 1.76 2.2 1.76 7.48 -0.44 
-0 0.44 -1.32 1.76 1.76 0 0 0.44 -4.84 0.88 3.96 0.44 0 1.76 -5.28 1.76 
-0 0.88 3.52 0.44 1.32 1.76 -0.44 1.32 5.72 0.44 0 0.44 -3.52 0.88 0 1.32 
-1.32 1.76 8.36 -0.88 0 0.44 -4.84 2.64 3.92 0.14 3.56 1.18 12.76 -2.64 0 0.44 
--14.08 5.28 0.44 1.32 p
--1.58 0.42 -3.22 1.23 -4.84 1.32 c
--2.09 0.28 -4.1 -0.61 -6.16 -0.54 c
--2.23 0.08 -3.55 1.42 -5.58 -0.54 c
--1.75 -1.74 -1.46 -5.83 -1.9 -8.15 c
--1.01 -5.17 -2.64 -9.9 -5.19 -14.52 c
--1.85 -3.22 -4.65 -6.16 -7.17 -8.8 c
--1.35 -1.43 -2.9 -2.48 -3.48 -4.4 c
-h
-1121.95 874.67 -1.32 -7.92 4.4 0.52 3.96 2.12 P
--1.43 2.76 -4.14 4.4 -7.04 5.28 c
-h
-1008.58 873.94 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 h
-1023.83 874.23 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1024.42 873.06 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 h
-1143.07 873.35 1.32 -1.32 -1.32 1.32 H
-889.19 872.91 0 -0.44 2.64 0 -2.64 0.44 H
-1136.11 872.62 0.15 -0.51 -0.15 0.51 H
-1132.07 871.59 m
--0.15 -3.57 -0.62 -7.35 -3.17 -10.12 c
--1 -1.02 -2.32 -1.76 -3.43 -2.64 c
-2.83 -1.36 5.11 -0.53 7.92 0.44 c
-0.98 0.38 2.12 0.54 2.96 1.2 c
-1.98 1.57 1.62 4 -0.76 4.52 c
-0 3.08 -1.76 -0.88 -1.76 4.4 h
-1292.67 871.59 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 p f
-K
-863.67 864.55 18.48 0.44 17.16 0.88 P
--0.63 3.93 -3.96 2.76 -7.04 2.46 c
--1.43 -0.14 -3.08 -0.11 -4.4 -0.5 c
--1.06 -0.3 -1.97 -0.87 -3.08 -1.08 c
--2.64 -0.29 -5.32 0 -7.92 -0.01 c
--1.63 -0.04 -3.21 -0.43 -4.84 -0.43 c
--2.65 -0.06 -6.75 0.8 -8.36 -1.76 c
-f
-255 G
-1155.98 867.34 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 h
-1160.23 866.9 m
--0.14 -0.45 -0.05 -0.59 0.29 -0.15 c
--0.29 0.15 h
-1101.27 866.31 m
--2.97 -4.88 -0.44 -12.32 1.59 -17.16 c
-0.77 -1.89 1.82 -3.74 3.38 -5.1 c
-1.44 -1.25 3.37 -1.5 5.15 -1.94 c
--3.55 3.96 -3.65 7.48 -1.91 7.92 -1.01 4.84 h
-1290.47 866.31 0 -0.44 4.4 -1.76 ^ ^ H
-1081.47 865.87 -1.76 -1.32 0 -0.44 1.76 0 P
-0.59 -2 2.03 -1.32 3.08 0 c
--3.08 1.76 h
-1096.87 865.87 -1.76 -1.76 P
-0 -5.91 1.85 -12.85 6.6 -16.72 c
--3.08 11 -1.19 3.96 0.31 3.52 -0.88 0 h
-1118.87 865.43 m
-0.33 -3.63 3.85 -6.32 7.35 -3.99 c
-1.26 0.84 1.88 2.17 2.33 3.55 c
--4.84 -1.6 -4.84 2.04 p f
-K
-878.63 861.03 -14.08 0 0 -0.88 P
-2.44 -0.72 4.97 -0.28 7.48 -0.51 c
-9.87 -0.94 19.71 1.03 29.48 2.27 c
--0.44 1.76 -3.96 -0.44 0 1.32 p
--4.67 -0.01 -9.43 -0.93 -14.08 -1.39 c
--1.8 -0.18 -4 -0.13 -4.4 -2.13 c
-f
-255 G
-1070.91 864.11 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1295.31 864.11 0 -0.44 2.2 -1.32 -2.2 1.76 H
-1143.07 863.67 0 -1.76 1.32 1.76 -1.32 0 H
-1267.45 863.53 0.73 0 -0.73 0 H
-1268.91 863.23 0 -0.44 5.72 -1.32 -5.72 1.76 H
-984.67 862.35 3.08 -7.04 0.44 0 -3.52 7.04 H
-1053.75 862.35 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1004.47 861.47 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1018.55 861.03 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1150.99 853.11 m
-3.66 1.26 6.72 3.71 7.92 7.48 c
--5.28 -3.96 -2.64 -3.52 h
-1003.15 859.27 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1123.59 858.48 m
-0.03 -0.36 0.38 -0.83 0.38 -0.18 c
-0 0.2 -0.39 0.3 -0.38 0.18 c
-h
-1145.71 858.54 0.37 -0.51 -0.37 0.51 H
-1003.74 858.1 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 h
-1017.67 857.95 0 -0.44 1.76 -0.44 -1.76 0.88 H
-1026.62 857.66 0.22 -0.51 -0.22 0.51 H
-1133.39 853.99 2.64 -0.88 2.64 4.84 P
--2.27 -0.54 -4.22 -1.87 -5.28 -3.96 c
-h
-1186.63 857.66 m
--0.14 -0.45 -0.05 -0.59 0.29 -0.15 c
--0.29 0.15 h
-1019.87 857.51 0.44 -2.64 0.44 0 -0.88 2.64 H
-884.79 857.07 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1004.03 857.07 0.88 -3.08 0.44 0 -1.32 3.08 H
-1007.99 857.07 0.44 -2.64 2.64 0 P
-0.11 -1.53 0.2 -2.64 1.76 -3.08 c
--0.88 2.64 -1.76 5.48 -4.84 5.72 c
-h
-882.45 856.49 0.73 0 -0.73 0 H
-1024.42 855.9 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 h
-1197.63 855.75 -0.44 -3.52 1.76 -0.44 -1.32 -3.96 1.32 1.76 0.88 0 -0.88 -4.4 
3.52 1.76 
--7.04 -8.36 P
-3.32 1.29 5.97 4.31 7.48 7.48 c
-0.88 0 4.98 -5.78 -0.14 -3.02 2.64 2.2 -5.72 -14.08 0.44 -0.44 0.88 0 3.03 
4.84 
-2.69 10.56 -9.99 9.68 -4.97 5.72 h
-1131.19 855.31 0 -2.2 1.32 0.44 -1.32 1.76 H
-1139.55 855.02 m
--0.09 -0.21 -0.2 -0.5 0.15 -0.15 c
--0.15 0.15 h
-1285.63 854.43 0 -0.44 1.76 -0.44 0 0.44 -1.76 0.44 H
-1138.23 853.55 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-886.55 851.35 -8.8 -3.96 0 -0.44 P
-2.37 0.55 8.07 1.84 8.8 4.4 c
-h
-1018.99 850.47 -0.44 -1.76 1.32 1.76 -0.88 0 H
-1196.46 850.18 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 h
-1011.07 847.39 0 -0.44 1.76 0.44 -1.76 0 H
-1124.59 842.99 m
-3.08 0.34 5.28 2.38 7.04 4.84 c
--7.04 -4.84 h
-1007.99 846.07 1.76 0.88 -1.76 -0.88 H
-876.73 846.81 0.29 0 -0.29 0 H
-1002.71 846.95 -0.44 -1.32 1.76 0 -1.32 1.32 H
-1118.87 845.63 0 -0.44 4.4 1.76 -4.4 -1.32 H
-963.99 846.51 -3.52 -2.64 0 -0.44 P
-1.32 -0.62 2.18 -0.67 2.64 0.88 c
-4.4 -5.72 0.44 0 -3.96 7.92 h
-994.79 846.51 m
-0 -1.41 -0.18 -2.32 1.32 -2.64 c
--1.32 2.64 h
-1186.63 845.34 m
--0.09 -0.21 -0.2 -0.5 0.15 -0.15 c
--0.15 0.15 h
-1000.37 845.05 0.29 0 -0.29 0 H
-999.19 844.75 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-984.67 844.31 0.44 -3.08 0.44 0 -0.88 3.08 f
-K
-1114.91 843.43 0 -0.88 P
-3.61 -2.4 3.71 -5.01 4.84 -8.8 c
-0.88 0 p
-0.87 3.68 -0.77 10.56 -5.72 9.68 c
-f
-255 G
-899.31 843.43 -1.32 -0.88 0 -0.44 1.32 1.32 H
-1122.39 842.99 0.88 -6.16 0 -9.68 P
-4.15 2.36 1.76 7.71 2.2 11.44 c
-0.88 0 p
-1.21 -4.66 1.1 -7.94 -0.88 -12.32 c
-3.91 3 4.84 8.77 1.53 12.71 c
--1.39 1.63 -3.29 2.24 -4.61 4.01 c
-h
-1192.79 842.99 -1.32 -1.76 1.32 1.76 H
-1279.03 842.99 0 -0.44 P
-6.06 -3.71 10.72 -8.45 14.52 -14.52 c
--1.76 -0.44 -6.16 8.36 -0.88 0 -0.44 -0.44 8.8 -11.88 0.88 0 2.2 7.04 p
--3.09 0 -4.05 3.16 -5.89 5.15 c
--2.75 2.99 -7.32 6.15 -11.27 7.17 c
-h
-959.15 842.55 1.76 -3.08 -1.76 3.08 H
-982.03 842.55 -0.44 -4.4 0.44 -0.44 1.32 0.44 -1.32 4.4 H
-978.07 841.67 -0.44 -7.04 P
-2.06 1.32 1.89 5.26 0.44 7.04 c
-h
-1204.23 841.67 -3.52 -4.4 P
-1.55 0.97 3.52 2.45 3.52 4.4 c
-h
-956.95 841.23 2.33 -4.84 2.95 -5.72 0.44 0 P
--0.55 3.65 -2.87 8.2 -5.72 10.56 c
-h
-899.31 840.79 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1280.35 839.91 3.96 -3.08 -3.96 3.08 H
-1253.81 839.25 m
-0.15 -0.32 0.41 -0.66 0.37 0 c
--0.37 0 h
-1268.47 839.47 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1269.35 839.03 0 -0.44 5.72 -2.64 ^ ^ H
-897.19 838.37 m
--0.2 -0.52 -0.07 -0.76 0.51 -0.22 c
-0.26 0.26 -0.44 0.42 -0.51 0.22 c
-h
-974.55 838.59 -0.44 -0.44 0.88 -1.76 0.44 0 -0.88 2.2 H
-1214.35 838.15 m
-0.21 -1.48 0.99 -2.89 0.88 -4.4 c
--0.28 -4.84 -3.96 -7.77 -5.72 -11.88 c
--0.59 -1.59 0.15 -2.54 1.32 -3.52 c
-3.72 7.04 2.44 11 0.44 0 0.88 -2.2 4.71 -0.57 1.45 -1.96 1.94 -2.37 0.26 -8.3 
--1.05 -8.8 -5.45 -9.24 1.66 -4.84 p
-4.53 5.47 5.04 12.69 6.16 19.36 c
-0.88 0 0.44 -2.2 0.44 0 -2.2 20.24 -13.2 2.64 h
-1268.91 837.71 m
-2.64 -6.25 8.7 -10.8 12.92 -15.92 c
-1.98 -2.4 2.99 -5.05 4.24 -7.84 c
--1.32 -0.44 p
--1.84 4.49 -4.33 8.6 -8.36 11.44 c
-6.6 -13.2 -6.6 8.8 3.08 -9.68 -3.96 8.36 -0.44 0 2.64 -13.64 -0.44 0 -2.41 
9.68 
--8.19 11.88 -5.24 5.72 p
-1.24 -1.99 5.12 -5.08 3.96 -7.48 c
-0 -0.44 p
-1.32 -1.94 4.74 -5.06 3.52 -7.48 c
-6.6 -13.2 p
--2.23 1.16 -2.99 3.63 -4.23 5.72 c
--2.73 4.61 -5.45 10.91 -9.85 14.08 c
-4.69 -7.6 10.99 -15.09 9.24 -24.64 c
-5.72 3.52 11.44 11.44 0 0.44 p
--2.31 2.43 -2.74 6.44 -4.75 9.24 c
--2.19 3.06 -7.22 5.72 -7.57 9.68 c
--6.6 3.96 h
-899.75 837.27 -3.52 -3.52 0.44 0 3.08 3.52 H
-922.19 830.67 0 -3.08 2.2 0.88 2.2 -5.28 P
-3.05 -1.68 1.62 -7.92 2.2 -11 c
-0.44 0 0.44 9.68 2.64 0 0.44 -2.64 p
-1.76 -1.01 1.75 -2.45 1.76 -4.4 c
-0.44 0 0.88 11 p
-3.61 -1.92 4.08 -6.89 4.4 -10.56 c
-0.67 -7.68 1.32 -15.24 0 -22.88 c
--0.45 -2.86 -0.44 -5.52 -2.2 -7.92 c
-0 3.52 p
--1.77 1.15 -1.32 3.35 -1.32 5.28 c
--1.76 -0.44 -1.32 18.92 -0.44 0 -2.64 -18.92 -1.32 0.44 p
--2.34 -5.03 -2.64 -10.89 -3.7 -16.28 c
--0.47 -2.34 -0.7 -5.37 -2.9 -6.6 c
-1.32 7.48 -0.44 0 -2.2 -3.52 3.32 11.44 2.4 12.76 -0.44 0 -1.86 -6.6 -6.31 
-12.76 
--4.59 -6.6 p
-0.79 4.4 4.18 8.33 6.11 12.32 c
-3.13 6.48 5.31 13.55 6.21 20.68 c
--0.44 0 p
--1.19 -3.08 -3.69 -8.44 -7.04 -9.24 c
-3.08 5.28 p
--2.2 -1.68 -5.89 -5.64 -2.64 -7.92 c
--7.51 -14.52 -2.85 -5.6 2 -1.56 5.72 -1.98 13.64 -2.67 9.68 -0.51 4.14 21.56 
3.15 5.28 
-2.39 6.6 -0.76 5.28 -0.55 5.72 -0.44 0 -0.44 -8.8 p
--2.41 1.41 -1.76 4.57 -1.76 7.04 c
--1.76 0 0.44 -6.6 p
--2.26 1.32 -1.64 3.86 -1.95 6.16 c
--0.5 3.83 -0.75 7.66 -1.68 11.44 c
--0.41 1.68 -1.27 3.16 -1.65 4.84 c
-4.24 -2.2 3.83 -9.11 4.84 -13.2 c
-0.44 0 -1.32 14.08 p
-3.47 -1.82 2.95 -7.23 3.96 -10.56 c
-0.44 0 -0.2 4.84 -1.12 6.16 1.32 -0.88 p
-0.4 1.32 0.8 1.73 2.2 1.76 c
--0.44 1.32 1.76 0.44 1.32 -4.84 0.44 0 -0.88 7.48 0.88 0 1.32 -3.52 0.44 0 
--1.52 6.02 1.08 2.78 p
--3.32 -0.18 -6.05 -2.64 -8.8 -4.4 c
--3.36 -2.02 -7.51 -3.96 -11.44 -4.61 c
--4.17 -0.75 -7.62 1.45 -11.44 2.41 c
-h
-1239.43 836.83 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1237.67 836.39 1.32 -1.76 -1.32 1.76 H
-1275.51 835.95 0 -0.44 2.2 -1.32 -2.2 1.76 f
-K
-1083.23 832.87 6.6 1.32 0 0.88 P
--2.28 0.44 -5.37 -0.08 -6.6 -2.2 c
-h
-1088.07 831.11 8.8 3.08 0 0.88 -0.44 0.44 -8.36 -4.4 f
-255 G
-1228.87 835.51 0.44 -2.64 0.44 0 -0.88 2.64 H
-1232.83 832.43 1.32 0.88 3.08 0.88 P
--0.88 1.14 -3.26 2.17 -4.4 0.62 c
--0.44 -0.67 -0.11 -1.65 0 -2.38 c
-h
-1231.22 834.34 0.22 -0.51 -0.22 0.51 H
-975.65 833.97 0.51 -0.22 -0.51 0.22 H
-919.11 833.75 m
--1.57 -2.39 -3.23 -4.84 -5.04 -7.04 c
--2.07 -2.53 -4.11 -4.03 -4.2 -7.48 c
-3.84 2.72 6.39 7.23 9.55 10.69 c
-1.43 1.56 2.02 3.12 -0.31 3.83 c
-h
-968.54 833.46 0.29 -0.59 -0.29 0.59 H
-1279.03 833.75 6.16 -5.3 7.04 -7.46 0.44 0.44 P
--2.99 5.6 -7.34 10.68 -13.64 12.32 c
-h
-901.07 833.31 -0.44 -2.64 P
-1.14 0.81 1.23 1.5 0.44 2.64 c
-h
-972.5 832.14 0.22 -0.51 -0.22 0.51 H
-1222.27 831.99 m
-0 -2.31 0.65 -4.4 0.83 -6.6 c
-0.05 -1.48 -0.21 -2.94 -0.39 -4.4 c
--0.5 -4.66 -1.37 -11.02 -5.28 -14.08 c
-0.88 -1.76 0.44 0 p
-3.52 5.72 5.28 12.13 5.28 18.92 c
-0 2.74 -0.07 5.65 -1.76 7.92 c
-h
-1277.71 831.99 m
-1.16 -2.49 3.41 -4.12 5.2 -6.16 c
-2.43 -2.78 4.48 -6.86 4.92 -10.56 c
-1.16 0.88 2.79 2.31 2.75 3.96 c
--0.04 1.65 -1.76 3.27 -2.79 4.4 c
--3.05 3.33 -5.93 6.42 -10.08 8.36 c
-h
-968.54 831.26 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 p f
-K
-1090.27 828.91 3.52 0 -0.88 -1.32 3.52 1.32 -2.2 0 0 0.44 2.2 0.44 0 0.88 P
--2.3 0.44 -4.84 0.26 -6.16 -1.76 c
-f
-255 G
-1211.71 830.23 -4.4 -7.48 P
-2.76 1.32 4.4 4.61 5.28 7.48 c
--0.88 0 h
-970.74 829.5 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 h
-1253.51 829.79 3.96 -6.6 0.44 0 -4.4 6.6 H
-1257.47 828.91 1.32 -1.32 -1.32 1.32 H
-968.61 828.18 0.37 -0.51 -0.37 0.51 H
-966.19 828.03 m
-0 -1.32 -0.02 -1.91 1.32 -2.2 c
--1.32 2.2 h
-1026.03 828.03 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 p f
-K
-1099.59 826.42 0.51 -0.37 -0.51 0.37 f
-255 G
-919.99 826.27 -0.88 -3.96 1.76 3.96 -0.88 0 f
-K
-1101.27 823.19 0 -0.88 3.52 0.44 ^ ^ f
-255 G
-1216.55 808.23 0.44 0 3.08 9.24 ^ -3.52 -6.6 P
--1.48 4.19 0.27 8.16 0.88 12.32 c
--3.34 -2.64 -1.94 -3.96 4.84 -8.36 h
-900.63 822.75 -1.32 -1.76 1.32 1.76 H
-924.39 822.75 -1.32 -3.52 0.44 0 0.88 3.52 H
-916.91 822.31 -0.44 -3.08 0.44 0 0 3.08 H
-1023.39 822.31 -1.32 -1.76 1.32 1.76 H
-1238.11 821.43 0.44 -2.64 0.44 0 -0.88 2.64 H
-920.43 820.7 m
--0.09 -0.21 -0.2 -0.5 0.15 -0.15 c
--0.15 0.15 h
-1258.79 820.99 4.98 -9.68 2.89 -5.28 1.38 -8.8 P
-2.1 1.22 1.07 3.21 0.88 5.28 c
--0.12 2.13 0.1 4.54 -0.5 6.6 c
--0.82 2.77 -2.66 5.28 -3.9 7.92 c
--0.44 0 1.32 -4.4 p
--2.7 2.32 -2.7 7.73 -6.6 8.36 c
-h
-1234.15 820.55 0 -10.12 0.88 0 ^ ^ H
-1231.51 820.11 0 -3.52 0.88 0.44 0.44 -4.4 0.44 0 0 5.28 -1.32 0 -0.44 2.2 H
-1256.59 820.11 m
-0.44 -3.18 1.85 -6.17 2.76 -9.24 c
-0.91 -3.08 1.4 -6.16 1.9 -9.24 c
-0.43 -2.74 1.28 -5.64 -0.7 -7.92 c
--0.3 7.39 -0.91 15.12 -3.96 22 c
--2.2 -4.4 -0.44 4.84 -0.44 0 0 -7.04 -0.88 0 p
--0.08 2.59 -0.97 3.26 -3.52 3.08 c
-0.31 -2.49 -0.24 -4.21 -0.44 -6.62 c
--0.32 -4.74 -0.01 -9.22 -3.08 -13.18 c
-1.57 6.6 0.63 10.12 p
--2.2 1.27 -1.94 3.95 -2.64 6.16 c
--0.44 0 -0.44 -3.08 -0.44 0 -0.88 3.52 -0.44 0 p
-1.2 -9.48 1.26 -18.84 -0.88 -28.16 c
-8.97 1.13 18.37 3.7 25.96 8.8 c
--3.32 9.68 -3.6 7.04 -4.07 7.04 h
-881.27 795.91 6.6 -7.99 15.84 -12.25 0.44 0 P
-4.76 5.18 8.73 11.54 11.44 18.04 c
--4.65 -4.4 -4.29 -5.28 -4.25 -4.4 6.29 8.87 6.82 9.54 4.5 4.9 p
--1.17 -0.89 -2.72 -3.29 -3.96 -1.76 c
--4.73 -5.72 -5.48 -6.2 -6.95 -6.56 4.08 5.28 8.59 10.12 4.05 7.48 p
--2.69 -0.96 -4.04 -3.64 -5.85 -5.72 c
--2.56 -2.94 -5.48 -5.61 -8.23 -8.36 c
--1.88 -1.88 -3.78 -4.4 -6.6 -4.4 c
-0 0.88 7.04 5.72 9.53 10.56 4.99 8.36 -3.96 -3.08 0 1.76 p
--1.57 -1.03 -1.18 -2.93 -2.32 -4.4 c
--1.49 -1.92 -3.46 -3.52 -5.09 -5.28 c
--3.44 -3.82 -7.19 -9.98 -12.4 -11.44 c
-5.7 5.85 4.86 6.03 p
--4.4 -2.72 -7.96 -7.79 -13.2 -8.8 c
-6.6 5.45 11.88 10.83 -6.16 -4.4 -12.32 -8.25 -6.16 -2.31 p
-1.46 2.56 5.46 3.35 7.92 4.84 c
-5.19 3.23 9.68 7.15 14.52 10.84 c
-1.23 0.94 2.64 0.98 3.94 1.77 c
-2.33 1.46 3.68 4.21 4.42 6.74 c
--1.53 -0.53 -3.96 -0.88 -4.91 -2.27 c
--0.7 -1.06 -0.52 -2.35 -1.37 -3.38 c
--1.48 -1.84 -3.84 -3.16 -5.6 -4.56 c
--6.41 -5.06 -14.2 -9.17 -21.56 -12.67 c
-f
-K
-1100.83 817.47 0 -0.44 5.72 1.32 -5.72 -0.88 f
-255 G
-920.43 817.91 -2.2 -3.96 P
-1.57 0.82 2.64 2.14 2.2 3.96 c
-f
-K
-1051.55 807.79 0.44 -0.44 5.72 3.47 14.15 4.31 8.29 0.15 P
--0.62 -0.78 -1.49 -1.63 -1.49 -2.71 c
-0.01 -2.29 3.56 -3.96 5.45 -3.89 c
-0.44 -0.44 -0.44 -2.64 p
-2.78 0.58 2.71 2.36 2.64 4.84 c
--4.84 2.64 0.88 3.52 p
--2.23 0.85 -4.68 0.44 -7.04 0.44 c
--2.97 -0.04 -5.54 -0.9 -8.36 -1.76 c
--5.44 -1.46 -12.02 -2.97 -15.84 -7.48 c
-f
-255 G
-1020.75 817.03 -0.88 -1.32 0.88 1.32 H
-901.51 815.27 1.76 1.32 -1.76 -1.32 f
-K
-1106.99 815.27 -2.2 -2.2 2.2 2.2 f
-255 G
-1231.07 815.27 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-954.9 813.66 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 p f
-K
-1103.91 811.31 0 -0.44 5.72 2.64 -5.72 -2.2 f
-255 G
-938.03 813.07 0 -2.2 0.44 0 -0.44 2.2 H
-923.07 811.75 -0.88 -2.2 0.44 0 0.44 2.2 H
-1247.35 811.75 0.44 -1.76 0.44 0 -0.88 1.76 H
-1232.54 810.58 0.22 -0.51 -0.22 0.51 H
-949.91 810.43 0.44 -3.52 0.44 0 -0.88 3.52 f
-K
-1104.79 807.79 m
-2.2 -0.46 4.4 0.23 4.84 2.64 c
--4.84 -2.64 p f
-255 G
-926.59 809.26 0.37 -0.51 -0.37 0.51 f
-K
-1253.51 809.11 0.43 -5.72 -1.31 -9.68 P
-3.16 1.85 2.2 7.82 2.2 11 c
-3.08 -10.12 0.44 0 p
-1.32 4.7 -1.42 10.67 -3.96 14.52 c
--0.88 0 p f
-255 G
-927.03 807.34 m
--0.14 -0.34 -0.05 -0.89 0.26 -0.33 c
-0.08 0.15 -0.18 0.47 -0.26 0.33 c
-h
-935.83 807.79 0.44 -4.84 0.44 0 0 4.84 -0.88 0 H
-1235.91 807.79 -0.88 -2.2 -0.44 0 -0.44 1.32 -0.44 0 P
--1.21 -4.44 -3.54 -11.5 -7.92 -13.64 c
-2.2 3.52 -3.96 -2.2 2.64 3.96 p
--0.6 -0.35 -1.23 -0.65 -1.76 -1.13 c
--2.64 -2.39 -0.99 -4.36 0.62 -6.79 c
-0.66 -1 1.14 -2.4 2.19 -3.08 c
-1.76 -1.11 5.29 -0.44 7.31 -0.44 c
-1.47 0 4.14 -0.51 5.24 0.71 c
-0.83 0.92 1.03 2.53 1.24 3.69 c
-0.53 2.8 0.55 5.52 0.55 8.36 c
--0.44 0 -2.2 -5.28 1.32 8.8 -1.76 -0.44 -0.44 1.32 -0.44 0 p
--0.93 -3.96 -2.64 -9.68 -5.72 -12.32 c
-1.76 4.84 -0.44 0 -1.76 -1.76 3.08 8.36 0.88 4.4 h
-1228.87 806.91 -0.88 -2.64 0.44 0 0.44 2.64 f
-K
-1249.99 806.91 -0.07 -8.36 -1.25 -7.04 1.92 3.08 0.72 8.8 -1.32 3.52 H
-1106.55 804.27 m
-1.85 0.17 3.06 0.52 3.96 2.2 c
--3.96 -2.2 p f
-255 G
-918.67 806.03 -0.88 -2.2 0.88 2.2 H
-921.75 806.03 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-938.47 806.03 0 -8.8 0.44 0 -0.44 8.8 H
-1236.94 805.3 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 h
-921.31 805.15 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 p f
-K
-1108.75 803.39 0 -0.44 3.96 1.32 -3.96 -0.88 f
-255 G
-1227.55 803.83 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1236.35 803.83 -0.44 -1.76 0.44 0 0 1.76 f
-K
-1052.87 803.39 -3.96 -8.8 3.52 0.88 P
--2.02 -3.52 -3.84 -5.86 -3.52 -10.12 c
-2.2 0 p
-1.04 -4.4 6.36 -9.1 11 -8.8 c
--2.43 2.62 -8.36 4.69 -8.8 8.78 c
--0.16 1.65 1.96 2.74 3.08 3.54 c
-3.52 2.56 7.13 4.28 11.44 5.28 c
--1.03 -1.09 -2.03 -2.2 -2.65 -3.52 c
--2.19 -4.87 0.97 -9.44 6.17 -10.04 c
-6.44 -0.74 12.76 4.32 12.3 10.92 c
--0.16 2.12 -1.49 3.52 -2.62 5.28 c
-6.14 -0.96 3.98 -2.56 -3.08 6.6 -1.93 2.61 -8.19 -0.77 -6.6 0.23 -13.64 -3.83 
-2.2 0.44 
--1.76 4.84 -0.88 0 h
-1111.83 797.23 0.44 2.2 2.2 1.76 P
--2.46 -0.45 -3.76 -1.48 -2.64 -3.96 c
-f
-255 G
-1235.47 801.19 -0.88 -2.64 0.44 0 0.44 2.64 H
-936.27 800.75 0 -2.64 0.44 0 -0.44 2.64 H
-1143.51 796.35 4.4 -5.72 P
-1.13 2.6 2.74 4.83 5.28 6.16 c
-0 0.88 p
--3.52 0.83 -6.6 0.44 -9.68 -1.32 c
-h
-1234.3 797.82 m
-0.07 -0.33 0.15 -0.41 0.15 0 c
--0.15 0 h
-1067.83 794.59 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 p f
-K
-1113.15 794.59 -1.76 -5.28 P
-2.2 1.18 3.26 2.79 2.64 5.28 c
--0.88 0 p f
-255 G
-1073.11 792.39 m
-0.09 -0.54 0.13 -1.23 0.3 -1.76 c
-1.57 -4.84 6.4 2.79 1.46 2.45 c
--0.64 -0.05 -1.19 -0.42 -1.76 -0.69 c
-h
-1156.27 790.63 2.2 0 0 2.64 P
--1.68 -0.29 -2.01 -0.99 -2.2 -2.64 c
-f
-K
-1088.07 788.43 -0.07 -7.92 -2.57 -3.96 P
-5.67 1.15 4.05 7.7 3.96 11.88 c
--1.32 0 h
-930.55 786.23 -0.02 -7.48 0.02 -4.84 0.88 0 0.44 12.32 -1.32 0 H
-1057.27 784.47 m
-1.42 -7.04 10.91 -8.54 16.72 -9.36 c
-2.92 -0.41 6.74 -0.46 8.8 1.88 c
--2.26 0.38 -4.73 -0.03 -7.04 0 c
--5.92 0 -14.4 1.57 -17.16 7.48 c
--1.32 0 p f
-255 G
-910.31 780.95 m
--1.55 -1.92 -4.02 -4.04 -3.96 -6.6 c
-3.96 6.6 h
-1166.39 778.31 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 p f
-K
-1095.55 777.87 -5.72 -9.24 P
-2.91 1.32 6.52 5.96 6.6 9.24 c
--0.88 0 p f
-255 G
-1156.27 776.99 6.59 -11.88 9.55 -19.8 2.34 -5.72 0.44 0 P
-0 8.02 -0.88 15.58 -3.08 23.32 c
--1.14 4.17 -3.08 8.06 -3.96 12.32 c
--6.6 -0.66 -5.28 2.42 p f
-K
-1021.63 769.07 -2.41 -5.72 -2.43 -5.72 1.76 0.88 0.86 -3.96 2.66 -9.24 0.88 0 
-1.21 7.48 
--0.11 4.84 0.44 3.08 -1.02 3.08 1.46 5.28 -0.88 0 H
-1024.71 746.63 -2.2 -5.72 P
-2.58 0.42 4.7 3.81 2.2 5.72 c
-h
-1096.43 709.23 m
--1.5 4.4 -5 8.32 -5.28 13.2 c
--0.07 2.3 0.79 4.53 1.7 6.6 c
-2.18 4.95 5.78 9.68 11.06 11.64 c
-3.96 1.45 8.14 1.12 12.32 1.12 c
-8.5 -0.1 16.72 -5.8 22.86 -11.25 c
-1.43 -1.28 2.5 -2.97 3.98 -4.19 c
-0.99 -0.84 2.34 -0.92 3.43 -1.57 c
-1.85 -1.16 3.17 -2.89 5.37 -3.66 c
-1.17 -0.44 2.4 0 3.5 -0.45 c
-1.95 -0.87 3.2 -2.96 4.93 -4.12 c
-1.52 -1.02 3.87 -1.65 5.65 -2.03 c
--1.07 2.29 -2.91 3.41 -4.84 4.94 c
--3.79 2.98 -7.31 5.73 -11.44 8.19 c
--1.45 0.87 -2.47 2.27 -3.96 3.09 c
--1.97 1.08 -4.24 1.28 -6.16 2.53 c
--8.67 5.64 -18.04 12.93 -29.04 11.48 c
--3.08 -0.4 -6.48 -1.63 -9.24 -2.95 c
--6.76 -3.21 -13.02 -11.52 -12.23 -19.36 c
-0.24 -2.41 1.65 -4.49 2.7 -6.6 c
-1.17 -2.36 2.27 -5.34 4.69 -6.6 c
-h
-1029.11 741.79 -3.08 -5.72 0.44 -0.44 P
-1.55 1.43 3.73 4.04 2.64 6.16 c
-f
-255 G
-992.59 736.66 0.22 -0.51 -0.22 0.51 H
-994.35 736.51 -7.92 -6.16 P
-2.72 -0.44 3.86 1.63 5.72 3.2 c
-1.15 0.88 2.54 1.45 2.2 2.96 c
-f
-K
-1099.07 716.27 m
-0.43 2.03 1.23 3.79 1.97 5.72 c
-1.51 3.96 3.31 8.46 8.59 7.24 c
-2.12 -0.49 3.43 -2.29 5.28 -3.28 c
-0.3 3.78 -4.17 5.84 -7.48 6.11 c
--5.38 0.45 -10.56 -2.93 -11.47 -8.31 c
--0.51 -2.8 -0.23 -6.94 3.11 -7.48 c
-h
-978.95 727.71 2.64 2.2 P
--1.58 -0.25 -2.2 -0.66 -2.64 -2.2 c
-f
-255 G
-983.79 728.59 -2.64 -3.08 2.64 3.08 H
-979.39 724.63 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 p f
-K
-1128.55 695.15 m
-2.18 1.32 2.17 4.68 2.2 7.04 c
-0 4.4 -0.95 8.36 -2.97 12.32 c
--0.99 1.95 -2.16 4.07 -4.08 5.24 c
--2.89 1.76 -8.14 1.61 -10.98 -0.28 c
--3.55 -2.37 -2.81 -6.39 0.44 -8.61 c
-2.31 -1.63 5.59 -2.33 8.36 -2.07 c
-1.11 0.17 2.88 0.72 2.64 2.18 c
--0.24 2 -3.78 3.24 -4.9 4.86 c
--0.63 0.88 -1.26 2.39 0.18 2.96 c
-2.68 1.11 5.13 -2.4 6.23 -4.29 c
-2.28 -3.96 4.47 -8.99 4.12 -13.64 c
--0.15 -1.93 -0.96 -3.79 -1.22 -5.72 c
-f
-255 G
-961.79 718.91 m
--2.95 1.68 -7.04 -0.12 -9.68 -1.59 c
--1.15 -0.63 -2.81 -1.49 -3.17 -2.84 c
--0.55 -2.17 2.1 -4.24 4.05 -3.64 c
-1.57 0.49 2.61 2.06 3.65 3.24 c
-1.57 1.76 3.27 3.4 5.15 4.84 c
-f
-K
-1129.87 715.83 2.84 -6.16 2 -8.8 0.88 0 0.44 2.2 1.32 0 2.01 -6.6 1.51 -6.16 
-0.44 0 -0.61 6.16 -4.67 13.64 -1.76 -0.44 P
--0.58 2.64 -1.85 4.96 -4.4 6.16 c
-f
-255 G
-938.47 709.67 m
-2.55 0.35 4.79 0.88 5.72 3.52 c
--2.36 -0.44 -4.55 -1.38 -5.72 -3.52 c
-f
-K
-1052.43 705.71 m
-3.2 1.99 5.72 4.74 9.68 4.84 c
-0 0.88 p
--3.44 0 -10.8 -0.66 -9.68 -5.72 c
-f
-255 G
-927.03 703.07 m
-4.4 -0.35 8.5 0.15 11.44 3.96 c
--4.44 1.31 -9.48 0.65 -11.44 -3.96 c
-h
-991.27 702.19 m
--2.11 -3.13 -5 -7.63 -0.88 -10.56 c
-0.72 -0.44 1.42 -0.63 2.2 -0.88 c
--1.32 5.28 0 6.16 h
-1198.51 696.91 -1.76 -1.32 0 -0.44 1.76 1.76 H
-1195.43 694.71 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1193.67 693.1 m
--0.09 -0.21 -0.2 -0.5 0.15 -0.15 c
--0.15 0.15 h
-1192.35 692.51 -3.52 -2.64 0 -0.44 P
-1.76 -0.04 3.62 1.09 3.52 3.08 c
-h
-1183.99 685.47 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1174.75 684.15 -1.76 -2.2 1.76 2.2 H
-1000.51 682.83 m
--2.09 -3.57 -6.07 -7.18 -2.91 -11.44 c
-0.44 -0.59 1.01 -1.12 1.59 -1.57 c
-0.79 -0.63 1.68 -1.07 2.64 -1.19 c
-1.57 -0.32 3.25 0.09 4.84 0.12 c
--5.55 7.92 0.27 6.16 -0.88 0 h
-1010.63 656.87 0.44 0 P
-3.6 1.32 9.68 -2.04 10.7 -5.72 c
-0.3 -1.36 -0.17 -2.68 -0.57 -3.96 c
-0.96 0.43 1.76 0.88 2.64 1.52 c
-0.68 0.49 1.32 0.98 1.92 1.65 c
-3.6 4.52 -3.32 6.44 -5.75 8.71 c
--1.89 1.76 -4.09 5.37 -6.77 5.86 c
--2.6 0.47 -4.91 -3.1 -4.53 -5.42 c
-0.17 -1.17 1.05 -1.88 1.93 -2.64 c
-h
-1022.51 646.75 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 p f
-K
-1089.83 626.51 2.2 2.64 -2.2 -2.64 H
-1121.51 626.95 m
-1.48 -1.01 3.08 -0.88 4.84 -0.88 c
-3.33 0 5.85 0 8.8 1.76 c
--4.84 -0.79 -8.8 -0.09 h
-1099.51 625.19 -0.44 -0.44 2.64 -3.08 P
--2.4 -0.44 -4.16 -1.55 -4.84 -3.96 c
-3.96 2.79 3.96 1.61 -5.28 3.08 p f
-255 G
-1126.79 619.03 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 h
-1132.07 615.07 1.76 1.32 -1.76 -1.32 H
-1148.79 613.31 -1.76 -2.2 -0.44 0 -1.32 1.32 1.76 -6.6 0.44 0 1.32 7.48 f
-K
-1063.43 592.63 -0.44 0 P
--1.4 3.64 -1.76 7.48 -1.24 11.44 c
-0.22 1.76 0.76 3.44 0.8 5.28 c
--0.44 0 p
--1.44 -4.42 -3.18 -9.86 -1.85 -14.52 c
-1.11 -3.96 4.42 -6.41 7.12 -9.24 c
-3.24 -3.41 6.17 -7.32 9.11 -11 c
-2.45 -3.08 7.1 -7.25 7.37 -11.44 c
-0.23 -3.61 -4.58 -6.05 -5.9 -9.24 c
-4.4 3.96 4.4 4.4 p
--1.99 1.29 -1.24 5.24 -1.83 7.48 c
--1.12 4.25 -3.35 7.92 -6.53 11 c
-3.43 -6.16 2.73 -8.8 -0.44 0 p
--2.28 5.22 -6.5 10.02 -9.97 14.52 c
--1.72 2.2 -4.11 4.57 -4.46 7.48 c
--0.43 3.08 0.34 7.77 1.77 10.56 c
-0.75 1.54 1.87 2.82 2.53 4.4 c
--5.01 -2.45 -5.28 -10.56 -5.28 -15.4 c
--0.44 0 p
--0.96 2.2 -2.55 4.25 -3.24 6.6 c
--1.36 4.58 -0.03 9.5 2.09 13.64 c
-0.87 1.7 2.14 3.08 2.92 4.84 c
--6.76 -3.16 -8.17 -13.27 -6.6 -19.8 c
-f
-255 G
-1133.39 610.67 -3.52 -0.44 P
--1.87 -3.56 -3.52 -8.9 0 -11.88 c
-1.28 7.04 2.24 5.28 p f
-K
-1085.87 559.63 m
--1.76 -3.1 -4.4 -5.63 -6.02 -8.8 c
--1.54 -2.95 -2.04 -7.3 -1.29 -10.56 c
-0.71 -3.15 4.67 -6.42 7.75 -7.12 c
-1.71 -0.39 3.33 -0.56 4.4 0.96 c
--4.25 -0.7 -9.43 1.96 -11.05 6.16 c
--0.65 1.68 -0.51 3.96 -0.26 5.72 c
-0.56 3.87 2.95 6.92 5.59 9.68 c
--0.88 -4.4 0 -8.85 3.25 -12.11 c
-1.41 -1.43 3.35 -2.42 5.11 -3.4 c
-1.64 -0.92 3.75 -1.06 5.19 -2.28 c
-1.62 -1.38 2.63 -3.52 4.05 -5.09 c
-3.37 -3.56 8.18 -7.07 12.76 -8.8 c
--0.72 2.02 -3.14 2.89 -4.84 4.05 c
--3.14 2.11 -6.16 4.31 -8.51 7.39 c
--3.02 3.84 -4.25 7.91 -3.74 12.76 c
-0.27 2.82 1.19 5.51 1.25 8.36 c
--0.44 0 p
--1.95 -5.18 -2 -10.86 -1.32 -16.28 c
--2.83 1.88 -5.91 4.4 -6.79 7.92 c
--0.74 2.9 0.63 7.04 1.95 9.68 c
-0.97 2.03 3.94 4.67 3.44 7.04 c
--0.41 1.92 -1.73 5.05 -3.09 6.47 c
--1.66 1.69 -3.86 2.77 -5.62 4.3 c
--1.32 1.09 -2.2 2.44 -3.28 3.68 c
--3.42 3.86 -7.28 8.11 -6.2 13.71 c
-0.38 2.04 1.32 4.09 2.61 5.72 c
-1.1 1.32 2.47 2.39 3.35 3.96 c
--2.76 -0.56 -4.24 -2.56 -5.72 -4.84 c
--0.76 -1.24 -1.65 -2.52 -2.02 -3.96 c
--1.86 -7.26 3.86 -13.54 8.49 -18.48 c
-1.45 -1.54 3.32 -2.93 4.43 -4.84 c
-1.42 -2.56 0.1 -4.1 -0.53 -6.6 c
--0.57 -2.2 -0.39 -3.81 -2.88 -4.4 c
-f
-255 G
-1063.43 592.63 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 p f
-K
-1004.47 590.87 m
-1.76 -3.13 11.44 -7.6 5.28 -11.44 c
-0 -0.44 p
-3.21 0.25 3.61 3.06 2.39 5.72 c
--1.35 2.94 -4.65 5.27 -7.67 6.16 c
-f
-255 G
-1134.27 586.03 -7.04 -10.56 P
-3.81 2.48 7.48 5.82 7.92 10.56 c
--0.88 0 p f
-K
-996.99 573.27 m
-0.58 -2.87 2.72 -4.87 5.72 -4.4 c
-0 0.44 -5.72 3.96 p f
-255 G
-1088.95 573.27 2.07 -4.84 -1.19 -6.16 P
-2.82 1.32 5.25 4.82 3.19 7.88 c
--0.99 1.36 -2.61 2.24 -4.07 3.12 c
-h
-1105.67 541.59 m
--0.62 7.9 -0.71 15.84 5.28 21.96 c
-1.72 1.69 3.72 3.39 5.72 4.69 c
-1.48 0.96 2.82 1.43 3.96 2.82 c
--8.67 -2.06 -14.75 -8.46 -17.44 -16.72 c
--1.52 -4.67 -1.92 -9.68 2.48 -12.76 c
-h
-1117.11 567.55 m
--2.52 -2.03 -5.29 -3.96 -7.2 -6.6 c
--2.95 -4.08 -3.38 -8.37 -3.36 -13.2 c
-0 -1.82 -0.32 -4 0.41 -5.72 c
-0.91 -2.2 2.93 -3.97 4.87 -5.28 c
--1.94 7.12 -3.08 14.49 0 21.56 c
-1.32 3.08 4.61 6.03 5.28 9.24 c
-h
-1094.23 565.35 -4.32 -4.92 -0.52 -8.72 0.44 0 3.19 8.36 1.21 5.28 H
-1092.91 542.03 -3.52 6.16 -0.88 10.56 P
--2.43 -1.17 -2.97 -3.19 -3.08 -5.76 c
--0.14 -4.8 2.8 -9.64 7.48 -10.96 c
-h
-1115.79 550.39 m
-0.15 -0.31 0.44 -0.94 0.44 0 c
--0.44 0 p f
-K
-822.18 668.64 m
--5.23 -21.54 -31.76 -66.53 -45.86 -86.33 c
--14.1 -19.88 -12.36 -37.78 -38.41 -30.81 c
--25.98 6.97 -33.26 5.7 -60.11 4.12 c
--26.69 -1.58 -20.91 0.79 -37.62 -6.73 c
--16.63 -7.52 -72.47 91.24 -76.98 109.61 c
--4.44 18.37 -6.57 16.16 4.99 36.04 c
-11.56 19.88 13.23 39.52 28.51 63.6 c
-15.29 24.16 32.95 36.43 31.68 54.89 c
--4.99 68.51 -8.95 102.72 21.46 118.56 c
-28.99 15.05 53.22 6.1 62.81 0.95 c
-4.12 -2.22 12.51 -6.49 18.77 -14.02 c
-6.26 -7.37 11.88 -18.53 15.05 -32.63 c
-6.49 -28.27 -2.69 -18.93 4.67 -51.32 c
-7.29 -32.31 22.1 -48.15 40.15 -73.74 c
-18.06 -25.58 36.91 -67.8 30.89 -92.19 c
-f*
-102 G
-651.66 835.36 m
-4.75 1.9 4.91 1.74 8.08 8.63 c
-2.53 5.31 3.8 8 3.72 16.08 c
-0 7.92 -2.46 10.61 -6.18 15.76 c
--3.56 4.91 -9.27 5.15 -12.83 4.51 c
--2.06 -0.32 -4.75 -2.93 -6.57 -6.81 c
--1.19 -2.61 -2.14 -5.94 -2.22 -9.43 c
--0.24 -9.35 0.55 -12.91 2.69 -19.25 c
-2.53 -7.44 8.71 -11.33 13.31 -9.5 c
-f*
-110 G
-651.66 835.39 m
-4.72 1.89 4.88 1.73 8.03 8.58 c
-2.52 5.27 3.78 7.95 3.7 15.97 c
-0 7.87 -2.48 10.71 -6.14 15.66 c
--3.62 4.78 -9.1 5.08 -12.64 4.47 c
--2.11 -0.31 -4.68 -3 -6.54 -6.74 c
--1.28 -2.54 -2.27 -5.87 -2.34 -9.37 c
--0.23 -9.28 0.59 -12.83 2.71 -19.13 c
-2.51 -7.4 8.66 -11.25 13.22 -9.44 c
-f*
-117 G
-651.66 835.42 m
-4.69 1.88 4.85 1.72 7.97 8.52 c
-2.5 5.24 3.75 7.9 3.67 15.87 c
-0 7.82 -2.5 10.81 -6.1 15.56 c
--3.68 4.65 -8.93 5.01 -12.44 4.42 c
--2.16 -0.31 -4.62 -3.07 -6.5 -6.67 c
--1.37 -2.47 -2.39 -5.8 -2.47 -9.32 c
--0.23 -9.22 0.62 -12.76 2.73 -19 c
-2.49 -7.35 8.6 -11.18 13.14 -9.38 c
-f*
-125 G
-651.66 835.45 m
-4.66 1.86 4.81 1.71 7.92 8.47 c
-2.48 5.2 3.73 7.85 3.65 15.77 c
-0 7.77 -2.52 10.9 -6.06 15.46 c
--3.74 4.52 -8.77 4.95 -12.25 4.38 c
--2.21 -0.3 -4.55 -3.14 -6.46 -6.6 c
--1.45 -2.4 -2.52 -5.73 -2.6 -9.26 c
--0.22 -9.16 0.65 -12.68 2.74 -18.88 c
-2.47 -7.3 8.54 -11.11 13.05 -9.32 c
-f*
-133 G
-651.66 835.48 m
-4.63 1.85 4.78 1.7 7.87 8.41 c
-2.47 5.17 3.7 7.79 3.63 15.66 c
-0 7.72 -2.54 11 -6.02 15.35 c
--3.8 4.38 -8.6 4.88 -12.06 4.33 c
--2.25 -0.29 -4.48 -3.21 -6.42 -6.53 c
--1.54 -2.33 -2.65 -5.66 -2.73 -9.21 c
--0.22 -9.09 0.68 -12.6 2.76 -18.76 c
-2.46 -7.25 8.49 -11.03 12.96 -9.26 c
-f*
-140 G
-651.66 835.51 m
-4.6 1.84 4.75 1.69 7.82 8.35 c
-2.45 5.13 3.68 7.74 3.6 15.56 c
-0 7.66 -2.57 11.1 -5.98 15.25 c
--3.86 4.25 -8.43 4.81 -11.87 4.28 c
--2.3 -0.29 -4.41 -3.28 -6.38 -6.45 c
--1.63 -2.25 -2.78 -5.59 -2.85 -9.16 c
--0.21 -9.03 0.71 -12.53 2.78 -18.64 c
-2.44 -7.2 8.43 -10.96 12.88 -9.2 c
-f*
-148 G
-651.66 835.53 m
-4.57 1.83 4.72 1.68 7.77 8.3 c
-2.44 5.1 3.65 7.69 3.58 15.46 c
-0 7.61 -2.59 11.2 -5.94 15.15 c
--3.92 4.12 -8.27 4.74 -11.67 4.24 c
--2.35 -0.28 -4.34 -3.35 -6.34 -6.38 c
--1.72 -2.18 -2.91 -5.52 -2.98 -9.1 c
--0.21 -8.96 0.74 -12.45 2.8 -18.52 c
-2.42 -7.16 8.38 -10.89 12.79 -9.14 c
-f*
-156 G
-651.66 835.56 m
-4.54 1.81 4.69 1.66 7.71 8.24 c
-2.42 5.07 3.63 7.64 3.55 15.35 c
-0 7.56 -2.61 11.29 -5.9 15.05 c
--3.98 3.99 -8.1 4.68 -11.48 4.19 c
--2.4 -0.28 -4.27 -3.43 -6.3 -6.31 c
--1.81 -2.11 -3.03 -5.45 -3.11 -9.05 c
--0.2 -8.9 0.77 -12.38 2.81 -18.4 c
-2.4 -7.11 8.32 -10.82 12.71 -9.07 c
-f*
-163 G
-651.66 835.59 m
-4.51 1.8 4.66 1.65 7.66 8.19 c
-2.4 5.03 3.61 7.59 3.53 15.25 c
-0 7.51 -2.63 11.39 -5.86 14.95 c
--4.04 3.86 -7.93 4.61 -11.29 4.14 c
--2.45 -0.27 -4.2 -3.5 -6.26 -6.24 c
--1.9 -2.04 -3.16 -5.39 -3.24 -8.99 c
--0.2 -8.84 0.8 -12.3 2.83 -18.28 c
-2.38 -7.06 8.26 -10.74 12.62 -9.01 c
-f*
-171 G
-651.66 835.62 m
-4.48 1.79 4.63 1.64 7.61 8.13 c
-2.39 5 3.58 7.54 3.51 15.15 c
-0 7.46 -2.65 11.49 -5.82 14.85 c
--4.1 3.72 -7.77 4.54 -11.09 4.1 c
--2.5 -0.27 -4.14 -3.57 -6.22 -6.17 c
--1.99 -1.96 -3.29 -5.32 -3.36 -8.94 c
--0.19 -8.77 0.83 -12.22 2.85 -18.16 c
-2.36 -7.01 8.21 -10.67 12.53 -8.95 c
-f*
-179 G
-651.66 835.65 m
-4.45 1.78 4.59 1.63 7.56 8.08 c
-2.37 4.96 3.56 7.48 3.48 15.04 c
-0 7.41 -2.68 11.59 -5.78 14.75 c
--4.16 3.59 -7.6 4.47 -10.9 4.05 c
--2.55 -0.26 -4.07 -3.64 -6.19 -6.1 c
--2.08 -1.89 -3.41 -5.25 -3.49 -8.89 c
--0.19 -8.71 0.86 -12.15 2.86 -18.04 c
-2.34 -6.96 8.15 -10.6 12.45 -8.89 c
-f*
-186 G
-651.66 835.68 m
-4.41 1.77 4.56 1.62 7.51 8.02 c
-2.36 4.93 3.53 7.43 3.46 14.94 c
-0 7.36 -2.7 11.68 -5.74 14.64 c
--4.22 3.46 -7.43 4.4 -10.71 4.01 c
--2.6 -0.26 -4 -3.71 -6.15 -6.02 c
--2.17 -1.82 -3.54 -5.18 -3.62 -8.83 c
--0.18 -8.65 0.89 -12.07 2.88 -17.92 c
-2.32 -6.92 8.09 -10.52 12.36 -8.83 c
-f*
-194 G
-651.66 835.71 m
-4.38 1.75 4.53 1.61 7.45 7.97 c
-2.34 4.9 3.51 7.38 3.44 14.84 c
-0 7.31 -2.72 11.78 -5.7 14.54 c
--4.28 3.33 -7.27 4.34 -10.51 3.96 c
--2.65 -0.25 -3.93 -3.78 -6.11 -5.95 c
--2.26 -1.75 -3.67 -5.11 -3.74 -8.78 c
--0.18 -8.58 0.93 -12 2.9 -17.8 c
-2.3 -6.87 8.04 -10.45 12.28 -8.77 c
-f*
-202 G
-651.66 835.74 m
-4.35 1.74 4.5 1.6 7.4 7.91 c
-2.32 4.86 3.48 7.33 3.41 14.73 c
-0 7.26 -2.74 11.88 -5.66 14.44 c
--4.34 3.2 -7.1 4.27 -10.32 3.91 c
--2.69 -0.25 -3.86 -3.85 -6.07 -5.88 c
--2.34 -1.68 -3.8 -5.04 -3.87 -8.73 c
--0.17 -8.52 0.96 -11.92 2.92 -17.68 c
-2.28 -6.82 7.98 -10.38 12.19 -8.71 c
-f*
-209 G
-651.66 835.77 m
-4.32 1.73 4.47 1.59 7.35 7.85 c
-2.31 4.83 3.46 7.28 3.39 14.63 c
-0 7.21 -2.77 11.97 -5.62 14.34 c
--4.4 3.07 -6.93 4.2 -10.13 3.87 c
--2.74 -0.24 -3.79 -3.92 -6.03 -5.81 c
--2.43 -1.6 -3.93 -4.97 -4 -8.67 c
--0.17 -8.45 0.99 -11.84 2.93 -17.56 c
-2.26 -6.77 7.93 -10.3 12.11 -8.65 c
-f*
-217 G
-651.67 835.8 m
-4.29 1.72 4.44 1.58 7.3 7.8 c
-2.29 4.79 3.44 7.23 3.36 14.53 c
-0 7.15 -2.79 12.07 -5.58 14.24 c
--4.46 2.94 -6.77 4.13 -9.93 3.82 c
--2.79 -0.23 -3.72 -3.99 -5.99 -5.74 c
--2.52 -1.53 -4.05 -4.9 -4.12 -8.62 c
--0.16 -8.39 1.02 -11.77 2.95 -17.44 c
-2.24 -6.73 7.87 -10.23 12.02 -8.59 c
-f*
-225 G
-651.67 835.83 m
-4.26 1.71 4.4 1.56 7.25 7.74 c
-2.27 4.76 3.41 7.18 3.34 14.42 c
-0 7.1 -2.81 12.17 -5.54 14.14 c
--4.52 2.8 -6.6 4.07 -9.74 3.77 c
--2.84 -0.23 -3.66 -4.06 -5.95 -5.67 c
--2.61 -1.46 -4.18 -4.83 -4.25 -8.56 c
--0.16 -8.33 1.05 -11.69 2.97 -17.32 c
-2.22 -6.68 7.81 -10.16 11.94 -8.52 c
-f*
-232 G
-651.67 835.86 m
-4.23 1.69 4.37 1.55 7.19 7.69 c
-2.26 4.73 3.39 7.12 3.32 14.32 c
-0 7.05 -2.83 12.27 -5.5 14.03 c
--4.58 2.67 -6.43 4 -9.55 3.73 c
--2.89 -0.22 -3.59 -4.13 -5.91 -5.6 c
--2.7 -1.39 -4.31 -4.76 -4.38 -8.51 c
--0.15 -8.26 1.08 -11.61 2.99 -17.2 c
-2.2 -6.63 7.76 -10.09 11.85 -8.46 c
-f*
-240 G
-651.67 835.89 m
-4.2 1.68 4.34 1.54 7.14 7.63 c
-2.24 4.69 3.36 7.07 3.29 14.21 c
-0 7 -2.85 12.36 -5.46 13.93 c
--4.64 2.54 -6.27 3.93 -9.36 3.68 c
--2.94 -0.22 -3.52 -4.21 -5.87 -5.53 c
--2.79 -1.32 -4.44 -4.69 -4.51 -8.46 c
--0.15 -8.2 1.11 -11.54 3 -17.08 c
-2.18 -6.58 7.7 -10.01 11.76 -8.4 c
-f*
-248 G
-651.67 835.92 m
-4.17 1.67 4.31 1.53 7.09 7.58 c
-2.22 4.66 3.34 7.02 3.27 14.11 c
-0 6.95 -2.88 12.46 -5.42 13.83 c
--4.7 2.41 -6.1 3.86 -9.16 3.63 c
--2.99 -0.21 -3.45 -4.27 -5.83 -5.45 c
--2.88 -1.24 -4.56 -4.62 -4.63 -8.4 c
--0.14 -8.14 1.14 -11.46 3.02 -16.96 c
-2.16 -6.53 7.65 -9.94 11.68 -8.34 c
-f*
-255 G
-651.67 835.95 m
-4.14 1.66 4.28 1.52 7.04 7.52 c
-2.21 4.62 3.31 6.97 3.24 14.01 c
-0 6.9 -2.9 12.56 -5.38 13.73 c
--4.76 2.28 -5.93 3.79 -8.97 3.59 c
--3.04 -0.21 -3.38 -4.35 -5.8 -5.38 c
--2.97 -1.17 -4.69 -4.55 -4.76 -8.35 c
--0.14 -8.07 1.17 -11.39 3.04 -16.84 c
-2.14 -6.49 7.59 -9.87 11.59 -8.28 c
-f*
-K
-647.23 867.59 m
-2.38 0 5.39 -1.58 6.81 -3.72 c
-1.5 -2.14 2.61 -5.15 2.61 -8.55 c
-0 -5.07 -0.55 -10.69 -3.56 -12.43 c
--0.95 -0.55 -3.01 -1.03 -4.2 -1.03 c
--2.69 0 -2.93 1.74 -5.46 4.36 c
--0.87 0.95 -3.48 5.54 -3.48 9.35 c
-0 2.38 -0.55 5.78 1.5 8.79 c
-1.43 2.22 3.25 3.25 5.78 3.25 c
-f*
-646.59 863.34 m
-0.93 1.44 4.64 0.76 6 -2.2 c
-1.35 -2.96 1.1 -9.37 0.17 -9.71 c
--2.45 -0.76 -1.69 2.79 -3.8 6 c
--2.11 3.04 -3.29 4.47 -2.36 5.91 c
-f*
-7 G
-646.65 863.28 m
-0.92 1.42 4.59 0.75 5.92 -2.17 c
-1.33 -2.92 1.08 -9.26 0.17 -9.59 c
--2.42 -0.75 -1.67 2.75 -3.75 5.92 c
--2.08 3 -3.25 4.42 -2.33 5.84 c
-f*
-15 G
-646.71 863.22 m
-0.91 1.4 4.53 0.74 5.84 -2.14 c
-1.32 -2.88 1.07 -9.14 0.16 -9.47 c
--2.39 -0.74 -1.65 2.72 -3.7 5.84 c
--2.06 2.96 -3.21 4.36 -2.3 5.76 c
-f*
-23 G
-646.77 863.16 m
-0.89 1.38 4.47 0.73 5.77 -2.11 c
-1.3 -2.84 1.06 -9.02 0.16 -9.34 c
--2.36 -0.73 -1.62 2.68 -3.66 5.77 c
--2.03 2.92 -3.17 4.31 -2.27 5.69 c
-f*
-30 G
-646.83 863.1 m
-0.88 1.36 4.41 0.72 5.69 -2.08 c
-1.28 -2.81 1.04 -8.9 0.16 -9.22 c
--2.32 -0.72 -1.6 2.65 -3.61 5.69 c
--2 2.89 -3.13 4.25 -2.24 5.61 c
-f*
-38 G
-646.89 863.04 m
-0.87 1.34 4.35 0.71 5.62 -2.06 c
-1.27 -2.77 1.03 -8.78 0.16 -9.1 c
--2.29 -0.71 -1.58 2.61 -3.56 5.62 c
--1.98 2.85 -3.08 4.19 -2.21 5.54 c
-f*
-46 G
-646.95 862.98 m
-0.86 1.33 4.29 0.7 5.54 -2.03 c
-1.25 -2.73 1.01 -8.66 0.16 -8.97 c
--2.26 -0.7 -1.56 2.58 -3.51 5.54 c
--1.95 2.81 -3.04 4.14 -2.18 5.46 c
-f*
-53 G
-647.01 862.92 m
-0.85 1.31 4.23 0.69 5.46 -2 c
-1.23 -2.69 1 -8.54 0.15 -8.85 c
--2.23 -0.69 -1.54 2.54 -3.46 5.46 c
--1.92 2.77 -3 4.08 -2.16 5.39 c
-f*
-61 G
-647.07 862.86 m
-0.83 1.29 4.17 0.68 5.39 -1.97 c
-1.21 -2.66 0.99 -8.42 0.15 -8.73 c
--2.2 -0.68 -1.52 2.5 -3.42 5.39 c
--1.9 2.73 -2.96 4.02 -2.12 5.31 c
-f*
-69 G
-647.13 862.8 m
-0.82 1.27 4.11 0.67 5.31 -1.94 c
-1.2 -2.62 0.97 -8.3 0.15 -8.6 c
--2.17 -0.67 -1.5 2.47 -3.37 5.31 c
--1.87 2.69 -2.92 3.97 -2.09 5.24 c
-f*
-76 G
-647.19 862.74 m
-0.81 1.25 4.06 0.66 5.24 -1.92 c
-1.18 -2.58 0.96 -8.19 0.15 -8.48 c
--2.14 -0.66 -1.48 2.43 -3.32 5.24 c
--1.84 2.65 -2.88 3.91 -2.06 5.16 c
-f*
-84 G
-647.25 862.68 m
-0.8 1.24 4 0.65 5.16 -1.89 c
-1.16 -2.54 0.94 -8.07 0.15 -8.36 c
--2.11 -0.65 -1.45 2.4 -3.27 5.16 c
--1.82 2.62 -2.83 3.85 -2.03 5.09 c
-f*
-92 G
-647.31 862.62 m
-0.79 1.22 3.94 0.64 5.08 -1.86 c
-1.15 -2.51 0.93 -7.95 0.14 -8.23 c
--2.08 -0.64 -1.43 2.36 -3.22 5.08 c
--1.79 2.58 -2.79 3.79 -2.01 5.01 c
-f*
-99 G
-647.36 862.56 m
-0.78 1.2 3.88 0.63 5.01 -1.83 c
-1.13 -2.47 0.92 -7.83 0.14 -8.11 c
--2.04 -0.63 -1.41 2.33 -3.17 5.01 c
--1.76 2.54 -2.75 3.74 -1.97 4.94 c
-f*
-107 G
-647.42 862.5 m
-0.76 1.18 3.82 0.63 4.93 -1.81 c
-1.11 -2.43 0.9 -7.71 0.14 -7.99 c
--2.01 -0.62 -1.39 2.29 -3.13 4.93 c
--1.74 2.5 -2.71 3.68 -1.94 4.86 c
-f*
-115 G
-647.48 862.44 m
-0.75 1.16 3.76 0.61 4.86 -1.78 c
-1.09 -2.39 0.89 -7.59 0.14 -7.86 c
--1.98 -0.62 -1.37 2.26 -3.08 4.86 c
--1.71 2.46 -2.67 3.62 -1.92 4.79 c
-f*
-122 G
-647.54 862.37 m
-0.74 1.15 3.7 0.61 4.78 -1.75 c
-1.08 -2.36 0.88 -7.47 0.14 -7.74 c
--1.95 -0.61 -1.35 2.22 -3.03 4.78 c
--1.68 2.42 -2.63 3.57 -1.89 4.71 c
-f*
-130 G
-647.6 862.31 m
-0.73 1.13 3.64 0.6 4.7 -1.72 c
-1.06 -2.32 0.86 -7.35 0.13 -7.62 c
--1.92 -0.6 -1.33 2.19 -2.98 4.7 c
--1.66 2.38 -2.58 3.51 -1.86 4.64 c
-f*
-138 G
-647.66 862.25 m
-0.72 1.11 3.58 0.59 4.63 -1.69 c
-1.04 -2.28 0.85 -7.24 0.13 -7.5 c
--1.89 -0.59 -1.3 2.15 -2.93 4.63 c
--1.63 2.35 -2.54 3.46 -1.82 4.56 c
-f*
-145 G
-647.72 862.19 m
-0.71 1.09 3.53 0.58 4.55 -1.67 c
-1.03 -2.24 0.83 -7.12 0.13 -7.37 c
--1.86 -0.58 -1.28 2.12 -2.89 4.55 c
--1.6 2.31 -2.5 3.4 -1.8 4.49 c
-f*
-153 G
-647.78 862.13 m
-0.69 1.07 3.47 0.57 4.48 -1.64 c
-1.01 -2.21 0.82 -7 0.13 -7.25 c
--1.83 -0.57 -1.26 2.08 -2.84 4.48 c
--1.58 2.27 -2.46 3.34 -1.77 4.41 c
-f*
-102 G
-700.77 834.33 m
-11.88 1.27 16.08 5.86 18.22 13.86 c
-1.9 7.13 1.98 15.05 -3.33 24.31 c
--4.99 8.87 -7.84 10.3 -15.05 10.85 c
--11.09 0.95 -16.32 -6.81 -18.77 -12.35 c
--2.61 -6.02 -2.06 -5.15 -1.9 -12.75 c
-0.16 -8 2.61 -11.33 5.39 -16.32 c
-2.77 -4.91 14.1 -7.68 15.44 -7.6 c
-f*
-110 G
-700.77 834.37 m
-11.83 1.25 16.08 5.89 18.17 13.83 c
-1.87 7.18 1.86 15.04 -3.41 24.09 c
--4.88 8.58 -7.8 10.02 -14.92 10.57 c
--11.05 0.95 -16.14 -6.51 -18.61 -11.96 c
--2.55 -5.8 -2.08 -5.15 -1.92 -12.67 c
-0.17 -8 2.55 -11.29 5.32 -16.28 c
-2.77 -4.92 14.03 -7.66 15.38 -7.58 c
-f*
-117 G
-700.78 834.42 m
-11.79 1.22 16.08 5.92 18.12 13.79 c
-1.84 7.23 1.74 15.03 -3.48 23.86 c
--4.76 8.28 -7.77 9.75 -14.8 10.3 c
--11.02 0.94 -15.96 -6.2 -18.45 -11.57 c
--2.48 -5.58 -2.1 -5.16 -1.93 -12.58 c
-0.18 -8 2.48 -11.25 5.25 -16.25 c
-2.77 -4.93 13.96 -7.64 15.31 -7.56 c
-f*
-125 G
-700.78 834.47 m
-11.74 1.2 16.08 5.95 18.07 13.76 c
-1.81 7.28 1.62 15.03 -3.56 23.64 c
--4.65 7.99 -7.73 9.48 -14.68 10.02 c
--10.98 0.94 -15.78 -5.89 -18.29 -11.17 c
--2.41 -5.36 -2.13 -5.17 -1.95 -12.49 c
-0.19 -8 2.42 -11.22 5.18 -16.21 c
-2.77 -4.94 13.89 -7.62 15.24 -7.53 c
-f*
-133 G
-700.79 834.51 m
-11.7 1.18 16.09 5.97 18.01 13.72 c
-1.78 7.33 1.5 15.02 -3.64 23.42 c
--4.54 7.7 -7.69 9.2 -14.56 9.74 c
--10.95 0.94 -15.6 -5.58 -18.13 -10.78 c
--2.34 -5.15 -2.15 -5.17 -1.97 -12.41 c
-0.2 -8 2.35 -11.18 5.11 -16.18 c
-2.77 -4.96 13.82 -7.6 15.17 -7.51 c
-f*
-140 G
-700.79 834.56 m
-11.65 1.15 16.09 6 17.97 13.69 c
-1.75 7.38 1.38 15.01 -3.72 23.19 c
--4.43 7.4 -7.65 8.93 -14.43 9.46 c
--10.92 0.93 -15.42 -5.28 -17.97 -10.39 c
--2.27 -4.93 -2.17 -5.18 -1.99 -12.32 c
-0.21 -8 2.29 -11.15 5.04 -16.14 c
-2.77 -4.97 13.76 -7.57 15.1 -7.49 c
-f*
-148 G
-700.8 834.6 m
-11.61 1.13 16.09 6.03 17.91 13.65 c
-1.73 7.43 1.26 15 -3.8 22.97 c
--4.31 7.11 -7.61 8.66 -14.31 9.19 c
--10.88 0.93 -15.24 -4.97 -17.81 -9.99 c
--2.2 -4.71 -2.2 -5.18 -2 -12.24 c
-0.22 -8 2.22 -11.11 4.98 -16.11 c
-2.77 -4.98 13.69 -7.55 15.03 -7.47 c
-f*
-156 G
-700.8 834.65 m
-11.56 1.11 16.09 6.06 17.87 13.62 c
-1.7 7.48 1.15 15 -3.88 22.74 c
--4.2 6.81 -7.58 8.38 -14.19 8.91 c
--10.85 0.93 -15.06 -4.67 -17.65 -9.6 c
--2.14 -4.49 -2.22 -5.19 -2.02 -12.15 c
-0.23 -8 2.16 -11.07 4.91 -16.08 c
-2.77 -4.99 13.62 -7.53 14.97 -7.44 c
-f*
-163 G
-700.81 834.69 m
-11.52 1.08 16.09 6.09 17.81 13.59 c
-1.67 7.52 1.03 14.99 -3.96 22.52 c
--4.09 6.52 -7.54 8.11 -14.06 8.63 c
--10.81 0.92 -14.88 -4.36 -17.49 -9.2 c
--2.07 -4.27 -2.24 -5.19 -2.04 -12.07 c
-0.25 -8 2.09 -11.04 4.84 -16.04 c
-2.77 -5 13.55 -7.51 14.9 -7.42 c
-f*
-171 G
-700.82 834.74 m
-11.47 1.06 16.1 6.12 17.77 13.55 c
-1.64 7.58 0.91 14.98 -4.03 22.29 c
--3.98 6.23 -7.5 7.84 -13.94 8.35 c
--10.78 0.92 -14.7 -4.05 -17.33 -8.81 c
--2 -4.06 -2.26 -5.2 -2.05 -11.98 c
-0.26 -8 2.03 -11 4.77 -16.01 c
-2.77 -5.01 13.48 -7.49 14.83 -7.4 c
-f*
-179 G
-700.82 834.78 m
-11.42 1.04 16.1 6.14 17.71 13.52 c
-1.61 7.63 0.79 14.98 -4.11 22.07 c
--3.86 5.93 -7.47 7.56 -13.82 8.08 c
--10.74 0.92 -14.52 -3.75 -17.18 -8.42 c
--1.93 -3.84 -2.29 -5.21 -2.07 -11.9 c
-0.27 -8 1.96 -10.97 4.7 -15.97 c
-2.77 -5.02 13.41 -7.46 14.76 -7.38 c
-f*
-186 G
-700.83 834.83 m
-11.38 1.02 16.1 6.17 17.66 13.48 c
-1.58 7.67 0.67 14.97 -4.19 21.84 c
--3.75 5.64 -7.43 7.29 -13.69 7.8 c
--10.71 0.91 -14.34 -3.44 -17.02 -8.02 c
--1.86 -3.62 -2.31 -5.21 -2.09 -11.81 c
-0.28 -7.99 1.9 -10.93 4.63 -15.94 c
-2.77 -5.04 13.35 -7.44 14.69 -7.35 c
-f*
-194 G
-700.83 834.88 m
-11.33 0.99 16.1 6.2 17.61 13.45 c
-1.55 7.73 0.55 14.96 -4.27 21.62 c
--3.64 5.35 -7.39 7.02 -13.57 7.52 c
--10.68 0.91 -14.16 -3.13 -16.86 -7.63 c
--1.79 -3.4 -2.33 -5.22 -2.11 -11.72 c
-0.29 -7.99 1.83 -10.9 4.57 -15.91 c
-2.77 -5.05 13.28 -7.42 14.62 -7.33 c
-f*
-202 G
-700.84 834.92 m
-11.29 0.97 16.1 6.23 17.56 13.42 c
-1.52 7.77 0.43 14.95 -4.35 21.4 c
--3.53 5.05 -7.35 6.75 -13.45 7.24 c
--10.64 0.91 -13.98 -2.83 -16.7 -7.23 c
--1.72 -3.18 -2.36 -5.22 -2.12 -11.64 c
-0.3 -7.99 1.77 -10.86 4.5 -15.87 c
-2.77 -5.06 13.21 -7.4 14.56 -7.31 c
-f*
-209 G
-700.84 834.97 m
-11.24 0.95 16.11 6.26 17.51 13.38 c
-1.49 7.82 0.31 14.95 -4.43 21.17 c
--3.41 4.76 -7.31 6.47 -13.32 6.96 c
--10.61 0.9 -13.8 -2.52 -16.54 -6.84 c
--1.66 -2.96 -2.38 -5.23 -2.14 -11.55 c
-0.31 -7.99 1.7 -10.82 4.43 -15.84 c
-2.77 -5.07 13.14 -7.38 14.49 -7.28 c
-f*
-217 G
-700.85 835.01 m
-11.2 0.93 16.11 6.29 17.46 13.35 c
-1.46 7.87 0.19 14.94 -4.51 20.95 c
--3.3 4.47 -7.28 6.2 -13.2 6.69 c
--10.57 0.9 -13.62 -2.22 -16.38 -6.45 c
--1.59 -2.75 -2.4 -5.23 -2.16 -11.47 c
-0.32 -7.99 1.63 -10.79 4.36 -15.8 c
-2.77 -5.08 13.07 -7.35 14.42 -7.26 c
-f*
-225 G
-700.86 835.06 m
-11.15 0.9 16.11 6.31 17.41 13.31 c
-1.43 7.92 0.07 14.93 -4.58 20.72 c
--3.19 4.17 -7.24 5.93 -13.08 6.41 c
--10.54 0.89 -13.44 -1.91 -16.22 -6.05 c
--1.52 -2.53 -2.42 -5.24 -2.17 -11.38 c
-0.33 -7.99 1.57 -10.75 4.29 -15.77 c
-2.77 -5.09 13.01 -7.33 14.35 -7.24 c
-f*
-232 G
-700.86 835.1 m
-11.11 0.88 16.11 6.34 17.36 13.28 c
-1.4 7.97 -0.05 14.92 -4.66 20.5 c
--3.08 3.88 -7.2 5.65 -12.95 6.13 c
--10.5 0.89 -13.26 -1.6 -16.06 -5.66 c
--1.45 -2.31 -2.45 -5.24 -2.19 -11.3 c
-0.34 -7.99 1.5 -10.72 4.22 -15.73 c
-2.77 -5.1 12.94 -7.31 14.28 -7.22 c
-f*
-240 G
-700.87 835.15 m
-11.06 0.86 16.11 6.37 17.31 13.24 c
-1.38 8.02 -0.17 14.92 -4.74 20.27 c
--2.96 3.58 -7.16 5.38 -12.83 5.85 c
--10.47 0.89 -13.09 -1.3 -15.9 -5.26 c
--1.38 -2.09 -2.47 -5.25 -2.21 -11.21 c
-0.35 -7.99 1.44 -10.68 4.15 -15.7 c
-2.77 -5.12 12.87 -7.29 14.21 -7.19 c
-f*
-248 G
-700.87 835.2 m
-11.01 0.83 16.12 6.4 17.26 13.21 c
-1.35 8.07 -0.28 14.91 -4.82 20.05 c
--2.85 3.29 -7.13 5.11 -12.71 5.58 c
--10.43 0.88 -12.91 -0.99 -15.74 -4.87 c
--1.31 -1.87 -2.49 -5.26 -2.23 -11.13 c
-0.37 -7.99 1.37 -10.64 4.09 -15.67 c
-2.77 -5.13 12.8 -7.27 14.14 -7.17 c
-f*
-255 G
-700.88 835.24 m
-10.97 0.81 16.12 6.43 17.21 13.18 c
-1.32 8.12 -0.4 14.9 -4.9 19.82 c
--2.74 3 -7.09 4.83 -12.59 5.3 c
--10.4 0.88 -12.73 -0.68 -15.58 -4.48 c
--1.25 -1.66 -2.51 -5.26 -2.24 -11.04 c
-0.38 -7.99 1.31 -10.61 4.02 -15.63 c
-2.77 -5.14 12.73 -7.25 14.08 -7.15 c
-f*
-K
-699.81 867.91 m
-5.94 0 9.42 -5.31 10.61 -12.12 c
-0.48 -3.09 -0.24 -6.65 -2.14 -9.11 c
--2.14 -2.85 -5.94 -4.59 -9.03 -4.59 c
--2.93 0 -6.26 -0.48 -8 1.9 c
--1.74 2.46 -2.14 7.92 -2.14 11.8 c
-0 4.36 1.27 7.44 3.48 9.9 c
-1.66 1.82 4.67 2.22 7.21 2.22 c
-f*
-700.19 865.47 m
-1.08 0.72 2.87 0 4.94 -2.33 c
-2.24 -2.51 3.23 -4.49 0.54 -5.92 c
--2.06 -1.08 -2.69 2.15 -3.95 3.5 c
--1.97 2.15 -3.68 3.32 -1.53 4.76 c
-f*
-7 G
-700.24 865.4 m
-1.06 0.71 2.83 0 4.86 -2.3 c
-2.21 -2.48 3.15 -4.42 0.53 -5.84 c
--2.02 -1.07 -2.64 2.12 -3.88 3.45 c
--1.95 2.12 -3.63 3.26 -1.52 4.69 c
-f*
-15 G
-700.28 865.34 m
-1.03 0.71 2.79 0 4.79 -2.26 c
-2.18 -2.44 3.07 -4.35 0.52 -5.75 c
--1.98 -1.07 -2.59 2.09 -3.81 3.4 c
--1.92 2.08 -3.57 3.2 -1.51 4.62 c
-f*
-23 G
-700.33 865.27 m
-1.01 0.71 2.74 0 4.72 -2.23 c
-2.14 -2.4 2.99 -4.29 0.51 -5.66 c
--1.94 -1.07 -2.54 2.06 -3.74 3.34 c
--1.89 2.05 -3.52 3.14 -1.5 4.55 c
-f*
-30 G
-700.37 865.21 m
-0.99 0.7 2.7 0 4.64 -2.2 c
-2.11 -2.36 2.91 -4.22 0.51 -5.57 c
--1.89 -1.06 -2.49 2.03 -3.66 3.29 c
--1.86 2.01 -3.46 3.09 -1.49 4.47 c
-f*
-38 G
-700.41 865.14 m
-0.97 0.7 2.66 0 4.57 -2.16 c
-2.08 -2.33 2.83 -4.15 0.5 -5.48 c
--1.85 -1.06 -2.45 1.99 -3.59 3.24 c
--1.83 1.98 -3.41 3.03 -1.48 4.41 c
-f*
-46 G
-700.46 865.08 m
-0.95 0.69 2.62 0 4.5 -2.13 c
-2.04 -2.29 2.75 -4.09 0.49 -5.4 c
--1.8 -1.06 -2.4 1.96 -3.52 3.19 c
--1.8 1.94 -3.35 2.97 -1.47 4.33 c
-f*
-53 G
-700.5 865.01 m
-0.92 0.69 2.57 0 4.43 -2.09 c
-2.01 -2.25 2.67 -4.02 0.48 -5.31 c
--1.76 -1.05 -2.35 1.93 -3.45 3.14 c
--1.77 1.91 -3.3 2.91 -1.46 4.26 c
-f*
-61 G
-700.55 864.95 m
-0.9 0.68 2.53 0 4.35 -2.06 c
-1.98 -2.22 2.59 -3.96 0.47 -5.22 c
--1.72 -1.05 -2.3 1.9 -3.38 3.08 c
--1.74 1.87 -3.24 2.85 -1.45 4.19 c
-f*
-69 G
-700.59 864.89 m
-0.88 0.68 2.49 0 4.28 -2.02 c
-1.94 -2.18 2.52 -3.89 0.47 -5.13 c
--1.68 -1.05 -2.25 1.87 -3.31 3.03 c
--1.71 1.84 -3.19 2.79 -1.44 4.12 c
-f*
-76 G
-700.63 864.82 m
-0.85 0.68 2.45 0 4.21 -1.99 c
-1.91 -2.14 2.44 -3.82 0.46 -5.04 c
--1.63 -1.04 -2.2 1.83 -3.24 2.98 c
--1.68 1.8 -3.14 2.73 -1.43 4.05 c
-f*
-84 G
-700.68 864.76 m
-0.83 0.67 2.4 0 4.13 -1.95 c
-1.88 -2.1 2.36 -3.76 0.45 -4.96 c
--1.59 -1.04 -2.15 1.8 -3.17 2.93 c
--1.65 1.77 -3.08 2.68 -1.42 3.98 c
-f*
-92 G
-700.72 864.69 m
-0.81 0.67 2.36 0 4.06 -1.92 c
-1.84 -2.07 2.28 -3.69 0.44 -4.87 c
--1.55 -1.04 -2.1 1.77 -3.09 2.88 c
--1.62 1.73 -3.03 2.62 -1.41 3.91 c
-f*
-99 G
-700.77 864.63 m
-0.79 0.66 2.32 0 3.98 -1.88 c
-1.81 -2.03 2.2 -3.62 0.43 -4.78 c
--1.5 -1.04 -2.05 1.74 -3.02 2.82 c
--1.59 1.7 -2.97 2.56 -1.4 3.84 c
-f*
-107 G
-700.81 864.56 m
-0.76 0.66 2.27 0 3.91 -1.85 c
-1.78 -1.99 2.12 -3.56 0.43 -4.69 c
--1.46 -1.03 -2 1.71 -2.95 2.77 c
--1.57 1.66 -2.92 2.5 -1.39 3.77 c
-f*
-115 G
-700.85 864.5 m
-0.74 0.65 2.23 0 3.84 -1.81 c
-1.74 -1.95 2.04 -3.49 0.42 -4.61 c
--1.42 -1.03 -1.95 1.67 -2.88 2.72 c
--1.54 1.63 -2.86 2.44 -1.37 3.7 c
-f*
-122 G
-700.9 864.43 m
-0.72 0.65 2.19 0 3.77 -1.78 c
-1.71 -1.92 1.96 -3.42 0.41 -4.52 c
--1.37 -1.02 -1.9 1.64 -2.81 2.67 c
--1.51 1.59 -2.81 2.38 -1.37 3.63 c
-f*
-130 G
-700.94 864.37 m
-0.7 0.64 2.15 0 3.69 -1.75 c
-1.68 -1.88 1.88 -3.35 0.4 -4.43 c
--1.33 -1.02 -1.85 1.61 -2.74 2.62 c
--1.48 1.56 -2.75 2.32 -1.36 3.56 c
-f*
-138 G
-700.98 864.3 m
-0.68 0.64 2.11 0 3.62 -1.71 c
-1.64 -1.84 1.8 -3.29 0.4 -4.34 c
--1.29 -1.02 -1.8 1.58 -2.67 2.56 c
--1.45 1.52 -2.7 2.26 -1.35 3.49 c
-f*
-145 G
-701.03 864.24 m
-0.65 0.64 2.06 0 3.55 -1.68 c
-1.61 -1.81 1.72 -3.22 0.39 -4.25 c
--1.24 -1.01 -1.75 1.55 -2.6 2.51 c
--1.42 1.49 -2.64 2.21 -1.34 3.42 c
-f*
-153 G
-701.07 864.18 m
-0.63 0.63 2.02 0 3.47 -1.64 c
-1.58 -1.77 1.64 -3.16 0.38 -4.17 c
--1.2 -1.01 -1.7 1.51 -2.52 2.46 c
--1.39 1.45 -2.59 2.15 -1.33 3.35 c
-f*
-102 G
-664.33 797.74 m
--10.3 -0.4 -26.61 28.43 -27.01 16.47 c
--0.32 -10.14 0.24 -9.98 0.24 -19.8 c
-0 -6.57 -3.01 -7.05 -9.5 -16.95 c
--3.33 -5.23 -5.94 -10.85 -8 -16.55 c
--1.27 -3.41 -2.46 -6.97 -3.41 -10.45 c
--0.4 -1.74 -1.11 -3.56 -1.5 -5.31 c
--3.25 -11.96 -14.81 -26.69 -17.5 -38.65 c
--2.69 -11.88 -5.86 -19.48 -5.46 -35.4 c
-0.4 -15.92 0.55 -11.33 5.39 -15.29 c
-4.75 -3.96 9.66 -7.68 17.19 -14.33 c
-7.92 -6.89 24.39 -18.93 26.61 -22.65 c
-2.38 -3.8 2.3 -12.36 0.87 -15.13 c
--1.43 -2.69 -13.86 -4.2 -13.78 -4.2 c
--0.08 0 10.85 -15.05 12.99 -17.19 c
-2.06 -2.06 10.93 -11.96 47.04 -5.23 c
-20.35 3.8 36.12 15.21 47.52 26.22 c
-14.73 14.34 7.29 18.45 9.19 25.66 c
-2.77 10.38 11.8 14.26 13.86 25.98 c
-0.24 1.66 0.79 2.93 2.3 5.39 c
-2.3 3.48 1.74 10.38 1.74 16.71 c
-0 16.47 -1.9 33.26 -5.7 45.62 c
--3.48 11.56 -9.03 19.64 -13.78 30.1 c
--9.5 20.83 -9.03 30.18 -17.5 43.48 c
--9.66 15.36 -4.91 25.58 -17.74 24.95 c
--16 -0.87 -28.91 -22.81 -44.04 -23.44 c
-f*
-110 G
-664.31 796.55 m
--10.21 -0.39 -26.12 28.06 -26.67 16.7 c
--0.35 -9.63 0.11 -9.55 0.03 -18.97 c
--0.17 -6.46 -3.25 -7.3 -9.6 -17.03 c
--3.31 -5.24 -5.8 -10.79 -7.69 -16.36 c
--1.07 -3.58 -1.72 -7.06 -2.67 -10.48 c
--0.46 -1.81 -1.65 -3.5 -2.4 -5.55 c
--3.58 -11.86 -14.9 -26.6 -17.56 -38.37 c
--2.71 -11.89 -5.91 -19.46 -5.46 -35.35 c
-0.4 -15.4 0.43 -11.19 5.25 -15.2 c
-4.71 -3.98 9.72 -7.78 17.23 -14.41 c
-7.9 -6.87 24.46 -18.94 26.67 -22.65 c
-2.36 -3.79 2.34 -12.45 0.93 -15.21 c
--1.41 -2.68 -13.84 -4.26 -13.76 -4.26 c
--0.08 0 10.8 -14.92 12.93 -17.06 c
-2.06 -2.06 10.89 -11.89 46.95 -5.17 c
-20.38 3.8 36.44 15.13 47.39 26.24 c
-14.07 14.04 6.72 18.45 8.61 25.62 c
-2.76 10.36 12.4 14.26 14.46 25.96 c
-0.24 1.66 0.83 2.92 2.32 5.36 c
-2.31 3.52 1.72 10.39 1.74 16.7 c
-0.07 16.53 -1.88 33.26 -5.68 45.58 c
--3.49 11.53 -9.02 19.6 -13.77 30.04 c
--9.49 20.8 -9.04 30.16 -17.53 43.42 c
--9.45 14.97 -5.06 24.84 -17.61 24.19 c
--15.81 -0.91 -29.01 -23.12 -44.12 -23.74 c
-f*
-117 G
-664.29 795.35 m
--10.12 -0.38 -25.63 27.69 -26.32 16.92 c
--0.38 -9.12 -0.02 -9.11 -0.17 -18.14 c
--0.33 -6.34 -3.49 -7.55 -9.69 -17.11 c
--3.3 -5.25 -5.66 -10.74 -7.38 -16.18 c
--0.86 -3.75 -0.98 -7.16 -1.94 -10.5 c
--0.52 -1.87 -2.18 -3.45 -3.3 -5.78 c
--3.91 -11.76 -14.99 -26.51 -17.61 -38.08 c
--2.73 -11.9 -5.95 -19.45 -5.45 -35.31 c
-0.41 -14.88 0.31 -11.06 5.12 -15.11 c
-4.67 -4 9.78 -7.87 17.27 -14.49 c
-7.88 -6.86 24.53 -18.95 26.72 -22.64 c
-2.35 -3.78 2.39 -12.54 0.98 -15.29 c
--1.4 -2.67 -13.81 -4.32 -13.74 -4.32 c
--0.08 0 10.74 -14.8 12.88 -16.93 c
-2.05 -2.05 10.85 -11.82 46.85 -5.12 c
-20.4 3.8 36.76 15.05 47.25 26.27 c
-13.4 13.74 6.15 18.45 8.03 25.58 c
-2.76 10.34 13.01 14.26 15.05 25.95 c
-0.24 1.65 0.87 2.91 2.35 5.34 c
-2.31 3.56 1.69 10.41 1.74 16.7 c
-0.15 16.58 -1.85 33.25 -5.65 45.53 c
--3.49 11.5 -9.02 19.56 -13.75 29.98 c
--9.47 20.76 -9.06 30.14 -17.55 43.36 c
--9.23 14.58 -5.21 24.1 -17.48 23.43 c
--15.63 -0.95 -29.12 -23.43 -44.2 -24.04 c
-f*
-125 G
-664.28 794.16 m
--10.03 -0.37 -25.14 27.32 -25.98 17.15 c
--0.41 -8.62 -0.14 -8.68 -0.38 -17.32 c
--0.5 -6.22 -3.73 -7.81 -9.79 -17.19 c
--3.29 -5.26 -5.52 -10.68 -7.08 -15.99 c
--0.66 -3.92 -0.24 -7.25 -1.21 -10.53 c
--0.58 -1.93 -2.72 -3.39 -4.2 -6.02 c
--4.24 -11.66 -15.07 -26.42 -17.66 -37.8 c
--2.75 -11.91 -6 -19.43 -5.44 -35.26 c
-0.42 -14.36 0.19 -10.93 4.98 -15.03 c
-4.63 -4.01 9.84 -7.96 17.31 -14.57 c
-7.86 -6.84 24.59 -18.96 26.78 -22.64 c
-2.34 -3.76 2.44 -12.64 1.04 -15.37 c
--1.39 -2.66 -13.79 -4.39 -13.71 -4.39 c
--0.08 0 10.69 -14.67 12.82 -16.8 c
-2.05 -2.05 10.82 -11.75 46.75 -5.07 c
-20.42 3.8 37.08 14.97 47.12 26.29 c
-12.74 13.44 5.58 18.45 7.45 25.54 c
-2.75 10.32 13.61 14.26 15.65 25.93 c
-0.24 1.64 0.9 2.9 2.38 5.32 c
-2.32 3.6 1.67 10.42 1.74 16.69 c
-0.22 16.64 -1.82 33.24 -5.62 45.49 c
--3.49 11.47 -9.01 19.51 -13.74 29.91 c
--9.45 20.73 -9.07 30.12 -17.57 43.3 c
--9.01 14.19 -5.36 23.36 -17.36 22.67 c
--15.45 -0.98 -29.23 -23.73 -44.28 -24.34 c
-f*
-133 G
-664.26 792.96 m
--9.95 -0.36 -24.65 26.95 -25.64 17.37 c
--0.44 -8.11 -0.27 -8.24 -0.58 -16.49 c
--0.66 -6.11 -3.96 -8.06 -9.88 -17.27 c
--3.28 -5.28 -5.38 -10.62 -6.77 -15.8 c
--0.46 -4.1 0.5 -7.35 -0.48 -10.55 c
--0.64 -2 -3.26 -3.33 -5.1 -6.26 c
--4.57 -11.56 -15.16 -26.33 -17.72 -37.51 c
--2.77 -11.92 -6.04 -19.41 -5.44 -35.21 c
-0.42 -13.84 0.07 -10.8 4.85 -14.94 c
-4.59 -4.03 9.9 -8.06 17.35 -14.64 c
-7.85 -6.82 24.66 -18.96 26.84 -22.64 c
-2.33 -3.75 2.48 -12.73 1.1 -15.44 c
--1.37 -2.65 -13.77 -4.45 -13.69 -4.45 c
--0.08 0 10.64 -14.55 12.76 -16.68 c
-2.05 -2.05 10.78 -11.68 46.65 -5.01 c
-20.44 3.8 37.4 14.89 46.98 26.32 c
-12.08 13.15 5.01 18.45 6.87 25.51 c
-2.74 10.3 14.22 14.26 16.25 25.91 c
-0.24 1.64 0.94 2.88 2.41 5.29 c
-2.33 3.63 1.64 10.44 1.73 16.68 c
-0.29 16.69 -1.8 33.24 -5.59 45.45 c
--3.5 11.44 -9.01 19.47 -13.72 29.85 c
--9.44 20.7 -9.09 30.1 -17.59 43.24 c
--8.79 13.8 -5.52 22.62 -17.23 21.92 c
--15.26 -1.02 -29.34 -24.04 -44.37 -24.64 c
-f*
-140 G
-664.24 791.77 m
--9.86 -0.36 -24.16 26.58 -25.3 17.59 c
--0.47 -7.6 -0.4 -7.81 -0.78 -15.66 c
--0.83 -5.99 -4.2 -8.31 -9.98 -17.35 c
--3.27 -5.29 -5.25 -10.56 -6.46 -15.61 c
--0.26 -4.27 1.24 -7.44 0.26 -10.58 c
--0.7 -2.06 -3.8 -3.27 -6 -6.5 c
--4.9 -11.45 -15.25 -26.24 -17.77 -37.23 c
--2.79 -11.93 -6.09 -19.39 -5.43 -35.16 c
-0.43 -13.33 -0.05 -10.67 4.71 -14.85 c
-4.55 -4.05 9.96 -8.15 17.4 -14.72 c
-7.83 -6.8 24.73 -18.97 26.89 -22.63 c
-2.32 -3.74 2.53 -12.83 1.15 -15.52 c
--1.36 -2.64 -13.75 -4.52 -13.67 -4.52 c
--0.08 0 10.58 -14.43 12.71 -16.55 c
-2.05 -2.04 10.74 -11.61 46.55 -4.96 c
-20.47 3.8 37.72 14.81 46.85 26.34 c
-11.41 12.85 4.44 18.44 6.29 25.47 c
-2.73 10.28 14.82 14.25 16.85 25.9 c
-0.24 1.63 0.98 2.87 2.43 5.27 c
-2.34 3.67 1.61 10.46 1.73 16.67 c
-0.37 16.75 -1.77 33.23 -5.57 45.4 c
--3.5 11.41 -9 19.43 -13.71 29.79 c
--9.42 20.67 -9.1 30.08 -17.61 43.18 c
--8.58 13.41 -5.67 21.88 -17.1 21.16 c
--15.08 -1.06 -29.44 -24.35 -44.45 -24.94 c
-f*
-148 G
-664.22 790.58 m
--9.77 -0.35 -23.67 26.21 -24.96 17.82 c
--0.5 -7.1 -0.53 -7.38 -0.99 -14.83 c
--0.99 -5.87 -4.44 -8.56 -10.07 -17.43 c
--3.25 -5.3 -5.11 -10.51 -6.15 -15.42 c
--0.05 -4.44 1.98 -7.54 0.99 -10.6 c
--0.76 -2.12 -4.33 -3.21 -6.9 -6.74 c
--5.23 -11.35 -15.34 -26.15 -17.82 -36.95 c
--2.81 -11.94 -6.14 -19.37 -5.42 -35.11 c
-0.44 -12.81 -0.17 -10.54 4.58 -14.77 c
-4.5 -4.07 10.02 -8.24 17.44 -14.8 c
-7.81 -6.79 24.79 -18.98 26.95 -22.63 c
-2.31 -3.72 2.58 -12.92 1.21 -15.6 c
--1.35 -2.62 -13.72 -4.58 -13.64 -4.58 c
--0.08 0 10.53 -14.3 12.65 -16.42 c
-2.04 -2.04 10.7 -11.54 46.45 -4.91 c
-20.49 3.79 38.04 14.73 46.71 26.37 c
-10.75 12.55 3.88 18.44 5.71 25.43 c
-2.73 10.27 15.43 14.25 17.44 25.88 c
-0.24 1.63 1.02 2.86 2.46 5.25 c
-2.35 3.71 1.59 10.48 1.73 16.67 c
-0.44 16.8 -1.75 33.22 -5.54 45.36 c
--3.5 11.38 -9 19.39 -13.69 29.73 c
--9.4 20.64 -9.12 30.07 -17.64 43.12 c
--8.36 13.02 -5.82 21.14 -16.97 20.4 c
--14.9 -1.1 -29.55 -24.66 -44.53 -25.24 c
-f*
-156 G
-664.2 789.38 m
--9.69 -0.34 -23.17 25.84 -24.62 18.04 c
--0.53 -6.59 -0.65 -6.94 -1.19 -14 c
--1.16 -5.76 -4.68 -8.82 -10.17 -17.52 c
--3.24 -5.31 -4.97 -10.45 -5.85 -15.24 c
-0.15 -4.61 2.72 -7.63 1.72 -10.62 c
--0.82 -2.18 -4.87 -3.15 -7.8 -6.98 c
--5.56 -11.25 -15.42 -26.06 -17.87 -36.66 c
--2.83 -11.96 -6.18 -19.35 -5.41 -35.06 c
-0.45 -12.29 -0.29 -10.41 4.44 -14.68 c
-4.46 -4.08 10.08 -8.34 17.48 -14.87 c
-7.79 -6.77 24.86 -18.99 27 -22.62 c
-2.3 -3.71 2.63 -13.02 1.27 -15.68 c
--1.33 -2.61 -13.7 -4.64 -13.62 -4.64 c
--0.08 0 10.48 -14.18 12.59 -16.29 c
-2.04 -2.04 10.66 -11.47 46.35 -4.85 c
-20.51 3.79 38.36 14.66 46.58 26.4 c
-10.09 12.26 3.31 18.44 5.14 25.39 c
-2.72 10.25 16.03 14.25 18.04 25.86 c
-0.24 1.62 1.05 2.85 2.49 5.23 c
-2.36 3.75 1.56 10.49 1.73 16.66 c
-0.51 16.86 -1.72 33.22 -5.51 45.32 c
--3.5 11.35 -9 19.35 -13.68 29.67 c
--9.39 20.6 -9.13 30.05 -17.66 43.06 c
--8.14 12.63 -5.97 20.4 -16.84 19.64 c
--14.71 -1.13 -29.66 -24.96 -44.61 -25.54 c
-f*
-163 G
-664.18 788.19 m
--9.6 -0.33 -22.68 25.47 -24.28 18.27 c
--0.56 -6.08 -0.78 -6.51 -1.4 -13.17 c
--1.32 -5.64 -4.92 -9.07 -10.26 -17.6 c
--3.23 -5.32 -4.83 -10.39 -5.54 -15.05 c
-0.35 -4.79 3.46 -7.73 2.46 -10.65 c
--0.88 -2.25 -5.41 -3.09 -8.7 -7.22 c
--5.89 -11.15 -15.51 -25.97 -17.93 -36.38 c
--2.85 -11.97 -6.23 -19.33 -5.41 -35.02 c
-0.45 -11.77 -0.41 -10.28 4.31 -14.59 c
-4.42 -4.1 10.14 -8.43 17.52 -14.95 c
-7.77 -6.75 24.93 -19 27.06 -22.62 c
-2.29 -3.7 2.67 -13.11 1.32 -15.76 c
--1.32 -2.6 -13.68 -4.71 -13.6 -4.71 c
--0.08 0 10.42 -14.05 12.54 -16.17 c
-2.04 -2.04 10.63 -11.4 46.25 -4.8 c
-20.53 3.79 38.68 14.58 46.45 26.42 c
-9.42 11.96 2.74 18.44 4.56 25.35 c
-2.71 10.23 16.63 14.25 18.64 25.85 c
-0.24 1.61 1.09 2.84 2.52 5.2 c
-2.36 3.79 1.54 10.51 1.72 16.65 c
-0.59 16.91 -1.7 33.21 -5.49 45.27 c
--3.51 11.31 -8.99 19.3 -13.66 29.61 c
--9.37 20.57 -9.15 30.03 -17.68 43.01 c
--7.92 12.24 -6.12 19.66 -16.71 18.88 c
--14.53 -1.17 -29.76 -25.27 -44.69 -25.84 c
-f*
-171 G
-664.16 787 m
--9.51 -0.32 -22.19 25.1 -23.94 18.49 c
--0.59 -5.57 -0.91 -6.08 -1.6 -12.35 c
--1.49 -5.52 -5.16 -9.32 -10.36 -17.68 c
--3.22 -5.34 -4.69 -10.34 -5.23 -14.86 c
-0.55 -4.96 4.2 -7.82 3.19 -10.67 c
--0.94 -2.31 -5.95 -3.03 -9.6 -7.46 c
--6.22 -11.05 -15.6 -25.88 -17.98 -36.09 c
--2.87 -11.98 -6.27 -19.31 -5.4 -34.97 c
-0.46 -11.25 -0.53 -10.15 4.18 -14.51 c
-4.38 -4.12 10.2 -8.52 17.56 -15.03 c
-7.75 -6.74 24.99 -19.01 27.12 -22.62 c
-2.28 -3.69 2.72 -13.21 1.38 -15.84 c
--1.3 -2.59 -13.65 -4.77 -13.58 -4.77 c
--0.08 0 10.37 -13.93 12.48 -16.04 c
-2.03 -2.03 10.59 -11.33 46.16 -4.75 c
-20.55 3.79 39 14.5 46.31 26.45 c
-8.76 11.66 2.17 18.43 3.98 25.31 c
-2.7 10.21 17.24 14.25 19.24 25.83 c
-0.23 1.61 1.13 2.82 2.55 5.18 c
-2.37 3.82 1.51 10.52 1.72 16.64 c
-0.66 16.96 -1.67 33.2 -5.46 45.23 c
--3.51 11.28 -8.99 19.26 -13.65 29.55 c
--9.35 20.54 -9.16 30.01 -17.7 42.95 c
--7.71 11.85 -6.27 18.92 -16.59 18.12 c
--14.35 -1.21 -29.87 -25.58 -44.78 -26.14 c
-f*
-179 G
-664.14 785.8 m
--9.42 -0.31 -21.7 24.73 -23.6 18.71 c
--0.62 -5.07 -1.04 -5.64 -1.81 -11.52 c
--1.66 -5.41 -5.4 -9.57 -10.45 -17.76 c
--3.2 -5.35 -4.55 -10.28 -4.92 -14.67 c
-0.75 -5.13 4.94 -7.91 3.92 -10.7 c
--1.01 -2.37 -6.49 -2.98 -10.5 -7.7 c
--6.55 -10.95 -15.69 -25.79 -18.03 -35.81 c
--2.89 -11.99 -6.32 -19.29 -5.39 -34.92 c
-0.47 -10.73 -0.65 -10.02 4.04 -14.42 c
-4.34 -4.14 10.26 -8.62 17.61 -15.1 c
-7.73 -6.72 25.06 -19.02 27.17 -22.61 c
-2.27 -3.67 2.77 -13.3 1.44 -15.92 c
--1.29 -2.58 -13.63 -4.83 -13.55 -4.83 c
--0.08 0 10.32 -13.8 12.43 -15.91 c
-2.03 -2.03 10.55 -11.26 46.05 -4.69 c
-20.58 3.79 39.32 14.42 46.18 26.47 c
-8.1 11.37 1.6 18.43 3.4 25.27 c
-2.7 10.19 17.84 14.25 19.83 25.82 c
-0.23 1.6 1.17 2.81 2.57 5.16 c
-2.38 3.86 1.49 10.54 1.72 16.64 c
-0.73 17.02 -1.64 33.19 -5.43 45.19 c
--3.51 11.25 -8.98 19.22 -13.63 29.49 c
--9.34 20.51 -9.18 29.99 -17.73 42.89 c
--7.49 11.46 -6.42 18.18 -16.46 17.37 c
--14.16 -1.25 -29.98 -25.89 -44.86 -26.44 c
-f*
-186 G
-664.12 784.61 m
--9.34 -0.31 -21.21 24.36 -23.26 18.94 c
--0.65 -4.56 -1.16 -5.21 -2.01 -10.69 c
--1.82 -5.29 -5.63 -9.82 -10.55 -17.84 c
--3.19 -5.36 -4.41 -10.22 -4.62 -14.48 c
-0.95 -5.3 5.67 -8.01 4.65 -10.72 c
--1.07 -2.44 -7.02 -2.92 -11.4 -7.94 c
--6.88 -10.85 -15.77 -25.7 -18.09 -35.53 c
--2.91 -12 -6.37 -19.28 -5.38 -34.87 c
-0.47 -10.21 -0.77 -9.88 3.91 -14.34 c
-4.3 -4.15 10.32 -8.71 17.65 -15.18 c
-7.72 -6.7 25.13 -19.03 27.23 -22.61 c
-2.26 -3.66 2.81 -13.4 1.49 -16 c
--1.28 -2.57 -13.61 -4.9 -13.53 -4.9 c
--0.08 0 10.26 -13.68 12.37 -15.78 c
-2.03 -2.03 10.51 -11.19 45.96 -4.64 c
-20.6 3.79 39.64 14.34 46.04 26.5 c
-7.43 11.07 1.03 18.43 2.82 25.23 c
-2.69 10.18 18.44 14.25 20.43 25.8 c
-0.23 1.59 1.2 2.8 2.6 5.13 c
-2.39 3.9 1.46 10.56 1.71 16.63 c
-0.81 17.07 -1.62 33.19 -5.4 45.15 c
--3.52 11.22 -8.98 19.18 -13.62 29.43 c
--9.32 20.47 -9.19 29.98 -17.75 42.83 c
--7.27 11.07 -6.57 17.44 -16.33 16.61 c
--13.98 -1.28 -30.08 -26.19 -44.94 -26.73 c
-f*
-194 G
-664.1 783.42 m
--9.25 -0.3 -20.72 23.99 -22.91 19.16 c
--0.68 -4.05 -1.29 -4.78 -2.22 -9.86 c
--1.99 -5.17 -5.87 -10.08 -10.64 -17.92 c
--3.18 -5.37 -4.27 -10.16 -4.31 -14.29 c
-1.16 -5.48 6.41 -8.1 5.39 -10.74 c
--1.13 -2.5 -7.56 -2.86 -12.3 -8.18 c
--7.22 -10.75 -15.86 -25.61 -18.14 -35.24 c
--2.93 -12.01 -6.41 -19.26 -5.38 -34.82 c
-0.48 -9.7 -0.89 -9.75 3.77 -14.25 c
-4.26 -4.17 10.38 -8.8 17.69 -15.26 c
-7.7 -6.68 25.2 -19.03 27.28 -22.6 c
-2.24 -3.65 2.86 -13.49 1.55 -16.08 c
--1.26 -2.56 -13.59 -4.96 -13.51 -4.96 c
--0.08 0 10.21 -13.55 12.31 -15.66 c
-2.03 -2.03 10.47 -11.12 45.86 -4.59 c
-20.62 3.79 39.96 14.26 45.91 26.52 c
-6.77 10.77 0.46 18.43 2.24 25.19 c
-2.68 10.16 19.05 14.25 21.03 25.78 c
-0.23 1.59 1.24 2.79 2.63 5.11 c
-2.4 3.94 1.44 10.58 1.71 16.62 c
-0.88 17.13 -1.59 33.18 -5.38 45.1 c
--3.52 11.19 -8.97 19.14 -13.6 29.37 c
--9.3 20.44 -9.2 29.96 -17.77 42.77 c
--7.05 10.68 -6.73 16.7 -16.2 15.85 c
--13.8 -1.32 -30.19 -26.5 -45.02 -27.03 c
-f*
-202 G
-664.08 782.22 m
--9.16 -0.29 -20.23 23.62 -22.57 19.39 c
--0.71 -3.55 -1.42 -4.34 -2.42 -9.03 c
--2.15 -5.05 -6.11 -10.33 -10.74 -18 c
--3.17 -5.38 -4.13 -10.11 -4 -14.11 c
-1.36 -5.65 7.15 -8.2 6.12 -10.77 c
--1.19 -2.56 -8.1 -2.8 -13.19 -8.42 c
--7.55 -10.64 -15.95 -25.51 -18.19 -34.96 c
--2.95 -12.02 -6.46 -19.24 -5.37 -34.77 c
-0.49 -9.18 -1.01 -9.62 3.64 -14.16 c
-4.22 -4.19 10.44 -8.9 17.73 -15.33 c
-7.68 -6.67 25.26 -19.04 27.34 -22.6 c
-2.23 -3.63 2.91 -13.59 1.61 -16.16 c
--1.25 -2.54 -13.56 -5.02 -13.49 -5.02 c
--0.08 0 10.16 -13.43 12.26 -15.53 c
-2.02 -2.02 10.43 -11.05 45.76 -4.53 c
-20.64 3.78 40.28 14.19 45.77 26.55 c
-6.11 10.48 -0.1 18.43 1.66 25.15 c
-2.67 10.14 19.65 14.25 21.63 25.77 c
-0.23 1.58 1.28 2.78 2.66 5.09 c
-2.4 3.97 1.41 10.59 1.71 16.61 c
-0.95 17.18 -1.57 33.17 -5.35 45.06 c
--3.52 11.16 -8.97 19.09 -13.59 29.31 c
--9.29 20.41 -9.22 29.94 -17.79 42.71 c
--6.84 10.29 -6.87 15.96 -16.07 15.09 c
--13.61 -1.36 -30.3 -26.81 -45.1 -27.33 c
-f*
-209 G
-664.06 781.03 m
--9.07 -0.28 -19.74 23.25 -22.23 19.61 c
--0.74 -3.04 -1.55 -3.91 -2.62 -8.2 c
--2.32 -4.94 -6.35 -10.58 -10.83 -18.08 c
--3.16 -5.4 -3.99 -10.05 -3.69 -13.92 c
-1.56 -5.82 7.89 -8.29 6.85 -10.79 c
--1.25 -2.63 -8.64 -2.74 -14.09 -8.66 c
--7.88 -10.54 -16.04 -25.42 -18.25 -34.67 c
--2.96 -12.03 -6.5 -19.22 -5.36 -34.72 c
-0.5 -8.66 -1.13 -9.49 3.5 -14.08 c
-4.18 -4.21 10.5 -8.99 17.77 -15.41 c
-7.66 -6.65 25.33 -19.05 27.4 -22.59 c
-2.22 -3.62 2.95 -13.68 1.66 -16.24 c
--1.24 -2.53 -13.54 -5.09 -13.46 -5.09 c
--0.08 0 10.1 -13.3 12.2 -15.4 c
-2.02 -2.02 10.4 -10.98 45.66 -4.48 c
-20.67 3.78 40.6 14.11 45.64 26.58 c
-5.44 10.18 -0.67 18.42 1.08 25.12 c
-2.67 10.12 20.26 14.25 22.22 25.75 c
-0.23 1.58 1.32 2.77 2.68 5.07 c
-2.41 4.01 1.39 10.61 1.71 16.61 c
-1.03 17.24 -1.54 33.17 -5.32 45.02 c
--3.53 11.13 -8.96 19.05 -13.57 29.25 c
--9.27 20.38 -9.23 29.92 -17.82 42.65 c
--6.62 9.89 -7.03 15.23 -15.94 14.33 c
--13.43 -1.39 -30.4 -27.12 -45.19 -27.63 c
-f*
-217 G
-664.05 779.84 m
--8.99 -0.27 -19.25 22.88 -21.89 19.83 c
--0.77 -2.53 -1.67 -3.48 -2.83 -7.38 c
--2.48 -4.82 -6.59 -10.83 -10.93 -18.16 c
--3.14 -5.41 -3.86 -9.99 -3.39 -13.73 c
-1.76 -5.99 8.63 -8.39 7.58 -10.82 c
--1.31 -2.69 -9.18 -2.68 -14.99 -8.89 c
--8.21 -10.44 -16.12 -25.33 -18.3 -34.39 c
--2.98 -12.04 -6.55 -19.2 -5.35 -34.68 c
-0.5 -8.14 -1.25 -9.36 3.37 -13.99 c
-4.13 -4.23 10.56 -9.08 17.82 -15.49 c
-7.64 -6.63 25.39 -19.06 27.45 -22.59 c
-2.21 -3.61 3 -13.78 1.72 -16.32 c
--1.22 -2.52 -13.52 -5.15 -13.44 -5.15 c
--0.08 0 10.05 -13.18 12.14 -15.27 c
-2.02 -2.02 10.36 -10.91 45.56 -4.43 c
-20.69 3.78 40.92 14.03 45.5 26.6 c
-4.78 9.88 -1.24 18.42 0.51 25.08 c
-2.66 10.1 20.86 14.25 22.82 25.73 c
-0.23 1.57 1.35 2.75 2.71 5.04 c
-2.42 4.05 1.36 10.62 1.71 16.6 c
-1.1 17.29 -1.51 33.16 -5.3 44.97 c
--3.53 11.1 -8.96 19.01 -13.56 29.19 c
--9.25 20.35 -9.25 29.9 -17.84 42.59 c
--6.4 9.5 -7.18 14.48 -15.82 13.57 c
--13.24 -1.43 -30.51 -27.43 -45.27 -27.93 c
-f*
-225 G
-664.03 778.64 m
--8.9 -0.26 -18.76 22.51 -21.55 20.06 c
--0.8 -2.03 -1.8 -3.04 -3.03 -6.55 c
--2.65 -4.7 -6.83 -11.09 -11.02 -18.24 c
--3.13 -5.42 -3.71 -9.94 -3.08 -13.54 c
-1.96 -6.17 9.37 -8.48 8.32 -10.84 c
--1.37 -2.75 -9.71 -2.62 -15.89 -9.13 c
--8.54 -10.34 -16.21 -25.24 -18.35 -34.11 c
--3 -12.05 -6.6 -19.18 -5.35 -34.63 c
-0.51 -7.62 -1.37 -9.23 3.23 -13.9 c
-4.09 -4.24 10.62 -9.18 17.86 -15.56 c
-7.62 -6.62 25.46 -19.07 27.51 -22.59 c
-2.2 -3.59 3.05 -13.87 1.78 -16.4 c
--1.21 -2.51 -13.49 -5.22 -13.42 -5.22 c
--0.08 0 10 -13.05 12.09 -15.15 c
-2.01 -2.01 10.32 -10.83 45.46 -4.37 c
-20.71 3.78 41.24 13.95 45.37 26.63 c
-4.12 9.58 -1.81 18.42 -0.07 25.04 c
-2.65 10.09 21.46 14.25 23.42 25.72 c
-0.23 1.57 1.39 2.74 2.74 5.02 c
-2.43 4.09 1.33 10.64 1.7 16.59 c
-1.17 17.35 -1.49 33.15 -5.27 44.93 c
--3.53 11.06 -8.95 18.97 -13.54 29.13 c
--9.24 20.31 -9.26 29.88 -17.86 42.53 c
--6.19 9.11 -7.33 13.74 -15.69 12.82 c
--13.06 -1.47 -30.62 -27.73 -45.35 -28.23 c
-f*
-232 G
-664.01 777.45 m
--8.81 -0.26 -18.27 22.14 -21.21 20.28 c
--0.83 -1.52 -1.93 -2.61 -3.24 -5.72 c
--2.81 -4.59 -7.06 -11.34 -11.12 -18.32 c
--3.12 -5.43 -3.58 -9.88 -2.77 -13.35 c
-2.17 -6.34 10.11 -8.58 9.05 -10.87 c
--1.43 -2.81 -10.25 -2.56 -16.79 -9.37 c
--8.87 -10.24 -16.3 -25.15 -18.41 -33.82 c
--3.02 -12.06 -6.64 -19.16 -5.34 -34.58 c
-0.52 -7.1 -1.49 -9.1 3.1 -13.82 c
-4.05 -4.26 10.68 -9.27 17.9 -15.64 c
-7.6 -6.6 25.53 -19.08 27.56 -22.58 c
-2.19 -3.58 3.09 -13.97 1.83 -16.48 c
--1.2 -2.5 -13.47 -5.28 -13.39 -5.28 c
--0.08 0 9.94 -12.93 12.03 -15.02 c
-2.01 -2.01 10.28 -10.76 45.36 -4.32 c
-20.73 3.78 41.56 13.87 45.24 26.65 c
-3.45 9.29 -2.38 18.42 -0.65 25 c
-2.64 10.07 22.07 14.25 24.02 25.7 c
-0.23 1.56 1.43 2.73 2.77 5 c
-2.44 4.12 1.31 10.66 1.7 16.58 c
-1.25 17.4 -1.46 33.15 -5.24 44.89 c
--3.53 11.03 -8.95 18.92 -13.53 29.07 c
--9.22 20.28 -9.28 29.87 -17.88 42.47 c
--5.97 8.72 -7.48 13.01 -15.56 12.06 c
--12.88 -1.5 -30.72 -28.04 -45.43 -28.53 c
-f*
-240 G
-663.99 776.26 m
--8.73 -0.25 -17.78 21.77 -20.87 20.51 c
--0.86 -1.01 -2.05 -2.18 -3.44 -4.89 c
--2.98 -4.47 -7.3 -11.59 -11.21 -18.4 c
--3.11 -5.45 -3.44 -9.82 -2.47 -13.16 c
-2.37 -6.51 10.85 -8.67 9.78 -10.89 c
--1.49 -2.88 -10.79 -2.5 -17.69 -9.61 c
--9.2 -10.14 -16.39 -25.06 -18.46 -33.54 c
--3.04 -12.07 -6.69 -19.14 -5.33 -34.53 c
-0.53 -6.58 -1.61 -8.97 2.97 -13.73 c
-4.01 -4.28 10.74 -9.37 17.94 -15.72 c
-7.59 -6.58 25.6 -19.09 27.62 -22.58 c
-2.18 -3.57 3.14 -14.06 1.89 -16.56 c
--1.18 -2.49 -13.45 -5.34 -13.37 -5.34 c
--0.08 0 9.89 -12.81 11.97 -14.89 c
-2.01 -2.01 10.24 -10.69 45.26 -4.27 c
-20.75 3.78 41.88 13.79 45.1 26.68 c
-2.79 8.99 -2.95 18.42 -1.23 24.96 c
-2.63 10.05 22.67 14.25 24.61 25.69 c
-0.23 1.55 1.47 2.72 2.79 4.98 c
-2.45 4.16 1.28 10.67 1.7 16.58 c
-1.32 17.46 -1.44 33.14 -5.22 44.84 c
--3.54 11 -8.94 18.88 -13.51 29.01 c
--9.2 20.25 -9.29 29.85 -17.91 42.41 c
--5.75 8.33 -7.63 12.26 -15.43 11.3 c
--12.69 -1.54 -30.83 -28.35 -45.52 -28.83 c
-f*
-248 G
-663.97 775.06 m
--8.64 -0.24 -17.28 21.4 -20.52 20.73 c
--0.89 -0.51 -2.18 -1.74 -3.65 -4.06 c
--3.15 -4.35 -7.54 -11.84 -11.31 -18.48 c
--3.09 -5.46 -3.3 -9.76 -2.16 -12.98 c
-2.57 -6.68 11.59 -8.76 10.51 -10.92 c
--1.56 -2.94 -11.33 -2.45 -18.59 -9.85 c
--9.53 -10.04 -16.47 -24.97 -18.51 -33.25 c
--3.06 -12.08 -6.73 -19.12 -5.32 -34.48 c
-0.53 -6.06 -1.73 -8.84 2.83 -13.64 c
-3.97 -4.3 10.8 -9.46 17.98 -15.79 c
-7.57 -6.56 25.66 -19.1 27.68 -22.58 c
-2.17 -3.56 3.19 -14.16 1.95 -16.64 c
--1.17 -2.48 -13.43 -5.41 -13.35 -5.41 c
--0.08 0 9.84 -12.68 11.92 -14.76 c
-2.01 -2.01 10.21 -10.62 45.16 -4.21 c
-20.78 3.78 42.2 13.71 44.97 26.71 c
-2.13 8.69 -3.51 18.41 -1.81 24.92 c
-2.63 10.03 23.28 14.25 25.21 25.67 c
-0.23 1.55 1.5 2.71 2.82 4.95 c
-2.46 4.2 1.26 10.69 1.7 16.57 c
-1.39 17.51 -1.41 33.13 -5.19 44.8 c
--3.54 10.97 -8.94 18.84 -13.5 28.95 c
--9.18 20.21 -9.31 29.83 -17.93 42.35 c
--5.53 7.94 -7.78 11.52 -15.3 10.54 c
--12.51 -1.58 -30.94 -28.66 -45.6 -29.13 c
-f*
-255 G
-663.95 773.87 m
--8.55 -0.23 -16.79 21.03 -20.18 20.95 c
--0.92 0 -2.31 -1.31 -3.85 -3.24 c
--3.31 -4.24 -7.78 -12.09 -11.4 -18.57 c
--3.08 -5.47 -3.16 -9.71 -1.85 -12.79 c
-2.77 -6.86 12.33 -8.86 11.25 -10.94 c
--1.62 -3 -11.86 -2.39 -19.49 -10.09 c
--9.86 -9.94 -16.56 -24.88 -18.57 -32.97 c
--3.08 -12.09 -6.78 -19.1 -5.32 -34.43 c
-0.54 -5.55 -1.85 -8.71 2.7 -13.56 c
-3.93 -4.31 10.86 -9.55 18.03 -15.87 c
-7.55 -6.55 25.73 -19.1 27.73 -22.57 c
-2.16 -3.54 3.24 -14.25 2 -16.72 c
--1.16 -2.47 -13.4 -5.47 -13.33 -5.47 c
--0.08 0 9.78 -12.56 11.86 -14.64 c
-2 -2 10.17 -10.55 45.07 -4.16 c
-20.8 3.77 42.52 13.64 44.83 26.73 c
-1.46 8.4 -4.08 18.41 -2.39 24.88 c
-2.62 10.01 23.88 14.25 25.81 25.65 c
-0.23 1.54 1.54 2.7 2.85 4.93 c
-2.46 4.24 1.23 10.71 1.69 16.56 c
-1.46 17.56 -1.39 33.13 -5.16 44.76 c
--3.54 10.94 -8.94 18.8 -13.48 28.89 c
--9.17 20.18 -9.32 29.81 -17.95 42.29 c
--5.32 7.55 -7.93 10.79 -15.18 9.78 c
--12.33 -1.62 -31.04 -28.96 -45.68 -29.43 c
-f*
-153 89 0 rG
-669.8 852.07 m
-5.78 0.71 13.7 -0.71 17.34 -3.41 c
-3.41 -2.53 5.78 -3.88 8.87 -4.91 c
-10.38 -3.41 24 -4.99 23.36 -14.34 c
--0.71 -11.17 -3.96 -16.16 -13.23 -19.09 c
--7.44 -2.3 -20.75 -15.21 -31.05 -15.21 c
--4.59 0 -11.01 -0.24 -14.73 1.11 c
--3.56 1.27 -8.55 7.29 -14.41 12.12 c
--5.86 4.75 -11.33 9.82 -11.48 16.47 c
--0.24 7.05 4.36 9.35 10.85 14.97 c
-3.41 3.01 9.58 8 13.86 10.22 c
-3.96 1.98 6.49 1.58 10.61 2.06 c
-f*
-158 95 0 rG
-669.92 851.97 m
-5.75 0.71 13.62 -0.71 17.24 -3.39 c
-3.39 -2.52 5.75 -3.86 8.82 -4.88 c
-10.31 -3.39 23.9 -4.98 23.28 -14.27 c
--0.71 -11.1 -4.04 -16.04 -13.25 -18.95 c
--7.4 -2.28 -20.64 -14.95 -30.88 -15 c
--4.63 -0.04 -10.92 -0.26 -14.62 1.07 c
--3.54 1.26 -8.51 7.27 -14.33 12.07 c
--5.82 4.72 -11.29 9.65 -11.35 16.24 c
--0.17 6.88 4.3 9.25 10.75 14.84 c
-3.38 2.98 9.45 8.03 13.71 10.27 c
-3.92 1.98 6.53 1.53 10.62 2 c
-f*
-163 101 0 rG
-670.04 851.86 m
-5.72 0.71 13.54 -0.7 17.15 -3.37 c
-3.37 -2.51 5.71 -3.84 8.77 -4.85 c
-10.25 -3.37 23.81 -4.97 23.19 -14.21 c
--0.7 -11.03 -4.11 -15.92 -13.26 -18.8 c
--7.35 -2.26 -20.54 -14.69 -30.71 -14.8 c
--4.67 -0.07 -10.83 -0.28 -14.5 1.04 c
--3.51 1.25 -8.47 7.25 -14.26 12.01 c
--5.78 4.69 -11.24 9.48 -11.21 16.01 c
--0.1 6.71 4.25 9.16 10.65 14.71 c
-3.35 2.95 9.33 8.07 13.56 10.32 c
-3.88 1.99 6.56 1.47 10.63 1.94 c
-f*
-168 106 0 rG
-670.16 851.76 m
-5.68 0.7 13.47 -0.7 17.05 -3.35 c
-3.35 -2.49 5.68 -3.82 8.72 -4.83 c
-10.19 -3.35 23.71 -4.97 23.1 -14.14 c
--0.69 -10.96 -4.19 -15.8 -13.28 -18.66 c
--7.3 -2.25 -20.43 -14.43 -30.54 -14.6 c
--4.7 -0.11 -10.73 -0.3 -14.38 1.01 c
--3.48 1.24 -8.43 7.23 -14.18 11.96 c
--5.74 4.66 -11.2 9.31 -11.08 15.78 c
--0.03 6.54 4.2 9.07 10.55 14.57 c
-3.33 2.93 9.2 8.1 13.41 10.37 c
-3.84 1.99 6.59 1.42 10.64 1.89 c
-f*
-174 112 0 rG
-670.28 851.66 m
-5.65 0.7 13.39 -0.7 16.95 -3.33 c
-3.33 -2.48 5.65 -3.81 8.67 -4.8 c
-10.12 -3.33 23.61 -4.96 23.01 -14.08 c
--0.68 -10.9 -4.26 -15.69 -13.3 -18.52 c
--7.24 -2.23 -20.33 -14.17 -30.37 -14.39 c
--4.74 -0.14 -10.64 -0.32 -14.27 0.97 c
--3.45 1.22 -8.38 7.22 -14.1 11.91 c
--5.7 4.63 -11.16 9.15 -10.94 15.55 c
-0.03 6.37 4.14 8.98 10.45 14.44 c
-3.3 2.9 9.07 8.14 13.26 10.42 c
-3.8 1.99 6.63 1.36 10.65 1.83 c
-f*
-179 118 0 rG
-670.4 851.56 m
-5.62 0.69 13.31 -0.69 16.85 -3.31 c
-3.31 -2.46 5.62 -3.79 8.62 -4.77 c
-10.06 -3.31 23.52 -4.95 22.92 -14.01 c
--0.68 -10.83 -4.34 -15.57 -13.32 -18.38 c
--7.2 -2.21 -20.22 -13.91 -30.21 -14.19 c
--4.78 -0.18 -10.55 -0.34 -14.15 0.94 c
--3.43 1.21 -8.34 7.2 -14.02 11.86 c
--5.66 4.6 -11.12 8.98 -10.8 15.32 c
-0.1 6.2 4.09 8.88 10.35 14.31 c
-3.27 2.87 8.94 8.17 13.11 10.47 c
-3.76 1.99 6.66 1.31 10.66 1.77 c
-f*
-184 124 0 rG
-670.52 851.45 m
-5.58 0.69 13.23 -0.69 16.75 -3.29 c
-3.29 -2.45 5.58 -3.77 8.56 -4.74 c
-10 -3.29 23.42 -4.94 22.83 -13.95 c
--0.67 -10.76 -4.41 -15.45 -13.34 -18.24 c
--7.15 -2.2 -20.12 -13.65 -30.04 -13.99 c
--4.81 -0.21 -10.46 -0.36 -14.03 0.9 c
--3.4 1.2 -8.3 7.18 -13.94 11.81 c
--5.62 4.57 -11.08 8.81 -10.67 15.08 c
-0.17 6.03 4.04 8.79 10.24 14.18 c
-3.25 2.84 8.81 8.21 12.96 10.52 c
-3.72 2 6.69 1.26 10.67 1.71 c
-f*
-189 129 0 rG
-670.64 851.35 m
-5.55 0.68 13.15 -0.68 16.65 -3.27 c
-3.27 -2.43 5.55 -3.75 8.51 -4.71 c
-9.93 -3.27 23.33 -4.94 22.74 -13.88 c
--0.66 -10.69 -4.49 -15.33 -13.36 -18.1 c
--7.1 -2.18 -20.01 -13.39 -29.87 -13.79 c
--4.85 -0.25 -10.37 -0.37 -13.92 0.87 c
--3.37 1.19 -8.26 7.17 -13.86 11.75 c
--5.58 4.54 -11.04 8.64 -10.53 14.85 c
-0.24 5.86 3.98 8.7 10.14 14.05 c
-3.22 2.81 8.68 8.24 12.81 10.57 c
-3.68 2 6.72 1.2 10.68 1.66 c
-f*
-194 135 0 rG
-670.76 851.25 m
-5.52 0.68 13.07 -0.68 16.55 -3.25 c
-3.25 -2.42 5.52 -3.73 8.46 -4.69 c
-9.87 -3.25 23.23 -4.93 22.65 -13.81 c
--0.65 -10.63 -4.56 -15.22 -13.37 -17.96 c
--7.05 -2.16 -19.91 -13.13 -29.7 -13.58 c
--4.89 -0.28 -10.28 -0.39 -13.8 0.83 c
--3.34 1.18 -8.22 7.15 -13.78 11.7 c
--5.54 4.51 -11 8.47 -10.4 14.62 c
-0.31 5.69 3.93 8.61 10.04 13.92 c
-3.19 2.79 8.55 8.28 12.66 10.62 c
-3.64 2 6.76 1.15 10.68 1.6 c
-f*
-199 141 0 rG
-670.88 851.15 m
-5.48 0.68 12.99 -0.68 16.45 -3.23 c
-3.23 -2.4 5.48 -3.71 8.41 -4.66 c
-9.81 -3.23 23.13 -4.92 22.57 -13.75 c
--0.64 -10.56 -4.64 -15.1 -13.39 -17.82 c
--7 -2.15 -19.8 -12.87 -29.53 -13.38 c
--4.92 -0.32 -10.19 -0.41 -13.69 0.8 c
--3.32 1.17 -8.17 7.13 -13.7 11.65 c
--5.49 4.47 -10.96 8.3 -10.26 14.39 c
-0.37 5.52 3.88 8.52 9.94 13.78 c
-3.17 2.76 8.42 8.31 12.51 10.67 c
-3.6 2 6.79 1.09 10.69 1.54 c
-f*
-204 147 0 rG
-671 851.04 m
-5.45 0.67 12.91 -0.67 16.35 -3.21 c
-3.21 -2.39 5.45 -3.69 8.36 -4.63 c
-9.74 -3.21 23.04 -4.91 22.48 -13.69 c
--0.64 -10.49 -4.71 -14.98 -13.41 -17.67 c
--6.95 -2.13 -19.7 -12.61 -29.37 -13.18 c
--4.96 -0.35 -10.09 -0.43 -13.57 0.77 c
--3.29 1.16 -8.13 7.11 -13.62 11.59 c
--5.45 4.44 -10.92 8.13 -10.12 14.16 c
-0.44 5.35 3.83 8.42 9.84 13.65 c
-3.14 2.73 8.3 8.34 12.36 10.72 c
-3.56 2.01 6.82 1.04 10.7 1.49 c
-f*
-209 153 0 rG
-671.12 850.94 m
-5.42 0.67 12.83 -0.67 16.25 -3.19 c
-3.19 -2.37 5.42 -3.67 8.31 -4.6 c
-9.68 -3.19 22.94 -4.91 22.39 -13.62 c
--0.63 -10.42 -4.79 -14.86 -13.43 -17.53 c
--6.9 -2.11 -19.59 -12.36 -29.2 -12.97 c
--5 -0.39 -10 -0.45 -13.45 0.73 c
--3.26 1.15 -8.09 7.09 -13.54 11.54 c
--5.41 4.41 -10.88 7.97 -9.99 13.93 c
-0.51 5.18 3.77 8.33 9.74 13.52 c
-3.11 2.7 8.17 8.38 12.21 10.77 c
-3.52 2.01 6.85 0.98 10.71 1.43 c
-f*
-215 158 0 rG
-671.24 850.84 m
-5.38 0.66 12.76 -0.66 16.15 -3.17 c
-3.17 -2.36 5.38 -3.66 8.26 -4.57 c
-9.62 -3.17 22.85 -4.9 22.3 -13.56 c
--0.62 -10.35 -4.86 -14.75 -13.45 -17.39 c
--6.85 -2.1 -19.49 -12.1 -29.03 -12.77 c
--5.03 -0.42 -9.91 -0.47 -13.34 0.7 c
--3.23 1.14 -8.05 7.08 -13.46 11.49 c
--5.37 4.38 -10.84 7.8 -9.85 13.7 c
-0.58 5.01 3.72 8.24 9.64 13.39 c
-3.09 2.68 8.04 8.41 12.06 10.82 c
-3.48 2.01 6.89 0.93 10.72 1.37 c
-f*
-220 164 0 rG
-671.36 850.74 m
-5.35 0.66 12.68 -0.66 16.05 -3.15 c
-3.15 -2.35 5.35 -3.64 8.21 -4.54 c
-9.55 -3.15 22.75 -4.89 22.21 -13.49 c
--0.61 -10.29 -4.94 -14.63 -13.47 -17.25 c
--6.8 -2.08 -19.38 -11.84 -28.86 -12.57 c
--5.07 -0.46 -9.82 -0.49 -13.22 0.66 c
--3.21 1.13 -8.01 7.06 -13.38 11.44 c
--5.33 4.35 -10.8 7.63 -9.71 13.47 c
-0.65 4.84 3.67 8.15 9.54 13.26 c
-3.06 2.65 7.91 8.45 11.91 10.87 c
-3.44 2.01 6.92 0.87 10.73 1.31 c
-f*
-225 170 0 rG
-671.49 850.63 m
-5.32 0.65 12.6 -0.66 15.95 -3.13 c
-3.13 -2.33 5.32 -3.62 8.16 -4.52 c
-9.49 -3.13 22.65 -4.88 22.12 -13.43 c
--0.61 -10.22 -5.01 -14.51 -13.49 -17.11 c
--6.75 -2.06 -19.28 -11.58 -28.69 -12.36 c
--5.11 -0.49 -9.73 -0.51 -13.1 0.63 c
--3.18 1.12 -7.96 7.04 -13.3 11.39 c
--5.29 4.32 -10.76 7.46 -9.58 13.24 c
-0.71 4.67 3.61 8.05 9.44 13.13 c
-3.03 2.62 7.78 8.48 11.76 10.92 c
-3.4 2.02 6.95 0.82 10.74 1.26 c
-f*
-230 176 0 rG
-671.61 850.53 m
-5.28 0.65 12.52 -0.65 15.85 -3.11 c
-3.11 -2.32 5.28 -3.6 8.1 -4.49 c
-9.43 -3.11 22.56 -4.87 22.03 -13.36 c
--0.6 -10.15 -5.09 -14.39 -13.5 -16.97 c
--6.7 -2.05 -19.17 -11.32 -28.53 -12.16 c
--5.14 -0.53 -9.64 -0.53 -12.99 0.59 c
--3.15 1.11 -7.92 7.03 -13.22 11.33 c
--5.25 4.29 -10.72 7.29 -9.44 13 c
-0.78 4.49 3.56 7.96 9.34 12.99 c
-3.01 2.59 7.65 8.52 11.61 10.96 c
-3.35 2.02 6.98 0.76 10.75 1.2 c
-f*
-235 181 0 rG
-671.73 850.43 m
-5.25 0.65 12.44 -0.65 15.75 -3.09 c
-3.09 -2.3 5.25 -3.58 8.05 -4.46 c
-9.37 -3.09 22.46 -4.87 21.94 -13.3 c
--0.59 -10.08 -5.17 -14.28 -13.52 -16.83 c
--6.65 -2.03 -19.07 -11.06 -28.36 -11.96 c
--5.18 -0.56 -9.55 -0.55 -12.87 0.56 c
--3.12 1.09 -7.88 7.01 -13.14 11.28 c
--5.21 4.26 -10.68 7.12 -9.31 12.77 c
-0.85 4.33 3.51 7.87 9.24 12.86 c
-2.98 2.56 7.52 8.55 11.46 11.01 c
-3.31 2.02 7.02 0.71 10.76 1.14 c
-f*
-240 187 0 rG
-671.85 850.33 m
-5.22 0.64 12.36 -0.64 15.65 -3.07 c
-3.07 -2.29 5.22 -3.56 8 -4.43 c
-9.3 -3.07 22.37 -4.86 21.85 -13.23 c
--0.58 -10.01 -5.24 -14.16 -13.54 -16.68 c
--6.6 -2.01 -18.96 -10.8 -28.19 -11.75 c
--5.22 -0.6 -9.46 -0.57 -12.75 0.52 c
--3.1 1.08 -7.84 6.99 -13.06 11.23 c
--5.17 4.23 -10.64 6.95 -9.17 12.54 c
-0.92 4.16 3.45 7.78 9.13 12.73 c
-2.95 2.54 7.4 8.59 11.31 11.06 c
-3.27 2.02 7.05 0.65 10.77 1.08 c
-f*
-245 193 0 rG
-671.97 850.22 m
-5.18 0.64 12.28 -0.64 15.55 -3.05 c
-3.05 -2.27 5.18 -3.54 7.95 -4.4 c
-9.24 -3.05 22.27 -4.85 21.77 -13.17 c
--0.58 -9.95 -5.32 -14.04 -13.56 -16.54 c
--6.55 -2 -18.85 -10.54 -28.02 -11.55 c
--5.25 -0.63 -9.36 -0.59 -12.64 0.49 c
--3.07 1.07 -7.79 6.97 -12.98 11.18 c
--5.13 4.2 -10.6 6.78 -9.03 12.31 c
-0.99 3.99 3.4 7.68 9.03 12.6 c
-2.93 2.51 7.27 8.62 11.16 11.11 c
-3.23 2.03 7.08 0.6 10.78 1.03 c
-f*
-250 199 0 rG
-672.09 850.12 m
-5.15 0.63 12.2 -0.63 15.45 -3.03 c
-3.03 -2.26 5.15 -3.52 7.9 -4.37 c
-9.18 -3.03 22.17 -4.84 21.68 -13.1 c
--0.57 -9.88 -5.39 -13.92 -13.58 -16.4 c
--6.5 -1.98 -18.75 -10.28 -27.85 -11.35 c
--5.29 -0.67 -9.27 -0.61 -12.52 0.45 c
--3.04 1.06 -7.75 6.96 -12.91 11.13 c
--5.09 4.17 -10.55 6.62 -8.9 12.08 c
-1.05 3.81 3.35 7.59 8.93 12.47 c
-2.9 2.48 7.14 8.66 11.01 11.17 c
-3.19 2.03 7.12 0.55 10.78 0.97 c
-f*
-255 204 0 rG
-672.21 850.02 m
-5.12 0.63 12.13 -0.63 15.35 -3.01 c
-3.01 -2.24 5.12 -3.5 7.85 -4.35 c
-9.11 -3.01 22.08 -4.84 21.59 -13.04 c
--0.56 -9.81 -5.47 -13.81 -13.6 -16.26 c
--6.45 -1.96 -18.64 -10.02 -27.68 -11.14 c
--5.33 -0.7 -9.18 -0.63 -12.41 0.42 c
--3.01 1.05 -7.71 6.94 -12.83 11.07 c
--5.05 4.14 -10.51 6.45 -8.76 11.85 c
-1.12 3.64 3.29 7.5 8.83 12.34 c
-2.87 2.45 7.01 8.69 10.86 11.21 c
-3.15 2.03 7.15 0.49 10.79 0.91 c
-f*
-673.12 846.84 m
-1.11 -2.3 3.96 -2.61 5.86 -3.64 c
-1.82 -1.03 2.85 -1.27 3.56 -0.87 c
-1.58 0.87 0.4 3.72 -1.19 4.75 c
--1.5 1.03 -8.87 1.27 -8.24 -0.24 c
-f*
-250 199 0 rG
-673.28 846.82 m
-1.08 -2.24 3.86 -2.55 5.71 -3.55 c
-1.78 -1 2.78 -1.24 3.47 -0.85 c
-1.54 0.85 0.39 3.63 -1.16 4.63 c
--1.47 1 -8.65 1.24 -8.03 -0.23 c
-f*
-245 193 0 rG
-673.44 846.8 m
-1.05 -2.18 3.76 -2.48 5.56 -3.46 c
-1.73 -0.98 2.71 -1.2 3.38 -0.83 c
-1.5 0.83 0.38 3.53 -1.13 4.51 c
--1.43 0.98 -8.42 1.2 -7.82 -0.23 c
-f*
-240 187 0 rG
-673.59 846.77 m
-1.03 -2.12 3.66 -2.41 5.42 -3.37 c
-1.68 -0.95 2.63 -1.17 3.29 -0.81 c
-1.46 0.81 0.37 3.44 -1.1 4.39 c
--1.39 0.95 -8.2 1.17 -7.61 -0.22 c
-f*
-235 181 0 rG
-673.75 846.75 m
-1 -2.06 3.56 -2.35 5.27 -3.27 c
-1.64 -0.93 2.56 -1.14 3.2 -0.78 c
-1.42 0.78 0.36 3.35 -1.07 4.27 c
--1.35 0.93 -7.97 1.14 -7.4 -0.21 c
-f*
-230 176 0 rG
-673.91 846.72 m
-0.97 -2.01 3.46 -2.28 5.12 -3.18 c
-1.59 -0.9 2.49 -1.11 3.11 -0.76 c
-1.38 0.76 0.35 3.25 -1.04 4.15 c
--1.31 0.9 -7.75 1.11 -7.19 -0.21 c
-f*
-225 170 0 rG
-674.06 846.7 m
-0.94 -1.95 3.36 -2.22 4.97 -3.09 c
-1.54 -0.87 2.42 -1.07 3.02 -0.74 c
-1.34 0.74 0.34 3.16 -1.01 4.03 c
--1.28 0.87 -7.52 1.07 -6.99 -0.2 c
-f*
-220 164 0 rG
-674.22 846.68 m
-0.91 -1.89 3.26 -2.15 4.82 -3 c
-1.5 -0.85 2.35 -1.04 2.93 -0.72 c
-1.3 0.72 0.33 3.06 -0.98 3.91 c
--1.24 0.85 -7.3 1.04 -6.78 -0.2 c
-f*
-215 158 0 rG
-674.38 846.65 m
-0.88 -1.83 3.16 -2.08 4.67 -2.91 c
-1.45 -0.82 2.27 -1.01 2.84 -0.69 c
-1.26 0.69 0.32 2.97 -0.95 3.79 c
--1.2 0.82 -7.07 1.01 -6.57 -0.19 c
-f*
-209 153 0 rG
-674.53 846.63 m
-0.86 -1.77 3.06 -2.02 4.52 -2.81 c
-1.41 -0.8 2.2 -0.98 2.75 -0.67 c
-1.22 0.67 0.31 2.87 -0.92 3.67 c
--1.16 0.79 -6.85 0.98 -6.36 -0.18 c
-f*
-204 147 0 rG
-674.69 846.61 m
-0.83 -1.71 2.96 -1.95 4.38 -2.72 c
-1.36 -0.77 2.13 -0.95 2.66 -0.65 c
-1.18 0.65 0.3 2.78 -0.89 3.55 c
--1.12 0.77 -6.62 0.95 -6.15 -0.18 c
-f*
-199 141 0 rG
-674.85 846.58 m
-0.8 -1.66 2.86 -1.88 4.23 -2.63 c
-1.31 -0.74 2.06 -0.91 2.57 -0.63 c
-1.14 0.63 0.29 2.69 -0.86 3.43 c
--1.09 0.74 -6.4 0.91 -5.94 -0.17 c
-f*
-194 135 0 rG
-675 846.56 m
-0.77 -1.6 2.76 -1.82 4.08 -2.54 c
-1.27 -0.72 1.98 -0.88 2.48 -0.61 c
-1.1 0.61 0.28 2.59 -0.83 3.31 c
--1.05 0.72 -6.17 0.88 -5.73 -0.17 c
-f*
-189 129 0 rG
-675.16 846.53 m
-0.74 -1.54 2.66 -1.75 3.93 -2.44 c
-1.22 -0.69 1.91 -0.85 2.39 -0.58 c
-1.06 0.58 0.27 2.5 -0.8 3.19 c
--1.01 0.69 -5.95 0.85 -5.52 -0.16 c
-f*
-184 124 0 rG
-675.32 846.51 m
-0.72 -1.48 2.56 -1.69 3.78 -2.35 c
-1.18 -0.66 1.84 -0.82 2.3 -0.56 c
-1.02 0.56 0.26 2.4 -0.77 3.07 c
--0.97 0.66 -5.72 0.82 -5.32 -0.15 c
-f*
-179 118 0 rG
-675.47 846.49 m
-0.69 -1.42 2.46 -1.62 3.63 -2.26 c
-1.13 -0.64 1.77 -0.79 2.21 -0.54 c
-0.98 0.54 0.25 2.31 -0.74 2.95 c
--0.93 0.64 -5.5 0.79 -5.11 -0.15 c
-f*
-174 112 0 rG
-675.63 846.46 m
-0.66 -1.37 2.35 -1.55 3.49 -2.17 c
-1.08 -0.61 1.7 -0.75 2.12 -0.52 c
-0.94 0.52 0.24 2.21 -0.71 2.83 c
--0.89 0.61 -5.27 0.75 -4.9 -0.14 c
-f*
-168 106 0 rG
-675.79 846.44 m
-0.63 -1.31 2.25 -1.49 3.34 -2.07 c
-1.04 -0.59 1.62 -0.72 2.03 -0.49 c
-0.9 0.49 0.23 2.12 -0.68 2.7 c
--0.86 0.59 -5.05 0.72 -4.69 -0.14 c
-f*
-163 101 0 rG
-675.94 846.42 m
-0.6 -1.25 2.16 -1.42 3.19 -1.98 c
-0.99 -0.56 1.55 -0.69 1.94 -0.47 c
-0.86 0.47 0.22 2.03 -0.65 2.59 c
--0.82 0.56 -4.83 0.69 -4.48 -0.13 c
-f*
-158 95 0 rG
-676.1 846.39 m
-0.58 -1.19 2.05 -1.36 3.04 -1.89 c
-0.94 -0.53 1.48 -0.66 1.85 -0.45 c
-0.82 0.45 0.21 1.93 -0.62 2.46 c
--0.78 0.53 -4.6 0.66 -4.27 -0.12 c
-f*
-153 89 0 rG
-676.26 846.37 m
-0.55 -1.13 1.95 -1.29 2.89 -1.8 c
-0.9 -0.51 1.41 -0.62 1.76 -0.43 c
-0.78 0.43 0.2 1.84 -0.59 2.34 c
--0.74 0.51 -4.38 0.62 -4.06 -0.12 c
-f*
-255 204 0 rG
-656.51 843.9 m
--0.36 -0.89 2.15 -2.59 3.4 -1.43 c
-1.34 1.16 2.95 2.24 3.49 2.59 c
-2.42 1.61 1.52 2.77 -2.51 2.06 c
--4.03 -0.72 -4.03 -2.33 -4.39 -3.22 c
-f*
-250 199 0 rG
-656.57 843.91 m
--0.35 -0.87 2.1 -2.53 3.32 -1.4 c
-1.31 1.14 2.89 2.18 3.41 2.54 c
-2.36 1.57 1.49 2.71 -2.45 2.01 c
--3.93 -0.7 -3.93 -2.27 -4.28 -3.15 c
-f*
-245 193 0 rG
-656.64 843.92 m
--0.34 -0.85 2.05 -2.47 3.24 -1.36 c
-1.28 1.11 2.82 2.13 3.33 2.47 c
-2.3 1.54 1.45 2.65 -2.39 1.96 c
--3.84 -0.68 -3.84 -2.22 -4.18 -3.07 c
-f*
-240 187 0 rG
-656.7 843.93 m
--0.33 -0.83 2 -2.41 3.16 -1.33 c
-1.25 1.08 2.75 2.08 3.25 2.41 c
-2.25 1.5 1.42 2.58 -2.33 1.92 c
--3.75 -0.67 -3.75 -2.17 -4.08 -3 c
-f*
-235 181 0 rG
-656.77 843.94 m
--0.32 -0.81 1.95 -2.35 3.09 -1.3 c
-1.22 1.05 2.68 2.03 3.17 2.35 c
-2.19 1.46 1.38 2.52 -2.27 1.87 c
--3.66 -0.65 -3.66 -2.11 -3.98 -2.92 c
-f*
-230 176 0 rG
-656.83 843.95 m
--0.32 -0.79 1.9 -2.29 3.01 -1.26 c
-1.19 1.03 2.61 1.98 3.09 2.29 c
-2.14 1.42 1.35 2.45 -2.22 1.82 c
--3.56 -0.63 -3.56 -2.06 -3.88 -2.85 c
-f*
-225 170 0 rG
-656.9 843.96 m
--0.31 -0.77 1.85 -2.24 2.93 -1.23 c
-1.16 1 2.54 1.93 3.01 2.24 c
-2.08 1.39 1.31 2.39 -2.16 1.77 c
--3.47 -0.62 -3.47 -2 -3.78 -2.77 c
-f*
-220 164 0 rG
-656.96 843.97 m
--0.3 -0.75 1.8 -2.17 2.85 -1.2 c
-1.13 0.97 2.48 1.87 2.93 2.17 c
-2.02 1.35 1.27 2.32 -2.1 1.72 c
--3.37 -0.6 -3.37 -1.95 -3.68 -2.7 c
-f*
-215 158 0 rG
-657.02 843.99 m
--0.29 -0.73 1.75 -2.11 2.77 -1.17 c
-1.09 0.95 2.41 1.82 2.84 2.11 c
-1.97 1.31 1.24 2.26 -2.04 1.68 c
--3.28 -0.58 -3.28 -1.9 -3.57 -2.63 c
-f*
-209 153 0 rG
-657.09 844 m
--0.28 -0.71 1.7 -2.05 2.69 -1.13 c
-1.06 0.92 2.34 1.77 2.76 2.05 c
-1.91 1.28 1.2 2.2 -1.98 1.63 c
--3.19 -0.57 -3.19 -1.84 -3.47 -2.55 c
-f*
-204 147 0 rG
-657.15 844.01 m
--0.27 -0.69 1.65 -1.99 2.61 -1.1 c
-1.03 0.89 2.27 1.72 2.68 1.99 c
-1.86 1.24 1.17 2.13 -1.92 1.58 c
--3.1 -0.55 -3.1 -1.79 -3.37 -2.48 c
-f*
-199 141 0 rG
-657.22 844.02 m
--0.27 -0.67 1.6 -1.93 2.53 -1.07 c
-1 0.87 2.2 1.67 2.6 1.94 c
-1.8 1.2 1.13 2.07 -1.87 1.53 c
--3 -0.53 -3 -1.73 -3.27 -2.4 c
-f*
-194 135 0 rG
-657.28 844.03 m
--0.26 -0.65 1.55 -1.87 2.46 -1.03 c
-0.97 0.84 2.13 1.62 2.52 1.87 c
-1.75 1.16 1.1 2 -1.81 1.49 c
--2.91 -0.52 -2.91 -1.68 -3.17 -2.33 c
-f*
-189 129 0 rG
-657.35 844.04 m
--0.25 -0.62 1.5 -1.81 2.38 -1 c
-0.94 0.81 2.06 1.56 2.44 1.81 c
-1.69 1.13 1.06 1.94 -1.75 1.44 c
--2.82 -0.5 -2.82 -1.63 -3.07 -2.25 c
-f*
-184 124 0 rG
-657.41 844.05 m
--0.24 -0.6 1.45 -1.75 2.3 -0.97 c
-0.91 0.79 2 1.51 2.36 1.75 c
-1.63 1.09 1.03 1.88 -1.69 1.39 c
--2.72 -0.48 -2.72 -1.57 -2.96 -2.18 c
-f*
-179 118 0 rG
-657.48 844.07 m
--0.23 -0.58 1.4 -1.69 2.22 -0.94 c
-0.88 0.76 1.93 1.46 2.28 1.69 c
-1.58 1.05 0.99 1.81 -1.64 1.34 c
--2.63 -0.47 -2.63 -1.52 -2.86 -2.1 c
-f*
-174 112 0 rG
-657.54 844.08 m
--0.22 -0.56 1.35 -1.63 2.14 -0.9 c
-0.85 0.73 1.86 1.41 2.2 1.63 c
-1.52 1.01 0.96 1.75 -1.58 1.3 c
--2.54 -0.45 -2.54 -1.47 -2.76 -2.03 c
-f*
-168 106 0 rG
-657.61 844.09 m
--0.22 -0.54 1.3 -1.57 2.06 -0.87 c
-0.81 0.71 1.79 1.36 2.12 1.57 c
-1.47 0.98 0.92 1.68 -1.52 1.25 c
--2.44 -0.43 -2.44 -1.41 -2.66 -1.95 c
-f*
-163 101 0 rG
-657.67 844.1 m
--0.21 -0.52 1.25 -1.51 1.98 -0.83 c
-0.78 0.68 1.72 1.31 2.04 1.51 c
-1.41 0.94 0.89 1.62 -1.46 1.2 c
--2.35 -0.42 -2.35 -1.36 -2.56 -1.88 c
-f*
-158 95 0 rG
-657.73 844.11 m
--0.2 -0.5 1.2 -1.45 1.91 -0.8 c
-0.75 0.65 1.65 1.25 1.95 1.45 c
-1.35 0.9 0.85 1.56 -1.4 1.15 c
--2.26 -0.4 -2.26 -1.3 -2.46 -1.8 c
-f*
-153 89 0 rG
-657.8 844.12 m
--0.19 -0.48 1.15 -1.39 1.83 -0.77 c
-0.72 0.63 1.59 1.2 1.87 1.39 c
-1.3 0.87 0.82 1.49 -1.35 1.11 c
--2.16 -0.39 -2.16 -1.25 -2.36 -1.73 c
-f*
-255 204 0 rG
-660.99 820.14 m
--0.25 -3.14 6.98 4.71 7.42 5.41 c
-0.94 1.7 4.09 6.47 4.59 8.49 c
-0.94 3.52 2.64 6.1 1.57 9.81 c
--0.38 1.19 -3.02 1.51 -4.21 0.75 c
--3.39 -2.01 -2.89 -4.46 -3.27 -6.73 c
--1.26 -6.41 -5.66 -12.89 -6.1 -17.73 c
-f*
-255 205 2 rG
-661.29 820.63 m
--0.24 -3.07 6.8 4.61 7.22 5.28 c
-0.92 1.66 3.97 6.32 4.46 8.28 c
-0.91 3.43 2.57 5.95 1.52 9.56 c
--0.37 1.16 -2.94 1.47 -4.11 0.73 c
--3.31 -1.97 -2.81 -4.36 -3.18 -6.56 c
--1.22 -6.25 -5.5 -12.57 -5.92 -17.29 c
-f*
-255 205 5 rG
-661.58 821.12 m
--0.23 -2.99 6.62 4.5 7.03 5.16 c
-0.89 1.61 3.86 6.16 4.34 8.08 c
-0.88 3.35 2.49 5.8 1.46 9.32 c
--0.36 1.13 -2.87 1.42 -4 0.7 c
--3.22 -1.92 -2.73 -4.25 -3.09 -6.4 c
--1.17 -6.09 -5.34 -12.26 -5.74 -16.86 c
-f*
-255 205 7 rG
-661.88 821.61 m
--0.22 -2.91 6.43 4.39 6.84 5.03 c
-0.86 1.57 3.75 6.01 4.21 7.87 c
-0.86 3.26 2.42 5.65 1.41 9.08 c
--0.35 1.1 -2.8 1.38 -3.9 0.68 c
--3.13 -1.88 -2.66 -4.14 -2.99 -6.24 c
--1.14 -5.94 -5.18 -11.95 -5.56 -16.43 c
-f*
-255 205 10 rG
-662.17 822.1 m
--0.21 -2.83 6.25 4.28 6.65 4.91 c
-0.84 1.53 3.64 5.85 4.08 7.67 c
-0.83 3.17 2.34 5.5 1.36 8.84 c
--0.35 1.07 -2.72 1.34 -3.79 0.65 c
--3.04 -1.83 -2.58 -4.03 -2.9 -6.07 c
--1.09 -5.78 -5.02 -11.63 -5.38 -15.99 c
-f*
-255 206 12 rG
-662.47 822.59 m
--0.2 -2.75 6.07 4.18 6.45 4.79 c
-0.81 1.49 3.53 5.7 3.95 7.46 c
-0.8 3.09 2.27 5.35 1.3 8.59 c
--0.34 1.04 -2.65 1.3 -3.69 0.63 c
--2.96 -1.79 -2.5 -3.93 -2.81 -5.91 c
--1.05 -5.62 -4.86 -11.32 -5.2 -15.56 c
-f*
-255 206 15 rG
-662.76 823.08 m
--0.19 -2.68 5.89 4.07 6.26 4.66 c
-0.79 1.45 3.42 5.54 3.83 7.26 c
-0.77 3 2.19 5.21 1.25 8.35 c
--0.33 1.01 -2.58 1.26 -3.59 0.6 c
--2.87 -1.74 -2.42 -3.82 -2.72 -5.75 c
--1.01 -5.46 -4.69 -11.01 -5.03 -15.12 c
-f*
-255 206 17 rG
-663.06 823.57 m
--0.17 -2.6 5.71 3.96 6.07 4.54 c
-0.76 1.41 3.3 5.39 3.7 7.05 c
-0.74 2.92 2.12 5.06 1.19 8.11 c
--0.32 0.98 -2.5 1.21 -3.48 0.58 c
--2.78 -1.7 -2.34 -3.71 -2.63 -5.58 c
--0.97 -5.3 -4.53 -10.69 -4.85 -14.69 c
-f*
-255 206 20 rG
-663.35 824.07 m
--0.16 -2.52 5.53 3.86 5.87 4.41 c
-0.73 1.37 3.19 5.23 3.57 6.85 c
-0.71 2.83 2.04 4.91 1.14 7.87 c
--0.32 0.95 -2.43 1.17 -3.38 0.55 c
--2.69 -1.65 -2.26 -3.61 -2.54 -5.42 c
--0.93 -5.15 -4.37 -10.38 -4.67 -14.26 c
-f*
-255 207 23 rG
-663.65 824.56 m
--0.15 -2.44 5.35 3.75 5.68 4.29 c
-0.71 1.33 3.08 5.07 3.44 6.64 c
-0.68 2.74 1.97 4.76 1.09 7.62 c
--0.31 0.92 -2.36 1.13 -3.27 0.53 c
--2.61 -1.6 -2.18 -3.5 -2.45 -5.26 c
--0.89 -4.99 -4.21 -10.07 -4.49 -13.82 c
-f*
-255 207 25 rG
-663.94 825.05 m
--0.14 -2.36 5.17 3.64 5.48 4.17 c
-0.68 1.29 2.97 4.92 3.32 6.44 c
-0.65 2.66 1.89 4.61 1.03 7.38 c
--0.3 0.89 -2.29 1.09 -3.17 0.5 c
--2.52 -1.56 -2.1 -3.39 -2.35 -5.1 c
--0.85 -4.83 -4.05 -9.75 -4.31 -13.39 c
-f*
-255 207 28 rG
-664.24 825.54 m
--0.13 -2.28 4.98 3.53 5.29 4.04 c
-0.66 1.25 2.86 4.76 3.19 6.23 c
-0.63 2.57 1.82 4.47 0.98 7.14 c
--0.29 0.86 -2.21 1.04 -3.07 0.48 c
--2.43 -1.51 -2.02 -3.29 -2.26 -4.93 c
--0.81 -4.67 -3.89 -9.44 -4.13 -12.96 c
-f*
-255 207 30 rG
-664.54 826.03 m
--0.12 -2.21 4.8 3.43 5.1 3.92 c
-0.63 1.21 2.75 4.61 3.06 6.03 c
-0.6 2.48 1.74 4.32 0.93 6.9 c
--0.28 0.83 -2.14 1 -2.96 0.45 c
--2.34 -1.47 -1.95 -3.18 -2.17 -4.77 c
--0.77 -4.51 -3.73 -9.13 -3.95 -12.52 c
-f*
-255 208 33 rG
-664.83 826.52 m
--0.11 -2.13 4.62 3.32 4.91 3.79 c
-0.6 1.16 2.63 4.45 2.94 5.82 c
-0.57 2.39 1.67 4.17 0.87 6.65 c
--0.28 0.8 -2.07 0.96 -2.86 0.43 c
--2.25 -1.42 -1.87 -3.07 -2.08 -4.61 c
--0.72 -4.35 -3.57 -8.81 -3.78 -12.09 c
-f*
-255 208 35 rG
-665.13 827.01 m
--0.1 -2.05 4.44 3.21 4.71 3.67 c
-0.58 1.12 2.52 4.3 2.81 5.62 c
-0.54 2.31 1.59 4.02 0.82 6.41 c
--0.27 0.77 -1.99 0.92 -2.76 0.4 c
--2.17 -1.38 -1.79 -2.96 -1.99 -4.44 c
--0.69 -4.2 -3.41 -8.5 -3.6 -11.66 c
-f*
-255 208 38 rG
-665.42 827.5 m
--0.09 -1.97 4.26 3.1 4.52 3.55 c
-0.55 1.08 2.41 4.14 2.68 5.41 c
-0.51 2.22 1.52 3.87 0.76 6.17 c
--0.26 0.74 -1.92 0.88 -2.65 0.38 c
--2.08 -1.33 -1.71 -2.86 -1.89 -4.28 c
--0.64 -4.04 -3.25 -8.19 -3.42 -11.22 c
-f*
-255 208 40 rG
-665.72 827.99 m
--0.08 -1.89 4.08 3 4.33 3.42 c
-0.53 1.04 2.3 3.99 2.55 5.21 c
-0.48 2.14 1.44 3.72 0.71 5.93 c
--0.26 0.71 -1.85 0.83 -2.55 0.35 c
--1.99 -1.29 -1.63 -2.75 -1.8 -4.12 c
--0.6 -3.88 -3.09 -7.87 -3.24 -10.79 c
-f*
-255 209 43 rG
-666.01 828.49 m
--0.06 -1.81 3.9 2.89 4.13 3.3 c
-0.5 1 2.19 3.83 2.43 5 c
-0.45 2.05 1.37 3.58 0.66 5.68 c
--0.25 0.68 -1.77 0.79 -2.44 0.33 c
--1.9 -1.24 -1.55 -2.64 -1.71 -3.95 c
--0.56 -3.72 -2.93 -7.56 -3.06 -10.36 c
-f*
-255 209 46 rG
-666.31 828.98 m
--0.05 -1.74 3.71 2.78 3.94 3.17 c
-0.47 0.96 2.08 3.67 2.3 4.79 c
-0.43 1.96 1.29 3.43 0.6 5.44 c
--0.24 0.65 -1.7 0.75 -2.34 0.3 c
--1.81 -1.2 -1.47 -2.54 -1.62 -3.79 c
--0.52 -3.56 -2.77 -7.25 -2.88 -9.92 c
-f*
-255 209 48 rG
-666.6 829.47 m
--0.04 -1.66 3.53 2.67 3.75 3.05 c
-0.45 0.92 1.96 3.52 2.17 4.59 c
-0.4 1.88 1.22 3.28 0.55 5.2 c
--0.23 0.62 -1.63 0.71 -2.24 0.28 c
--1.73 -1.15 -1.39 -2.43 -1.53 -3.63 c
--0.48 -3.41 -2.61 -6.93 -2.7 -9.49 c
-f*
-255 209 51 rG
-666.9 829.96 m
--0.03 -1.58 3.35 2.57 3.55 2.93 c
-0.42 0.88 1.85 3.36 2.04 4.38 c
-0.37 1.79 1.14 3.13 0.5 4.96 c
--0.22 0.59 -1.56 0.67 -2.13 0.25 c
--1.64 -1.11 -1.32 -2.32 -1.44 -3.47 c
--0.44 -3.25 -2.45 -6.62 -2.53 -9.06 c
-f*
-255 204 0 rG
-685.95 833.22 m
--3.48 -3.8 -5.94 -7.44 -7.92 -9.9 c
--2.06 -2.53 -7.13 -5.54 -4.59 -8.47 c
-2.14 -2.61 10.93 2.14 17.74 7.21 c
-6.73 5.07 17.27 9.58 12.12 15.36 c
--2.69 2.93 -9.03 2.3 -11.48 0.71 c
--1.9 -1.19 -3.01 -1.82 -5.86 -4.91 c
-f*
-255 205 2 rG
-686.1 833.05 m
--3.43 -3.72 -5.84 -7.29 -7.79 -9.69 c
--2.03 -2.47 -7.01 -5.44 -4.54 -8.29 c
-2.08 -2.54 10.7 2.14 17.38 7.12 c
-6.6 4.98 16.92 9.43 11.9 15.05 c
--2.62 2.85 -8.82 2.2 -11.23 0.64 c
--1.86 -1.17 -2.93 -1.84 -5.71 -4.83 c
-f*
-255 205 5 rG
-686.26 832.88 m
--3.38 -3.63 -5.75 -7.14 -7.67 -9.48 c
--1.99 -2.41 -6.9 -5.33 -4.49 -8.1 c
-2.03 -2.47 10.46 2.14 17.01 7.02 c
-6.47 4.89 16.57 9.28 11.69 14.74 c
--2.56 2.76 -8.62 2.1 -10.98 0.57 c
--1.82 -1.15 -2.85 -1.85 -5.55 -4.75 c
-f*
-255 205 7 rG
-686.4 832.71 m
--3.32 -3.54 -5.65 -6.98 -7.54 -9.27 c
--1.96 -2.35 -6.78 -5.23 -4.44 -7.91 c
-1.97 -2.39 10.23 2.14 16.64 6.93 c
-6.34 4.8 16.22 9.13 11.47 14.42 c
--2.49 2.68 -8.41 2 -10.72 0.5 c
--1.78 -1.13 -2.78 -1.87 -5.4 -4.67 c
-f*
-255 205 10 rG
-686.55 832.55 m
--3.27 -3.46 -5.56 -6.83 -7.42 -9.06 c
--1.92 -2.29 -6.67 -5.12 -4.39 -7.73 c
-1.92 -2.32 10 2.14 16.28 6.84 c
-6.21 4.7 15.88 8.98 11.25 14.11 c
--2.42 2.6 -8.21 1.9 -10.47 0.43 c
--1.74 -1.11 -2.7 -1.88 -5.25 -4.59 c
-f*
-255 206 12 rG
-686.7 832.38 m
--3.21 -3.37 -5.46 -6.67 -7.29 -8.85 c
--1.89 -2.23 -6.55 -5.02 -4.34 -7.54 c
-1.86 -2.25 9.77 2.13 15.91 6.75 c
-6.08 4.61 15.53 8.83 11.04 13.79 c
--2.35 2.51 -8 1.8 -10.21 0.36 c
--1.7 -1.09 -2.62 -1.9 -5.1 -4.51 c
-f*
-255 206 15 rG
-686.85 832.21 m
--3.16 -3.28 -5.37 -6.52 -7.17 -8.64 c
--1.86 -2.17 -6.44 -4.91 -4.29 -7.35 c
-1.81 -2.18 9.53 2.13 15.55 6.66 c
-5.94 4.52 15.18 8.68 10.82 13.48 c
--2.28 2.43 -7.8 1.7 -9.96 0.29 c
--1.66 -1.07 -2.54 -1.91 -4.94 -4.43 c
-f*
-255 206 17 rG
-687 832.04 m
--3.1 -3.2 -5.27 -6.36 -7.04 -8.43 c
--1.82 -2.11 -6.32 -4.81 -4.24 -7.16 c
-1.75 -2.1 9.3 2.13 15.18 6.57 c
-5.81 4.43 14.83 8.53 10.61 13.16 c
--2.21 2.35 -7.59 1.6 -9.71 0.22 c
--1.62 -1.05 -2.46 -1.93 -4.79 -4.35 c
-f*
-255 206 20 rG
-687.15 831.87 m
--3.05 -3.11 -5.18 -6.21 -6.92 -8.22 c
--1.79 -2.05 -6.21 -4.7 -4.19 -6.98 c
-1.7 -2.03 9.07 2.13 14.82 6.47 c
-5.68 4.34 14.48 8.37 10.39 12.85 c
--2.15 2.26 -7.39 1.5 -9.45 0.15 c
--1.58 -1.03 -2.38 -1.94 -4.64 -4.27 c
-f*
-255 207 23 rG
-687.3 831.7 m
--2.99 -3.03 -5.08 -6.06 -6.79 -8.01 c
--1.75 -1.98 -6.09 -4.6 -4.14 -6.79 c
-1.64 -1.96 8.84 2.13 14.45 6.38 c
-5.55 4.25 14.14 8.22 10.17 12.53 c
--2.08 2.18 -7.18 1.4 -9.2 0.08 c
--1.54 -1.01 -2.3 -1.96 -4.49 -4.19 c
-f*
-255 207 25 rG
-687.45 831.53 m
--2.94 -2.94 -4.99 -5.9 -6.67 -7.81 c
--1.72 -1.92 -5.98 -4.49 -4.09 -6.6 c
-1.59 -1.88 8.6 2.13 14.08 6.29 c
-5.42 4.16 13.79 8.07 9.96 12.22 c
--2.01 2.1 -6.98 1.3 -8.94 0.01 c
--1.5 -0.99 -2.23 -1.97 -4.33 -4.11 c
-f*
-255 207 28 rG
-687.6 831.36 m
--2.89 -2.86 -4.89 -5.75 -6.54 -7.6 c
--1.69 -1.86 -5.86 -4.39 -4.04 -6.41 c
-1.53 -1.81 8.37 2.13 13.72 6.2 c
-5.29 4.07 13.44 7.92 9.74 11.91 c
--1.94 2.01 -6.77 1.2 -8.69 -0.06 c
--1.46 -0.96 -2.15 -1.99 -4.18 -4.03 c
-f*
-255 207 30 rG
-687.75 831.2 m
--2.83 -2.77 -4.79 -5.59 -6.42 -7.39 c
--1.65 -1.8 -5.75 -4.29 -3.99 -6.23 c
-1.47 -1.74 8.14 2.13 13.35 6.11 c
-5.16 3.98 13.1 7.77 9.52 11.59 c
--1.87 1.93 -6.57 1.1 -8.43 -0.13 c
--1.42 -0.95 -2.07 -2 -4.03 -3.95 c
-f*
-255 208 33 rG
-687.9 831.03 m
--2.78 -2.68 -4.7 -5.44 -6.29 -7.18 c
--1.62 -1.74 -5.63 -4.18 -3.94 -6.04 c
-1.42 -1.67 7.9 2.13 12.99 6.02 c
-5.03 3.89 12.75 7.62 9.31 11.28 c
--1.8 1.85 -6.36 1 -8.18 -0.2 c
--1.38 -0.92 -1.99 -2.02 -3.88 -3.87 c
-f*
-255 208 35 rG
-688.05 830.86 m
--2.72 -2.6 -4.6 -5.28 -6.17 -6.97 c
--1.59 -1.68 -5.52 -4.08 -3.89 -5.85 c
-1.36 -1.59 7.67 2.13 12.62 5.92 c
-4.9 3.79 12.4 7.47 9.09 10.96 c
--1.73 1.77 -6.16 0.91 -7.93 -0.27 c
--1.34 -0.9 -1.91 -2.03 -3.73 -3.79 c
-f*
-255 208 38 rG
-688.2 830.69 m
--2.67 -2.51 -4.51 -5.13 -6.04 -6.76 c
--1.55 -1.62 -5.4 -3.97 -3.84 -5.66 c
-1.31 -1.52 7.44 2.13 12.26 5.83 c
-4.76 3.7 12.05 7.32 8.88 10.65 c
--1.67 1.68 -5.95 0.81 -7.67 -0.35 c
--1.3 -0.88 -1.83 -2.05 -3.57 -3.71 c
-f*
-255 208 40 rG
-688.35 830.52 m
--2.61 -2.43 -4.41 -4.98 -5.92 -6.55 c
--1.52 -1.56 -5.29 -3.87 -3.8 -5.48 c
-1.25 -1.45 7.21 2.12 11.89 5.74 c
-4.63 3.61 11.71 7.17 8.66 10.33 c
--1.6 1.6 -5.75 0.71 -7.42 -0.42 c
--1.26 -0.86 -1.76 -2.06 -3.42 -3.63 c
-f*
-255 209 43 rG
-688.5 830.35 m
--2.56 -2.34 -4.31 -4.82 -5.79 -6.34 c
--1.48 -1.5 -5.17 -3.76 -3.74 -5.29 c
-1.2 -1.37 6.97 2.12 11.52 5.65 c
-4.5 3.52 11.36 7.01 8.44 10.02 c
--1.53 1.52 -5.54 0.61 -7.17 -0.49 c
--1.22 -0.84 -1.68 -2.08 -3.27 -3.55 c
-f*
-255 209 46 rG
-688.65 830.18 m
--2.5 -2.25 -4.22 -4.67 -5.67 -6.13 c
--1.45 -1.43 -5.06 -3.66 -3.69 -5.1 c
-1.14 -1.3 6.74 2.12 11.16 5.56 c
-4.37 3.43 11.01 6.86 8.23 9.7 c
--1.46 1.43 -5.34 0.51 -6.91 -0.56 c
--1.18 -0.82 -1.6 -2.09 -3.12 -3.47 c
-f*
-255 209 48 rG
-688.8 830.01 m
--2.45 -2.17 -4.12 -4.51 -5.54 -5.92 c
--1.42 -1.37 -4.94 -3.55 -3.64 -4.91 c
-1.09 -1.23 6.51 2.12 10.79 5.47 c
-4.24 3.34 10.66 6.71 8.01 9.39 c
--1.39 1.35 -5.13 0.41 -6.66 -0.63 c
--1.14 -0.8 -1.52 -2.11 -2.96 -3.39 c
-f*
-255 209 51 rG
-688.95 829.84 m
--2.39 -2.08 -4.03 -4.36 -5.42 -5.71 c
--1.38 -1.31 -4.83 -3.45 -3.59 -4.73 c
-1.03 -1.15 6.28 2.12 10.43 5.37 c
-4.11 3.25 10.31 6.56 7.8 9.07 c
--1.32 1.27 -4.93 0.31 -6.4 -0.7 c
--1.1 -0.78 -1.44 -2.12 -2.81 -3.31 c
-f*
-255 204 0 rG
-657.21 807.96 m
-3.88 -0.4 7.44 -0.55 9.82 -0.55 c
-6.02 0 14.1 2.53 22.02 6.57 c
-7.76 4.04 10.14 5.62 15.68 8.87 c
-5.31 3.17 11.56 7.21 9.19 8.4 c
--2.38 1.27 -5.15 -0.08 -12.83 -4.91 c
--7.44 -4.67 -11.64 -6.89 -19.88 -10.53 c
--3.17 -1.43 -8.08 -3.41 -11.4 -3.56 c
--3.17 -0.16 -7.44 -0.08 -9.9 -0.08 c
--2.93 0 -6.73 1.19 -9.82 2.53 c
-0 0.08 7.13 -6.73 y
-f*
-179 127 25 rG
-650.39 810.09 m
--5.31 2.85 -12.36 6.57 -13.78 12.04 c
--0.08 0.4 1.03 1.03 1.5 0.87 c
-12.28 -12.91 p f*
-176 125 25 rG
-650.39 810.17 m
--5.39 2.85 -12.28 6.57 -13.62 11.8 c
--0.08 0.4 0.95 1.03 1.5 0.79 c
-4.04 -4.04 3.09 -3.01 12.12 -12.59 c
-f*
-171 120 23 rG
-650.31 810.17 m
--5.39 2.93 -12.12 6.65 -13.38 11.72 c
--0.08 0.4 0.95 1.03 1.58 0.71 c
-3.8 -3.88 3.33 -3.33 11.8 -12.43 c
-f*
-168 117 23 rG
-650.31 810.25 m
--5.46 2.85 -12.04 6.65 -13.31 11.48 c
-0 0.4 0.95 1.03 1.66 0.63 c
-3.56 -3.64 3.56 -3.48 11.64 -12.12 c
-f*
-163 112 20 rG
-650.24 810.33 m
--5.39 2.85 -11.96 6.57 -13.07 11.33 c
--0.08 0.32 0.95 0.95 1.66 0.55 c
-3.41 -3.48 3.8 -3.72 11.4 -11.88 c
-f*
-161 110 20 rG
-650.24 810.41 m
--5.46 2.85 -11.88 6.57 -12.91 11.09 c
--0.08 0.4 0.87 1.03 1.66 0.48 c
-3.25 -3.25 4.04 -3.96 11.25 -11.56 c
-f*
-156 104 17 rG
-650.24 810.41 m
--5.54 2.93 -11.8 6.65 -12.75 11.01 c
--0.08 0.32 0.87 0.95 1.74 0.4 c
-3.01 -3.09 4.28 -4.2 11.01 -11.4 c
-f*
-153 102 17 rG
-650.16 810.49 m
--5.54 2.93 -11.64 6.65 -12.51 10.77 c
--0.08 0.32 0.79 0.95 1.74 0.32 c
-2.85 -2.85 4.51 -4.36 10.77 -11.09 c
-f*
-151 99 17 rG
-650.16 810.57 m
--5.62 2.85 -11.56 6.65 -12.43 10.53 c
-0 0.4 0.79 1.03 1.82 0.32 c
-2.61 -2.69 4.75 -4.67 10.61 -10.85 c
-f*
-145 94 15 rG
-650.16 810.57 m
--5.7 2.93 -11.48 6.73 -12.28 10.45 c
-0 0.32 0.79 0.95 1.9 0.16 c
-2.38 -2.46 4.99 -4.83 10.38 -10.61 c
-f*
-143 92 15 rG
-650.08 810.65 m
--5.7 2.93 -11.33 6.73 -12.04 10.22 c
-0 0.32 0.71 0.95 1.9 0.16 c
-2.22 -2.3 5.23 -5.07 10.14 -10.38 c
-f*
-138 87 10 rG
-650.08 810.73 m
--5.7 2.93 -11.33 6.65 -11.88 10.06 c
--0.08 0.32 0.71 0.95 1.9 0 c
-2.06 -1.98 5.46 -5.31 9.98 -10.06 c
-f*
-135 84 10 rG
-650 810.81 m
--5.7 2.93 -11.17 6.65 -11.64 9.82 c
--0.08 0.32 0.63 0.95 1.9 0 c
-1.9 -1.82 5.7 -5.54 9.74 -9.82 c
-f*
-130 79 7 rG
-650 810.81 m
--5.78 3.01 -11.09 6.73 -11.48 9.74 c
--0.08 0.24 0.63 0.87 1.98 -0.16 c
-1.66 -1.58 5.94 -5.7 9.5 -9.58 c
-f*
-127 76 7 rG
-650 810.89 m
--5.86 2.93 -11.01 6.73 -11.41 9.5 c
-0 0.32 0.63 0.95 2.06 -0.16 c
-1.43 -1.43 6.18 -6.02 9.35 -9.35 c
-f*
-125 74 7 rG
-649.92 810.97 m
--5.86 2.93 -10.85 6.73 -11.17 9.27 c
-0 0.32 0.55 0.95 2.06 -0.24 c
-1.27 -1.19 6.42 -6.18 9.11 -9.03 c
-f*
-120 69 5 rG
-649.92 810.97 m
--5.94 3.01 -10.77 6.81 -11.01 9.19 c
-0 0.24 0.55 0.87 2.14 -0.32 c
-1.03 -1.03 6.65 -6.42 8.87 -8.87 c
-f*
-117 66 5 rG
-649.92 811.04 m
--6.02 3.01 -10.69 6.81 -10.85 8.95 c
-0 0.32 0.48 0.95 2.14 -0.4 c
-0.87 -0.79 6.89 -6.65 8.71 -8.55 c
-f*
-112 61 2 rG
-649.84 811.12 m
--5.94 3.01 -10.61 6.73 -10.61 8.79 c
--0.08 0.24 0.48 0.87 2.14 -0.48 c
-0.71 -0.63 7.13 -6.89 8.47 -8.32 c
-f*
-110 58 2 rG
-649.84 811.2 m
--6.02 2.93 -10.53 6.73 -10.53 8.55 c
-0 0.24 0.48 0.87 2.22 -0.55 c
-0.48 -0.4 7.37 -7.05 8.32 -8 c
-f*
-104 53 0 rG
-649.76 811.2 m
--6.02 3.01 -10.38 6.81 -10.3 8.47 c
-0 0.24 0.48 0.87 2.3 -0.63 c
-0.24 -0.24 7.6 -7.37 8 -7.84 c
-f*
-102 51 0 rG
-649.76 811.28 m
--6.1 3.01 -10.3 6.81 -10.14 8.24 c
-0 0.24 0.4 0.87 2.3 -0.71 c
-0.08 0 7.84 -7.52 y
-f*
-204 153 51 rG
-656.65 808.35 m
--4.12 0.95 -5.94 1.5 v
--12.59 13.15 -12.51 13.15 v
-1.82 -0.71 6.34 -4.99 8.32 -6.73 c
-0.71 -0.63 2.38 -1.58 4.28 -2.14 c
-0.08 0 5.86 -5.78 y
-f*
-199 148 48 rG
-656.65 808.43 m
--4.28 0.95 -6.1 1.58 v
--12.36 12.83 -12.28 12.83 v
-1.82 -0.71 6.34 -4.99 8.32 -6.65 c
-0.71 -0.63 2.46 -1.58 4.28 -2.14 c
-0.08 0 5.78 -5.62 y
-f*
-194 143 46 rG
-656.57 808.43 m
--4.36 1.03 -6.18 1.74 v
--12.04 12.51 -11.96 12.51 v
-1.74 -0.71 6.26 -4.91 8.24 -6.57 c
-0.71 -0.63 2.46 -1.66 4.36 -2.14 c
-0.08 0 5.54 -5.54 y
-f*
-189 138 43 rG
-656.57 808.51 m
--4.51 1.03 -6.34 1.74 v
--11.8 12.36 -11.72 12.36 v
-1.74 -0.79 6.26 -4.99 8.16 -6.57 c
-0.79 -0.63 2.61 -1.66 4.44 -2.22 c
-0.08 0 5.46 -5.31 y
-f*
-184 133 40 rG
-656.49 808.51 m
--4.51 1.11 -6.42 1.9 v
--11.56 12.04 -11.48 12.04 v
-1.74 -0.79 6.26 -4.99 8.16 -6.57 c
-0.79 -0.55 2.69 -1.58 4.51 -2.14 c
-0.08 0 5.23 -5.23 y
-f*
-179 127 38 rG
-656.49 808.59 m
--4.67 1.11 -6.57 1.98 v
--11.25 11.72 -11.17 11.72 v
-1.66 -0.79 6.18 -4.99 8.08 -6.49 c
-0.79 -0.55 2.69 -1.66 4.51 -2.14 c
-0.08 0 5.15 -5.07 y
-f*
-176 125 38 rG
-656.49 808.59 m
--4.83 1.11 -6.73 2.14 v
--11.01 11.4 -10.93 11.4 v
-1.66 -0.79 6.18 -4.91 8.08 -6.42 c
-0.79 -0.55 2.77 -1.66 4.59 -2.14 c
-0.08 0 4.99 -4.99 y
-f*
-171 120 35 rG
-656.41 808.67 m
--4.91 1.11 -6.81 2.14 v
--10.77 11.17 -10.69 11.17 v
-1.66 -0.79 6.18 -4.91 8.08 -6.34 c
-0.79 -0.55 2.85 -1.66 4.59 -2.14 c
-0.08 0 4.83 -4.83 y
-f*
-166 115 33 rG
-656.41 808.75 m
--5.07 1.11 -6.97 2.22 v
--10.45 10.93 -10.38 10.93 v
-1.58 -0.87 6.1 -4.99 7.92 -6.34 c
-0.87 -0.55 2.93 -1.74 4.75 -2.22 c
-0.08 0 4.67 -4.59 y
-f*
-161 110 30 rG
-656.41 808.75 m
--5.23 1.19 -7.13 2.38 v
--10.22 10.61 -10.14 10.61 v
-1.58 -0.87 6.1 -4.91 7.92 -6.26 c
-0.87 -0.55 3.01 -1.74 4.75 -2.22 c
-0.08 0 4.59 -4.51 y
-f*
-156 104 28 rG
-656.33 808.83 m
--5.31 1.19 -7.21 2.46 v
--9.98 10.3 -9.9 10.3 v
-1.58 -0.87 6.1 -4.91 7.92 -6.18 c
-0.87 -0.55 3.09 -1.74 4.83 -2.22 c
-0.08 0 4.36 -4.36 y
-f*
-151 99 23 rG
-656.33 808.83 m
--5.39 1.27 -7.44 2.53 v
--9.58 10.06 -9.5 10.06 v
-1.58 -0.95 6.02 -4.91 7.84 -6.18 c
-0.87 -0.48 3.09 -1.74 4.83 -2.14 c
-0.08 0 4.28 -4.28 y
-f*
-145 94 20 rG
-656.25 808.91 m
--5.46 1.27 -7.52 2.61 v
--9.35 9.74 -9.27 9.74 v
-1.58 -0.95 6.02 -4.91 7.84 -6.1 c
-0.87 -0.48 3.17 -1.74 4.91 -2.14 c
-0.08 0 4.04 -4.12 y
-f*
-140 89 17 rG
-656.25 808.91 m
--5.62 1.35 -7.68 2.77 v
--9.11 9.42 -9.03 9.42 v
-1.58 -0.95 6.02 -4.83 7.84 -6.02 c
-0.87 -0.48 3.25 -1.74 4.91 -2.14 c
-0.08 0 3.96 -4.04 y
-f*
-135 84 15 rG
-656.25 808.99 m
--5.78 1.35 -7.84 2.85 v
--8.79 9.19 -8.71 9.19 v
-1.5 -1.03 5.94 -4.91 7.68 -6.02 c
-0.95 -0.48 3.33 -1.82 5.07 -2.22 c
-0.08 0 3.8 -3.8 y
-f*
-130 79 12 rG
-656.18 809.06 m
--5.86 1.35 -7.92 2.85 v
--8.55 8.95 -8.47 8.95 v
-1.5 -1.03 5.94 -4.91 7.68 -5.94 c
-0.95 -0.48 3.41 -1.82 5.07 -2.22 c
-0.08 0 3.64 -3.64 y
-f*
-127 76 12 rG
-656.18 809.06 m
--6.02 1.35 -8.08 3.01 v
--8.32 8.63 -8.24 8.63 v
-1.5 -1.03 5.94 -4.83 7.68 -5.86 c
-0.95 -0.48 3.48 -1.82 5.15 -2.22 c
-0.08 0 3.48 -3.56 y
-f*
-122 71 10 rG
-656.18 809.14 m
--6.18 1.35 -8.24 3.09 v
--8 8.32 -7.92 8.32 v
-1.43 -1.03 5.86 -4.83 7.6 -5.78 c
-0.95 -0.48 3.48 -1.9 5.15 -2.22 c
-0.08 0 3.41 -3.41 y
-f*
-117 66 7 rG
-656.1 809.14 m
--6.18 1.43 -8.32 3.25 v
--7.76 8 -7.68 8 v
-1.43 -1.03 5.86 -4.83 7.6 -5.78 c
-0.95 -0.4 3.56 -1.82 5.23 -2.14 c
-0.08 0 3.17 -3.33 y
-f*
-112 61 5 rG
-656.1 809.22 m
--6.34 1.43 -8.47 3.25 v
--7.52 7.84 -7.44 7.84 v
-1.43 -1.11 5.86 -4.91 7.52 -5.78 c
-1.03 -0.4 3.72 -1.82 5.31 -2.22 c
-0.08 0 3.09 -3.09 y
-f*
-107 56 2 rG
-656.02 809.22 m
--6.42 1.5 -8.55 3.41 v
--7.21 7.52 -7.13 7.52 v
-1.35 -1.11 5.78 -4.83 7.44 -5.7 c
-1.03 -0.4 3.72 -1.9 5.39 -2.22 c
-0.08 0 2.85 -3.01 y
-f*
-102 51 0 rG
-656.02 809.3 m
--6.57 1.5 -8.71 3.48 v
--6.97 7.21 -6.89 7.21 v
-1.35 -1.11 5.78 -4.83 7.44 -5.62 c
-1.03 -0.4 3.8 -1.9 5.39 -2.22 c
-0.08 0 2.77 -2.85 y
-f*
-248 197 0 rG
-657.13 808.03 m
-3.88 -0.4 7.52 -0.55 9.9 -0.55 c
-6.02 0 14.02 2.53 21.94 6.49 c
-7.68 4.04 10.06 5.62 15.52 8.87 c
-5.31 3.09 11.64 7.13 9.27 8.32 c
--2.38 1.27 -5.07 -0.16 -12.75 -4.91 c
--7.44 -4.67 -11.72 -6.97 -19.88 -10.53 c
--3.17 -1.43 -8 -3.41 -11.33 -3.56 c
--3.17 -0.16 -7.44 -0.08 -9.9 -0.08 c
--2.93 0 -6.65 1.19 -9.74 2.53 c
-0 0.08 6.97 -6.57 y
-f*
-240 189 0 rG
-656.97 808.11 m
-3.96 -0.48 7.68 -0.55 10.14 -0.55 c
-5.94 0 13.86 2.53 21.7 6.49 c
-7.76 3.96 9.98 5.54 15.52 8.71 c
-5.31 3.17 11.64 7.13 9.27 8.32 c
--2.38 1.19 -4.99 -0.24 -12.67 -4.99 c
--7.44 -4.59 -11.8 -6.97 -19.8 -10.45 c
--3.25 -1.43 -8 -3.41 -11.33 -3.56 c
--3.17 -0.16 -7.44 -0.08 -9.82 -0.08 c
--2.93 0 -6.65 1.19 -9.74 2.46 c
-0 0.08 6.73 -6.34 y
-f*
-232 181 0 rG
-656.89 808.19 m
-3.96 -0.48 7.76 -0.55 10.22 -0.55 c
-5.94 0 13.78 2.53 21.62 6.42 c
-7.68 3.96 9.9 5.54 15.36 8.71 c
-5.31 3.09 11.64 7.05 9.35 8.16 c
--2.38 1.27 -4.99 -0.24 -12.59 -4.91 c
--7.37 -4.59 -11.88 -7.05 -19.8 -10.45 c
--3.17 -1.43 -7.92 -3.33 -11.25 -3.56 c
--3.17 -0.16 -7.37 -0.08 -9.82 -0.08 c
--2.93 0 -6.57 1.19 -9.58 2.46 c
-0 0.08 6.49 -6.18 y
-f*
-227 176 0 rG
-656.81 808.19 m
-3.96 -0.48 7.84 -0.48 10.3 -0.48 c
-5.94 0 13.7 2.46 21.54 6.42 c
-7.68 3.88 9.74 5.46 15.29 8.55 c
-5.23 3.09 11.64 6.97 9.35 8.16 c
--2.38 1.19 -4.91 -0.32 -12.51 -4.99 c
--7.37 -4.51 -11.96 -6.97 -19.72 -10.38 c
--3.25 -1.43 -7.92 -3.33 -11.25 -3.48 c
--3.17 -0.24 -7.37 -0.16 -9.82 -0.16 c
--2.85 0 -6.49 1.19 -9.5 2.46 c
-0 0.08 6.34 -6.1 y
-f*
-220 168 0 rG
-656.65 808.27 m
-4.04 -0.48 8 -0.48 10.45 -0.48 c
-5.94 0 13.62 2.46 21.46 6.34 c
-7.6 3.88 9.66 5.46 15.13 8.55 c
-5.23 3.01 11.72 6.89 9.42 8.08 c
--2.38 1.19 -4.83 -0.4 -12.43 -4.99 c
--7.37 -4.51 -12.04 -7.05 -19.72 -10.37 c
--3.25 -1.43 -7.84 -3.33 -11.17 -3.48 c
--3.17 -0.24 -7.37 -0.16 -9.82 -0.16 c
--2.85 0 -6.42 1.19 -9.42 2.46 c
-0 0.08 6.1 -5.94 y
-f*
-212 161 0 rG
-656.57 808.35 m
-4.12 -0.55 8.08 -0.48 10.61 -0.48 c
-5.94 0 13.46 2.46 21.23 6.34 c
-7.68 3.8 9.66 5.31 15.13 8.4 c
-5.23 3.09 11.72 6.89 9.35 8.08 c
--2.3 1.19 -4.67 -0.4 -12.28 -5.07 c
--7.37 -4.44 -12.12 -7.05 -19.64 -10.38 c
--3.33 -1.43 -7.84 -3.25 -11.17 -3.41 c
--3.17 -0.24 -7.37 -0.16 -9.74 -0.16 c
--2.85 0 -6.42 1.11 -9.42 2.38 c
-0 0.08 5.94 -5.7 y
-f*
-204 153 0 rG
-656.49 808.43 m
-4.12 -0.55 8.16 -0.48 10.69 -0.48 c
-5.94 0 13.38 2.46 21.15 6.26 c
-7.6 3.8 9.5 5.31 14.97 8.4 c
-5.23 3.01 11.8 6.81 9.42 7.92 c
--2.3 1.19 -4.67 -0.4 -12.2 -4.99 c
--7.37 -4.44 -12.2 -7.13 -19.64 -10.38 c
--3.25 -1.43 -7.76 -3.17 -11.09 -3.41 c
--3.17 -0.24 -7.37 -0.16 -9.74 -0.16 c
--2.85 0 -6.34 1.11 -9.35 2.38 c
-0 0.08 5.78 -5.54 y
-f*
-197 145 0 rG
-656.33 808.51 m
-4.2 -0.55 8.32 -0.48 10.85 -0.48 c
-5.94 0 13.31 2.46 21.07 6.18 c
-7.6 3.8 9.42 5.31 14.81 8.4 c
-5.23 2.93 11.8 6.73 9.5 7.84 c
--2.3 1.19 -4.59 -0.48 -12.12 -4.99 c
--7.29 -4.44 -12.28 -7.21 -19.56 -10.38 c
--3.33 -1.43 -7.76 -3.17 -11.09 -3.41 c
--3.17 -0.24 -7.29 -0.16 -9.74 -0.16 c
--2.85 0 -6.26 1.11 -9.19 2.38 c
-0 0.08 5.46 -5.39 y
-f*
-189 138 0 rG
-656.25 808.59 m
-4.2 -0.63 8.4 -0.48 11.01 -0.48 c
-5.86 0 13.15 2.46 20.83 6.18 c
-7.6 3.72 9.42 5.23 14.81 8.24 c
-5.23 3.01 11.8 6.73 9.5 7.84 c
--2.3 1.19 -4.51 -0.55 -12.04 -5.07 c
--7.29 -4.36 -12.36 -7.21 -19.56 -10.3 c
--3.33 -1.43 -7.68 -3.17 -11.01 -3.41 c
--3.17 -0.24 -7.29 -0.16 -9.66 -0.16 c
--2.85 0 -6.26 1.11 -9.19 2.3 c
-0 0.08 5.31 -5.15 y
-f*
-181 130 0 rG
-656.18 808.67 m
-4.2 -0.63 8.47 -0.48 11.09 -0.48 c
-5.86 0 13.07 2.46 20.75 6.1 c
-7.6 3.72 9.27 5.23 14.65 8.24 c
-5.23 2.93 11.88 6.65 9.58 7.76 c
--2.3 1.11 -4.44 -0.63 -11.96 -5.07 c
--7.29 -4.36 -12.43 -7.29 -19.48 -10.3 c
--3.41 -1.43 -7.68 -3.17 -11.01 -3.41 c
--3.17 -0.24 -7.29 -0.16 -9.66 -0.16 c
--2.85 0 -6.18 1.11 -9.11 2.3 c
-0 0.08 5.15 -4.99 y
-f*
-176 125 0 rG
-656.02 808.67 m
-4.28 -0.63 8.55 -0.32 11.25 -0.32 c
-5.86 0 13.07 2.3 20.67 6.02 c
-7.52 3.64 9.19 5.15 14.57 8.08 c
-5.15 2.93 11.88 6.57 9.58 7.68 c
--2.3 1.19 -4.44 -0.63 -11.8 -5.07 c
--7.37 -4.36 -12.51 -7.21 -19.56 -10.22 c
--3.33 -1.43 -7.52 -3.09 -10.85 -3.33 c
--3.17 -0.24 -7.37 -0.16 -9.74 -0.16 c
--2.77 0 -6.1 1.03 -9.03 2.22 c
-0 0.08 4.91 -4.91 y
-f*
-168 117 0 rG
-655.94 808.75 m
-4.28 -0.63 8.63 -0.32 11.33 -0.32 c
-5.86 0 12.99 2.3 20.59 5.94 c
-7.52 3.64 9.03 5.15 14.41 8.08 c
-5.15 2.85 11.96 6.49 9.66 7.6 c
--2.3 1.11 -4.36 -0.71 -11.72 -5.07 c
--7.37 -4.36 -12.59 -7.29 -19.48 -10.22 c
--3.41 -1.43 -7.52 -3.09 -10.85 -3.33 c
--3.17 -0.24 -7.37 -0.16 -9.74 -0.16 c
--2.77 0 -6.02 1.03 -8.95 2.22 c
-0 0.08 4.75 -4.75 y
-f*
-161 110 0 rG
-655.86 808.83 m
-4.28 -0.71 8.71 -0.32 11.48 -0.32 c
-5.78 0 12.83 2.3 20.35 5.94 c
-7.52 3.56 9.03 5.07 14.41 7.92 c
-5.15 2.93 11.96 6.49 9.66 7.6 c
--2.3 1.11 -4.28 -0.79 -11.64 -5.15 c
--7.37 -4.28 -12.67 -7.29 -19.48 -10.14 c
--3.41 -1.43 -7.44 -3.09 -10.77 -3.33 c
--3.17 -0.24 -7.37 -0.16 -9.66 -0.16 c
--2.77 0 -6.02 1.03 -8.95 2.14 c
-0 0.08 4.59 -4.51 y
-f*
-153 102 0 rG
-655.7 808.91 m
-4.36 -0.71 8.87 -0.32 11.64 -0.32 c
-5.78 0 12.75 2.3 20.28 5.86 c
-7.52 3.56 8.95 5.07 14.26 7.92 c
-5.15 2.85 11.96 6.42 9.74 7.52 c
--2.3 1.11 -4.2 -0.87 -11.56 -5.15 c
--7.29 -4.28 -12.75 -7.37 -19.4 -10.14 c
--3.48 -1.43 -7.44 -3.09 -10.77 -3.33 c
--3.17 -0.24 -7.29 -0.16 -9.66 -0.16 c
--2.77 0 -5.94 1.03 -8.79 2.14 c
-0 0.08 4.28 -4.36 y
-f*
-145 94 0 rG
-655.62 808.99 m
-4.36 -0.71 8.95 -0.32 11.72 -0.32 c
-5.78 0 12.67 2.3 20.2 5.78 c
-7.44 3.56 8.79 5.07 14.1 7.92 c
-5.15 2.77 12.04 6.34 9.82 7.37 c
--2.3 1.11 -4.2 -0.87 -11.48 -5.07 c
--7.29 -4.28 -12.83 -7.44 -19.4 -10.14 c
--3.41 -1.43 -7.37 -3.01 -10.69 -3.33 c
--3.17 -0.24 -7.29 -0.16 -9.66 -0.16 c
--2.77 0 -5.86 1.03 -8.71 2.14 c
-0 0.08 4.12 -4.2 y
-f*
-138 87 0 rG
-655.54 809.06 m
-4.44 -0.79 9.03 -0.32 11.88 -0.32 c
-5.78 0 12.51 2.3 19.96 5.78 c
-7.52 3.48 8.79 4.91 14.1 7.76 c
-5.15 2.85 12.04 6.34 9.74 7.37 c
--2.22 1.11 -4.04 -0.87 -11.33 -5.15 c
--7.29 -4.2 -12.91 -7.44 -19.32 -10.14 c
--3.48 -1.43 -7.37 -2.93 -10.69 -3.25 c
--3.17 -0.24 -7.29 -0.16 -9.58 -0.16 c
--2.77 0 -5.86 0.95 -8.71 2.06 c
-0 0.08 3.96 -3.96 y
-f*
-130 79 0 rG
-655.38 809.14 m
-4.51 -0.79 9.19 -0.32 12.04 -0.32 c
-5.78 0 12.43 2.3 19.88 5.7 c
-7.44 3.48 8.71 4.91 13.94 7.76 c
-5.15 2.77 12.12 6.26 9.82 7.29 c
--2.22 1.11 -3.96 -0.95 -11.25 -5.15 c
--7.29 -4.2 -12.99 -7.52 -19.32 -10.14 c
--3.48 -1.43 -7.29 -2.93 -10.61 -3.25 c
--3.17 -0.24 -7.29 -0.16 -9.58 -0.16 c
--2.77 0 -5.78 0.95 -8.63 2.06 c
-0 0.08 3.72 -3.8 y
-f*
-125 74 0 rG
-655.3 809.14 m
-4.51 -0.79 9.27 -0.24 12.12 -0.24 c
-5.78 0 12.36 2.22 19.8 5.7 c
-7.44 3.41 8.55 4.83 13.86 7.6 c
-5.07 2.77 12.12 6.18 9.82 7.29 c
--2.22 1.03 -3.88 -1.03 -11.17 -5.23 c
--7.29 -4.12 -13.07 -7.44 -19.25 -10.06 c
--3.56 -1.43 -7.29 -2.93 -10.61 -3.17 c
--3.17 -0.32 -7.29 -0.24 -9.58 -0.24 c
--2.69 0 -5.7 0.95 -8.55 2.06 c
-0 0.08 3.56 -3.72 y
-f*
-117 66 0 rG
-655.23 809.22 m
-4.51 -0.79 9.35 -0.24 12.2 -0.24 c
-5.78 0 12.28 2.22 19.72 5.62 c
-7.37 3.41 8.47 4.83 13.7 7.6 c
-5.07 2.69 12.12 6.1 9.9 7.13 c
--2.22 1.11 -3.88 -1.03 -11.09 -5.15 c
--7.21 -4.12 -13.15 -7.52 -19.25 -10.06 c
--3.48 -1.43 -7.21 -2.85 -10.53 -3.17 c
--3.17 -0.32 -7.21 -0.24 -9.58 -0.24 c
--2.69 0 -5.62 0.95 -8.4 2.06 c
-0 0.08 3.33 -3.56 y
-f*
-110 58 0 rG
-655.07 809.3 m
-4.59 -0.87 9.5 -0.24 12.43 -0.24 c
-5.7 0 12.12 2.22 19.48 5.62 c
-7.44 3.33 8.4 4.75 13.7 7.44 c
-5.07 2.77 12.12 6.1 9.9 7.13 c
--2.22 1.03 -3.8 -1.11 -11.01 -5.23 c
--7.21 -4.04 -13.23 -7.52 -19.17 -9.98 c
--3.56 -1.43 -7.21 -2.85 -10.53 -3.17 c
--3.17 -0.32 -7.21 -0.24 -9.5 -0.24 c
--2.69 0 -5.62 0.95 -8.4 1.98 c
-0 0.08 3.09 -3.33 y
-f*
-102 51 0 rG
-654.99 809.38 m
-4.59 -0.87 9.58 -0.24 12.51 -0.24 c
-5.7 0 12.04 2.22 19.4 5.54 c
-7.37 3.33 8.32 4.75 13.54 7.44 c
-5.07 2.69 12.2 6.02 9.98 7.05 c
--2.22 1.03 -3.72 -1.19 -10.93 -5.23 c
--7.21 -4.04 -13.31 -7.6 -19.17 -9.98 c
--3.56 -1.43 -7.13 -2.85 -10.45 -3.17 c
--3.17 -0.32 -7.21 -0.24 -9.5 -0.24 c
--2.69 0 -5.54 0.95 -8.32 1.98 c
-0 0.08 2.93 -3.17 y
-f*
-255 G
-693.4 753.39 m
-0.95 3.09 31.76 10.38 36.83 8 c
-4.99 -2.38 28.91 -37.15 24.63 -39.05 c
--4.28 -1.82 -13.46 11.56 -26.85 17.74 c
--13.39 6.18 -35.56 10.14 -34.61 13.31 c
-f*
-250 G
-694.31 753.32 m
-0.93 3.04 30.96 9.98 35.96 7.7 c
-4.92 -2.29 28.35 -36.19 24.14 -38.05 c
--4.21 -1.79 -13.16 11.38 -26.34 17.46 c
--13.17 6.08 -34.7 9.78 -33.76 12.89 c
-f*
-245 G
-695.21 753.26 m
-0.92 2.99 30.16 9.59 35.09 7.4 c
-4.86 -2.2 27.78 -35.23 23.65 -37.05 c
--4.14 -1.75 -12.86 11.2 -25.82 17.18 c
--12.96 5.98 -33.83 9.42 -32.92 12.48 c
-f*
-240 G
-696.12 753.2 m
-0.9 2.93 29.36 9.2 34.22 7.09 c
-4.79 -2.11 27.22 -34.27 23.16 -36.06 c
--4.07 -1.72 -12.56 11.02 -25.31 16.9 c
--12.75 5.89 -32.96 9.06 -32.07 12.07 c
-f*
-235 G
-697.03 753.14 m
-0.88 2.88 28.56 8.81 33.35 6.79 c
-4.73 -2.02 26.66 -33.31 22.66 -35.06 c
--4 -1.68 -12.26 10.83 -24.79 16.62 c
--12.54 5.79 -32.1 8.71 -31.22 11.65 c
-f*
-230 G
-697.93 753.07 m
-0.86 2.83 27.76 8.42 32.48 6.49 c
-4.66 -1.93 26.1 -32.35 22.17 -34.06 c
--3.92 -1.65 -11.95 10.65 -24.28 16.34 c
--12.33 5.69 -31.23 8.35 -30.37 11.24 c
-f*
-225 G
-698.84 753.01 m
-0.84 2.78 26.96 8.03 31.61 6.18 c
-4.6 -1.84 25.53 -31.4 21.68 -33.07 c
--3.86 -1.62 -11.65 10.47 -23.77 16.06 c
--12.12 5.59 -30.37 7.99 -29.52 10.82 c
-f*
-220 G
-699.75 752.95 m
-0.83 2.73 26.16 7.64 30.74 5.88 c
-4.53 -1.75 24.97 -30.44 21.19 -32.07 c
--3.79 -1.58 -11.35 10.28 -23.25 15.78 c
--11.9 5.49 -29.5 7.63 -28.68 10.41 c
-f*
-215 G
-700.66 752.89 m
-0.81 2.68 25.36 7.24 29.88 5.58 c
-4.47 -1.66 24.41 -29.48 20.69 -31.08 c
--3.71 -1.55 -11.05 10.1 -22.74 15.5 c
--11.69 5.4 -28.64 7.27 -27.83 10 c
-f*
-209 G
-701.56 752.82 m
-0.79 2.62 24.56 6.85 29.01 5.28 c
-4.4 -1.58 23.85 -28.52 20.2 -30.08 c
--3.64 -1.51 -10.74 9.92 -22.23 15.22 c
--11.48 5.3 -27.77 6.92 -26.98 9.59 c
-f*
-204 G
-702.47 752.76 m
-0.77 2.57 23.76 6.46 28.14 4.97 c
-4.34 -1.49 23.28 -27.56 19.71 -29.08 c
--3.57 -1.48 -10.44 9.74 -21.71 14.94 c
--11.27 5.2 -26.91 6.56 -26.14 9.17 c
-f*
-199 G
-703.38 752.7 m
-0.76 2.52 22.96 6.07 27.27 4.67 c
-4.27 -1.4 22.72 -26.61 19.22 -28.09 c
--3.5 -1.45 -10.14 9.55 -21.2 14.66 c
--11.06 5.1 -26.04 6.2 -25.29 8.76 c
-f*
-194 G
-704.28 752.64 m
-0.74 2.47 22.16 5.68 26.4 4.37 c
-4.21 -1.31 22.16 -25.65 18.73 -27.09 c
--3.43 -1.41 -9.84 9.37 -20.69 14.38 c
--10.85 5.01 -25.18 5.84 -24.44 8.34 c
-f*
-189 G
-705.19 752.58 m
-0.72 2.42 21.36 5.29 25.53 4.07 c
-4.14 -1.22 21.6 -24.69 18.23 -26.1 c
--3.36 -1.38 -9.54 9.19 -20.17 14.1 c
--10.64 4.91 -24.31 5.48 -23.59 7.93 c
-f*
-184 G
-706.1 752.51 m
-0.7 2.37 20.56 4.89 24.66 3.77 c
-4.07 -1.13 21.03 -23.73 17.74 -25.1 c
--3.29 -1.34 -9.23 9.01 -19.66 13.82 c
--10.42 4.81 -23.45 5.13 -22.74 7.52 c
-f*
-179 G
-707 752.45 m
-0.69 2.32 19.76 4.5 23.79 3.46 c
-4.01 -1.04 20.47 -22.78 17.25 -24.1 c
--3.22 -1.31 -8.93 8.82 -19.15 13.54 c
--10.21 4.71 -22.58 4.77 -21.9 7.1 c
-f*
-174 G
-707.91 752.39 m
-0.67 2.26 18.96 4.11 22.92 3.16 c
-3.94 -0.95 19.91 -21.82 16.76 -23.11 c
--3.15 -1.27 -8.63 8.64 -18.63 13.26 c
--10 4.62 -21.72 4.41 -21.05 6.69 c
-f*
-168 G
-708.82 752.32 m
-0.65 2.21 18.16 3.72 22.06 2.86 c
-3.88 -0.86 19.35 -20.86 16.26 -22.11 c
--3.08 -1.24 -8.33 8.46 -18.12 12.98 c
--9.79 4.52 -20.85 4.05 -20.2 6.28 c
-f*
-163 G
-709.72 752.26 m
-0.63 2.16 17.36 3.33 21.19 2.55 c
-3.81 -0.77 18.78 -19.9 15.77 -21.12 c
--3.01 -1.21 -8.03 8.28 -17.6 12.7 c
--9.58 4.42 -19.99 3.7 -19.35 5.87 c
-f*
-158 G
-710.63 752.2 m
-0.61 2.11 16.56 2.94 20.32 2.25 c
-3.75 -0.69 18.22 -18.94 15.28 -20.12 c
--2.94 -1.17 -7.72 8.09 -17.09 12.42 c
--9.37 4.32 -19.12 3.34 -18.51 5.45 c
-f*
-153 G
-711.54 752.14 m
-0.6 2.06 15.76 2.55 19.45 1.95 c
-3.68 -0.6 17.66 -17.99 14.79 -19.12 c
--2.87 -1.14 -7.42 7.91 -16.58 12.14 c
--9.15 4.23 -18.26 2.98 -17.66 5.04 c
-f*
-255 G
-654.59 706.03 m
-3.17 -0.16 0.16 -17.9 0.16 -36.19 c
-0 -18.3 2.46 -24.71 0.16 -27.01 c
--2.3 -2.3 -6.26 5.94 -6.26 24.24 c
-0 18.3 2.77 39.13 5.94 38.97 c
-f*
-250 G
-654.56 705.6 m
-3.06 -0.18 0.12 -17.66 0.11 -35.66 c
--0.01 -18 2.41 -24.43 0.18 -26.66 c
--2.22 -2.23 -6.12 5.92 -6.1 23.93 c
-0.01 18 2.75 38.57 5.81 38.39 c
-f*
-245 G
-654.53 705.17 m
-2.95 -0.2 0.08 -17.41 0.06 -35.13 c
--0.03 -17.71 2.36 -24.15 0.2 -26.32 c
--2.15 -2.16 -5.98 5.9 -5.95 23.62 c
-0.03 17.71 2.73 38.02 5.69 37.82 c
-f*
-240 G
-654.49 704.74 m
-2.85 -0.22 0.05 -17.17 0 -34.59 c
--0.04 -17.42 2.31 -23.86 0.22 -25.97 c
--2.07 -2.1 -5.84 5.89 -5.79 23.31 c
-0.04 17.42 2.71 37.46 5.56 37.25 c
-f*
-235 G
-654.46 704.3 m
-2.74 -0.23 0.01 -16.93 -0.05 -34.06 c
--0.05 -17.13 2.26 -23.58 0.25 -25.63 c
--2 -2.03 -5.7 5.87 -5.63 23.01 c
-0.05 17.13 2.69 36.91 5.43 36.68 c
-f*
-230 G
-654.43 703.87 m
-2.63 -0.25 -0.03 -16.69 -0.1 -33.52 c
--0.07 -16.84 2.21 -23.3 0.27 -25.28 c
--1.92 -1.97 -5.56 5.85 -5.48 22.7 c
-0.07 16.84 2.67 36.36 5.31 36.1 c
-f*
-225 G
-654.4 703.44 m
-2.53 -0.27 -0.07 -16.45 -0.15 -32.99 c
--0.08 -16.55 2.16 -23.02 0.29 -24.93 c
--1.85 -1.9 -5.42 5.83 -5.32 22.39 c
-0.08 16.54 2.66 35.81 5.18 35.53 c
-f*
-220 G
-654.36 703.01 m
-2.42 -0.29 -0.11 -16.2 -0.2 -32.46 c
--0.09 -16.25 2.11 -22.74 0.31 -24.59 c
--1.78 -1.83 -5.28 5.81 -5.17 22.09 c
-0.09 16.25 2.64 35.25 5.05 34.96 c
-f*
-215 G
-654.33 702.58 m
-2.31 -0.31 -0.14 -15.96 -0.25 -31.92 c
--0.11 -15.96 2.06 -22.45 0.33 -24.24 c
--1.7 -1.77 -5.14 5.8 -5.01 21.78 c
-0.11 15.96 2.62 34.7 4.93 34.39 c
-f*
-209 G
-654.3 702.15 m
-2.21 -0.33 -0.18 -15.72 -0.3 -31.39 c
--0.12 -15.67 2.01 -22.17 0.36 -23.9 c
--1.63 -1.7 -5 5.78 -4.85 21.47 c
-0.12 15.67 2.6 34.15 4.8 33.81 c
-f*
-204 G
-654.27 701.73 m
-2.1 -0.35 -0.22 -15.48 -0.35 -30.85 c
--0.14 -15.38 1.96 -21.89 0.38 -23.55 c
--1.55 -1.64 -4.86 5.76 -4.7 21.16 c
-0.14 15.38 2.58 33.59 4.68 33.24 c
-f*
-199 G
-654.24 701.3 m
-1.99 -0.37 -0.26 -15.24 -0.41 -30.32 c
--0.15 -15.09 1.91 -21.61 0.4 -23.21 c
--1.48 -1.57 -4.72 5.74 -4.54 20.86 c
-0.15 15.09 2.56 33.04 4.55 32.67 c
-f*
-194 G
-654.2 700.87 m
-1.89 -0.39 -0.29 -14.99 -0.46 -29.79 c
--0.16 -14.79 1.86 -21.33 0.42 -22.86 c
--1.41 -1.5 -4.58 5.72 -4.39 20.55 c
-0.16 14.79 2.54 32.49 4.42 32.1 c
-f*
-189 G
-654.17 700.44 m
-1.78 -0.41 -0.33 -14.75 -0.51 -29.25 c
--0.18 -14.5 1.81 -21.04 0.44 -22.52 c
--1.33 -1.44 -4.44 5.71 -4.23 20.24 c
-0.18 14.5 2.52 31.93 4.3 31.53 c
-f*
-184 G
-654.14 700.01 m
-1.67 -0.43 -0.37 -14.51 -0.56 -28.72 c
--0.19 -14.21 1.76 -20.76 0.46 -22.17 c
--1.26 -1.37 -4.3 5.69 -4.08 19.94 c
-0.19 14.21 2.5 31.38 4.17 30.95 c
-f*
-179 G
-654.11 699.57 m
-1.56 -0.45 -0.41 -14.27 -0.61 -28.18 c
--0.2 -13.92 1.71 -20.48 0.49 -21.83 c
--1.18 -1.3 -4.16 5.67 -3.92 19.63 c
-0.2 13.92 2.48 30.83 4.04 30.38 c
-f*
-174 G
-654.07 699.14 m
-1.46 -0.47 -0.44 -14.02 -0.66 -27.65 c
--0.22 -13.63 1.66 -20.2 0.51 -21.48 c
--1.11 -1.24 -4.02 5.65 -3.76 19.32 c
-0.22 13.63 2.46 30.27 3.92 29.81 c
-f*
-168 G
-654.04 698.71 m
-1.35 -0.48 -0.48 -13.78 -0.71 -27.12 c
--0.23 -13.34 1.61 -19.92 0.53 -21.14 c
--1.03 -1.17 -3.89 5.63 -3.61 19.02 c
-0.23 13.34 2.44 29.72 3.79 29.24 c
-f*
-163 G
-654.01 698.28 m
-1.24 -0.5 -0.52 -13.54 -0.76 -26.58 c
--0.24 -13.04 1.56 -19.63 0.55 -20.79 c
--0.96 -1.11 -3.75 5.62 -3.45 18.71 c
-0.24 13.04 2.42 29.17 3.67 28.66 c
-f*
-158 G
-653.98 697.85 m
-1.14 -0.52 -0.56 -13.3 -0.81 -26.05 c
--0.26 -12.75 1.51 -19.35 0.57 -20.44 c
--0.89 -1.04 -3.61 5.6 -3.3 18.4 c
-0.26 12.75 2.4 28.61 3.54 28.09 c
-f*
-153 G
-653.94 697.42 m
-1.03 -0.54 -0.6 -13.05 -0.87 -25.51 c
--0.27 -12.46 1.46 -19.07 0.59 -20.1 c
--0.81 -0.97 -3.47 5.58 -3.14 18.09 c
-0.27 12.46 2.38 28.06 3.41 27.52 c
-f*
-255 G
-661.52 754.94 m
-1.91 -0.21 13.68 2.44 14.11 1.38 c
-0.42 -0.85 -7.32 -3.18 -9.86 -5.83 c
--0.85 -0.85 -3.08 -2.86 -4.45 -2.65 c
--1.06 0.11 -1.7 2.33 -3.29 4.03 c
--3.82 3.82 -6.26 3.5 -5.51 4.98 c
-0.64 1.17 5.73 -1.59 9.01 -1.91 c
-f*
-252 G
-661.57 754.89 m
-1.87 -0.21 13.39 2.39 13.81 1.35 c
-0.41 -0.83 -7.16 -3.12 -9.66 -5.71 c
--0.83 -0.83 -3.01 -2.8 -4.36 -2.59 c
--1.04 0.1 -1.66 2.28 -3.22 3.95 c
--3.74 3.74 -6.12 3.43 -5.4 4.88 c
-0.62 1.14 5.61 -1.56 8.82 -1.87 c
-f*
-249 G
-661.62 754.85 m
-1.83 -0.2 13.11 2.34 13.51 1.32 c
-0.41 -0.81 -7.01 -3.05 -9.45 -5.59 c
--0.81 -0.81 -2.95 -2.74 -4.27 -2.54 c
--1.02 0.1 -1.63 2.24 -3.15 3.86 c
--3.66 3.66 -5.99 3.35 -5.28 4.77 c
-0.61 1.12 5.49 -1.52 8.63 -1.83 c
-f*
-246 G
-661.67 754.8 m
-1.79 -0.2 12.82 2.29 13.22 1.29 c
-0.4 -0.8 -6.86 -2.98 -9.24 -5.46 c
--0.79 -0.8 -2.88 -2.68 -4.17 -2.48 c
--0.99 0.1 -1.59 2.19 -3.08 3.78 c
--3.58 3.58 -5.86 3.28 -5.17 4.67 c
-0.6 1.09 5.37 -1.49 8.45 -1.79 c
-f*
-243 G
-661.72 754.76 m
-1.75 -0.19 12.53 2.24 12.92 1.26 c
-0.39 -0.78 -6.7 -2.92 -9.03 -5.34 c
--0.78 -0.78 -2.82 -2.62 -4.08 -2.43 c
--0.97 0.1 -1.55 2.14 -3.01 3.69 c
--3.5 3.5 -5.73 3.21 -5.05 4.56 c
-0.58 1.07 5.24 -1.46 8.26 -1.75 c
-f*
-240 G
-661.77 754.72 m
-1.71 -0.19 12.24 2.18 12.62 1.23 c
-0.38 -0.76 -6.55 -2.85 -8.83 -5.22 c
--0.76 -0.76 -2.75 -2.56 -3.99 -2.37 c
--0.95 0.09 -1.52 2.09 -2.94 3.61 c
--3.42 3.42 -5.6 3.13 -4.93 4.46 c
-0.57 1.04 5.12 -1.42 8.07 -1.71 c
-f*
-236 G
-661.82 754.67 m
-1.67 -0.18 11.95 2.13 12.33 1.2 c
-0.37 -0.74 -6.39 -2.78 -8.62 -5.1 c
--0.74 -0.74 -2.69 -2.5 -3.89 -2.32 c
--0.93 0.09 -1.48 2.04 -2.87 3.52 c
--3.34 3.34 -5.47 3.06 -4.82 4.36 c
-0.56 1.02 5 -1.39 7.88 -1.67 c
-f*
-233 G
-661.87 754.63 m
-1.63 -0.18 11.67 2.08 12.03 1.18 c
-0.36 -0.72 -6.24 -2.71 -8.41 -4.97 c
--0.72 -0.72 -2.62 -2.44 -3.8 -2.26 c
--0.9 0.09 -1.45 1.99 -2.8 3.44 c
--3.26 3.25 -5.33 2.98 -4.7 4.25 c
-0.54 0.99 4.88 -1.36 7.69 -1.63 c
-f*
-230 G
-661.92 754.58 m
-1.59 -0.18 11.38 2.03 11.73 1.15 c
-0.35 -0.71 -6.09 -2.65 -8.2 -4.85 c
--0.71 -0.71 -2.56 -2.38 -3.7 -2.21 c
--0.88 0.09 -1.41 1.94 -2.74 3.35 c
--3.18 3.17 -5.2 2.91 -4.59 4.15 c
-0.53 0.97 4.76 -1.32 7.5 -1.59 c
-f*
-227 G
-661.97 754.54 m
-1.55 -0.17 11.09 1.98 11.44 1.12 c
-0.34 -0.69 -5.93 -2.58 -8 -4.73 c
--0.69 -0.69 -2.49 -2.32 -3.61 -2.15 c
--0.86 0.09 -1.38 1.89 -2.67 3.27 c
--3.1 3.09 -5.07 2.84 -4.47 4.04 c
-0.52 0.95 4.64 -1.29 7.31 -1.55 c
-f*
-223 G
-662.02 754.5 m
-1.51 -0.17 10.8 1.93 11.14 1.09 c
-0.33 -0.67 -5.78 -2.51 -7.79 -4.61 c
--0.67 -0.67 -2.43 -2.26 -3.52 -2.09 c
--0.84 0.08 -1.34 1.84 -2.6 3.18 c
--3.02 3.01 -4.94 2.76 -4.35 3.94 c
-0.5 0.92 4.52 -1.26 7.12 -1.51 c
-f*
-220 G
-662.07 754.45 m
-1.47 -0.16 10.52 1.88 10.84 1.06 c
-0.33 -0.65 -5.63 -2.45 -7.58 -4.48 c
--0.65 -0.65 -2.36 -2.2 -3.42 -2.04 c
--0.82 0.08 -1.3 1.79 -2.53 3.1 c
--2.93 2.93 -4.81 2.69 -4.24 3.83 c
-0.49 0.9 4.4 -1.22 6.93 -1.47 c
-f*
-217 G
-662.12 754.41 m
-1.43 -0.16 10.23 1.82 10.55 1.03 c
-0.32 -0.63 -5.47 -2.38 -7.37 -4.36 c
--0.63 -0.63 -2.3 -2.14 -3.33 -1.98 c
--0.79 0.08 -1.27 1.74 -2.46 3.01 c
--2.85 2.85 -4.68 2.62 -4.12 3.73 c
-0.48 0.87 4.28 -1.19 6.74 -1.43 c
-f*
-214 G
-662.17 754.36 m
-1.39 -0.15 9.94 1.77 10.25 1 c
-0.31 -0.62 -5.32 -2.31 -7.17 -4.24 c
--0.62 -0.62 -2.24 -2.08 -3.24 -1.93 c
--0.77 0.08 -1.23 1.7 -2.39 2.93 c
--2.77 2.77 -4.55 2.54 -4.01 3.62 c
-0.46 0.85 4.16 -1.16 6.55 -1.39 c
-f*
-211 G
-662.22 754.32 m
-1.35 -0.15 9.65 1.72 9.95 0.97 c
-0.3 -0.6 -5.16 -2.25 -6.96 -4.12 c
--0.6 -0.6 -2.17 -2.02 -3.14 -1.87 c
--0.75 0.07 -1.2 1.65 -2.32 2.84 c
--2.69 2.69 -4.42 2.47 -3.89 3.52 c
-0.45 0.82 4.04 -1.12 6.36 -1.35 c
-f*
-208 G
-662.27 754.28 m
-1.31 -0.14 9.37 1.67 9.66 0.94 c
-0.29 -0.58 -5.01 -2.18 -6.75 -3.99 c
--0.58 -0.58 -2.11 -1.96 -3.05 -1.82 c
--0.73 0.07 -1.16 1.6 -2.25 2.76 c
--2.61 2.61 -4.28 2.4 -3.78 3.41 c
-0.43 0.8 3.92 -1.09 6.17 -1.31 c
-f*
-204 G
-662.32 754.23 m
-1.27 -0.14 9.08 1.62 9.36 0.91 c
-0.28 -0.56 -4.86 -2.11 -6.54 -3.87 c
--0.56 -0.56 -2.04 -1.9 -2.96 -1.76 c
--0.7 0.07 -1.13 1.55 -2.18 2.68 c
--2.53 2.53 -4.15 2.32 -3.66 3.31 c
-0.42 0.77 3.8 -1.06 5.98 -1.27 c
-f*
-201 G
-662.37 754.19 m
-1.23 -0.14 8.79 1.57 9.06 0.89 c
-0.27 -0.54 -4.7 -2.04 -6.34 -3.75 c
--0.55 -0.54 -1.98 -1.84 -2.86 -1.7 c
--0.68 0.07 -1.09 1.5 -2.11 2.59 c
--2.45 2.45 -4.02 2.25 -3.54 3.2 c
-0.41 0.75 3.68 -1.02 5.79 -1.23 c
-f*
-198 G
-662.42 754.15 m
-1.19 -0.13 8.5 1.52 8.77 0.86 c
-0.26 -0.53 -4.55 -1.98 -6.13 -3.63 c
--0.53 -0.53 -1.91 -1.78 -2.77 -1.65 c
--0.66 0.07 -1.05 1.45 -2.04 2.5 c
--2.37 2.37 -3.89 2.18 -3.43 3.1 c
-0.4 0.72 3.56 -0.99 5.6 -1.19 c
-f*
-195 G
-662.47 754.1 m
-1.15 -0.13 8.21 1.47 8.47 0.83 c
-0.26 -0.51 -4.39 -1.91 -5.92 -3.5 c
--0.51 -0.51 -1.85 -1.72 -2.68 -1.59 c
--0.64 0.06 -1.02 1.4 -1.97 2.42 c
--2.29 2.29 -3.76 2.1 -3.31 2.99 c
-0.38 0.7 3.44 -0.95 5.41 -1.15 c
-f*
-191 G
-662.52 754.06 m
-1.11 -0.12 7.93 1.41 8.17 0.8 c
-0.25 -0.49 -4.24 -1.84 -5.72 -3.38 c
--0.49 -0.49 -1.78 -1.66 -2.58 -1.54 c
--0.61 0.06 -0.98 1.35 -1.91 2.34 c
--2.21 2.21 -3.63 2.03 -3.2 2.89 c
-0.37 0.68 3.32 -0.92 5.22 -1.11 c
-f*
-K
-700.58 923.22 m
--1.76 -2.34 -3.12 -18.65 1.17 -20.51 c
-4.3 -1.76 22.46 4 21.87 7.71 c
--0.88 5.96 -8.5 12.21 -12.5 14.06 c
--3.32 1.66 -8.79 1.07 -10.55 -1.27 c
-f*
-5 G
-700.81 922.97 m
--1.71 -2.29 -3.07 -18.18 1.13 -19.99 c
-4.19 -1.72 21.78 3.95 21.21 7.57 c
--0.86 5.81 -8.19 11.88 -12.09 13.68 c
--3.25 1.61 -8.54 1.03 -10.25 -1.26 c
-f*
-10 G
-701.04 922.71 m
--1.67 -2.23 -3.01 -17.7 1.08 -19.48 c
-4.09 -1.68 21.11 3.89 20.55 7.44 c
--0.85 5.67 -7.88 11.55 -11.68 13.29 c
--3.18 1.56 -8.29 0.98 -9.96 -1.25 c
-f*
-15 G
-701.27 922.45 m
--1.63 -2.17 -2.95 -17.23 1.04 -18.96 c
-3.99 -1.64 20.44 3.83 19.89 7.3 c
--0.84 5.53 -7.57 11.23 -11.27 12.91 c
--3.12 1.51 -8.03 0.93 -9.66 -1.25 c
-f*
-20 G
-701.5 922.19 m
--1.59 -2.12 -2.89 -16.76 1 -18.44 c
-3.89 -1.61 19.76 3.78 19.23 7.16 c
--0.82 5.39 -7.26 10.9 -10.85 12.52 c
--3.05 1.46 -7.78 0.88 -9.37 -1.24 c
-f*
-25 G
-701.73 921.93 m
--1.54 -2.06 -2.83 -16.29 0.95 -17.93 c
-3.79 -1.57 19.09 3.72 18.57 7.02 c
--0.81 5.25 -6.95 10.57 -10.44 12.14 c
--2.98 1.41 -7.53 0.83 -9.08 -1.23 c
-f*
-30 G
-701.97 921.68 m
--1.5 -2 -2.77 -15.81 0.91 -17.41 c
-3.69 -1.53 18.42 3.66 17.9 6.88 c
--0.8 5.1 -6.64 10.25 -10.03 11.76 c
--2.91 1.36 -7.28 0.78 -8.78 -1.22 c
-f*
-35 G
-702.2 921.42 m
--1.46 -1.94 -2.72 -15.34 0.87 -16.9 c
-3.58 -1.49 17.74 3.6 17.24 6.74 c
--0.78 4.96 -6.33 9.92 -9.62 11.37 c
--2.84 1.31 -7.03 0.73 -8.49 -1.21 c
-f*
-40 G
-702.43 921.16 m
--1.42 -1.89 -2.66 -14.87 0.82 -16.38 c
-3.48 -1.46 17.07 3.55 16.58 6.6 c
--0.77 4.82 -6.02 9.59 -9.21 10.99 c
--2.78 1.26 -6.78 0.68 -8.2 -1.2 c
-f*
-46 G
-702.66 920.9 m
--1.37 -1.83 -2.6 -14.39 0.78 -15.87 c
-3.38 -1.42 16.4 3.49 15.92 6.46 c
--0.75 4.68 -5.71 9.27 -8.8 10.6 c
--2.71 1.21 -6.53 0.64 -7.9 -1.2 c
-f*
-51 G
-702.89 920.64 m
--1.33 -1.77 -2.54 -13.92 0.74 -15.35 c
-3.28 -1.38 15.72 3.43 15.26 6.32 c
--0.74 4.54 -5.4 8.94 -8.39 10.22 c
--2.64 1.16 -6.28 0.59 -7.61 -1.19 c
-f*
-56 G
-703.12 920.39 m
--1.29 -1.72 -2.48 -13.45 0.69 -14.83 c
-3.18 -1.34 15.05 3.38 14.59 6.18 c
--0.73 4.39 -5.09 8.61 -7.97 9.84 c
--2.57 1.11 -6.03 0.54 -7.31 -1.18 c
-f*
-61 G
-703.35 920.13 m
--1.25 -1.66 -2.42 -12.98 0.65 -14.32 c
-3.07 -1.31 14.38 3.32 13.93 6.04 c
--0.71 4.25 -4.78 8.29 -7.56 9.45 c
--2.5 1.06 -5.77 0.49 -7.02 -1.17 c
-f*
-66 G
-703.58 919.87 m
--1.2 -1.6 -2.37 -12.5 0.6 -13.8 c
-2.97 -1.27 13.7 3.26 13.27 5.9 c
--0.7 4.11 -4.47 7.96 -7.15 9.07 c
--2.44 1.01 -5.52 0.44 -6.73 -1.16 c
-f*
-71 G
-703.82 919.61 m
--1.16 -1.55 -2.31 -12.03 0.56 -13.29 c
-2.87 -1.23 13.03 3.21 12.61 5.76 c
--0.69 3.97 -4.17 7.63 -6.74 8.68 c
--2.37 0.95 -5.27 0.39 -6.43 -1.16 c
-f*
-76 G
-704.05 919.35 m
--1.12 -1.49 -2.25 -11.56 0.52 -12.77 c
-2.77 -1.19 12.36 3.15 11.95 5.62 c
--0.67 3.82 -3.86 7.31 -6.33 8.3 c
--2.3 0.9 -5.02 0.34 -6.14 -1.15 c
-f*
-81 G
-704.28 919.1 m
--1.07 -1.43 -2.19 -11.08 0.48 -12.26 c
-2.67 -1.15 11.68 3.09 11.29 5.48 c
--0.66 3.68 -3.55 6.98 -5.92 7.92 c
--2.23 0.85 -4.77 0.29 -5.85 -1.14 c
-f*
-87 G
-704.51 918.84 m
--1.03 -1.37 -2.13 -10.61 0.43 -11.74 c
-2.57 -1.12 11.01 3.03 10.63 5.34 c
--0.64 3.54 -3.24 6.66 -5.5 7.53 c
--2.16 0.8 -4.52 0.25 -5.55 -1.13 c
-f*
-92 G
-704.74 918.58 m
--0.99 -1.32 -2.08 -10.14 0.39 -11.23 c
-2.46 -1.08 10.34 2.98 9.96 5.2 c
--0.63 3.4 -2.93 6.33 -5.09 7.15 c
--2.1 0.75 -4.27 0.2 -5.26 -1.12 c
-f*
-97 G
-704.97 918.32 m
--0.95 -1.26 -2.02 -9.66 0.34 -10.71 c
-2.36 -1.04 9.66 2.92 9.3 5.06 c
--0.62 3.26 -2.62 6 -4.68 6.76 c
--2.03 0.7 -4.02 0.15 -4.96 -1.11 c
-f*
-102 G
-705.2 918.06 m
--0.9 -1.2 -1.96 -9.19 0.3 -10.2 c
-2.26 -1 8.99 2.86 8.64 4.92 c
--0.6 3.11 -2.31 5.68 -4.27 6.38 c
--1.96 0.65 -3.77 0.1 -4.67 -1.11 c
-f*
-K
-730.51 820.54 m
--0.81 -0.99 0.63 -9.2 5.95 -14.61 c
-5.32 -5.32 8.57 -5.32 10.73 -2.98 c
-4.15 4.42 0.81 8.57 -1.71 11.46 c
--2.53 2.89 -5.77 1.89 -8.75 4.78 c
--2.98 2.89 -5.05 2.71 -6.22 1.35 c
-f*
-5 G
-730.59 820.47 m
--0.81 -0.98 0.63 -9.13 5.91 -14.5 c
-5.28 -5.28 8.5 -5.28 10.65 -2.95 c
-4.12 4.39 0.81 8.5 -1.7 11.37 c
--2.51 2.86 -5.73 1.88 -8.68 4.74 c
--2.95 2.86 -5.01 2.69 -6.18 1.34 c
-f*
-10 G
-730.67 820.39 m
--0.8 -0.98 0.62 -9.06 5.86 -14.39 c
-5.24 -5.24 8.44 -5.24 10.57 -2.93 c
-4.08 4.35 0.8 8.44 -1.69 11.28 c
--2.49 2.84 -5.68 1.86 -8.61 4.71 c
--2.93 2.84 -4.97 2.66 -6.13 1.33 c
-f*
-15 G
-730.74 820.32 m
--0.79 -0.97 0.62 -8.99 5.81 -14.27 c
-5.2 -5.2 8.37 -5.2 10.48 -2.91 c
-4.05 4.32 0.79 8.37 -1.67 11.19 c
--2.47 2.82 -5.64 1.85 -8.55 4.67 c
--2.91 2.82 -4.93 2.64 -6.08 1.32 c
-f*
-20 G
-730.82 820.24 m
--0.79 -0.96 0.61 -8.92 5.77 -14.16 c
-5.16 -5.16 8.3 -5.16 10.4 -2.88 c
-4.02 4.28 0.79 8.3 -1.66 11.1 c
--2.45 2.8 -5.59 1.83 -8.48 4.63 c
--2.88 2.8 -4.89 2.62 -6.03 1.31 c
-f*
-25 G
-730.9 820.17 m
--0.78 -0.95 0.61 -8.84 5.72 -14.04 c
-5.12 -5.11 8.24 -5.11 10.32 -2.86 c
-3.99 4.25 0.78 8.24 -1.65 11.01 c
--2.43 2.77 -5.55 1.82 -8.41 4.59 c
--2.86 2.77 -4.86 2.6 -5.98 1.3 c
-f*
-30 G
-730.98 820.1 m
--0.77 -0.95 0.6 -8.77 5.68 -13.93 c
-5.07 -5.07 8.17 -5.07 10.23 -2.84 c
-3.96 4.21 0.77 8.17 -1.63 10.92 c
--2.41 2.75 -5.5 1.81 -8.34 4.56 c
--2.84 2.75 -4.82 2.58 -5.93 1.29 c
-f*
-35 G
-731.05 820.02 m
--0.77 -0.94 0.6 -8.7 5.63 -13.82 c
-5.03 -5.03 8.1 -5.03 10.15 -2.81 c
-3.92 4.18 0.77 8.1 -1.62 10.83 c
--2.39 2.73 -5.46 1.79 -8.28 4.52 c
--2.81 2.73 -4.78 2.56 -5.89 1.28 c
-f*
-40 G
-731.13 819.95 m
--0.76 -0.93 0.59 -8.63 5.58 -13.71 c
-4.99 -4.99 8.04 -4.99 10.07 -2.79 c
-3.89 4.14 0.76 8.04 -1.61 10.74 c
--2.37 2.71 -5.41 1.78 -8.21 4.48 c
--2.79 2.71 -4.74 2.54 -5.84 1.27 c
-f*
-46 G
-731.21 819.88 m
--0.76 -0.92 0.59 -8.56 5.54 -13.59 c
-4.95 -4.95 7.97 -4.95 9.98 -2.77 c
-3.86 4.11 0.75 7.97 -1.59 10.66 c
--2.35 2.68 -5.37 1.76 -8.14 4.45 c
--2.77 2.68 -4.7 2.52 -5.79 1.26 c
-f*
-51 G
-731.28 819.8 m
--0.75 -0.92 0.58 -8.49 5.49 -13.48 c
-4.91 -4.91 7.9 -4.91 9.9 -2.74 c
-3.83 4.08 0.75 7.9 -1.58 10.57 c
--2.33 2.66 -5.32 1.75 -8.07 4.41 c
--2.75 2.66 -4.66 2.5 -5.74 1.25 c
-f*
-56 G
-731.36 819.73 m
--0.74 -0.91 0.58 -8.42 5.45 -13.36 c
-4.87 -4.87 7.84 -4.87 9.82 -2.72 c
-3.8 4.04 0.74 7.84 -1.57 10.48 c
--2.31 2.64 -5.28 1.73 -8 4.37 c
--2.72 2.64 -4.62 2.47 -5.69 1.24 c
-f*
-61 G
-731.44 819.66 m
--0.74 -0.9 0.57 -8.34 5.4 -13.25 c
-4.83 -4.83 7.77 -4.83 9.73 -2.7 c
-3.76 4.01 0.74 7.77 -1.55 10.39 c
--2.29 2.62 -5.23 1.72 -7.94 4.34 c
--2.7 2.62 -4.58 2.45 -5.64 1.23 c
-f*
-66 G
-731.52 819.58 m
--0.73 -0.89 0.57 -8.27 5.35 -13.14 c
-4.78 -4.78 7.7 -4.78 9.65 -2.68 c
-3.73 3.97 0.73 7.7 -1.54 10.3 c
--2.27 2.6 -5.19 1.7 -7.87 4.3 c
--2.68 2.59 -4.54 2.43 -5.6 1.22 c
-f*
-71 G
-731.59 819.51 m
--0.72 -0.88 0.56 -8.2 5.31 -13.02 c
-4.74 -4.74 7.64 -4.74 9.57 -2.65 c
-3.7 3.94 0.72 7.64 -1.53 10.21 c
--2.25 2.57 -5.15 1.69 -7.8 4.26 c
--2.65 2.57 -4.5 2.41 -5.55 1.21 c
-f*
-76 G
-731.67 819.44 m
--0.72 -0.88 0.56 -8.13 5.26 -12.91 c
-4.7 -4.7 7.57 -4.7 9.48 -2.63 c
-3.67 3.91 0.72 7.57 -1.51 10.12 c
--2.23 2.55 -5.1 1.67 -7.73 4.22 c
--2.63 2.55 -4.46 2.39 -5.5 1.2 c
-f*
-81 G
-731.75 819.36 m
--0.71 -0.87 0.55 -8.06 5.21 -12.8 c
-4.66 -4.66 7.5 -4.66 9.4 -2.61 c
-3.63 3.87 0.71 7.5 -1.5 10.03 c
--2.21 2.53 -5.06 1.66 -7.66 4.19 c
--2.61 2.53 -4.42 2.37 -5.45 1.19 c
-f*
-87 G
-731.83 819.29 m
--0.7 -0.86 0.55 -7.99 5.17 -12.68 c
-4.62 -4.62 7.44 -4.62 9.32 -2.58 c
-3.6 3.84 0.7 7.44 -1.49 9.94 c
--2.19 2.51 -5.01 1.64 -7.59 4.15 c
--2.58 2.5 -4.38 2.35 -5.4 1.17 c
-f*
-92 G
-731.9 819.22 m
--0.7 -0.85 0.54 -7.91 5.12 -12.57 c
-4.58 -4.58 7.37 -4.58 9.23 -2.56 c
-3.57 3.8 0.7 7.37 -1.47 9.85 c
--2.17 2.48 -4.97 1.63 -7.53 4.11 c
--2.56 2.48 -4.34 2.33 -5.35 1.16 c
-f*
-97 G
-731.98 819.14 m
--0.69 -0.85 0.54 -7.84 5.08 -12.46 c
-4.54 -4.54 7.3 -4.54 9.15 -2.54 c
-3.54 3.77 0.69 7.3 -1.46 9.76 c
--2.15 2.46 -4.92 1.61 -7.46 4.07 c
--2.54 2.46 -4.31 2.31 -5.31 1.15 c
-f*
-102 G
-732.06 819.07 m
--0.69 -0.84 0.53 -7.77 5.03 -12.34 c
-4.49 -4.49 7.24 -4.49 9.07 -2.51 c
-3.5 3.73 0.69 7.24 -1.45 9.68 c
--2.13 2.44 -4.88 1.6 -7.39 4.04 c
--2.51 2.44 -4.27 2.29 -5.26 1.14 c
-f*
-K
-646.2 887.79 m
--0.79 -2.38 9.58 -5.62 11.88 -7.68 c
-3.09 -2.77 3.33 -8.24 6.97 -6.02 c
-2.38 1.43 0.55 4.59 -3.8 9.42 c
--6.42 7.13 -14.34 6.26 -15.05 4.28 c
-f*
-5 G
-646.73 887.57 m
--0.79 -2.28 9.1 -5.39 11.37 -7.41 c
-3.02 -2.7 3.26 -7.97 6.76 -5.84 c
-2.3 1.38 0.49 4.48 -3.68 9.11 c
--6.13 6.82 -13.74 6.05 -14.46 4.15 c
-f*
-10 G
-647.27 887.36 m
--0.78 -2.19 8.62 -5.16 10.86 -7.15 c
-2.95 -2.63 3.19 -7.71 6.55 -5.67 c
-2.23 1.33 0.44 4.36 -3.55 8.79 c
--5.85 6.52 -13.15 5.85 -13.86 4.02 c
-f*
-15 G
-647.81 887.14 m
--0.78 -2.09 8.14 -4.92 10.35 -6.88 c
-2.88 -2.56 3.12 -7.45 6.34 -5.49 c
-2.16 1.29 0.38 4.25 -3.42 8.48 c
--5.57 6.21 -12.56 5.65 -13.27 3.9 c
-f*
-20 G
-648.35 886.92 m
--0.77 -1.99 7.66 -4.69 9.84 -6.61 c
-2.81 -2.49 3.05 -7.18 6.13 -5.32 c
-2.09 1.24 0.32 4.14 -3.3 8.16 c
--5.29 5.91 -11.96 5.45 -12.68 3.77 c
-f*
-25 G
-648.88 886.71 m
--0.77 -1.9 7.18 -4.46 9.33 -6.34 c
-2.74 -2.42 2.98 -6.92 5.92 -5.14 c
-2.02 1.2 0.26 4.02 -3.17 7.84 c
--5.01 5.6 -11.37 5.25 -12.08 3.65 c
-f*
-30 G
-649.42 886.49 m
--0.76 -1.8 6.7 -4.22 8.82 -6.08 c
-2.67 -2.35 2.91 -6.66 5.71 -4.97 c
-1.94 1.15 0.2 3.91 -3.05 7.53 c
--4.72 5.3 -10.77 5.04 -11.49 3.52 c
-f*
-35 G
-649.96 886.27 m
--0.76 -1.71 6.22 -3.99 8.31 -5.81 c
-2.6 -2.28 2.84 -6.39 5.5 -4.79 c
-1.87 1.1 0.14 3.79 -2.92 7.21 c
--4.44 4.99 -10.18 4.84 -10.9 3.39 c
-f*
-40 G
-650.49 886.06 m
--0.75 -1.61 5.74 -3.76 7.8 -5.54 c
-2.54 -2.21 2.77 -6.13 5.3 -4.62 c
-1.8 1.06 0.08 3.68 -2.79 6.89 c
--4.16 4.68 -9.59 4.64 -10.3 3.26 c
-f*
-46 G
-651.03 885.84 m
--0.74 -1.52 5.26 -3.52 7.29 -5.28 c
-2.47 -2.14 2.7 -5.87 5.09 -4.44 c
-1.73 1.01 0.02 3.56 -2.67 6.58 c
--3.88 4.38 -8.99 4.44 -9.71 3.14 c
-f*
-51 G
-651.57 885.63 m
--0.74 -1.42 4.78 -3.29 6.78 -5.01 c
-2.4 -2.07 2.63 -5.6 4.88 -4.27 c
-1.66 0.97 -0.04 3.45 -2.54 6.26 c
--3.6 4.08 -8.4 4.23 -9.12 3.01 c
-f*
-56 G
-652.11 885.41 m
--0.73 -1.33 4.3 -3.06 6.27 -4.74 c
-2.33 -2.01 2.56 -5.34 4.67 -4.09 c
-1.58 0.92 -0.1 3.33 -2.42 5.95 c
--3.31 3.77 -7.81 4.03 -8.52 2.89 c
-f*
-61 G
-652.64 885.19 m
--0.73 -1.23 3.82 -2.82 5.76 -4.47 c
-2.26 -1.93 2.49 -5.08 4.46 -3.92 c
-1.51 0.87 -0.16 3.22 -2.29 5.63 c
--3.03 3.46 -7.21 3.83 -7.93 2.76 c
-f*
-66 G
-653.18 884.98 m
--0.72 -1.14 3.34 -2.59 5.25 -4.21 c
-2.19 -1.86 2.43 -4.81 4.25 -3.74 c
-1.44 0.83 -0.22 3.11 -2.16 5.31 c
--2.75 3.16 -6.62 3.63 -7.34 2.63 c
-f*
-71 G
-653.72 884.76 m
--0.72 -1.04 2.86 -2.36 4.74 -3.94 c
-2.12 -1.8 2.36 -4.55 4.04 -3.57 c
-1.37 0.78 -0.28 2.99 -2.04 5 c
--2.47 2.85 -6.03 3.43 -6.74 2.51 c
-f*
-76 G
-654.25 884.54 m
--0.71 -0.94 2.38 -2.12 4.24 -3.67 c
-2.05 -1.72 2.29 -4.29 3.83 -3.39 c
-1.3 0.74 -0.34 2.88 -1.91 4.68 c
--2.19 2.55 -5.43 3.22 -6.15 2.38 c
-f*
-81 G
-654.79 884.33 m
--0.71 -0.85 1.9 -1.89 3.73 -3.4 c
-1.98 -1.66 2.22 -4.02 3.62 -3.22 c
-1.23 0.69 -0.4 2.76 -1.79 4.36 c
--1.91 2.24 -4.84 3.02 -5.56 2.25 c
-f*
-87 G
-655.33 884.11 m
--0.7 -0.75 1.42 -1.66 3.22 -3.14 c
-1.91 -1.59 2.15 -3.76 3.41 -3.04 c
-1.15 0.64 -0.46 2.65 -1.66 4.05 c
--1.62 1.94 -4.25 2.82 -4.96 2.13 c
-f*
-92 G
-655.87 883.89 m
--0.7 -0.66 0.94 -1.42 2.71 -2.87 c
-1.84 -1.52 2.08 -3.5 3.2 -2.87 c
-1.08 0.6 -0.52 2.53 -1.53 3.73 c
--1.34 1.63 -3.65 2.62 -4.37 2 c
-f*
-97 G
-656.4 883.68 m
--0.69 -0.56 0.46 -1.19 2.2 -2.6 c
-1.77 -1.45 2.01 -3.23 2.99 -2.69 c
-1.01 0.55 -0.58 2.42 -1.41 3.42 c
--1.06 1.33 -3.06 2.42 -3.78 1.88 c
-f*
-102 G
-656.94 883.46 m
--0.69 -0.47 -0.02 -0.96 1.69 -2.33 c
-1.71 -1.38 1.94 -2.97 2.78 -2.52 c
-0.94 0.51 -0.64 2.31 -1.28 3.1 c
--0.78 1.02 -2.47 2.21 -3.19 1.75 c
-f*
-K
-701.16 888.66 m
--0.08 -1.19 3.25 -1.9 5.39 -2.69 c
-2.14 -0.71 6.34 -3.56 8.32 -5.78 c
-1.98 -2.14 6.26 -8.47 7.21 -6.81 c
-0.95 1.5 -2.22 5.86 -3.09 7.68 c
--0.87 1.82 -3.56 5.78 -7.84 7.13 c
--3.72 1.11 -9.9 1.43 -9.98 0.48 c
-f*
-6 G
-701.5 888.58 m
--0.08 -1.16 3.15 -1.85 5.23 -2.63 c
-2.08 -0.7 6.16 -3.48 8.08 -5.63 c
-1.92 -2.08 6.09 -8.24 7.01 -6.63 c
-0.92 1.46 -2.13 5.69 -3.01 7.47 c
--0.88 1.78 -3.49 5.6 -7.65 6.93 c
--3.61 1.1 -9.59 1.41 -9.67 0.48 c
-f*
-12 G
-701.84 888.49 m
--0.08 -1.12 3.06 -1.81 5.08 -2.56 c
-2.02 -0.68 5.98 -3.39 7.84 -5.49 c
-1.86 -2.03 5.92 -8.01 6.82 -6.45 c
-0.9 1.42 -2.04 5.52 -2.94 7.27 c
--0.89 1.75 -3.42 5.42 -7.45 6.73 c
--3.5 1.08 -9.28 1.39 -9.35 0.49 c
-f*
-19 G
-702.18 888.41 m
--0.08 -1.09 2.97 -1.76 4.93 -2.49 c
-1.96 -0.66 5.8 -3.3 7.61 -5.34 c
-1.8 -1.97 5.75 -7.78 6.62 -6.27 c
-0.87 1.37 -1.95 5.35 -2.86 7.06 c
--0.9 1.71 -3.35 5.23 -7.26 6.54 c
--3.38 1.07 -8.96 1.37 -9.04 0.5 c
-f*
-25 G
-702.52 888.32 m
--0.08 -1.06 2.88 -1.71 4.78 -2.43 c
-1.9 -0.65 5.62 -3.21 7.37 -5.19 c
-1.74 -1.91 5.58 -7.55 6.43 -6.09 c
-0.84 1.33 -1.87 5.18 -2.79 6.85 c
--0.91 1.67 -3.28 5.05 -7.07 6.34 c
--3.27 1.05 -8.65 1.36 -8.73 0.51 c
-f*
-31 G
-702.86 888.24 m
--0.08 -1.02 2.79 -1.66 4.63 -2.36 c
-1.84 -0.63 5.44 -3.13 7.14 -5.05 c
-1.68 -1.86 5.41 -7.31 6.23 -5.9 c
-0.81 1.28 -1.78 5.01 -2.71 6.65 c
--0.92 1.63 -3.21 4.87 -6.87 6.14 c
--3.16 1.04 -8.34 1.34 -8.42 0.52 c
-f*
-38 G
-703.2 888.15 m
--0.08 -0.99 2.7 -1.61 4.48 -2.29 c
-1.78 -0.61 5.26 -3.04 6.9 -4.9 c
-1.63 -1.8 5.24 -7.08 6.04 -5.72 c
-0.78 1.24 -1.69 4.84 -2.63 6.44 c
--0.92 1.6 -3.13 4.69 -6.68 5.94 c
--3.04 1.03 -8.03 1.32 -8.1 0.53 c
-f*
-44 G
-703.54 888.07 m
--0.07 -0.96 2.6 -1.57 4.33 -2.23 c
-1.72 -0.6 5.08 -2.95 6.66 -4.75 c
-1.57 -1.75 5.08 -6.85 5.85 -5.54 c
-0.76 1.19 -1.6 4.67 -2.56 6.23 c
--0.93 1.56 -3.06 4.51 -6.48 5.75 c
--2.93 1.02 -7.72 1.31 -7.79 0.54 c
-f*
-51 G
-703.88 887.99 m
--0.07 -0.93 2.51 -1.52 4.17 -2.16 c
-1.66 -0.58 4.9 -2.87 6.43 -4.6 c
-1.51 -1.69 4.91 -6.62 5.65 -5.36 c
-0.73 1.15 -1.51 4.5 -2.48 6.02 c
--0.94 1.52 -2.99 4.32 -6.29 5.55 c
--2.81 1 -7.4 1.29 -7.48 0.55 c
-f*
-57 G
-704.22 887.9 m
--0.07 -0.89 2.42 -1.47 4.02 -2.09 c
-1.6 -0.56 4.73 -2.78 6.19 -4.46 c
-1.45 -1.63 4.74 -6.39 5.46 -5.18 c
-0.7 1.11 -1.43 4.33 -2.41 5.82 c
--0.95 1.48 -2.92 4.14 -6.1 5.35 c
--2.7 0.99 -7.09 1.27 -7.16 0.56 c
-f*
-63 G
-704.56 887.82 m
--0.07 -0.86 2.33 -1.42 3.87 -2.03 c
-1.54 -0.55 4.55 -2.69 5.95 -4.31 c
-1.39 -1.58 4.57 -6.15 5.26 -4.99 c
-0.67 1.06 -1.34 4.16 -2.33 5.61 c
--0.96 1.44 -2.84 3.96 -5.9 5.15 c
--2.59 0.97 -6.78 1.26 -6.85 0.57 c
-f*
-70 G
-704.9 887.73 m
--0.07 -0.83 2.24 -1.38 3.72 -1.96 c
-1.48 -0.53 4.37 -2.6 5.72 -4.16 c
-1.33 -1.52 4.4 -5.92 5.07 -4.81 c
-0.65 1.02 -1.25 3.99 -2.26 5.4 c
--0.97 1.41 -2.77 3.78 -5.71 4.96 c
--2.47 0.96 -6.47 1.24 -6.54 0.58 c
-f*
-76 G
-705.24 887.65 m
--0.07 -0.8 2.15 -1.33 3.57 -1.9 c
-1.42 -0.51 4.19 -2.52 5.48 -4.01 c
-1.27 -1.47 4.23 -5.69 4.87 -4.63 c
-0.62 0.97 -1.16 3.82 -2.18 5.19 c
--0.98 1.37 -2.7 3.6 -5.51 4.76 c
--2.36 0.95 -6.16 1.22 -6.23 0.59 c
-f*
-83 G
-705.58 887.56 m
--0.07 -0.76 2.05 -1.28 3.41 -1.83 c
-1.36 -0.5 4.01 -2.43 5.24 -3.87 c
-1.21 -1.41 4.06 -5.46 4.68 -4.45 c
-0.59 0.93 -1.07 3.65 -2.1 4.99 c
--0.99 1.33 -2.63 3.41 -5.32 4.56 c
--2.25 0.94 -5.85 1.2 -5.91 0.59 c
-f*
-89 G
-705.92 887.48 m
--0.07 -0.73 1.96 -1.23 3.26 -1.76 c
-1.3 -0.48 3.83 -2.34 5.01 -3.72 c
-1.15 -1.35 3.9 -5.23 4.49 -4.27 c
-0.56 0.89 -0.99 3.48 -2.03 4.78 c
--0.99 1.29 -2.56 3.23 -5.13 4.37 c
--2.14 0.92 -5.53 1.19 -5.6 0.6 c
-f*
-95 G
-706.26 887.4 m
--0.07 -0.7 1.87 -1.19 3.11 -1.7 c
-1.24 -0.46 3.65 -2.25 4.77 -3.57 c
-1.09 -1.3 3.73 -4.99 4.29 -4.09 c
-0.54 0.84 -0.9 3.31 -1.95 4.57 c
--1 1.26 -2.49 3.05 -4.93 4.17 c
--2.02 0.91 -5.22 1.17 -5.29 0.61 c
-f*
-102 G
-706.6 887.31 m
--0.07 -0.66 1.78 -1.14 2.96 -1.63 c
-1.18 -0.45 3.47 -2.17 4.54 -3.43 c
-1.04 -1.24 3.56 -4.76 4.1 -3.9 c
-0.51 0.8 -0.81 3.14 -1.88 4.37 c
--1.01 1.22 -2.42 2.87 -4.74 3.97 c
--1.91 0.9 -4.91 1.15 -4.98 0.62 c
-f*
-108 G
-706.94 887.23 m
--0.07 -0.63 1.69 -1.09 2.81 -1.56 c
-1.12 -0.43 3.29 -2.08 4.3 -3.28 c
-0.98 -1.18 3.39 -4.53 3.9 -3.72 c
-0.48 0.75 -0.72 2.97 -1.8 4.16 c
--1.02 1.18 -2.34 2.69 -4.55 3.77 c
--1.79 0.88 -4.6 1.14 -4.66 0.63 c
-f*
-115 G
-707.28 887.14 m
--0.07 -0.6 1.6 -1.04 2.66 -1.5 c
-1.06 -0.41 3.11 -1.99 4.06 -3.13 c
-0.92 -1.13 3.22 -4.3 3.71 -3.54 c
-0.45 0.71 -0.63 2.8 -1.73 3.95 c
--1.03 1.14 -2.27 2.5 -4.35 3.58 c
--1.68 0.87 -4.29 1.12 -4.35 0.64 c
-f*
-121 G
-707.62 887.06 m
--0.07 -0.57 1.5 -1 2.51 -1.43 c
-1 -0.4 2.94 -1.9 3.83 -2.98 c
-0.86 -1.07 3.05 -4.06 3.51 -3.36 c
-0.43 0.66 -0.55 2.64 -1.65 3.74 c
--1.04 1.11 -2.2 2.32 -4.16 3.38 c
--1.57 0.85 -3.97 1.1 -4.04 0.65 c
-f*
-127 G
-707.96 886.97 m
--0.07 -0.53 1.41 -0.95 2.35 -1.36 c
-0.94 -0.38 2.76 -1.82 3.59 -2.84 c
-0.8 -1.02 2.88 -3.83 3.32 -3.18 c
-0.4 0.62 -0.46 2.47 -1.58 3.54 c
--1.05 1.07 -2.13 2.14 -3.96 3.18 c
--1.45 0.84 -3.66 1.08 -3.72 0.66 c
-f*
-153 89 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -22.02 -12.75 -34.21 -21.07 c
--15.36 -10.53 -20.67 -15.21 -25.66 -20.2 c
--7.76 -7.76 -15.13 -10.38 -26.93 -10.38 c
--11.8 0 -17.11 2.46 -20.75 5.7 c
--3.64 3.17 -7.68 11.25 -7.29 23.28 c
-0.32 11.96 4.12 22.89 5.94 41.5 c
-0.79 8 0.71 17.9 0.71 26.69 c
-0 11.09 0.16 20.51 2.53 21.94 c
-4.28 2.69 5.23 2.85 10.3 2.85 c
-5.07 0 7.37 -0.32 9.03 -1.98 c
-1.58 -1.58 0.95 -5.23 0.4 -10.37 c
--0.48 -5.15 1.98 -6.81 4.44 -8.95 c
-2.46 -2.06 4.67 -4.67 12.43 -5.31 c
-7.76 -0.55 10.61 0.71 14.26 3.01 c
-3.64 2.3 8.79 6.42 10.69 8.79 c
-1.82 2.3 6.34 10.22 7.21 10.22 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-158 95 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -22.13 -12.71 -34.38 -20.91 c
--15.27 -10.31 -20.79 -14.89 -25.87 -19.69 c
--7.6 -7.41 -14.76 -9.99 -26.31 -9.92 c
--11.45 0.05 -16.63 2.4 -20.26 5.63 c
--3.63 3.15 -7.62 10.96 -7.27 22.64 c
-0.23 11.94 4.07 22.75 5.78 41.01 c
-0.73 8.12 0.45 17.94 0.37 26.81 c
--0.08 11.08 -0.08 20.49 2.29 21.91 c
-4.28 2.69 5.23 2.85 10.3 2.85 c
-5.07 0 7.37 -0.32 9.03 -1.98 c
-1.64 -1.64 0.84 -5.37 0.23 -10.35 c
--0.69 -5.12 1.6 -7.14 4.17 -9.47 c
-2.57 -2.27 4.94 -4.92 12.69 -5.52 c
-7.96 -0.53 11.02 0.91 14.7 3.42 c
-3.63 2.43 8.55 6.49 10.46 8.99 c
-1.81 2.34 6.3 10.32 7.17 10.32 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-163 101 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -22.25 -12.67 -34.56 -20.75 c
--15.18 -10.08 -20.92 -14.58 -26.09 -19.19 c
--7.44 -7.06 -14.38 -9.61 -25.68 -9.46 c
--11.1 0.1 -16.15 2.34 -19.76 5.56 c
--3.61 3.14 -7.56 10.68 -7.26 21.99 c
-0.13 11.91 4.02 22.61 5.62 40.51 c
-0.67 8.24 0.18 17.97 0.02 26.94 c
--0.17 11.06 -0.32 20.47 2.05 21.89 c
-4.28 2.69 5.23 2.85 10.3 2.85 c
-5.07 0 7.37 -0.32 9.03 -1.98 c
-1.7 -1.7 0.74 -5.52 0.05 -10.32 c
--0.91 -5.1 1.23 -7.46 3.91 -9.99 c
-2.69 -2.47 5.2 -5.16 12.94 -5.74 c
-8.15 -0.51 11.42 1.12 15.14 3.83 c
-3.62 2.56 8.31 6.57 10.23 9.18 c
-1.79 2.39 6.26 10.43 7.14 10.43 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-168 106 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -22.36 -12.63 -34.72 -20.59 c
--15.09 -9.86 -21.04 -14.27 -26.3 -18.69 c
--7.29 -6.72 -14.01 -9.22 -25.06 -9.01 c
--10.76 0.15 -15.67 2.29 -19.27 5.49 c
--3.6 3.12 -7.5 10.39 -7.25 21.34 c
-0.04 11.89 3.98 22.47 5.46 40.02 c
-0.61 8.36 -0.08 18.01 -0.32 27.06 c
--0.25 11.05 -0.55 20.44 1.81 21.87 c
-4.28 2.68 5.23 2.85 10.3 2.85 c
-5.07 0 7.38 -0.33 9.03 -1.98 c
-1.75 -1.75 0.63 -5.67 -0.11 -10.29 c
--1.13 -5.08 0.85 -7.79 3.65 -10.51 c
-2.81 -2.68 5.47 -5.41 13.19 -5.96 c
-8.34 -0.48 11.82 1.32 15.59 4.23 c
-3.61 2.69 8.07 6.65 10 9.37 c
-1.77 2.44 6.23 10.54 7.1 10.54 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-174 112 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -22.48 -12.59 -34.9 -20.43 c
--15 -9.63 -21.16 -13.96 -26.52 -18.18 c
--7.13 -6.37 -13.64 -8.84 -24.44 -8.55 c
--10.41 0.21 -15.19 2.23 -18.77 5.42 c
--3.58 3.1 -7.44 10.11 -7.24 20.69 c
--0.05 11.86 3.93 22.33 5.31 39.52 c
-0.55 8.47 -0.35 18.04 -0.67 27.18 c
--0.33 11.04 -0.79 20.42 1.57 21.84 c
-4.28 2.68 5.23 2.85 10.3 2.85 c
-5.07 0 7.38 -0.33 9.03 -1.98 c
-1.81 -1.81 0.52 -5.81 -0.28 -10.26 c
--1.35 -5.05 0.48 -8.11 3.39 -11.02 c
-2.93 -2.88 5.73 -5.65 13.45 -6.18 c
-8.54 -0.46 12.23 1.52 16.03 4.64 c
-3.6 2.82 7.82 6.73 9.77 9.57 c
-1.76 2.49 6.19 10.64 7.06 10.64 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-179 118 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -22.59 -12.55 -35.07 -20.28 c
--14.91 -9.41 -21.29 -13.64 -26.73 -17.68 c
--6.97 -6.02 -13.27 -8.45 -23.82 -8.1 c
--10.06 0.26 -14.71 2.18 -18.28 5.35 c
--3.56 3.09 -7.39 9.82 -7.23 20.04 c
--0.14 11.84 3.88 22.2 5.15 39.03 c
-0.49 8.59 -0.61 18.08 -1.01 27.3 c
--0.42 11.03 -1.03 20.39 1.33 21.82 c
-4.28 2.67 5.23 2.85 10.3 2.85 c
-5.07 0 7.39 -0.34 9.03 -1.98 c
-1.86 -1.86 0.42 -5.96 -0.46 -10.24 c
--1.56 -5.03 0.1 -8.43 3.13 -11.54 c
-3.05 -3.09 6 -5.9 13.7 -6.4 c
-8.73 -0.44 12.63 1.72 16.47 5.05 c
-3.58 2.95 7.58 6.81 9.54 9.76 c
-1.74 2.53 6.16 10.75 7.03 10.75 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-184 124 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -22.71 -12.51 -35.24 -20.12 c
--14.82 -9.18 -21.41 -13.33 -26.94 -17.18 c
--6.81 -5.67 -12.89 -8.07 -23.2 -7.64 c
--9.71 0.31 -14.23 2.12 -17.78 5.27 c
--3.55 3.07 -7.33 9.54 -7.21 19.39 c
--0.23 11.82 3.83 22.06 4.99 38.53 c
-0.44 8.71 -0.88 18.11 -1.35 27.43 c
--0.5 11.02 -1.27 20.37 1.08 21.8 c
-4.28 2.67 5.23 2.85 10.3 2.85 c
-5.07 0 7.39 -0.34 9.03 -1.98 c
-1.92 -1.92 0.31 -6.11 -0.63 -10.21 c
--1.78 -5.01 -0.28 -8.76 2.87 -12.06 c
-3.17 -3.29 6.26 -6.15 13.95 -6.61 c
-8.93 -0.41 13.04 1.92 16.92 5.46 c
-3.57 3.08 7.34 6.89 9.31 9.96 c
-1.73 2.58 6.12 10.86 6.99 10.86 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-189 129 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -22.82 -12.47 -35.41 -19.96 c
--14.73 -8.95 -21.53 -13.02 -27.16 -16.68 c
--6.65 -5.32 -12.52 -7.69 -22.58 -7.19 c
--9.36 0.36 -13.75 2.07 -17.29 5.2 c
--3.53 3.06 -7.27 9.25 -7.2 18.74 c
--0.32 11.79 3.79 21.92 4.83 38.04 c
-0.38 8.83 -1.15 18.15 -1.7 27.55 c
--0.58 11 -1.5 20.35 0.84 21.77 c
-4.28 2.67 5.23 2.85 10.3 2.85 c
-5.07 0 7.39 -0.34 9.03 -1.98 c
-1.97 -1.97 0.2 -6.25 -0.8 -10.18 c
--2 -4.98 -0.65 -9.08 2.61 -12.58 c
-3.29 -3.5 6.53 -6.39 14.21 -6.83 c
-9.12 -0.39 13.44 2.13 17.36 5.86 c
-3.56 3.21 7.1 6.97 9.08 10.15 c
-1.71 2.63 6.09 10.97 6.96 10.97 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-194 135 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -22.94 -12.43 -35.58 -19.8 c
--14.64 -8.73 -21.65 -12.7 -27.37 -16.17 c
--6.49 -4.97 -12.15 -7.3 -21.95 -6.73 c
--9.01 0.41 -13.27 2.01 -16.79 5.13 c
--3.52 3.04 -7.21 8.97 -7.19 18.09 c
--0.41 11.77 3.74 21.78 4.67 37.54 c
-0.32 8.95 -1.41 18.18 -2.04 27.67 c
--0.67 10.99 -1.74 20.32 0.6 21.75 c
-4.28 2.66 5.23 2.85 10.3 2.85 c
-5.07 0 7.4 -0.35 9.03 -1.98 c
-2.03 -2.03 0.09 -6.4 -0.97 -10.15 c
--2.22 -4.96 -1.03 -9.41 2.34 -13.1 c
-3.41 -3.71 6.79 -6.64 14.46 -7.05 c
-9.31 -0.36 13.84 2.33 17.8 6.27 c
-3.55 3.34 6.86 7.05 8.85 10.34 c
-1.7 2.68 6.05 11.07 6.92 11.07 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-199 141 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -23.05 -12.39 -35.75 -19.64 c
--14.55 -8.5 -21.78 -12.39 -27.59 -15.67 c
--6.34 -4.63 -11.78 -6.92 -21.33 -6.28 c
--8.66 0.46 -12.8 1.96 -16.3 5.06 c
--3.5 3.03 -7.15 8.68 -7.18 17.44 c
--0.5 11.75 3.69 21.64 4.51 37.05 c
-0.26 9.07 -1.68 18.22 -2.39 27.8 c
--0.75 10.98 -1.98 20.3 0.36 21.72 c
-4.28 2.66 5.23 2.85 10.3 2.85 c
-5.07 0 7.4 -0.35 9.03 -1.98 c
-2.08 -2.08 -0.01 -6.55 -1.14 -10.13 c
--2.44 -4.93 -1.41 -9.73 2.08 -13.62 c
-3.52 -3.91 7.06 -6.88 14.72 -7.27 c
-9.51 -0.34 14.25 2.53 18.25 6.68 c
-3.54 3.47 6.62 7.13 8.63 10.54 c
-1.68 2.72 6.01 11.18 6.89 11.18 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-204 147 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -23.17 -12.36 -35.92 -19.48 c
--14.45 -8.28 -21.9 -12.08 -27.8 -15.17 c
--6.18 -4.28 -11.4 -6.53 -20.71 -5.82 c
--8.32 0.51 -12.32 1.9 -15.8 4.99 c
--3.48 3.01 -7.09 8.4 -7.17 16.79 c
--0.59 11.72 3.64 21.5 4.36 36.55 c
-0.2 9.19 -1.94 18.26 -2.73 27.92 c
--0.83 10.97 -2.22 20.28 0.12 21.7 c
-4.28 2.65 5.23 2.85 10.3 2.85 c
-5.07 0 7.41 -0.36 9.03 -1.98 c
-2.14 -2.14 -0.12 -6.69 -1.31 -10.1 c
--2.65 -4.91 -1.78 -10.06 1.82 -14.14 c
-3.64 -4.12 7.33 -7.13 14.97 -7.48 c
-9.7 -0.32 14.65 2.73 18.69 7.09 c
-3.52 3.6 6.38 7.21 8.4 10.73 c
-1.66 2.77 5.98 11.29 6.85 11.29 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-209 153 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -23.28 -12.32 -36.09 -19.32 c
--14.36 -8.05 -22.02 -11.77 -28.01 -14.66 c
--6.02 -3.93 -11.03 -6.15 -20.09 -5.37 c
--7.97 0.57 -11.84 1.85 -15.31 4.92 c
--3.47 2.99 -7.03 8.11 -7.16 16.14 c
--0.69 11.7 3.6 21.36 4.2 36.06 c
-0.14 9.31 -2.21 18.29 -3.08 28.04 c
--0.92 10.96 -2.46 20.25 -0.12 21.68 c
-4.28 2.65 5.23 2.85 10.3 2.85 c
-5.07 0 7.41 -0.36 9.03 -1.98 c
-2.19 -2.19 -0.23 -6.84 -1.48 -10.07 c
--2.87 -4.89 -2.16 -10.38 1.56 -14.66 c
-3.76 -4.32 7.59 -7.37 15.22 -7.7 c
-9.9 -0.29 15.06 2.93 19.13 7.5 c
-3.51 3.73 6.13 7.29 8.17 10.93 c
-1.65 2.82 5.94 11.39 6.82 11.39 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-215 158 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -23.4 -12.28 -36.26 -19.17 c
--14.27 -7.82 -22.14 -11.45 -28.23 -14.16 c
--5.86 -3.58 -10.66 -5.77 -19.47 -4.91 c
--7.62 0.62 -11.36 1.79 -14.81 4.85 c
--3.45 2.98 -6.97 7.82 -7.14 15.49 c
--0.78 11.67 3.55 21.23 4.04 35.56 c
-0.08 9.42 -2.47 18.33 -3.42 28.16 c
--1 10.95 -2.69 20.23 -0.36 21.65 c
-4.28 2.65 5.23 2.85 10.3 2.85 c
-5.07 0 7.41 -0.36 9.03 -1.98 c
-2.25 -2.25 -0.33 -6.98 -1.65 -10.04 c
--3.09 -4.86 -2.53 -10.71 1.3 -15.17 c
-3.88 -4.53 7.86 -7.62 15.48 -7.92 c
-10.09 -0.27 15.46 3.14 19.58 7.9 c
-3.5 3.86 5.89 7.37 7.94 11.12 c
-1.63 2.87 5.91 11.5 6.78 11.5 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-220 164 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -23.51 -12.24 -36.43 -19.01 c
--14.18 -7.6 -22.27 -11.14 -28.44 -13.66 c
--5.7 -3.23 -10.29 -5.38 -18.85 -4.46 c
--7.27 0.67 -10.88 1.73 -14.32 4.78 c
--3.44 2.96 -6.91 7.54 -7.13 14.84 c
--0.87 11.65 3.5 21.09 3.88 35.07 c
-0.02 9.54 -2.74 18.36 -3.77 28.29 c
--1.08 10.93 -2.93 20.2 -0.61 21.63 c
-4.28 2.64 5.23 2.85 10.3 2.85 c
-5.07 0 7.42 -0.37 9.03 -1.98 c
-2.3 -2.3 -0.44 -7.13 -1.82 -10.01 c
--3.31 -4.84 -2.91 -11.03 1.04 -15.69 c
-4 -4.74 8.12 -7.86 15.73 -8.14 c
-10.28 -0.25 15.86 3.34 20.02 8.31 c
-3.49 4 5.65 7.44 7.71 11.31 c
-1.62 2.91 5.87 11.61 6.74 11.61 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-225 170 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -23.63 -12.2 -36.6 -18.85 c
--14.09 -7.37 -22.39 -10.83 -28.66 -13.16 c
--5.54 -2.88 -9.92 -5 -18.22 -4 c
--6.92 0.72 -10.4 1.68 -13.82 4.7 c
--3.42 2.95 -6.85 7.25 -7.12 14.19 c
--0.96 11.63 3.45 20.95 3.72 34.57 c
--0.04 9.66 -3 18.4 -4.11 28.41 c
--1.16 10.92 -3.17 20.18 -0.85 21.61 c
-4.28 2.64 5.23 2.85 10.3 2.85 c
-5.07 0 7.42 -0.37 9.03 -1.98 c
-2.36 -2.36 -0.55 -7.28 -1.99 -9.99 c
--3.52 -4.82 -3.29 -11.36 0.78 -16.21 c
-4.12 -4.94 8.39 -8.11 15.98 -8.36 c
-10.48 -0.22 16.27 3.54 20.47 8.72 c
-3.48 4.13 5.41 7.52 7.48 11.51 c
-1.6 2.96 5.84 11.71 6.71 11.71 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-230 176 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -23.74 -12.16 -36.77 -18.69 c
--14 -7.15 -22.51 -10.51 -28.87 -12.65 c
--5.39 -2.53 -9.54 -4.61 -17.6 -3.54 c
--6.57 0.77 -9.92 1.62 -13.33 4.63 c
--3.41 2.93 -6.79 6.97 -7.11 13.54 c
--1.05 11.6 3.41 20.81 3.56 34.08 c
--0.1 9.78 -3.27 18.43 -4.46 28.53 c
--1.25 10.91 -3.41 20.16 -1.09 21.58 c
-4.28 2.63 5.23 2.85 10.3 2.85 c
-5.07 0 7.43 -0.38 9.03 -1.98 c
-2.42 -2.42 -0.65 -7.42 -2.16 -9.96 c
--3.74 -4.79 -3.66 -11.68 0.51 -16.73 c
-4.24 -5.15 8.65 -8.36 16.24 -8.57 c
-10.67 -0.2 16.67 3.74 20.91 9.13 c
-3.46 4.26 5.17 7.6 7.25 11.7 c
-1.58 3.01 5.8 11.82 6.67 11.82 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-235 181 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -23.85 -12.12 -36.94 -18.53 c
--13.91 -6.92 -22.63 -10.2 -29.08 -12.15 c
--5.23 -2.19 -9.17 -4.23 -16.98 -3.09 c
--6.23 0.82 -9.44 1.57 -12.83 4.56 c
--3.39 2.91 -6.73 6.68 -7.1 12.89 c
--1.14 11.58 3.36 20.67 3.41 33.58 c
--0.16 9.9 -3.53 18.47 -4.8 28.65 c
--1.33 10.9 -3.64 20.13 -1.33 21.56 c
-4.28 2.63 5.23 2.85 10.3 2.85 c
-5.07 0 7.43 -0.38 9.03 -1.98 c
-2.47 -2.47 -0.76 -7.57 -2.33 -9.93 c
--3.96 -4.77 -4.04 -12.01 0.25 -17.25 c
-4.36 -5.35 8.92 -8.6 16.49 -8.79 c
-10.87 -0.17 17.08 3.94 21.35 9.54 c
-3.45 4.39 4.93 7.68 7.02 11.9 c
-1.57 3.06 5.77 11.93 6.64 11.93 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-240 187 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -23.97 -12.08 -37.11 -18.37 c
--13.82 -6.7 -22.76 -9.89 -29.3 -11.65 c
--5.07 -1.84 -8.8 -3.85 -16.36 -2.63 c
--5.88 0.88 -8.96 1.51 -12.34 4.49 c
--3.37 2.9 -6.67 6.4 -7.08 12.24 c
--1.23 11.56 3.31 20.53 3.25 33.09 c
--0.22 10.02 -3.8 18.51 -5.14 28.78 c
--1.41 10.89 -3.88 20.11 -1.57 21.53 c
-4.28 2.63 5.23 2.85 10.3 2.85 c
-5.07 0 7.43 -0.38 9.03 -1.98 c
-2.53 -2.53 -0.87 -7.72 -2.5 -9.9 c
--4.18 -4.74 -4.42 -12.33 -0.01 -17.77 c
-4.47 -5.56 9.18 -8.85 16.74 -9.01 c
-11.06 -0.15 17.48 4.15 21.8 9.94 c
-3.44 4.52 4.69 7.76 6.79 12.09 c
-1.55 3.1 5.73 12.03 6.6 12.03 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-245 193 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -24.08 -12.04 -37.28 -18.22 c
--13.73 -6.47 -22.88 -9.58 -29.51 -11.14 c
--4.91 -1.49 -8.43 -3.46 -15.74 -2.18 c
--5.53 0.93 -8.48 1.46 -11.84 4.42 c
--3.36 2.88 -6.61 6.11 -7.07 11.59 c
--1.32 11.53 3.26 20.39 3.09 32.59 c
--0.28 10.14 -4.06 18.54 -5.49 28.9 c
--1.5 10.87 -4.12 20.08 -1.81 21.51 c
-4.28 2.62 5.23 2.85 10.3 2.85 c
-5.07 0 7.44 -0.39 9.03 -1.98 c
-2.58 -2.58 -0.97 -7.86 -2.67 -9.88 c
--4.4 -4.72 -4.79 -12.66 -0.27 -18.29 c
-4.59 -5.77 9.45 -9.09 17 -9.23 c
-11.25 -0.13 17.88 4.35 22.24 10.35 c
-3.43 4.65 4.44 7.84 6.56 12.28 c
-1.54 3.15 5.69 12.14 6.57 12.14 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-250 199 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -24.2 -12 -37.45 -18.06 c
--13.63 -6.24 -23 -9.26 -29.72 -10.64 c
--4.75 -1.14 -8.05 -3.08 -15.12 -1.72 c
--5.18 0.98 -8 1.4 -11.35 4.35 c
--3.34 2.87 -6.55 5.83 -7.06 10.95 c
--1.41 11.51 3.22 20.26 2.93 32.1 c
--0.34 10.26 -4.33 18.58 -5.83 29.02 c
--1.58 10.86 -4.36 20.06 -2.05 21.49 c
-4.28 2.62 5.23 2.85 10.3 2.85 c
-5.07 0 7.44 -0.39 9.03 -1.98 c
-2.64 -2.64 -1.08 -8.01 -2.84 -9.85 c
--4.61 -4.7 -5.17 -12.98 -0.53 -18.81 c
-4.71 -5.97 9.71 -9.34 17.25 -9.44 c
-11.45 -0.1 18.29 4.55 22.68 10.76 c
-3.42 4.78 4.2 7.92 6.33 12.48 c
-1.52 3.2 5.66 12.25 6.53 12.25 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-255 204 0 rG
-822.34 650.03 m
-4.91 -7.13 -0.16 -16.39 3.41 -22.1 c
-5.86 -9.35 17.66 -18.77 22.18 -21.38 c
-3.25 -1.98 7.84 -3.88 7.68 -9.66 c
--0.24 -6.57 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -24.31 -11.96 -37.62 -17.9 c
--13.54 -6.02 -23.13 -8.95 -29.94 -10.14 c
--4.59 -0.79 -7.68 -2.69 -14.49 -1.27 c
--4.83 1.03 -7.52 1.35 -10.85 4.28 c
--3.33 2.85 -6.49 5.54 -7.05 10.3 c
--1.5 11.48 3.17 20.12 2.77 31.6 c
--0.4 10.38 -4.59 18.61 -6.18 29.15 c
--1.66 10.85 -4.59 20.04 -2.3 21.46 c
-4.28 2.61 5.23 2.85 10.3 2.85 c
-5.07 0 7.44 -0.4 9.03 -1.98 c
-2.69 -2.69 -1.19 -8.16 -3.01 -9.82 c
--4.83 -4.67 -5.54 -13.31 -0.79 -19.32 c
-4.83 -6.18 9.98 -9.58 17.5 -9.66 c
-11.64 -0.08 18.69 4.75 23.13 11.17 c
-3.41 4.91 3.96 8 6.1 12.67 c
-1.5 3.25 5.62 12.35 6.49 12.35 c
-0.79 0 6.02 1.82 8.95 -2.46 c
-f*
-748.23 635.47 m
--0.78 0.28 -4.32 16.73 -2.41 17.86 c
-3.69 2.2 4.68 2.55 9.21 2.55 c
-4.54 0 6.66 -0.36 8.08 -1.77 c
-2.34 -2.34 -1.28 -7.37 -2.69 -8.79 c
--4.11 -4.04 -11.41 -10.14 -12.19 -9.85 c
-f*
-255 205 2 rG
-748.49 636 m
--0.85 0.36 -4.51 16.19 -2.6 17.32 c
-3.68 2.19 4.71 2.43 9.15 2.43 c
-4.54 0 6.57 -0.29 8.01 -1.76 c
-2.32 -2.35 -1.23 -7.23 -2.64 -8.64 c
--4.1 -4.03 -11.09 -9.69 -11.92 -9.35 c
-f*
-255 205 5 rG
-748.74 636.52 m
--0.92 0.43 -4.7 15.65 -2.8 16.77 c
-3.67 2.18 4.74 2.31 9.09 2.31 c
-4.54 0 6.49 -0.23 7.94 -1.75 c
-2.3 -2.36 -1.18 -7.09 -2.58 -8.48 c
--4.09 -4.02 -10.77 -9.25 -11.65 -8.85 c
-f*
-255 205 7 rG
-748.99 637.05 m
--0.98 0.51 -4.89 15.11 -2.99 16.23 c
-3.66 2.18 4.76 2.19 9.03 2.19 c
-4.54 0 6.4 -0.17 7.87 -1.74 c
-2.27 -2.37 -1.14 -6.95 -2.52 -8.33 c
--4.08 -4.01 -10.44 -8.81 -11.38 -8.34 c
-f*
-255 205 10 rG
-749.24 637.57 m
--1.05 0.58 -5.08 14.57 -3.19 15.68 c
-3.66 2.17 4.79 2.07 8.97 2.07 c
-4.54 0 6.31 -0.11 7.8 -1.73 c
-2.25 -2.38 -1.09 -6.8 -2.47 -8.18 c
--4.07 -4 -10.12 -8.36 -11.11 -7.84 c
-f*
-255 206 12 rG
-749.49 638.1 m
--1.12 0.66 -5.26 14.04 -3.38 15.13 c
-3.65 2.16 4.82 1.95 8.91 1.95 c
-4.54 0 6.22 -0.05 7.73 -1.72 c
-2.23 -2.39 -1.05 -6.66 -2.41 -8.03 c
--4.06 -3.99 -9.8 -7.92 -10.84 -7.34 c
-f*
-255 206 15 rG
-749.74 638.62 m
--1.18 0.73 -5.45 13.5 -3.58 14.59 c
-3.64 2.15 4.85 1.83 8.85 1.83 c
-4.54 0 6.13 0.01 7.66 -1.71 c
-2.21 -2.4 -1 -6.52 -2.35 -7.87 c
--4.05 -3.98 -9.48 -7.48 -10.57 -6.83 c
-f*
-255 206 17 rG
-749.99 639.15 m
--1.25 0.8 -5.64 12.96 -3.77 14.04 c
-3.64 2.15 4.88 1.71 8.79 1.71 c
-4.54 0 6.04 0.07 7.58 -1.7 c
-2.19 -2.41 -0.95 -6.38 -2.3 -7.72 c
--4.04 -3.97 -9.15 -7.03 -10.31 -6.33 c
-f*
-255 206 20 rG
-750.25 639.67 m
--1.32 0.88 -5.83 12.42 -3.97 13.5 c
-3.63 2.14 4.9 1.59 8.73 1.59 c
-4.54 0 5.95 0.13 7.51 -1.69 c
-2.17 -2.42 -0.91 -6.24 -2.24 -7.57 c
--4.03 -3.96 -8.83 -6.59 -10.04 -5.83 c
-f*
-255 207 23 rG
-750.5 640.2 m
--1.39 0.95 -6.01 11.88 -4.16 12.95 c
-3.62 2.13 4.93 1.47 8.67 1.47 c
-4.54 0 5.87 0.19 7.44 -1.68 c
-2.15 -2.44 -0.86 -6.1 -2.18 -7.42 c
--4.01 -3.94 -8.51 -6.15 -9.77 -5.32 c
-f*
-255 207 25 rG
-750.75 640.72 m
--1.45 1.03 -6.2 11.34 -4.36 12.4 c
-3.62 2.13 4.96 1.35 8.61 1.35 c
-4.54 0 5.78 0.25 7.37 -1.67 c
-2.13 -2.45 -0.82 -5.95 -2.13 -7.27 c
--4.01 -3.93 -8.19 -5.71 -9.5 -4.82 c
-f*
-255 207 28 rG
-751 641.24 m
--1.52 1.1 -6.39 10.8 -4.55 11.86 c
-3.61 2.12 4.99 1.23 8.55 1.23 c
-4.54 0 5.69 0.31 7.3 -1.66 c
-2.11 -2.46 -0.77 -5.81 -2.07 -7.11 c
--3.99 -3.92 -7.86 -5.26 -9.23 -4.32 c
-f*
-255 207 30 rG
-751.25 641.77 m
--1.59 1.18 -6.58 10.26 -4.75 11.31 c
-3.6 2.11 5.02 1.11 8.49 1.11 c
-4.54 0 5.6 0.37 7.23 -1.64 c
-2.08 -2.47 -0.72 -5.67 -2.01 -6.96 c
--3.98 -3.91 -7.54 -4.82 -8.96 -3.81 c
-f*
-255 208 33 rG
-751.5 642.29 m
--1.66 1.25 -6.77 9.72 -4.94 10.77 c
-3.59 2.11 5.05 0.99 8.43 0.99 c
-4.54 0 5.51 0.43 7.16 -1.63 c
-2.06 -2.48 -0.68 -5.53 -1.96 -6.81 c
--3.97 -3.9 -7.22 -4.38 -8.69 -3.31 c
-f*
-255 208 35 rG
-751.76 642.82 m
--1.72 1.33 -6.95 9.19 -5.14 10.22 c
-3.59 2.1 5.07 0.86 8.37 0.86 c
-4.54 0 5.42 0.49 7.09 -1.62 c
-2.04 -2.49 -0.63 -5.39 -1.9 -6.66 c
--3.96 -3.89 -6.9 -3.93 -8.42 -2.81 c
-f*
-255 208 38 rG
-752.01 643.34 m
--1.79 1.4 -7.14 8.65 -5.33 9.68 c
-3.58 2.09 5.1 0.74 8.31 0.74 c
-4.54 0 5.33 0.55 7.02 -1.61 c
-2.02 -2.5 -0.58 -5.24 -1.84 -6.5 c
--3.95 -3.88 -6.57 -3.49 -8.15 -2.3 c
-f*
-255 208 40 rG
-752.26 643.87 m
--1.86 1.47 -7.33 8.11 -5.53 9.13 c
-3.57 2.08 5.13 0.62 8.25 0.62 c
-4.54 0 5.24 0.61 6.95 -1.6 c
-2 -2.51 -0.54 -5.1 -1.79 -6.35 c
--3.94 -3.87 -6.25 -3.05 -7.88 -1.8 c
-f*
-255 209 43 rG
-752.51 644.39 m
--1.92 1.55 -7.52 7.57 -5.72 8.58 c
-3.57 2.08 5.16 0.5 8.19 0.5 c
-4.54 0 5.16 0.67 6.88 -1.59 c
-1.98 -2.52 -0.49 -4.96 -1.73 -6.2 c
--3.93 -3.86 -5.93 -2.61 -7.61 -1.3 c
-f*
-255 209 46 rG
-752.76 644.92 m
--1.99 1.62 -7.7 7.03 -5.92 8.04 c
-3.56 2.07 5.19 0.38 8.13 0.38 c
-4.54 0 5.07 0.73 6.8 -1.58 c
-1.96 -2.53 -0.45 -4.82 -1.67 -6.05 c
--3.92 -3.85 -5.61 -2.16 -7.34 -0.79 c
-f*
-255 209 48 rG
-753.01 645.44 m
--2.06 1.7 -7.89 6.49 -6.11 7.49 c
-3.55 2.06 5.22 0.26 8.07 0.26 c
-4.54 0 4.98 0.79 6.73 -1.57 c
-1.94 -2.54 -0.4 -4.68 -1.62 -5.89 c
--3.91 -3.84 -5.28 -1.72 -7.07 -0.29 c
-f*
-255 209 51 rG
-753.27 645.97 m
--2.13 1.77 -8.08 5.95 -6.31 6.95 c
-3.54 2.06 5.24 0.14 8.01 0.14 c
-4.54 0 4.89 0.85 6.66 -1.56 c
-1.91 -2.55 -0.35 -4.54 -1.56 -5.74 c
--3.9 -3.83 -4.96 -1.28 -6.8 0.21 c
-f*
-255 204 0 rG
-821.39 649.1 m
-4.12 -6.01 -0.07 -14.04 2.9 -18.83 c
--7.49 6.88 -10.93 9.72 -21.26 -0.4 c
-2.83 4.12 3.44 6.88 5.2 10.8 c
-1.21 2.7 4.79 10.53 5.53 10.53 c
-0.67 0 5.2 1.48 7.63 -2.09 c
-f*
-255 205 2 rG
-821.35 649.06 m
-4.02 -5.87 0.04 -13.86 2.84 -18.4 c
--7.33 6.71 -10.7 9.53 -20.8 -0.36 c
-2.66 3.88 3.33 6.71 5.07 10.55 c
-1.23 2.71 4.67 10.23 5.45 10.24 c
-0.69 0.01 5.08 1.45 7.45 -2.04 c
-f*
-255 205 5 rG
-821.3 649.02 m
-3.92 -5.73 0.14 -13.69 2.77 -17.96 c
--7.18 6.53 -10.47 9.35 -20.34 -0.31 c
-2.49 3.65 3.22 6.53 4.94 10.31 c
-1.25 2.71 4.55 9.93 5.36 9.96 c
-0.71 0.01 4.96 1.41 7.28 -2 c
-f*
-255 205 7 rG
-821.26 648.98 m
-3.83 -5.59 0.25 -13.51 2.7 -17.53 c
--7.02 6.35 -10.24 9.16 -19.88 -0.26 c
-2.32 3.41 3.1 6.35 4.81 10.07 c
-1.27 2.72 4.42 9.64 5.27 9.67 c
-0.72 0.02 4.84 1.38 7.1 -1.95 c
-f*
-255 205 10 rG
-821.22 648.94 m
-3.73 -5.46 0.36 -13.34 2.64 -17.1 c
--6.87 6.18 -10.01 8.98 -19.43 -0.21 c
-2.15 3.18 2.99 6.17 4.68 9.82 c
-1.29 2.73 4.3 9.34 5.19 9.39 c
-0.74 0.03 4.72 1.34 6.93 -1.9 c
-f*
-255 206 12 rG
-821.18 648.9 m
-3.64 -5.32 0.46 -13.16 2.57 -16.67 c
--6.71 6 -9.78 8.8 -18.97 -0.16 c
-1.98 2.94 2.87 5.99 4.55 9.58 c
-1.31 2.74 4.18 9.05 5.1 9.1 c
-0.75 0.04 4.6 1.31 6.75 -1.85 c
-f*
-255 206 15 rG
-821.13 648.85 m
-3.54 -5.18 0.57 -12.99 2.5 -16.24 c
--6.56 5.83 -9.55 8.61 -18.51 -0.11 c
-1.81 2.71 2.76 5.82 4.42 9.33 c
-1.33 2.75 4.06 8.75 5.01 8.82 c
-0.77 0.04 4.48 1.27 6.58 -1.8 c
-f*
-255 206 17 rG
-821.09 648.81 m
-3.44 -5.04 0.67 -12.81 2.44 -15.81 c
--6.4 5.65 -9.32 8.43 -18.05 -0.06 c
-1.64 2.47 2.65 5.64 4.29 9.09 c
-1.35 2.75 3.93 8.46 4.93 8.53 c
-0.78 0.05 4.36 1.23 6.4 -1.76 c
-f*
-255 206 20 rG
-821.05 648.77 m
-3.35 -4.91 0.78 -12.63 2.37 -15.38 c
--6.25 5.48 -9.09 8.24 -17.6 -0.01 c
-1.47 2.24 2.53 5.46 4.16 8.85 c
-1.37 2.76 3.81 8.16 4.84 8.25 c
-0.8 0.06 4.24 1.2 6.23 -1.71 c
-f*
-255 207 23 rG
-821.01 648.73 m
-3.25 -4.77 0.88 -12.46 2.3 -14.95 c
--6.09 5.3 -8.86 8.06 -17.14 0.04 c
-1.3 2 2.42 5.28 4.03 8.6 c
-1.39 2.77 3.69 7.86 4.76 7.96 c
-0.82 0.06 4.13 1.16 6.05 -1.66 c
-f*
-255 207 25 rG
-820.96 648.69 m
-3.15 -4.63 0.99 -12.28 2.24 -14.52 c
--5.94 5.12 -8.63 7.88 -16.68 0.09 c
-1.13 1.77 2.31 5.11 3.9 8.36 c
-1.41 2.78 3.57 7.57 4.67 7.68 c
-0.83 0.07 4.01 1.13 5.88 -1.61 c
-f*
-255 207 28 rG
-820.92 648.65 m
-3.06 -4.49 1.1 -12.11 2.17 -14.08 c
--5.78 4.95 -8.4 7.69 -16.22 0.14 c
-0.95 1.53 2.19 4.93 3.77 8.12 c
-1.43 2.78 3.44 7.27 4.58 7.39 c
-0.85 0.08 3.89 1.09 5.7 -1.56 c
-f*
-255 207 30 rG
-820.88 648.61 m
-2.96 -4.36 1.2 -11.93 2.1 -13.65 c
--5.63 4.77 -8.17 7.51 -15.77 0.19 c
-0.78 1.3 2.08 4.75 3.64 7.87 c
-1.45 2.79 3.32 6.98 4.5 7.11 c
-0.86 0.09 3.77 1.06 5.53 -1.52 c
-f*
-255 208 33 rG
-820.83 648.56 m
-2.87 -4.22 1.31 -11.76 2.04 -13.22 c
--5.47 4.6 -7.94 7.32 -15.31 0.24 c
-0.61 1.06 1.97 4.57 3.51 7.63 c
-1.47 2.8 3.2 6.68 4.41 6.82 c
-0.88 0.1 3.65 1.02 5.35 -1.47 c
-f*
-255 208 35 rG
-820.79 648.52 m
-2.77 -4.08 1.41 -11.58 1.97 -12.79 c
--5.32 4.42 -7.71 7.14 -14.85 0.29 c
-0.44 0.82 1.85 4.39 3.38 7.39 c
-1.49 2.81 3.08 6.38 4.32 6.54 c
-0.89 0.1 3.53 0.98 5.18 -1.42 c
-f*
-255 208 38 rG
-820.75 648.48 m
-2.67 -3.94 1.52 -11.41 1.9 -12.36 c
--5.16 4.24 -7.48 6.96 -14.39 0.34 c
-0.27 0.59 1.74 4.22 3.25 7.14 c
-1.51 2.81 2.95 6.09 4.24 6.25 c
-0.91 0.11 3.41 0.95 5.01 -1.37 c
-f*
-255 208 40 rG
-820.71 648.44 m
-2.58 -3.81 1.62 -11.23 1.84 -11.93 c
--5.01 4.07 -7.25 6.77 -13.93 0.39 c
-0.1 0.35 1.62 4.04 3.12 6.9 c
-1.53 2.82 2.83 5.79 4.15 5.97 c
-0.93 0.12 3.29 0.91 4.83 -1.32 c
-f*
-255 209 43 rG
-820.66 648.4 m
-2.48 -3.67 1.73 -11.06 1.77 -11.5 c
--4.85 3.89 -7.02 6.59 -13.48 0.44 c
--0.07 0.12 1.51 3.86 2.99 6.66 c
-1.55 2.83 2.71 5.5 4.06 5.68 c
-0.94 0.12 3.17 0.88 4.66 -1.28 c
-f*
-255 209 46 rG
-820.62 648.36 m
-2.39 -3.53 1.84 -10.88 1.7 -11.07 c
--4.7 3.72 -6.79 6.4 -13.02 0.49 c
--0.24 -0.12 1.4 3.68 2.86 6.41 c
-1.57 2.84 2.59 5.2 3.98 5.4 c
-0.96 0.13 3.05 0.84 4.48 -1.23 c
-f*
-255 209 48 rG
-820.58 648.32 m
-2.29 -3.39 1.94 -10.71 1.64 -10.63 c
--4.54 3.54 -6.56 6.22 -12.56 0.54 c
--0.41 -0.35 1.28 3.51 2.73 6.17 c
-1.59 2.84 2.46 4.9 3.89 5.11 c
-0.97 0.14 2.93 0.81 4.31 -1.18 c
-f*
-255 209 51 rG
-820.53 648.28 m
-2.19 -3.25 2.05 -10.53 1.57 -10.2 c
--4.39 3.36 -6.33 6.03 -12.1 0.59 c
--0.59 -0.59 1.17 3.33 2.6 5.92 c
-1.61 2.85 2.34 4.61 3.8 4.83 c
-0.99 0.15 2.82 0.77 4.13 -1.13 c
-f*
-255 204 0 rG
-824.79 626.98 m
-6.57 -8.63 18.77 -17.9 23.13 -20.43 c
-3.17 -1.82 7.76 -3.96 7.68 -9.66 c
--0.16 -6.49 -3.48 -8.32 -5.31 -10.14 c
--3.64 -3.64 -24.39 -12.04 -37.62 -17.9 c
--13.46 -5.94 -23.21 -9.03 -29.94 -10.14 c
--4.51 -0.71 -7.76 -2.61 -14.49 -1.27 c
--4.75 0.95 -7.6 1.43 -10.85 4.28 c
--3.25 2.77 -6.57 5.7 -7.05 10.3 c
--1.35 11.4 4.04 18.61 9.27 28.51 c
-4.28 7.92 12.91 9.5 18.3 8.79 c
-19.32 -2.61 18.06 9.5 23.36 14.81 c
-4.91 4.91 18.93 8.87 23.52 2.85 c
-f*
-255 205 2 rG
-824.74 626.9 m
-6.56 -8.61 18.73 -17.86 23.07 -20.39 c
-3.16 -1.82 7.74 -3.95 7.66 -9.64 c
--0.16 -6.48 -3.48 -8.3 -5.29 -10.11 c
--3.64 -3.63 -24.57 -12.09 -37.66 -17.7 c
--13.48 -5.69 -22.71 -8.66 -29.48 -9.85 c
--4.48 -0.75 -7.87 -2.63 -14.58 -1.29 c
--4.73 0.94 -7.44 1.35 -10.68 4.19 c
--3.23 2.76 -6.33 5.46 -6.8 10.03 c
--1.33 11.37 3.7 18.32 8.85 28.21 c
-4.28 8.11 12.97 9.28 18.33 8.56 c
-19.26 -2.66 17.83 9.86 23.12 15.15 c
-4.9 4.9 18.88 8.85 23.47 2.84 c
-f*
-255 205 5 rG
-824.68 626.82 m
-6.54 -8.59 18.68 -17.81 23.02 -20.34 c
-3.15 -1.81 7.72 -3.94 7.65 -9.62 c
--0.16 -6.46 -3.47 -8.28 -5.28 -10.09 c
--3.63 -3.63 -24.76 -12.15 -37.71 -17.5 c
--13.51 -5.44 -22.22 -8.29 -29.03 -9.57 c
--4.46 -0.79 -7.98 -2.65 -14.68 -1.32 c
--4.71 0.93 -7.28 1.28 -10.5 4.11 c
--3.22 2.75 -6.09 5.22 -6.55 9.76 c
--1.32 11.34 3.36 18.03 8.43 27.92 c
-4.28 8.31 13.03 9.05 18.37 8.32 c
-19.2 -2.7 17.59 10.21 22.88 15.49 c
-4.89 4.89 18.84 8.83 23.41 2.84 c
-f*
-255 205 7 rG
-824.62 626.74 m
-6.53 -8.57 18.64 -17.77 22.96 -20.29 c
-3.15 -1.81 7.71 -3.93 7.63 -9.59 c
--0.16 -6.45 -3.46 -8.26 -5.27 -10.07 c
--3.62 -3.62 -24.93 -12.2 -37.75 -17.3 c
--13.53 -5.2 -21.73 -7.92 -28.57 -9.28 c
--4.43 -0.83 -8.09 -2.67 -14.77 -1.35 c
--4.7 0.92 -7.12 1.21 -10.33 4.02 c
--3.2 2.74 -5.85 4.97 -6.31 9.5 c
--1.3 11.31 3.03 17.75 8.01 27.62 c
-4.28 8.5 13.09 8.83 18.4 8.08 c
-19.14 -2.74 17.36 10.56 22.63 15.83 c
-4.88 4.88 18.8 8.81 23.36 2.83 c
-f*
-255 205 10 rG
-824.56 626.66 m
-6.51 -8.55 18.59 -17.73 22.91 -20.24 c
-3.14 -1.8 7.69 -3.92 7.61 -9.57 c
--0.16 -6.43 -3.45 -8.24 -5.26 -10.04 c
--3.61 -3.61 -25.12 -12.26 -37.79 -17.1 c
--13.55 -4.95 -21.24 -7.55 -28.12 -9 c
--4.4 -0.87 -8.2 -2.69 -14.86 -1.38 c
--4.68 0.91 -6.96 1.14 -10.16 3.93 c
--3.19 2.73 -5.61 4.73 -6.06 9.23 c
--1.29 11.28 2.69 17.46 7.59 27.32 c
-4.28 8.69 13.15 8.6 18.44 7.85 c
-19.08 -2.79 17.13 10.91 22.39 16.17 c
-4.86 4.86 18.75 8.79 23.3 2.82 c
-f*
-255 206 12 rG
-824.51 626.58 m
-6.5 -8.53 18.55 -17.69 22.85 -20.19 c
-3.13 -1.8 7.67 -3.91 7.59 -9.55 c
--0.16 -6.42 -3.44 -8.22 -5.24 -10.02 c
--3.6 -3.6 -25.3 -12.31 -37.84 -16.9 c
--13.57 -4.7 -20.74 -7.19 -27.66 -8.72 c
--4.37 -0.91 -8.31 -2.72 -14.95 -1.4 c
--4.66 0.9 -6.8 1.07 -9.99 3.85 c
--3.17 2.72 -5.36 4.48 -5.82 8.97 c
--1.27 11.25 2.35 17.17 7.18 27.03 c
-4.28 8.88 13.21 8.37 18.48 7.61 c
-19.02 -2.83 16.9 11.26 22.15 16.5 c
-4.85 4.85 18.71 8.77 23.25 2.82 c
-f*
-255 206 15 rG
-824.45 626.5 m
-6.48 -8.51 18.51 -17.65 22.8 -20.15 c
-3.12 -1.8 7.65 -3.9 7.57 -9.53 c
--0.16 -6.4 -3.44 -8.2 -5.23 -9.99 c
--3.59 -3.59 -25.48 -12.37 -37.88 -16.7 c
--13.59 -4.45 -20.25 -6.82 -27.21 -8.43 c
--4.34 -0.95 -8.42 -2.74 -15.04 -1.43 c
--4.64 0.89 -6.64 1 -9.81 3.76 c
--3.16 2.71 -5.12 4.24 -5.57 8.7 c
--1.26 11.22 2.01 16.88 6.76 26.73 c
-4.28 9.08 13.27 8.15 18.51 7.38 c
-18.96 -2.87 16.67 11.61 21.9 16.84 c
-4.84 4.84 18.66 8.75 23.19 2.81 c
-f*
-255 206 17 rG
-824.39 626.42 m
-6.47 -8.49 18.46 -17.6 22.75 -20.1 c
-3.12 -1.79 7.63 -3.9 7.56 -9.5 c
--0.16 -6.39 -3.43 -8.18 -5.22 -9.97 c
--3.58 -3.58 -25.66 -12.42 -37.93 -16.5 c
--13.61 -4.2 -19.76 -6.45 -26.75 -8.15 c
--4.31 -0.99 -8.53 -2.76 -15.13 -1.46 c
--4.62 0.88 -6.47 0.93 -9.64 3.68 c
--3.14 2.7 -4.88 4 -5.32 8.44 c
--1.25 11.19 1.67 16.59 6.34 26.43 c
-4.29 9.27 13.33 7.92 18.55 7.14 c
-18.9 -2.91 16.44 11.96 21.66 17.18 c
-4.83 4.83 18.62 8.72 23.14 2.8 c
-f*
-255 206 20 rG
-824.34 626.34 m
-6.45 -8.47 18.42 -17.56 22.69 -20.05 c
-3.11 -1.79 7.62 -3.89 7.54 -9.48 c
--0.16 -6.37 -3.42 -8.16 -5.21 -9.95 c
--3.57 -3.57 -25.84 -12.48 -37.97 -16.29 c
--13.63 -3.96 -19.27 -6.08 -26.3 -7.86 c
--4.28 -1.03 -8.64 -2.78 -15.22 -1.49 c
--4.6 0.87 -6.31 0.86 -9.47 3.59 c
--3.13 2.69 -4.64 3.75 -5.07 8.17 c
--1.23 11.16 1.34 16.3 5.92 26.13 c
-4.29 9.46 13.39 7.7 18.58 6.91 c
-18.84 -2.96 16.21 12.31 21.42 17.52 c
-4.82 4.82 18.57 8.7 23.08 2.8 c
-f*
-255 207 23 rG
-824.28 626.26 m
-6.43 -8.45 18.37 -17.52 22.64 -20 c
-3.1 -1.78 7.6 -3.88 7.52 -9.46 c
--0.16 -6.36 -3.41 -8.14 -5.19 -9.92 c
--3.57 -3.57 -26.02 -12.53 -38.01 -16.09 c
--13.66 -3.71 -18.78 -5.71 -25.84 -7.58 c
--4.25 -1.07 -8.75 -2.8 -15.31 -1.51 c
--4.58 0.86 -6.15 0.78 -9.3 3.51 c
--3.11 2.68 -4.4 3.51 -4.83 7.9 c
--1.22 11.13 1 16.01 5.5 25.84 c
-4.29 9.65 13.45 7.47 18.62 6.67 c
-18.78 -3 15.98 12.67 21.17 17.86 c
-4.81 4.81 18.53 8.68 23.03 2.79 c
-f*
-255 207 25 rG
-824.22 626.18 m
-6.42 -8.43 18.33 -17.48 22.58 -19.95 c
-3.09 -1.78 7.58 -3.87 7.5 -9.44 c
--0.16 -6.34 -3.4 -8.12 -5.18 -9.9 c
--3.56 -3.56 -26.2 -12.59 -38.06 -15.89 c
--13.68 -3.46 -18.28 -5.34 -25.38 -7.3 c
--4.22 -1.11 -8.86 -2.82 -15.4 -1.54 c
--4.56 0.85 -5.99 0.71 -9.12 3.42 c
--3.1 2.67 -4.15 3.27 -4.58 7.64 c
--1.2 11.1 0.66 15.72 5.09 25.54 c
-4.29 9.85 13.51 7.24 18.66 6.43 c
-18.72 -3.04 15.75 13.02 20.93 18.2 c
-4.79 4.8 18.48 8.66 22.97 2.78 c
-f*
-255 207 28 rG
-824.17 626.1 m
-6.4 -8.41 18.29 -17.44 22.53 -19.91 c
-3.09 -1.77 7.56 -3.86 7.48 -9.41 c
--0.15 -6.33 -3.39 -8.1 -5.17 -9.88 c
--3.55 -3.55 -26.38 -12.64 -38.1 -15.69 c
--13.7 -3.21 -17.79 -4.98 -24.93 -7.01 c
--4.19 -1.15 -8.97 -2.84 -15.49 -1.57 c
--4.55 0.84 -5.83 0.64 -8.95 3.34 c
--3.08 2.66 -3.91 3.02 -4.33 7.37 c
--1.19 11.07 0.32 15.43 4.67 25.24 c
-4.29 10.04 13.57 7.02 18.69 6.2 c
-18.66 -3.09 15.52 13.37 20.68 18.54 c
-4.78 4.78 18.44 8.64 22.92 2.78 c
-f*
-255 207 30 rG
-824.11 626.02 m
-6.39 -8.39 18.24 -17.39 22.48 -19.86 c
-3.08 -1.77 7.54 -3.85 7.47 -9.39 c
--0.15 -6.31 -3.39 -8.08 -5.16 -9.85 c
--3.54 -3.54 -26.56 -12.7 -38.15 -15.49 c
--13.72 -2.96 -17.3 -4.61 -24.47 -6.73 c
--4.16 -1.19 -9.08 -2.86 -15.58 -1.59 c
--4.53 0.83 -5.67 0.57 -8.78 3.25 c
--3.06 2.65 -3.67 2.78 -4.09 7.11 c
--1.17 11.04 -0.01 15.14 4.25 24.95 c
-4.29 10.23 13.63 6.79 18.73 5.96 c
-18.6 -3.13 15.28 13.72 20.44 18.88 c
-4.77 4.77 18.4 8.62 22.86 2.77 c
-f*
-255 208 33 rG
-824.05 625.94 m
-6.37 -8.37 18.2 -17.35 22.42 -19.81 c
-3.07 -1.77 7.53 -3.84 7.45 -9.37 c
--0.15 -6.3 -3.38 -8.06 -5.14 -9.83 c
--3.53 -3.53 -26.74 -12.75 -38.19 -15.29 c
--13.74 -2.72 -16.81 -4.24 -24.02 -6.44 c
--4.13 -1.23 -9.19 -2.88 -15.67 -1.62 c
--4.51 0.82 -5.51 0.5 -8.61 3.17 c
--3.05 2.64 -3.43 2.54 -3.84 6.84 c
--1.16 11.01 -0.35 14.85 3.83 24.65 c
-4.29 10.43 13.69 6.56 18.77 5.73 c
-18.54 -3.17 15.05 14.07 20.2 19.22 c
-4.76 4.76 18.35 8.6 22.81 2.76 c
-f*
-255 208 35 rG
-823.99 625.86 m
-6.36 -8.35 18.15 -17.31 22.37 -19.76 c
-3.06 -1.76 7.51 -3.83 7.43 -9.34 c
--0.15 -6.28 -3.37 -8.04 -5.13 -9.8 c
--3.52 -3.52 -26.92 -12.8 -38.23 -15.09 c
--13.76 -2.47 -16.31 -3.87 -23.56 -6.16 c
--4.1 -1.27 -9.3 -2.9 -15.76 -1.65 c
--4.49 0.81 -5.35 0.43 -8.43 3.08 c
--3.03 2.63 -3.19 2.29 -3.59 6.58 c
--1.14 10.98 -0.69 14.57 3.41 24.35 c
-4.29 10.62 13.75 6.34 18.8 5.49 c
-18.48 -3.21 14.82 14.42 19.96 19.55 c
-4.75 4.75 18.31 8.58 22.75 2.76 c
-f*
-255 208 38 rG
-823.94 625.78 m
-6.34 -8.33 18.11 -17.27 22.31 -19.71 c
-3.06 -1.76 7.49 -3.82 7.41 -9.32 c
--0.15 -6.27 -3.36 -8.02 -5.12 -9.78 c
--3.52 -3.51 -27.1 -12.86 -38.28 -14.89 c
--13.78 -2.22 -15.82 -3.5 -23.11 -5.87 c
--4.07 -1.31 -9.41 -2.92 -15.85 -1.68 c
--4.47 0.8 -5.18 0.36 -8.26 2.99 c
--3.02 2.62 -2.94 2.05 -3.35 6.31 c
--1.13 10.95 -1.03 14.28 3 24.05 c
-4.3 10.81 13.81 6.11 18.84 5.25 c
-18.42 -3.26 14.59 14.77 19.71 19.89 c
-4.74 4.74 18.26 8.56 22.69 2.75 c
-f*
-255 208 40 rG
-823.88 625.7 m
-6.33 -8.31 18.07 -17.23 22.26 -19.67 c
-3.05 -1.75 7.47 -3.81 7.39 -9.3 c
--0.15 -6.25 -3.35 -8 -5.11 -9.76 c
--3.51 -3.51 -27.28 -12.91 -38.32 -14.69 c
--13.8 -1.97 -15.33 -3.13 -22.65 -5.59 c
--4.04 -1.35 -9.52 -2.94 -15.94 -1.7 c
--4.45 0.79 -5.02 0.28 -8.09 2.91 c
--3 2.61 -2.7 1.8 -3.1 6.04 c
--1.12 10.92 -1.37 13.99 2.58 23.76 c
-4.3 11 13.87 5.89 18.88 5.02 c
-18.36 -3.3 14.36 15.13 19.47 20.23 c
-4.73 4.73 18.22 8.54 22.64 2.74 c
-f*
-255 209 43 rG
-823.82 625.62 m
-6.31 -8.29 18.02 -17.18 22.2 -19.62 c
-3.04 -1.75 7.45 -3.8 7.38 -9.28 c
--0.15 -6.24 -3.35 -7.98 -5.09 -9.73 c
--3.5 -3.5 -27.46 -12.97 -38.36 -14.49 c
--13.82 -1.73 -14.84 -2.77 -22.2 -5.31 c
--4.01 -1.39 -9.63 -2.96 -16.03 -1.73 c
--4.43 0.78 -4.86 0.21 -7.91 2.82 c
--2.99 2.6 -2.46 1.56 -2.85 5.78 c
--1.1 10.89 -1.7 13.7 2.16 23.46 c
-4.3 11.2 13.93 5.66 18.91 4.78 c
-18.3 -3.34 14.13 15.48 19.22 20.57 c
-4.71 4.71 18.17 8.52 22.58 2.74 c
-f*
-255 209 46 rG
-823.77 625.54 m
-6.3 -8.27 17.98 -17.14 22.15 -19.57 c
-3.03 -1.74 7.43 -3.79 7.36 -9.25 c
--0.15 -6.22 -3.34 -7.96 -5.08 -9.71 c
--3.49 -3.49 -27.64 -13.02 -38.41 -14.29 c
--13.85 -1.48 -14.34 -2.4 -21.74 -5.02 c
--3.98 -1.43 -9.74 -2.98 -16.12 -1.76 c
--4.42 0.77 -4.7 0.14 -7.74 2.74 c
--2.97 2.59 -2.22 1.32 -2.61 5.51 c
--1.09 10.85 -2.04 13.41 1.74 23.16 c
-4.3 11.39 13.99 5.43 18.95 4.55 c
-18.24 -3.39 13.9 15.83 18.98 20.91 c
-4.7 4.7 18.13 8.5 22.53 2.73 c
-f*
-255 209 48 rG
-823.71 625.46 m
-6.28 -8.25 17.93 -17.1 22.09 -19.52 c
-3.03 -1.74 7.42 -3.78 7.34 -9.23 c
--0.15 -6.2 -3.33 -7.94 -5.07 -9.69 c
--3.48 -3.48 -27.82 -13.08 -38.45 -14.09 c
--13.87 -1.23 -13.85 -2.03 -21.29 -4.74 c
--3.96 -1.47 -9.85 -3 -16.21 -1.78 c
--4.4 0.76 -4.54 0.07 -7.57 2.65 c
--2.96 2.58 -1.98 1.07 -2.36 5.25 c
--1.07 10.82 -2.38 13.12 1.32 22.87 c
-4.3 11.58 14.05 5.21 18.98 4.31 c
-18.18 -3.43 13.67 16.18 18.74 21.25 c
-4.69 4.69 18.08 8.47 22.47 2.72 c
-f*
-255 209 51 rG
-823.65 625.38 m
-6.26 -8.23 17.89 -17.06 22.04 -19.47 c
-3.02 -1.74 7.4 -3.77 7.32 -9.21 c
--0.15 -6.19 -3.32 -7.93 -5.06 -9.66 c
--3.47 -3.47 -28 -13.13 -38.5 -13.89 c
--13.89 -0.98 -13.36 -1.66 -20.83 -4.45 c
--3.93 -1.51 -9.96 -3.02 -16.3 -1.81 c
--4.38 0.75 -4.38 0 -7.4 2.57 c
--2.94 2.57 -1.74 0.83 -2.11 4.98 c
--1.06 10.79 -2.72 12.83 0.91 22.57 c
-4.3 11.77 14.11 4.98 19.02 4.08 c
-18.12 -3.47 13.44 16.53 18.49 21.59 c
-4.68 4.68 18.04 8.45 22.42 2.72 c
-f*
-153 89 0 rG
-546.09 637.83 m
--7.13 -5.15 -25.19 -4.67 -29.78 -10.69 c
--4.51 -6.02 0.16 -14.73 0.08 -30.89 c
-0 -6.89 -1.19 -12.12 -1.98 -16.32 c
--1.11 -5.31 -1.82 -9.03 0.4 -12.83 c
-4.04 -6.73 10.53 -8.4 47.68 -16.16 c
-19.88 -4.12 38.65 -14.81 51.24 -15.84 c
-12.59 -0.95 15.29 3.25 22.97 10.06 c
-7.6 6.81 10.06 4.67 9.82 19.64 c
--0.24 14.89 -9.82 19.32 -20.67 36.51 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -9.03 -14.57 -16.16 -19.72 c
-f*
-158 95 0 rG
-546.2 637.52 m
--7.04 -5.17 -24.72 -4.17 -29.77 -10.46 c
--4.57 -5.96 0.25 -14.6 0.11 -30.75 c
--0.03 -6.85 -1.27 -11.97 -2.13 -16.37 c
--1.14 -5.36 -1.84 -9.02 0.38 -12.78 c
-4.17 -6.78 10.66 -7.84 47.8 -15.59 c
-19.87 -4.11 38 -14.64 50.98 -15.52 c
-12.3 -0.87 14.92 3.11 22.51 9.86 c
-7.59 6.82 9.93 4.7 9.74 19.15 c
--0.08 14.87 -9.14 19.08 -19.99 36.27 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.97 -14.83 -16.04 -20.04 c
-f*
-163 101 0 rG
-546.32 637.2 m
--6.95 -5.2 -24.26 -3.66 -29.76 -10.23 c
--4.62 -5.89 0.34 -14.48 0.13 -30.61 c
--0.06 -6.82 -1.35 -11.82 -2.28 -16.42 c
--1.17 -5.41 -1.87 -9.01 0.37 -12.73 c
-4.29 -6.83 10.79 -7.28 47.92 -15.02 c
-19.86 -4.1 37.34 -14.46 50.71 -15.21 c
-12.01 -0.79 14.56 2.98 22.05 9.65 c
-7.57 6.82 9.8 4.74 9.67 18.65 c
-0.07 14.86 -8.45 18.84 -19.3 36.03 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.91 -15.08 -15.93 -20.35 c
-f*
-168 106 0 rG
-546.43 636.88 m
--6.85 -5.22 -23.8 -3.15 -29.74 -10 c
--4.68 -5.83 0.43 -14.35 0.16 -30.47 c
--0.08 -6.78 -1.43 -11.68 -2.43 -16.47 c
--1.2 -5.46 -1.89 -9 0.36 -12.68 c
-4.42 -6.87 10.93 -6.72 48.05 -14.45 c
-19.84 -4.09 36.69 -14.29 50.45 -14.89 c
-11.73 -0.71 14.19 2.84 21.59 9.45 c
-7.56 6.82 9.67 4.77 9.6 18.16 c
-0.23 14.84 -7.77 18.6 -18.62 35.79 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.85 -15.33 -15.81 -20.67 c
-f*
-174 112 0 rG
-546.55 636.57 m
--6.76 -5.24 -23.33 -2.65 -29.73 -9.77 c
--4.74 -5.77 0.52 -14.22 0.19 -30.33 c
--0.11 -6.75 -1.5 -11.53 -2.58 -16.52 c
--1.24 -5.51 -1.92 -9 0.35 -12.62 c
-4.55 -6.92 11.06 -6.16 48.17 -13.88 c
-19.83 -4.09 36.04 -14.11 50.18 -14.57 c
-11.44 -0.63 13.83 2.71 21.13 9.25 c
-7.54 6.83 9.54 4.8 9.52 17.66 c
-0.38 14.83 -7.08 18.36 -17.93 35.54 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.79 -15.59 -15.7 -20.99 c
-f*
-179 118 0 rG
-546.66 636.25 m
--6.67 -5.27 -22.87 -2.14 -29.72 -9.54 c
--4.79 -5.7 0.61 -14.1 0.22 -30.19 c
--0.14 -6.71 -1.58 -11.39 -2.73 -16.57 c
--1.27 -5.56 -1.94 -8.99 0.34 -12.57 c
-4.67 -6.97 11.19 -5.6 48.29 -13.31 c
-19.82 -4.08 35.38 -13.94 49.92 -14.26 c
-11.15 -0.55 13.46 2.57 20.67 9.05 c
-7.52 6.83 9.41 4.83 9.44 17.17 c
-0.53 14.81 -6.4 18.12 -17.25 35.3 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.73 -15.84 -15.58 -21.3 c
-f*
-184 124 0 rG
-546.78 635.93 m
--6.58 -5.29 -22.41 -1.63 -29.71 -9.31 c
--4.85 -5.64 0.7 -13.97 0.25 -30.06 c
--0.17 -6.68 -1.66 -11.24 -2.88 -16.62 c
--1.3 -5.62 -1.96 -8.98 0.32 -12.52 c
-4.8 -7.02 11.32 -5.04 48.42 -12.74 c
-19.81 -4.07 34.73 -13.76 49.65 -13.94 c
-10.86 -0.48 13.1 2.44 20.21 8.85 c
-7.51 6.83 9.27 4.86 9.37 16.67 c
-0.69 14.79 -5.71 17.88 -16.56 35.06 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.67 -16.09 -15.47 -21.62 c
-f*
-189 129 0 rG
-546.89 635.62 m
--6.49 -5.31 -21.94 -1.12 -29.7 -9.08 c
--4.9 -5.58 0.8 -13.84 0.27 -29.92 c
--0.19 -6.64 -1.74 -11.09 -3.03 -16.68 c
--1.33 -5.67 -1.99 -8.97 0.31 -12.47 c
-4.93 -7.06 11.45 -4.49 48.54 -12.17 c
-19.8 -4.06 34.08 -13.59 49.39 -13.62 c
-10.57 -0.4 12.74 2.3 19.75 8.64 c
-7.49 6.84 9.14 4.89 9.29 16.18 c
-0.84 14.78 -5.02 17.63 -15.87 34.82 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.61 -16.35 -15.35 -21.94 c
-f*
-194 135 0 rG
-547.01 635.3 m
--6.4 -5.34 -21.48 -0.62 -29.68 -8.85 c
--4.96 -5.51 0.89 -13.72 0.3 -29.78 c
--0.22 -6.61 -1.82 -10.95 -3.18 -16.73 c
--1.36 -5.72 -2.01 -8.97 0.3 -12.42 c
-5.05 -7.11 11.58 -3.93 48.66 -11.59 c
-19.78 -4.05 33.42 -13.42 49.12 -13.31 c
-10.28 -0.32 12.37 2.17 19.29 8.44 c
-7.48 6.84 9.01 4.93 9.22 15.68 c
-1 14.76 -4.34 17.39 -15.19 34.58 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.55 -16.6 -15.24 -22.26 c
-f*
-199 141 0 rG
-547.12 634.98 m
--6.31 -5.36 -21.02 -0.11 -29.67 -8.62 c
--5.01 -5.45 0.98 -13.59 0.33 -29.64 c
--0.25 -6.57 -1.9 -10.8 -3.33 -16.78 c
--1.39 -5.77 -2.04 -8.96 0.29 -12.37 c
-5.18 -7.16 11.71 -3.37 48.78 -11.02 c
-19.77 -4.05 32.77 -13.24 48.85 -12.99 c
-9.99 -0.24 12.01 2.04 18.83 8.24 c
-7.46 6.85 8.88 4.96 9.14 15.19 c
-1.15 14.75 -3.66 17.15 -14.51 34.34 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.49 -16.85 -15.12 -22.57 c
-f*
-204 147 0 rG
-547.24 634.67 m
--6.22 -5.39 -20.55 0.4 -29.66 -8.4 c
--5.07 -5.39 1.07 -13.46 0.36 -29.5 c
--0.28 -6.53 -1.98 -10.65 -3.48 -16.83 c
--1.43 -5.82 -2.06 -8.95 0.28 -12.32 c
-5.31 -7.21 11.84 -2.81 48.91 -10.45 c
-19.76 -4.04 32.12 -13.07 48.59 -12.67 c
-9.7 -0.16 11.64 1.9 18.37 8.04 c
-7.44 6.85 8.75 4.99 9.07 14.69 c
-1.31 14.73 -2.97 16.91 -13.82 34.1 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.43 -17.11 -15.01 -22.89 c
-f*
-209 153 0 rG
-547.35 634.35 m
--6.13 -5.41 -20.09 0.9 -29.65 -8.17 c
--5.12 -5.32 1.16 -13.34 0.38 -29.36 c
--0.3 -6.5 -2.06 -10.51 -3.64 -16.88 c
--1.46 -5.87 -2.08 -8.94 0.27 -12.26 c
-5.43 -7.25 11.97 -2.25 49.03 -9.88 c
-19.75 -4.03 31.46 -12.89 48.32 -12.36 c
-9.41 -0.08 11.28 1.77 17.92 7.84 c
-7.43 6.85 8.62 5.02 8.99 14.2 c
-1.46 14.72 -2.28 16.67 -13.14 33.85 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.38 -17.36 -14.89 -23.21 c
-f*
-215 158 0 rG
-547.47 634.03 m
--6.04 -5.43 -19.63 1.41 -29.64 -7.94 c
--5.18 -5.26 1.25 -13.21 0.41 -29.22 c
--0.33 -6.46 -2.14 -10.36 -3.79 -16.93 c
--1.49 -5.92 -2.11 -8.93 0.25 -12.21 c
-5.56 -7.3 12.1 -1.69 49.15 -9.31 c
-19.74 -4.02 30.81 -12.72 48.06 -12.04 c
-9.12 0 10.91 1.63 17.46 7.64 c
-7.41 6.86 8.49 5.05 8.92 13.7 c
-1.62 14.7 -1.6 16.43 -12.45 33.61 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.32 -17.61 -14.78 -23.52 c
-f*
-220 164 0 rG
-547.58 633.72 m
--5.94 -5.46 -19.16 1.92 -29.62 -7.71 c
--5.23 -5.2 1.34 -13.08 0.44 -29.09 c
--0.36 -6.43 -2.22 -10.21 -3.94 -16.98 c
--1.52 -5.98 -2.13 -8.93 0.24 -12.16 c
-5.69 -7.35 12.23 -1.14 49.27 -8.74 c
-19.72 -4.02 30.16 -12.55 47.79 -11.72 c
-8.83 0.08 10.55 1.5 17 7.43 c
-7.4 6.86 8.36 5.08 8.84 13.21 c
-1.77 14.68 -0.92 16.18 -11.77 33.37 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.26 -17.87 -14.66 -23.84 c
-f*
-225 170 0 rG
-547.7 633.4 m
--5.85 -5.48 -18.7 2.42 -29.61 -7.48 c
--5.29 -5.13 1.43 -12.96 0.47 -28.95 c
--0.39 -6.39 -2.3 -10.07 -4.09 -17.04 c
--1.55 -6.03 -2.15 -8.92 0.23 -12.11 c
-5.81 -7.4 12.36 -0.58 49.4 -8.17 c
-19.71 -4.01 29.5 -12.37 47.53 -11.4 c
-8.55 0.16 10.19 1.36 16.54 7.23 c
-7.38 6.87 8.23 5.12 8.77 12.71 c
-1.92 14.67 -0.23 15.94 -11.08 33.13 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.2 -18.12 -14.55 -24.16 c
-f*
-230 176 0 rG
-547.81 633.08 m
--5.76 -5.5 -18.24 2.93 -29.6 -7.25 c
--5.35 -5.07 1.52 -12.83 0.5 -28.81 c
--0.42 -6.36 -2.38 -9.92 -4.24 -17.09 c
--1.58 -6.08 -2.18 -8.91 0.22 -12.06 c
-5.94 -7.44 12.49 -0.02 49.52 -7.6 c
-19.7 -4 28.85 -12.2 47.26 -11.09 c
-8.26 0.24 9.82 1.23 16.08 7.03 c
-7.37 6.87 8.1 5.15 8.69 12.22 c
-2.08 14.65 0.46 15.7 -10.39 32.89 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.14 -18.37 -14.43 -24.47 c
-f*
-235 181 0 rG
-547.92 632.77 m
--5.67 -5.53 -17.77 3.44 -29.59 -7.02 c
--5.4 -5.01 1.62 -12.7 0.52 -28.67 c
--0.44 -6.32 -2.46 -9.77 -4.39 -17.14 c
--1.62 -6.13 -2.2 -8.9 0.21 -12.01 c
-6.07 -7.49 12.62 0.54 49.64 -7.03 c
-19.69 -3.99 28.2 -12.02 47 -10.77 c
-7.97 0.32 9.46 1.09 15.62 6.83 c
-7.35 6.87 7.97 5.18 8.62 11.72 c
-2.23 14.64 1.14 15.46 -9.71 32.65 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.08 -18.63 -14.32 -24.79 c
-f*
-240 187 0 rG
-548.04 632.45 m
--5.58 -5.55 -17.31 3.94 -29.58 -6.79 c
--5.46 -4.94 1.71 -12.58 0.55 -28.53 c
--0.47 -6.28 -2.53 -9.63 -4.54 -17.19 c
--1.65 -6.18 -2.23 -8.89 0.19 -11.96 c
-6.19 -7.54 12.76 1.1 49.77 -6.46 c
-19.68 -3.98 27.54 -11.85 46.73 -10.45 c
-7.68 0.4 9.09 0.96 15.16 6.63 c
-7.33 6.88 7.84 5.21 8.54 11.23 c
-2.39 14.62 1.83 15.22 -9.02 32.4 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -8.02 -18.88 -14.2 -25.11 c
-f*
-245 193 0 rG
-548.15 632.13 m
--5.49 -5.58 -16.85 4.45 -29.57 -6.56 c
--5.51 -4.88 1.8 -12.45 0.58 -28.39 c
--0.5 -6.25 -2.61 -9.48 -4.69 -17.24 c
--1.68 -6.23 -2.25 -8.89 0.18 -11.9 c
-6.32 -7.59 12.89 1.66 49.89 -5.89 c
-19.67 -3.98 26.89 -11.67 46.47 -10.14 c
-7.39 0.48 8.73 0.82 14.7 6.42 c
-7.32 6.88 7.71 5.24 8.47 10.73 c
-2.54 14.6 2.51 14.98 -8.34 32.16 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -7.96 -19.13 -14.09 -25.42 c
-f*
-250 199 0 rG
-548.27 631.81 m
--5.4 -5.6 -16.38 4.96 -29.55 -6.33 c
--5.57 -4.82 1.89 -12.32 0.61 -28.25 c
--0.53 -6.21 -2.69 -9.33 -4.84 -17.29 c
--1.71 -6.28 -2.27 -8.88 0.17 -11.85 c
-6.45 -7.63 13.02 2.21 50.01 -5.32 c
-19.65 -3.97 26.23 -11.5 46.2 -9.82 c
-7.1 0.55 8.36 0.69 14.24 6.22 c
-7.3 6.89 7.58 5.27 8.39 10.24 c
-2.7 14.59 3.2 14.74 -7.65 31.92 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -7.9 -19.39 -13.97 -25.74 c
-f*
-255 204 0 rG
-548.38 631.5 m
--5.31 -5.62 -15.92 5.46 -29.54 -6.1 c
--5.62 -4.75 1.98 -12.2 0.63 -28.12 c
--0.55 -6.18 -2.77 -9.19 -4.99 -17.34 c
--1.74 -6.34 -2.3 -8.87 0.16 -11.8 c
-6.57 -7.68 13.15 2.77 50.13 -4.75 c
-19.64 -3.96 25.58 -11.33 45.94 -9.5 c
-6.81 0.63 8 0.55 13.78 6.02 c
-7.29 6.89 7.44 5.31 8.32 9.74 c
-2.85 14.57 3.88 14.49 -6.97 31.68 c
--10.85 17.19 -12.59 20.35 -19.8 31.76 c
--7.21 11.25 -21.46 31.68 -29.62 31.92 c
--6.49 0.16 -10.14 -3.33 -14.18 -7.44 c
--4.04 -4.12 -7.84 -19.64 -13.86 -26.06 c
-f*
-551.81 625.31 m
--4.71 -4.99 -20.11 1.5 -27.38 -3.99 c
--5.21 -3.85 2.64 -8.7 1.57 -22.96 c
--0.43 -5.42 -4.21 -6.42 -2.64 -13.9 c
-1.21 -5.63 2.5 -5.49 4.63 -8.06 c
-5.85 -6.84 4.49 -1.85 37.79 -8.56 c
-17.61 -3.57 23.03 -10.2 41.36 -8.56 c
-6.13 0.57 7.27 0.5 12.41 5.42 c
-6.56 6.13 3.21 4.85 3.92 8.77 c
-2.5 13.05 0.5 15.33 -9.27 30.8 c
--9.77 15.47 -8.91 16.33 -15.33 26.53 c
--6.42 10.05 -15.26 28.38 -22.6 28.52 c
--5.78 0.14 -9.13 -2.99 -12.76 -6.7 c
--3.64 -3.71 -6.35 -21.61 -11.69 -27.31 c
-f*
-255 205 2 rG
-552.14 625.21 m
--4.91 -5.17 -20.47 1.32 -27.57 -4.08 c
--5.17 -3.87 2.84 -8.85 1.77 -22.75 c
--0.44 -5.39 -4.11 -6.46 -2.7 -13.9 c
-1.09 -5.6 2.59 -5.43 4.77 -7.92 c
-6.25 -6.74 5.14 -2.01 37.53 -8.52 c
-17.51 -3.53 22.9 -10.14 41.11 -8.51 c
-6.1 0.56 7.13 0.51 12.27 5.33 c
-6.45 5.95 3.15 4.72 3.75 8.86 c
-2.27 12.97 0.49 15.38 -9.01 30.42 c
--9.71 15.38 -8.96 16.17 -15.34 26.3 c
--6.38 9.99 -15.07 28.39 -22.37 28.53 c
--5.74 0.14 -9.07 -2.98 -12.69 -6.66 c
--3.61 -3.69 -6.21 -21.45 -11.53 -27.12 c
-f*
-255 205 5 rG
-552.46 625.11 m
--5.11 -5.35 -20.82 1.13 -27.75 -4.16 c
--5.14 -3.88 3.03 -9.01 1.97 -22.54 c
--0.45 -5.35 -4.01 -6.51 -2.77 -13.89 c
-0.96 -5.57 2.69 -5.37 4.9 -7.79 c
-6.66 -6.64 5.79 -2.16 37.27 -8.48 c
-17.41 -3.5 22.76 -10.07 40.86 -8.45 c
-6.06 0.56 6.98 0.52 12.13 5.25 c
-6.34 5.76 3.08 4.58 3.59 8.95 c
-2.05 12.89 0.47 15.43 -8.74 30.03 c
--9.66 15.29 -9 16.01 -15.34 26.08 c
--6.34 9.93 -14.88 28.39 -22.14 28.53 c
--5.71 0.14 -9.02 -2.96 -12.61 -6.62 c
--3.59 -3.66 -6.07 -21.3 -11.37 -26.92 c
-f*
-255 205 7 rG
-552.79 625.01 m
--5.31 -5.53 -21.18 0.95 -27.94 -4.24 c
--5.1 -3.89 3.23 -9.17 2.17 -22.32 c
--0.47 -5.32 -3.91 -6.56 -2.84 -13.88 c
-0.83 -5.54 2.79 -5.32 5.03 -7.65 c
-7.07 -6.54 6.44 -2.32 37.01 -8.44 c
-17.31 -3.46 22.63 -10.01 40.62 -8.4 c
-6.02 0.55 6.83 0.53 12 5.16 c
-6.24 5.58 3.02 4.45 3.42 9.05 c
-1.83 12.81 0.46 15.48 -8.48 29.64 c
--9.6 15.2 -9.05 15.85 -15.35 25.86 c
--6.3 9.87 -14.69 28.4 -21.91 28.54 c
--5.67 0.14 -8.96 -2.94 -12.54 -6.58 c
--3.57 -3.64 -5.93 -21.15 -11.2 -26.73 c
-f*
-255 205 10 rG
-553.11 624.91 m
--5.51 -5.71 -21.54 0.77 -28.12 -4.32 c
--5.07 -3.91 3.43 -9.32 2.37 -22.11 c
--0.48 -5.29 -3.81 -6.6 -2.9 -13.87 c
-0.71 -5.51 2.89 -5.26 5.16 -7.51 c
-7.48 -6.44 7.09 -2.48 36.75 -8.4 c
-17.2 -3.43 22.49 -9.95 40.37 -8.35 c
-5.99 0.54 6.69 0.54 11.86 5.08 c
-6.13 5.4 2.96 4.32 3.25 9.14 c
-1.61 12.73 0.45 15.53 -8.22 29.25 c
--9.55 15.1 -9.09 15.69 -15.35 25.64 c
--6.26 9.81 -14.51 28.41 -21.68 28.55 c
--5.64 0.14 -8.91 -2.92 -12.46 -6.54 c
--3.55 -3.62 -5.79 -21 -11.04 -26.53 c
-f*
-255 206 12 rG
-553.43 624.81 m
--5.71 -5.89 -21.9 0.59 -28.31 -4.41 c
--5.03 -3.92 3.63 -9.48 2.57 -21.9 c
--0.49 -5.26 -3.7 -6.65 -2.97 -13.87 c
-0.58 -5.48 2.99 -5.2 5.3 -7.38 c
-7.89 -6.34 7.73 -2.63 36.49 -8.36 c
-17.1 -3.4 22.36 -9.89 40.12 -8.3 c
-5.95 0.54 6.54 0.55 11.72 4.99 c
-6.02 5.21 2.89 4.19 3.08 9.23 c
-1.39 12.64 0.44 15.58 -7.96 28.86 c
--9.49 15.01 -9.13 15.53 -15.36 25.42 c
--6.23 9.75 -14.32 28.41 -21.44 28.55 c
--5.6 0.14 -8.86 -2.91 -12.38 -6.5 c
--3.53 -3.6 -5.65 -20.85 -10.87 -26.34 c
-f*
-255 206 15 rG
-553.76 624.71 m
--5.91 -6.08 -22.25 0.41 -28.49 -4.49 c
--5 -3.94 3.83 -9.63 2.78 -21.69 c
--0.51 -5.23 -3.6 -6.7 -3.03 -13.86 c
-0.45 -5.45 3.08 -5.14 5.43 -7.24 c
-8.29 -6.24 8.38 -2.79 36.23 -8.33 c
-17 -3.36 22.23 -9.83 39.88 -8.25 c
-5.91 0.53 6.39 0.56 11.59 4.9 c
-5.91 5.03 2.83 4.05 2.91 9.32 c
-1.16 12.56 0.43 15.63 -7.69 28.48 c
--9.44 14.92 -9.18 15.37 -15.37 25.2 c
--6.19 9.69 -14.13 28.42 -21.21 28.56 c
--5.57 0.14 -8.8 -2.89 -12.31 -6.46 c
--3.51 -3.57 -5.52 -20.7 -10.71 -26.14 c
-f*
-255 206 17 rG
-554.08 624.61 m
--6.11 -6.26 -22.61 0.23 -28.68 -4.57 c
--4.97 -3.95 4.02 -9.79 2.98 -21.47 c
--0.52 -5.19 -3.5 -6.74 -3.1 -13.85 c
-0.33 -5.42 3.18 -5.09 5.56 -7.11 c
-8.7 -6.14 9.03 -2.94 35.97 -8.29 c
-16.9 -3.33 22.09 -9.77 39.63 -8.2 c
-5.88 0.52 6.24 0.57 11.45 4.82 c
-5.8 4.84 2.77 3.92 2.75 9.42 c
-0.94 12.48 0.41 15.68 -7.43 28.09 c
--9.38 14.83 -9.22 15.21 -15.37 24.98 c
--6.15 9.63 -13.94 28.43 -20.98 28.56 c
--5.53 0.14 -8.75 -2.87 -12.23 -6.42 c
--3.49 -3.55 -5.38 -20.55 -10.55 -25.95 c
-f*
-255 206 20 rG
-554.4 624.51 m
--6.32 -6.44 -22.97 0.04 -28.86 -4.66 c
--4.93 -3.97 4.22 -9.94 3.18 -21.26 c
--0.53 -5.16 -3.4 -6.79 -3.17 -13.84 c
-0.2 -5.39 3.28 -5.03 5.7 -6.97 c
-9.11 -6.04 9.68 -3.1 35.71 -8.25 c
-16.8 -3.29 21.96 -9.71 39.38 -8.15 c
-5.84 0.52 6.1 0.58 11.31 4.73 c
-5.7 4.66 2.7 3.79 2.58 9.51 c
-0.72 12.4 0.4 15.73 -7.17 27.7 c
--9.33 14.74 -9.27 15.05 -15.38 24.76 c
--6.11 9.57 -13.75 28.43 -20.75 28.57 c
--5.5 0.14 -8.69 -2.85 -12.16 -6.38 c
--3.46 -3.53 -5.24 -20.4 -10.38 -25.76 c
-f*
-255 207 23 rG
-554.73 624.41 m
--6.52 -6.62 -23.32 -0.14 -29.05 -4.74 c
--4.9 -3.98 4.42 -10.1 3.38 -21.05 c
--0.55 -5.13 -3.3 -6.84 -3.23 -13.84 c
-0.07 -5.36 3.38 -4.97 5.83 -6.83 c
-9.52 -5.94 10.33 -3.25 35.45 -8.21 c
-16.7 -3.26 21.82 -9.65 39.14 -8.1 c
-5.8 0.51 5.95 0.59 11.18 4.65 c
-5.59 4.47 2.64 3.66 2.41 9.6 c
-0.5 12.32 0.39 15.78 -6.91 27.31 c
--9.27 14.64 -9.31 14.89 -15.38 24.54 c
--6.07 9.51 -13.56 28.44 -20.51 28.58 c
--5.47 0.13 -8.64 -2.83 -12.08 -6.34 c
--3.44 -3.51 -5.1 -20.25 -10.22 -25.56 c
-f*
-255 207 25 rG
-555.05 624.31 m
--6.72 -6.8 -23.68 -0.32 -29.23 -4.82 c
--4.86 -4 4.62 -10.25 3.58 -20.84 c
--0.56 -5.1 -3.2 -6.88 -3.3 -13.83 c
--0.05 -5.33 3.48 -4.91 5.96 -6.7 c
-9.93 -5.84 10.98 -3.41 35.19 -8.17 c
-16.59 -3.23 21.69 -9.59 38.89 -8.05 c
-5.77 0.51 5.8 0.6 11.04 4.56 c
-5.48 4.29 2.58 3.52 2.24 9.69 c
-0.27 12.24 0.38 15.83 -6.64 26.93 c
--9.22 14.55 -9.36 14.73 -15.39 24.32 c
--6.03 9.45 -13.38 28.45 -20.28 28.58 c
--5.43 0.13 -8.58 -2.82 -12 -6.3 c
--3.42 -3.49 -4.96 -20.1 -10.06 -25.37 c
-f*
-255 207 28 rG
-555.38 624.21 m
--6.92 -6.98 -24.04 -0.5 -29.42 -4.91 c
--4.83 -4.01 4.81 -10.41 3.78 -20.63 c
--0.57 -5.06 -3.1 -6.93 -3.36 -13.82 c
--0.18 -5.3 3.58 -4.85 6.09 -6.56 c
-10.33 -5.74 11.62 -3.56 34.93 -8.13 c
-16.49 -3.19 21.56 -9.53 38.65 -8 c
-5.73 0.5 5.66 0.6 10.9 4.48 c
-5.37 4.11 2.51 3.39 2.08 9.78 c
-0.05 12.16 0.36 15.88 -6.38 26.54 c
--9.16 14.46 -9.4 14.57 -15.4 24.1 c
--6 9.39 -13.19 28.45 -20.05 28.59 c
--5.4 0.13 -8.53 -2.8 -11.93 -6.26 c
--3.4 -3.46 -4.82 -19.95 -9.89 -25.17 c
-f*
-255 207 30 rG
-555.7 624.11 m
--7.12 -7.16 -24.4 -0.68 -29.61 -4.99 c
--4.8 -4.03 5.01 -10.56 3.98 -20.41 c
--0.59 -5.03 -3 -6.98 -3.43 -13.81 c
--0.31 -5.27 3.67 -4.8 6.23 -6.43 c
-10.74 -5.64 12.27 -3.72 34.67 -8.1 c
-16.39 -3.16 21.42 -9.47 38.4 -7.94 c
-5.69 0.49 5.51 0.61 10.77 4.39 c
-5.26 3.92 2.45 3.26 1.91 9.88 c
--0.17 12.08 0.35 15.93 -6.12 26.15 c
--9.11 14.37 -9.44 14.41 -15.4 23.87 c
--5.96 9.33 -13 28.46 -19.82 28.59 c
--5.36 0.13 -8.47 -2.78 -11.85 -6.22 c
--3.38 -3.44 -4.69 -19.8 -9.73 -24.98 c
-f*
-255 208 33 rG
-556.02 624.01 m
--7.32 -7.34 -24.76 -0.86 -29.79 -5.07 c
--4.76 -4.04 5.21 -10.72 4.18 -20.2 c
--0.6 -5 -2.9 -7.02 -3.5 -13.81 c
--0.43 -5.24 3.77 -4.74 6.36 -6.29 c
-11.15 -5.54 12.92 -3.87 34.41 -8.06 c
-16.29 -3.13 21.29 -9.41 38.15 -7.89 c
-5.66 0.49 5.36 0.62 10.63 4.31 c
-5.15 3.74 2.39 3.13 1.74 9.97 c
--0.39 12 0.34 15.98 -5.86 25.76 c
--9.05 14.27 -9.49 14.25 -15.41 23.65 c
--5.92 9.27 -12.81 28.47 -19.59 28.6 c
--5.33 0.13 -8.42 -2.76 -11.77 -6.18 c
--3.35 -3.42 -4.55 -19.64 -9.56 -24.78 c
-f*
-255 208 35 rG
-556.35 623.91 m
--7.52 -7.52 -25.11 -1.05 -29.98 -5.15 c
--4.73 -4.06 5.41 -10.87 4.38 -19.99 c
--0.61 -4.97 -2.8 -7.07 -3.56 -13.8 c
--0.56 -5.21 3.87 -4.68 6.49 -6.15 c
-11.56 -5.44 13.57 -4.03 34.15 -8.02 c
-16.19 -3.09 21.15 -9.35 37.91 -7.84 c
-5.62 0.48 5.22 0.63 10.49 4.22 c
-5.05 3.55 2.33 2.99 1.57 10.06 c
--0.61 11.92 0.33 16.03 -5.59 25.38 c
--9 14.18 -9.53 14.09 -15.41 23.43 c
--5.88 9.22 -12.62 28.47 -19.35 28.6 c
--5.29 0.13 -8.37 -2.75 -11.7 -6.14 c
--3.33 -3.4 -4.41 -19.49 -9.4 -24.59 c
-f*
-255 208 38 rG
-556.67 623.81 m
--7.72 -7.7 -25.47 -1.23 -30.16 -5.24 c
--4.69 -4.07 5.61 -11.03 4.58 -19.78 c
--0.62 -4.93 -2.7 -7.12 -3.63 -13.79 c
--0.69 -5.18 3.97 -4.62 6.62 -6.02 c
-11.97 -5.34 14.22 -4.18 33.9 -7.98 c
-16.08 -3.06 21.02 -9.29 37.66 -7.79 c
-5.58 0.47 5.07 0.64 10.36 4.13 c
-4.94 3.37 2.26 2.86 1.4 10.15 c
--0.84 11.84 0.31 16.08 -5.33 24.99 c
--8.94 14.09 -9.58 13.93 -15.42 23.21 c
--5.84 9.16 -12.43 28.48 -19.12 28.61 c
--5.26 0.13 -8.31 -2.73 -11.62 -6.1 c
--3.31 -3.38 -4.27 -19.34 -9.24 -24.4 c
-f*
-255 208 40 rG
-556.99 623.71 m
--7.93 -7.88 -25.83 -1.41 -30.35 -5.32 c
--4.66 -4.09 5.8 -11.19 4.79 -19.56 c
--0.64 -4.9 -2.6 -7.16 -3.69 -13.78 c
--0.81 -5.15 4.07 -4.56 6.76 -5.88 c
-12.37 -5.24 14.87 -4.34 33.64 -7.94 c
-15.98 -3.02 20.89 -9.22 37.41 -7.74 c
-5.55 0.47 4.92 0.65 10.22 4.05 c
-4.83 3.19 2.2 2.73 1.24 10.25 c
--1.06 11.75 0.3 16.13 -5.07 24.6 c
--8.89 14 -9.62 13.77 -15.43 22.99 c
--5.81 9.1 -12.25 28.49 -18.89 28.62 c
--5.23 0.13 -8.26 -2.71 -11.55 -6.06 c
--3.29 -3.35 -4.13 -19.19 -9.07 -24.2 c
-f*
-255 209 43 rG
-557.32 623.61 m
--8.13 -8.06 -26.19 -1.59 -30.53 -5.4 c
--4.62 -4.1 6 -11.34 4.99 -19.35 c
--0.65 -4.87 -2.5 -7.21 -3.76 -13.78 c
--0.94 -5.12 4.16 -4.51 6.89 -5.75 c
-12.78 -5.14 15.51 -4.5 33.38 -7.9 c
-15.88 -2.99 20.75 -9.16 37.17 -7.69 c
-5.51 0.46 4.77 0.66 10.08 3.96 c
-4.72 3 2.14 2.6 1.07 10.34 c
--1.28 11.67 0.29 16.18 -4.81 24.21 c
--8.83 13.91 -9.67 13.61 -15.43 22.77 c
--5.77 9.04 -12.06 28.49 -18.66 28.62 c
--5.19 0.13 -8.2 -2.69 -11.47 -6.02 c
--3.27 -3.33 -3.99 -19.04 -8.91 -24.01 c
-f*
-255 209 46 rG
-557.64 623.51 m
--8.33 -8.24 -26.54 -1.77 -30.72 -5.49 c
--4.59 -4.12 6.2 -11.5 5.19 -19.14 c
--0.66 -4.84 -2.4 -7.25 -3.82 -13.77 c
--1.07 -5.09 4.26 -4.45 7.02 -5.61 c
-13.19 -5.04 16.16 -4.65 33.12 -7.86 c
-15.78 -2.96 20.62 -9.1 36.92 -7.64 c
-5.47 0.45 4.63 0.67 9.95 3.88 c
-4.61 2.82 2.07 2.46 0.9 10.43 c
--1.5 11.59 0.28 16.23 -4.54 23.83 c
--8.78 13.81 -9.71 13.45 -15.44 22.55 c
--5.73 8.98 -11.87 28.5 -18.43 28.63 c
--5.16 0.13 -8.15 -2.67 -11.39 -5.98 c
--3.25 -3.31 -3.86 -18.89 -8.74 -23.81 c
-f*
-255 209 48 rG
-557.97 623.41 m
--8.53 -8.42 -26.9 -1.95 -30.9 -5.57 c
--4.56 -4.13 6.4 -11.65 5.39 -18.93 c
--0.68 -4.81 -2.3 -7.3 -3.89 -13.76 c
--1.19 -5.05 4.36 -4.39 7.15 -5.47 c
-13.6 -4.94 16.81 -4.81 32.86 -7.83 c
-15.68 -2.92 20.48 -9.04 36.67 -7.59 c
-5.44 0.45 4.48 0.68 9.81 3.79 c
-4.5 2.63 2.01 2.33 0.73 10.52 c
--1.72 11.51 0.26 16.28 -4.28 23.44 c
--8.72 13.72 -9.75 13.29 -15.44 22.33 c
--5.69 8.92 -11.68 28.51 -18.19 28.63 c
--5.12 0.13 -8.09 -2.66 -11.32 -5.95 c
--3.22 -3.29 -3.72 -18.74 -8.58 -23.62 c
-f*
-255 209 51 rG
-558.29 623.31 m
--8.73 -8.6 -27.26 -2.14 -31.09 -5.65 c
--4.52 -4.15 6.59 -11.81 5.59 -18.72 c
--0.69 -4.77 -2.2 -7.35 -3.96 -13.75 c
--1.32 -5.02 4.46 -4.33 7.29 -5.34 c
-14.01 -4.84 17.46 -4.96 32.6 -7.79 c
-15.58 -2.89 20.35 -8.98 36.43 -7.54 c
-5.4 0.44 4.33 0.69 9.67 3.71 c
-4.4 2.45 1.95 2.2 0.57 10.61 c
--1.95 11.43 0.25 16.33 -4.02 23.05 c
--8.67 13.63 -9.8 13.13 -15.45 22.11 c
--5.65 8.86 -11.49 28.51 -17.96 28.64 c
--5.09 0.13 -8.04 -2.64 -11.24 -5.9 c
--3.2 -3.27 -3.58 -18.59 -8.42 -23.43 c
-f*
-K
-586 698.26 m
--1.03 -2.3 -1.9 -22.02 3.25 -29.7 c
-5.15 -7.6 3.64 -11.96 -2.06 -6.18 c
--5.94 5.62 -9.82 14.1 -9.9 19.96 c
-0 3.41 2.61 17.42 3.64 18.93 c
-1.11 1.58 5.86 -1.27 5.07 -3.01 c
-f*
-3 G
-585.91 697.88 m
--0.99 -2.57 -1.82 -21.67 3.31 -29.34 c
-5.13 -7.59 3.5 -11.54 -2.02 -5.89 c
--5.75 5.5 -9.47 13.72 -9.61 19.57 c
--0.05 3.43 2.46 16.96 3.45 18.47 c
-1.06 1.53 5.64 -1.09 4.88 -2.81 c
-f*
-7 G
-585.81 697.5 m
--0.96 -2.85 -1.74 -21.32 3.37 -28.97 c
-5.12 -7.58 3.37 -11.12 -1.99 -5.61 c
--5.57 5.37 -9.12 13.34 -9.33 19.18 c
--0.1 3.45 2.3 16.5 3.25 18.01 c
-1.01 1.48 5.42 -0.91 4.7 -2.6 c
-f*
-11 G
-585.71 697.11 m
--0.92 -3.13 -1.66 -20.97 3.44 -28.61 c
-5.1 -7.57 3.23 -10.7 -1.95 -5.32 c
--5.38 5.24 -8.76 12.96 -9.04 18.78 c
--0.14 3.47 2.15 16.03 3.05 17.55 c
-0.95 1.43 5.2 -0.73 4.51 -2.4 c
-f*
-15 G
-585.61 696.73 m
--0.89 -3.41 -1.58 -20.62 3.5 -28.24 c
-5.08 -7.56 3.09 -10.28 -1.92 -5.04 c
--5.2 5.12 -8.41 12.58 -8.76 18.39 c
--0.19 3.48 2 15.57 2.85 17.09 c
-0.9 1.38 4.97 -0.55 4.32 -2.2 c
-f*
-19 G
-585.51 696.34 m
--0.85 -3.68 -1.5 -20.28 3.56 -27.88 c
-5.07 -7.54 2.95 -9.86 -1.88 -4.75 c
--5.01 4.99 -8.06 12.2 -8.47 18 c
--0.24 3.5 1.84 15.11 2.65 16.63 c
-0.85 1.33 4.75 -0.38 4.14 -2 c
-f*
-23 G
-585.41 695.96 m
--0.82 -3.96 -1.43 -19.93 3.63 -27.51 c
-5.05 -7.53 2.81 -9.44 -1.85 -4.47 c
--4.82 4.86 -7.71 11.82 -8.19 17.61 c
--0.29 3.52 1.69 14.64 2.46 16.17 c
-0.8 1.27 4.53 -0.2 3.95 -1.8 c
-f*
-26 G
-585.31 695.58 m
--0.78 -4.24 -1.35 -19.58 3.69 -27.15 c
-5.04 -7.52 2.67 -9.02 -1.81 -4.18 c
--4.64 4.74 -7.35 11.44 -7.9 17.22 c
--0.33 3.54 1.53 14.18 2.26 15.71 c
-0.75 1.22 4.31 -0.02 3.77 -1.59 c
-f*
-30 G
-585.21 695.19 m
--0.74 -4.51 -1.27 -19.23 3.75 -26.79 c
-5.02 -7.51 2.53 -8.6 -1.77 -3.9 c
--4.45 4.61 -7 11.06 -7.62 16.82 c
--0.38 3.56 1.38 13.72 2.06 15.25 c
-0.7 1.17 4.09 0.16 3.58 -1.39 c
-f*
-34 G
-585.11 694.81 m
--0.71 -4.79 -1.19 -18.88 3.82 -26.42 c
-5.01 -7.5 2.4 -8.18 -1.74 -3.61 c
--4.26 4.48 -6.65 10.68 -7.33 16.43 c
--0.43 3.58 1.22 13.25 1.86 14.79 c
-0.65 1.12 3.86 0.34 3.39 -1.19 c
-f*
-38 G
-585.01 694.42 m
--0.67 -5.07 -1.11 -18.53 3.88 -26.06 c
-4.99 -7.48 2.26 -7.76 -1.7 -3.33 c
--4.08 4.36 -6.3 10.3 -7.05 16.04 c
--0.48 3.6 1.07 12.79 1.66 14.34 c
-0.59 1.07 3.64 0.51 3.21 -0.99 c
-f*
-42 G
-584.92 694.04 m
--0.64 -5.35 -1.03 -18.18 3.94 -25.69 c
-4.97 -7.47 2.12 -7.34 -1.67 -3.04 c
--3.89 4.23 -5.94 9.92 -6.76 15.65 c
--0.52 3.62 0.91 12.33 1.47 13.88 c
-0.54 1.02 3.42 0.69 3.02 -0.79 c
-f*
-46 G
-584.82 693.65 m
--0.6 -5.62 -0.95 -17.84 4.01 -25.33 c
-4.96 -7.46 1.98 -6.92 -1.63 -2.76 c
--3.71 4.1 -5.59 9.54 -6.48 15.25 c
--0.57 3.64 0.76 11.86 1.27 13.42 c
-0.49 0.97 3.2 0.87 2.84 -0.59 c
-f*
-49 G
-584.72 693.27 m
--0.57 -5.9 -0.87 -17.49 4.07 -24.96 c
-4.94 -7.45 1.84 -6.5 -1.6 -2.47 c
--3.52 3.98 -5.24 9.16 -6.19 14.86 c
--0.62 3.66 0.61 11.4 1.07 12.96 c
-0.44 0.91 2.98 1.05 2.65 -0.39 c
-f*
-53 G
-584.62 692.89 m
--0.53 -6.18 -0.79 -17.14 4.13 -24.6 c
-4.93 -7.44 1.7 -6.08 -1.56 -2.19 c
--3.33 3.85 -4.89 8.77 -5.91 14.47 c
--0.67 3.68 0.45 10.94 0.87 12.5 c
-0.39 0.86 2.76 1.23 2.46 -0.18 c
-f*
-57 G
-584.52 692.5 m
--0.5 -6.45 -0.71 -16.79 4.2 -24.24 c
-4.91 -7.42 1.56 -5.66 -1.52 -1.9 c
--3.15 3.72 -4.53 8.4 -5.62 14.08 c
--0.71 3.7 0.3 10.47 0.67 12.04 c
-0.34 0.81 2.53 1.41 2.28 0.02 c
-f*
-61 G
-584.42 692.12 m
--0.46 -6.73 -0.63 -16.44 4.26 -23.87 c
-4.89 -7.41 1.43 -5.24 -1.49 -1.62 c
--2.96 3.6 -4.18 8.02 -5.34 13.69 c
--0.76 3.72 0.14 10.01 0.48 11.58 c
-0.29 0.76 2.31 1.58 2.09 0.22 c
-f*
-65 G
-584.32 691.73 m
--0.42 -7.01 -0.55 -16.09 4.32 -23.51 c
-4.88 -7.4 1.29 -4.82 -1.45 -1.33 c
--2.78 3.47 -3.83 7.64 -5.05 13.29 c
--0.81 3.74 -0.01 9.55 0.28 11.12 c
-0.23 0.71 2.09 1.76 1.9 0.42 c
-f*
-69 G
-584.22 691.35 m
--0.39 -7.29 -0.48 -15.74 4.39 -23.14 c
-4.86 -7.39 1.15 -4.4 -1.42 -1.04 c
--2.59 3.34 -3.48 7.25 -4.77 12.9 c
--0.86 3.76 -0.17 9.08 0.08 10.66 c
-0.18 0.66 1.87 1.94 1.72 0.62 c
-f*
-72 G
-584.12 690.97 m
--0.35 -7.56 -0.4 -15.4 4.45 -22.78 c
-4.85 -7.38 1.01 -3.98 -1.38 -0.76 c
--2.4 3.22 -3.12 6.87 -4.48 12.51 c
--0.9 3.78 -0.32 8.62 -0.12 10.2 c
-0.13 0.61 1.65 2.12 1.53 0.83 c
-f*
-76 G
-584.02 690.58 m
--0.32 -7.84 -0.32 -15.05 4.51 -22.41 c
-4.83 -7.37 0.87 -3.56 -1.35 -0.48 c
--2.22 3.09 -2.77 6.49 -4.2 12.12 c
--0.95 3.8 -0.48 8.16 -0.32 9.74 c
-0.08 0.55 1.43 2.3 1.35 1.03 c
-f*
-K
-586 698.26 m
-4.75 10.38 7.37 21.54 14.18 32.39 c
-6.73 10.77 4.04 14.97 -0.95 9.5 c
--4.99 -5.46 -10.45 -17.03 y
--6.42 -10.14 -7.84 -21.86 v
--0.24 -1.98 4.28 -4.67 5.07 -3.01 c
-f*
-2 G
-586.21 698.94 m
-4.71 10.45 7.28 21.17 13.84 31.68 c
-6.49 10.44 3.97 14.61 -0.84 9.32 c
--4.84 -5.33 -10.23 -16.76 -10.3 -16.92 c
--6.2 -9.89 -7.57 -21.16 v
--0.23 -1.95 4.09 -4.56 4.87 -2.92 c
-f*
-5 G
-586.41 699.61 m
-4.66 10.52 7.19 20.8 13.51 30.97 c
-6.25 10.1 3.9 14.24 -0.73 9.13 c
--4.7 -5.2 -10.01 -16.49 -10.16 -16.81 c
--5.99 -9.64 -7.29 -20.47 v
--0.22 -1.92 3.91 -4.45 4.66 -2.83 c
-f*
-7 G
-586.62 700.28 m
-4.62 10.6 7.1 20.43 13.18 30.26 c
-6.01 9.76 3.83 13.88 -0.62 8.95 c
--4.55 -5.06 -9.79 -16.22 -10.01 -16.7 c
--5.77 -9.4 -7.01 -19.77 v
--0.21 -1.88 3.73 -4.33 4.46 -2.74 c
-f*
-10 G
-586.82 700.95 m
-4.57 10.67 7.01 20.06 12.85 29.55 c
-5.77 9.43 3.76 13.52 -0.51 8.76 c
--4.4 -4.93 -9.56 -15.95 -9.86 -16.59 c
--5.56 -9.15 -6.74 -19.07 v
--0.2 -1.85 3.54 -4.22 4.25 -2.65 c
-f*
-12 G
-587.02 701.62 m
-4.53 10.74 6.92 19.69 12.51 28.84 c
-5.53 9.09 3.7 13.16 -0.4 8.58 c
--4.26 -4.8 -9.34 -15.69 -9.71 -16.48 c
--5.34 -8.9 -6.46 -18.38 v
--0.19 -1.82 3.36 -4.1 4.05 -2.56 c
-f*
-15 G
-587.23 702.3 m
-4.49 10.82 6.83 19.32 12.18 28.13 c
-5.29 8.76 3.63 12.8 -0.29 8.39 c
--4.11 -4.66 -9.12 -15.42 -9.56 -16.38 c
--5.13 -8.65 -6.19 -17.68 v
--0.19 -1.79 3.17 -3.99 3.85 -2.47 c
-f*
-17 G
-587.43 702.97 m
-4.44 10.89 6.75 18.94 11.85 27.42 c
-5.05 8.42 3.56 12.43 -0.17 8.21 c
--3.97 -4.53 -8.89 -15.15 -9.41 -16.27 c
--4.92 -8.41 -5.91 -16.98 v
--0.18 -1.75 2.99 -3.88 3.64 -2.38 c
-f*
-20 G
-587.63 703.64 m
-4.4 10.97 6.66 18.57 11.52 26.71 c
-4.81 8.09 3.49 12.07 -0.06 8.02 c
--3.82 -4.4 -8.67 -14.88 -9.26 -16.16 c
--4.7 -8.16 -5.64 -16.29 v
--0.17 -1.72 2.81 -3.76 3.44 -2.29 c
-f*
-23 G
-587.84 704.31 m
-4.35 11.04 6.57 18.2 11.18 26 c
-4.57 7.75 3.42 11.71 0.05 7.83 c
--3.67 -4.26 -8.45 -14.61 -9.11 -16.05 c
--4.49 -7.91 -5.36 -15.59 v
--0.16 -1.69 2.62 -3.65 3.24 -2.19 c
-f*
-25 G
-588.04 704.98 m
-4.31 11.12 6.48 17.83 10.85 25.29 c
-4.33 7.42 3.35 11.35 0.16 7.65 c
--3.53 -4.13 -8.22 -14.34 -8.96 -15.94 c
--4.27 -7.67 -5.09 -14.89 v
--0.15 -1.66 2.44 -3.54 3.03 -2.1 c
-f*
-28 G
-588.24 705.65 m
-4.26 11.19 6.39 17.46 10.52 24.58 c
-4.09 7.08 3.28 10.99 0.27 7.46 c
--3.38 -4 -8 -14.07 -8.81 -15.83 c
--4.06 -7.42 -4.81 -14.2 v
--0.14 -1.62 2.25 -3.42 2.83 -2.01 c
-f*
-30 G
-588.45 706.33 m
-4.22 11.26 6.3 17.09 10.19 23.87 c
-3.85 6.75 3.21 10.62 0.38 7.28 c
--3.23 -3.86 -7.78 -13.8 -8.66 -15.72 c
--3.85 -7.17 -4.54 -13.5 v
--0.13 -1.59 2.07 -3.31 2.63 -1.92 c
-f*
-33 G
-588.65 707 m
-4.17 11.34 6.21 16.72 9.85 23.16 c
-3.61 6.41 3.15 10.26 0.49 7.09 c
--3.09 -3.73 -7.56 -13.54 -8.51 -15.61 c
--3.63 -6.93 -4.26 -12.8 v
--0.13 -1.56 1.89 -3.19 2.42 -1.83 c
-f*
-35 G
-588.86 707.67 m
-4.13 11.41 6.13 16.35 9.52 22.45 c
-3.37 6.08 3.08 9.9 0.6 6.91 c
--2.94 -3.6 -7.33 -13.27 -8.36 -15.51 c
--3.42 -6.68 -3.98 -12.11 v
--0.12 -1.53 1.7 -3.08 2.22 -1.74 c
-f*
-38 G
-589.06 708.34 m
-4.09 11.49 6.04 15.98 9.19 21.74 c
-3.13 5.74 3.01 9.54 0.71 6.72 c
--2.8 -3.46 -7.11 -13 -8.21 -15.4 c
--3.2 -6.43 -3.71 -11.41 v
--0.11 -1.49 1.52 -2.97 2.02 -1.65 c
-f*
-40 G
-589.26 709.01 m
-4.04 11.56 5.95 15.6 8.86 21.03 c
-2.89 5.41 2.94 9.18 0.82 6.54 c
--2.65 -3.33 -6.89 -12.73 -8.06 -15.29 c
--2.99 -6.18 -3.43 -10.71 v
--0.1 -1.46 1.34 -2.85 1.81 -1.56 c
-f*
-43 G
-589.47 709.69 m
-4 11.63 5.86 15.23 8.52 20.31 c
-2.65 5.07 2.87 8.81 0.93 6.35 c
--2.5 -3.2 -6.66 -12.46 -7.91 -15.18 c
--2.77 -5.94 -3.16 -10.02 v
--0.09 -1.43 1.15 -2.74 1.61 -1.47 c
-f*
-46 G
-589.67 710.36 m
-3.95 11.71 5.77 14.86 8.19 19.61 c
-2.41 4.73 2.8 8.45 1.04 6.17 c
--2.36 -3.06 -6.44 -12.19 -7.76 -15.07 c
--2.56 -5.69 -2.88 -9.32 v
--0.08 -1.4 0.97 -2.63 1.41 -1.38 c
-f*
-48 G
-589.87 711.03 m
-3.91 11.78 5.68 14.49 7.86 18.89 c
-2.17 4.4 2.73 8.09 1.15 5.98 c
--2.21 -2.93 -6.22 -11.93 -7.61 -14.96 c
--2.35 -5.44 -2.61 -8.62 v
--0.07 -1.36 0.78 -2.51 1.2 -1.29 c
-f*
-51 G
-590.08 711.7 m
-3.86 11.86 5.6 14.12 7.53 18.18 c
-1.93 4.06 2.66 7.73 1.27 5.79 c
--2.06 -2.8 -5.99 -11.66 -7.46 -14.85 c
--2.13 -5.2 -2.33 -7.93 v
--0.07 -1.33 0.6 -2.4 1 -1.2 c
-f*
-K
-788.68 690.66 m
-2.3 6.49 2.06 23.05 -3.8 33.74 c
--2.06 3.88 -4.04 8.4 -5.23 8.63 c
--1.27 0.24 -3.56 -2.3 -3.33 -2.69 c
-0.32 -0.63 11.01 -15.68 8.79 -36.12 c
--0.16 -1.66 3.01 -5.07 3.56 -3.56 c
-f*
-3 G
-788.57 691.5 m
-2.23 6.29 1.93 22.42 -3.68 32.63 c
--2 3.75 -3.89 8.11 -5.05 8.35 c
--1.23 0.23 -3.44 -2.22 -3.22 -2.6 c
-0.28 -0.62 10.57 -15.15 8.5 -34.93 c
--0.14 -1.64 2.91 -4.9 3.45 -3.45 c
-f*
-7 G
-788.47 692.34 m
-2.16 6.09 1.8 21.79 -3.55 31.52 c
--1.94 3.61 -3.74 7.83 -4.88 8.06 c
--1.2 0.23 -3.31 -2.15 -3.11 -2.52 c
-0.25 -0.6 10.12 -14.63 8.21 -33.74 c
--0.13 -1.61 2.81 -4.74 3.33 -3.33 c
-f*
-11 G
-788.37 693.18 m
-2.09 5.88 1.67 21.16 -3.43 30.41 c
--1.88 3.48 -3.59 7.54 -4.71 7.78 c
--1.17 0.23 -3.18 -2.08 -3 -2.43 c
-0.22 -0.59 9.68 -14.1 7.92 -32.55 c
--0.11 -1.58 2.71 -4.57 3.21 -3.21 c
-f*
-15 G
-788.26 694.02 m
-2.03 5.68 1.54 20.53 -3.3 29.3 c
--1.81 3.35 -3.44 7.26 -4.54 7.5 c
--1.13 0.23 -3.06 -2.01 -2.89 -2.34 c
-0.18 -0.57 9.24 -13.57 7.63 -31.36 c
--0.1 -1.56 2.61 -4.4 3.1 -3.1 c
-f*
-19 G
-788.16 694.86 m
-1.96 5.47 1.41 19.9 -3.18 28.19 c
--1.75 3.22 -3.29 6.97 -4.37 7.21 c
--1.1 0.23 -2.93 -1.93 -2.78 -2.25 c
-0.15 -0.56 8.79 -13.05 7.34 -30.17 c
--0.08 -1.53 2.51 -4.23 2.98 -2.98 c
-f*
-23 G
-788.05 695.7 m
-1.89 5.27 1.28 19.27 -3.05 27.08 c
--1.69 3.08 -3.14 6.69 -4.2 6.93 c
--1.07 0.22 -2.8 -1.86 -2.67 -2.16 c
-0.12 -0.54 8.35 -12.52 7.06 -28.99 c
--0.07 -1.51 2.41 -4.07 2.86 -2.86 c
-f*
-26 G
-787.95 696.53 m
-1.82 5.07 1.15 18.64 -2.93 25.97 c
--1.63 2.95 -2.99 6.41 -4.02 6.65 c
--1.03 0.22 -2.68 -1.79 -2.56 -2.07 c
-0.08 -0.53 7.9 -11.99 6.77 -27.8 c
--0.06 -1.48 2.32 -3.9 2.74 -2.74 c
-f*
-30 G
-787.85 697.37 m
-1.76 4.86 1.02 18.01 -2.8 24.86 c
--1.57 2.82 -2.85 6.12 -3.85 6.36 c
--1 0.22 -2.55 -1.71 -2.45 -1.98 c
-0.05 -0.51 7.46 -11.47 6.48 -26.61 c
--0.04 -1.45 2.22 -3.73 2.63 -2.63 c
-f*
-34 G
-787.74 698.21 m
-1.69 4.66 0.89 17.38 -2.68 23.75 c
--1.51 2.68 -2.7 5.84 -3.68 6.08 c
--0.97 0.22 -2.42 -1.64 -2.34 -1.9 c
-0.02 -0.5 7.02 -10.94 6.19 -25.42 c
--0.03 -1.43 2.12 -3.57 2.51 -2.51 c
-f*
-38 G
-787.64 699.05 m
-1.62 4.45 0.76 16.75 -2.55 22.64 c
--1.45 2.55 -2.55 5.55 -3.51 5.79 c
--0.93 0.21 -2.3 -1.57 -2.23 -1.81 c
--0.02 -0.48 6.57 -10.41 5.9 -24.23 c
--0.01 -1.4 2.02 -3.4 2.39 -2.39 c
-f*
-42 G
-787.53 699.89 m
-1.56 4.25 0.63 16.12 -2.43 21.53 c
--1.39 2.42 -2.4 5.27 -3.34 5.51 c
--0.9 0.21 -2.17 -1.49 -2.12 -1.72 c
--0.05 -0.46 6.13 -9.89 5.61 -23.04 c
-0 -1.37 1.92 -3.23 2.27 -2.27 c
-f*
-46 G
-787.43 700.73 m
-1.49 4.04 0.5 15.49 -2.3 20.42 c
--1.33 2.28 -2.25 4.98 -3.16 5.23 c
--0.86 0.21 -2.04 -1.42 -2.01 -1.63 c
--0.08 -0.45 5.69 -9.36 5.32 -21.86 c
-0.02 -1.35 1.82 -3.07 2.16 -2.16 c
-f*
-49 G
-787.33 701.57 m
-1.42 3.84 0.37 14.86 -2.18 19.31 c
--1.27 2.15 -2.1 4.7 -2.99 4.94 c
--0.83 0.21 -1.92 -1.35 -1.9 -1.54 c
--0.12 -0.43 5.24 -8.83 5.03 -20.67 c
-0.03 -1.32 1.72 -2.9 2.04 -2.04 c
-f*
-53 G
-787.22 702.41 m
-1.35 3.64 0.24 14.23 -2.05 18.2 c
--1.21 2.02 -1.95 4.41 -2.82 4.66 c
--0.8 0.2 -1.79 -1.28 -1.79 -1.45 c
--0.15 -0.42 4.8 -8.31 4.74 -19.48 c
-0.05 -1.3 1.62 -2.73 1.92 -1.92 c
-f*
-57 G
-787.12 703.25 m
-1.28 3.43 0.11 13.6 -1.93 17.09 c
--1.14 1.88 -1.8 4.13 -2.65 4.37 c
--0.76 0.2 -1.66 -1.2 -1.68 -1.36 c
--0.18 -0.4 4.36 -7.78 4.45 -18.29 c
-0.06 -1.27 1.52 -2.57 1.81 -1.81 c
-f*
-61 G
-787.01 704.09 m
-1.22 3.23 -0.02 12.97 -1.8 15.98 c
--1.08 1.75 -1.65 3.85 -2.47 4.09 c
--0.73 0.2 -1.54 -1.13 -1.58 -1.27 c
--0.22 -0.39 3.91 -7.25 4.16 -17.11 c
-0.08 -1.24 1.42 -2.4 1.69 -1.69 c
-f*
-65 G
-786.91 704.93 m
-1.15 3.02 -0.15 12.35 -1.68 14.87 c
--1.02 1.62 -1.5 3.56 -2.3 3.8 c
--0.7 0.2 -1.41 -1.06 -1.47 -1.19 c
--0.25 -0.37 3.47 -6.73 3.87 -15.92 c
-0.09 -1.22 1.33 -2.23 1.57 -1.57 c
-f*
-69 G
-786.81 705.76 m
-1.08 2.82 -0.28 11.72 -1.55 13.76 c
--0.96 1.48 -1.36 3.28 -2.13 3.52 c
--0.66 0.19 -1.28 -0.99 -1.36 -1.1 c
--0.28 -0.36 3.03 -6.2 3.58 -14.73 c
-0.11 -1.19 1.23 -2.07 1.45 -1.45 c
-f*
-72 G
-786.7 706.6 m
-1.02 2.62 -0.41 11.09 -1.42 12.65 c
--0.9 1.35 -1.21 2.99 -1.96 3.24 c
--0.63 0.19 -1.16 -0.91 -1.25 -1.01 c
--0.32 -0.34 2.58 -5.67 3.3 -13.54 c
-0.12 -1.16 1.13 -1.9 1.34 -1.34 c
-f*
-76 G
-786.6 707.44 m
-0.95 2.41 -0.54 10.46 -1.3 11.54 c
--0.84 1.22 -1.06 2.71 -1.79 2.95 c
--0.6 0.19 -1.03 -0.84 -1.14 -0.92 c
--0.35 -0.33 2.14 -5.15 3.01 -12.35 c
-0.14 -1.14 1.03 -1.73 1.22 -1.22 c
-f*
-K
-779.65 733.03 m
--11.25 15.36 -25.82 20.35 -24.31 15.52 c
-11.17 -6.34 20.99 -18.22 v
-1.9 -2.3 5.07 0.32 3.33 2.69 c
-f*
-3 G
-779.15 733.46 m
--10.92 14.84 -25.18 19.7 -23.69 15.07 c
-0.02 -0.01 10.89 -6.17 20.47 -17.68 c
-1.85 -2.22 4.91 0.31 3.22 2.61 c
-f*
-7 G
-778.66 733.88 m
--10.59 14.33 -24.55 19.05 -23.07 14.62 c
-0.04 -0.02 10.62 -6.01 19.95 -17.14 c
-1.79 -2.14 4.76 0.31 3.12 2.52 c
-f*
-11 G
-778.16 734.31 m
--10.26 13.8 -23.91 18.4 -22.45 14.16 c
-0.06 -0.04 10.34 -5.85 19.43 -16.6 c
-1.74 -2.06 4.6 0.31 3.02 2.44 c
-f*
-15 G
-777.67 734.73 m
--9.93 13.28 -23.28 17.75 -21.83 13.71 c
-0.08 -0.05 10.07 -5.69 18.92 -16.06 c
-1.68 -1.98 4.45 0.3 2.91 2.36 c
-f*
-19 G
-777.17 735.16 m
--9.6 12.76 -22.64 17.1 -21.21 13.25 c
-0.1 -0.06 9.79 -5.53 18.4 -15.53 c
-1.63 -1.9 4.29 0.3 2.81 2.27 c
-f*
-23 G
-776.68 735.58 m
--9.27 12.24 -22.01 16.44 -20.59 12.8 c
-0.12 -0.07 9.52 -5.37 17.88 -14.99 c
-1.57 -1.82 4.14 0.3 2.71 2.19 c
-f*
-26 G
-776.18 736.01 m
--8.94 11.72 -21.37 15.79 -19.97 12.35 c
-0.14 -0.08 9.24 -5.21 17.36 -14.45 c
-1.52 -1.74 3.98 0.3 2.6 2.1 c
-f*
-30 G
-775.69 736.44 m
--8.61 11.2 -20.74 15.14 -19.35 11.89 c
-0.16 -0.1 8.97 -5.04 16.85 -13.91 c
-1.46 -1.66 3.82 0.29 2.5 2.02 c
-f*
-34 G
-775.19 736.86 m
--8.28 10.68 -20.1 14.49 -18.72 11.44 c
-0.17 -0.11 8.69 -4.88 16.33 -13.37 c
-1.41 -1.58 3.67 0.29 2.4 1.94 c
-f*
-38 G
-774.7 737.29 m
--7.95 10.16 -19.46 13.84 -18.1 10.98 c
-0.19 -0.12 8.42 -4.72 15.81 -12.83 c
-1.35 -1.5 3.51 0.29 2.29 1.85 c
-f*
-42 G
-774.2 737.71 m
--7.62 9.64 -18.83 13.18 -17.48 10.53 c
-0.21 -0.14 8.14 -4.56 15.29 -12.3 c
-1.3 -1.42 3.36 0.29 2.19 1.77 c
-f*
-46 G
-773.71 738.14 m
--7.29 9.12 -18.19 12.53 -16.86 10.08 c
-0.23 -0.15 7.87 -4.4 14.78 -11.76 c
-1.24 -1.34 3.2 0.28 2.08 1.68 c
-f*
-49 G
-773.21 738.56 m
--6.96 8.6 -17.56 11.88 -16.24 9.62 c
-0.25 -0.16 7.59 -4.24 14.26 -11.22 c
-1.19 -1.26 3.04 0.28 1.98 1.6 c
-f*
-53 G
-772.72 738.99 m
--6.63 8.08 -16.92 11.23 -15.62 9.17 c
-0.27 -0.17 7.31 -4.08 13.74 -10.68 c
-1.13 -1.18 2.89 0.28 1.88 1.51 c
-f*
-57 G
-772.22 739.41 m
--6.3 7.56 -16.29 10.58 -15 8.72 c
-0.29 -0.18 7.04 -3.92 13.22 -10.15 c
-1.08 -1.1 2.73 0.27 1.78 1.43 c
-f*
-61 G
-771.73 739.84 m
--5.97 7.04 -15.65 9.93 -14.38 8.26 c
-0.31 -0.2 6.76 -3.76 12.71 -9.61 c
-1.02 -1.02 2.58 0.27 1.67 1.35 c
-f*
-65 G
-771.23 740.26 m
--5.64 6.52 -15.02 9.27 -13.76 7.81 c
-0.33 -0.21 6.49 -3.59 12.19 -9.07 c
-0.97 -0.94 2.42 0.27 1.57 1.26 c
-f*
-69 G
-770.74 740.69 m
--5.31 6 -14.38 8.62 -13.13 7.35 c
-0.35 -0.22 6.21 -3.43 11.67 -8.53 c
-0.91 -0.86 2.27 0.27 1.46 1.18 c
-f*
-72 G
-770.24 741.11 m
--4.98 5.48 -13.75 7.97 -12.51 6.9 c
-0.37 -0.23 5.94 -3.27 11.15 -7.99 c
-0.86 -0.78 2.11 0.26 1.36 1.09 c
-f*
-76 G
-769.75 741.54 m
--4.65 4.96 -13.11 7.32 -11.89 6.44 c
-0.39 -0.24 5.66 -3.11 10.63 -7.45 c
-0.8 -0.7 1.96 0.26 1.26 1.01 c
-f*
-K
-788.68 690.66 m
-0.16 -6.89 -6.34 -24.47 -8.79 -23.84 c
--2.77 0.63 0.55 5.78 3.09 14.49 c
-1.03 3.64 1.82 12.59 2.14 12.91 c
-1.03 1.03 3.56 -1.9 3.56 -3.56 c
-f*
-5 G
-788.47 690.09 m
-0.11 -6.69 -6.2 -23.75 -8.58 -23.12 c
--2.66 0.62 0.6 5.66 3.1 14.22 c
-0.99 3.49 1.75 12.04 2.08 12.37 c
-1 1.02 3.46 -1.68 3.4 -3.47 c
-f*
-10 G
-788.27 689.51 m
-0.07 -6.49 -6.07 -23.03 -8.36 -22.4 c
--2.56 0.61 0.65 5.54 3.1 13.95 c
-0.95 3.35 1.69 11.49 2.01 11.84 c
-0.98 1.01 3.36 -1.46 3.24 -3.38 c
-f*
-15 G
-788.07 688.94 m
-0.02 -6.29 -5.93 -22.31 -8.15 -21.68 c
--2.45 0.6 0.7 5.42 3.11 13.68 c
-0.91 3.2 1.62 10.94 1.95 11.3 c
-0.95 1 3.25 -1.24 3.09 -3.3 c
-f*
-20 G
-787.87 688.37 m
--0.02 -6.1 -5.79 -21.59 -7.93 -20.96 c
--2.34 0.6 0.75 5.3 3.12 13.4 c
-0.86 3.05 1.55 10.39 1.89 10.77 c
-0.93 0.99 3.15 -1.02 2.92 -3.21 c
-f*
-25 G
-787.67 687.79 m
--0.07 -5.9 -5.66 -20.87 -7.72 -20.24 c
--2.23 0.59 0.79 5.18 3.12 13.13 c
-0.82 2.9 1.49 9.84 1.83 10.23 c
-0.9 0.98 3.05 -0.8 2.77 -3.12 c
-f*
-30 G
-787.46 687.22 m
--0.11 -5.7 -5.53 -20.15 -7.5 -19.52 c
--2.12 0.58 0.84 5.06 3.13 12.86 c
-0.78 2.75 1.42 9.29 1.76 9.69 c
-0.87 0.97 2.94 -0.57 2.61 -3.03 c
-f*
-35 G
-787.26 686.64 m
--0.16 -5.5 -5.39 -19.43 -7.29 -18.81 c
--2.01 0.57 0.89 4.93 3.14 12.59 c
-0.74 2.6 1.35 8.74 1.7 9.16 c
-0.85 0.96 2.84 -0.35 2.45 -2.94 c
-f*
-40 G
-787.06 686.07 m
--0.2 -5.3 -5.25 -18.71 -7.07 -18.09 c
--1.9 0.56 0.94 4.81 3.15 12.32 c
-0.7 2.46 1.28 8.19 1.64 8.62 c
-0.82 0.95 2.74 -0.13 2.29 -2.85 c
-f*
-46 G
-786.86 685.5 m
--0.25 -5.1 -5.12 -17.99 -6.86 -17.37 c
--1.8 0.55 0.99 4.69 3.15 12.04 c
-0.66 2.31 1.22 7.64 1.57 8.08 c
-0.8 0.94 2.63 0.09 2.13 -2.76 c
-f*
-51 G
-786.65 684.92 m
--0.29 -4.9 -4.98 -17.28 -6.64 -16.65 c
--1.69 0.54 1.04 4.57 3.16 11.77 c
-0.62 2.16 1.15 7.09 1.51 7.55 c
-0.77 0.93 2.53 0.31 1.97 -2.67 c
-f*
-56 G
-786.45 684.35 m
--0.34 -4.7 -4.85 -16.55 -6.43 -15.93 c
--1.58 0.53 1.08 4.45 3.17 11.5 c
-0.58 2.01 1.08 6.54 1.45 7.01 c
-0.74 0.92 2.43 0.53 1.81 -2.58 c
-f*
-61 G
-786.25 683.78 m
--0.39 -4.5 -4.71 -15.84 -6.21 -15.21 c
--1.47 0.52 1.13 4.33 3.17 11.23 c
-0.53 1.86 1.02 5.99 1.39 6.48 c
-0.72 0.91 2.32 0.75 1.65 -2.49 c
-f*
-66 G
-786.05 683.2 m
--0.43 -4.3 -4.58 -15.11 -5.99 -14.49 c
--1.36 0.51 1.18 4.21 3.18 10.95 c
-0.49 1.71 0.95 5.43 1.32 5.94 c
-0.69 0.91 2.22 0.97 1.49 -2.4 c
-f*
-71 G
-785.84 682.63 m
--0.48 -4.11 -4.44 -14.4 -5.78 -13.77 c
--1.25 0.5 1.23 4.09 3.19 10.68 c
-0.45 1.56 0.88 4.88 1.26 5.4 c
-0.67 0.9 2.12 1.19 1.33 -2.31 c
-f*
-76 G
-785.64 682.05 m
--0.52 -3.91 -4.31 -13.68 -5.56 -13.05 c
--1.15 0.49 1.27 3.97 3.2 10.41 c
-0.41 1.42 0.82 4.33 1.2 4.87 c
-0.64 0.89 2.01 1.42 1.17 -2.22 c
-f*
-81 G
-785.44 681.48 m
--0.57 -3.71 -4.17 -12.96 -5.35 -12.33 c
--1.04 0.48 1.32 3.85 3.2 10.14 c
-0.37 1.27 0.75 3.78 1.14 4.33 c
-0.61 0.88 1.91 1.64 1.01 -2.13 c
-f*
-87 G
-785.24 680.91 m
--0.61 -3.51 -4.04 -12.24 -5.13 -11.62 c
--0.93 0.47 1.37 3.72 3.21 9.86 c
-0.33 1.12 0.68 3.23 1.07 3.8 c
-0.59 0.87 1.81 1.86 0.85 -2.04 c
-f*
-92 G
-785.03 680.33 m
--0.66 -3.31 -3.9 -11.52 -4.92 -10.9 c
--0.82 0.46 1.42 3.6 3.22 9.59 c
-0.29 0.97 0.61 2.68 1.01 3.26 c
-0.56 0.86 1.7 2.08 0.69 -1.96 c
-f*
-97 G
-784.83 679.76 m
--0.7 -3.11 -3.77 -10.8 -4.7 -10.18 c
--0.71 0.45 1.47 3.48 3.23 9.32 c
-0.25 0.82 0.55 2.13 0.95 2.72 c
-0.54 0.85 1.6 2.3 0.53 -1.87 c
-f*
-102 G
-784.63 679.19 m
--0.75 -2.91 -3.63 -10.08 -4.49 -9.46 c
--0.6 0.44 1.51 3.36 3.23 9.05 c
-0.2 0.67 0.48 1.58 0.89 2.19 c
-0.51 0.84 1.5 2.52 0.37 -1.78 c
-f*
-K
-764.52 732.16 m
--1.69 -1.78 -3.19 -10.99 1.03 -14.18 c
-4.23 -3.1 11.65 2.63 11.65 5.92 c
--0.09 7.42 -10.99 10.14 -12.68 8.27 c
-f*
-2 G
-764.67 732.01 m
--1.72 -1.77 -3.16 -10.81 0.94 -13.93 c
-4.11 -3.04 11.38 2.5 11.42 5.81 c
--0.05 7.23 -10.65 9.99 -12.36 8.13 c
-f*
-3 G
-764.82 731.85 m
--1.74 -1.76 -3.14 -10.62 0.85 -13.68 c
-3.98 -2.98 11.12 2.37 11.2 5.7 c
--0.01 7.04 -10.31 9.84 -12.05 7.99 c
-f*
-5 G
-764.97 731.7 m
--1.76 -1.75 -3.1 -10.43 0.76 -13.43 c
-3.86 -2.92 10.86 2.24 10.97 5.58 c
-0.03 6.86 -9.97 9.68 -11.73 7.85 c
-f*
-7 G
-765.12 731.54 m
--1.79 -1.74 -3.07 -10.25 0.67 -13.18 c
-3.74 -2.86 10.59 2.11 10.74 5.47 c
-0.08 6.67 -9.63 9.53 -11.42 7.71 c
-f*
-9 G
-765.27 731.39 m
--1.81 -1.72 -3.04 -10.06 0.58 -12.93 c
-3.62 -2.8 10.33 1.98 10.52 5.36 c
-0.12 6.48 -9.29 9.38 -11.1 7.57 c
-f*
-11 G
-765.42 731.24 m
--1.84 -1.71 -3.02 -9.88 0.49 -12.68 c
-3.49 -2.74 10.06 1.85 10.29 5.25 c
-0.16 6.29 -8.94 9.22 -10.78 7.43 c
-f*
-13 G
-765.57 731.08 m
--1.86 -1.7 -2.99 -9.69 0.4 -12.43 c
-3.37 -2.68 9.8 1.72 10.07 5.14 c
-0.21 6.1 -8.6 9.07 -10.47 7.29 c
-f*
-15 G
-765.72 730.93 m
--1.89 -1.69 -2.96 -9.5 0.31 -12.18 c
-3.25 -2.62 9.54 1.59 9.84 5.03 c
-0.25 5.92 -8.26 8.92 -10.15 7.15 c
-f*
-17 G
-765.88 730.77 m
--1.91 -1.68 -2.93 -9.32 0.22 -11.93 c
-3.13 -2.56 9.27 1.46 9.62 4.92 c
-0.29 5.73 -7.92 8.76 -9.84 7.01 c
-f*
-19 G
-766.03 730.62 m
--1.94 -1.67 -2.9 -9.13 0.13 -11.68 c
-3 -2.5 9.01 1.33 9.39 4.81 c
-0.34 5.54 -7.58 8.61 -9.52 6.88 c
-f*
-21 G
-766.18 730.46 m
--1.96 -1.65 -2.87 -8.95 0.04 -11.43 c
-2.88 -2.44 8.74 1.2 9.17 4.69 c
-0.38 5.35 -7.24 8.46 -9.2 6.74 c
-f*
-23 G
-766.33 730.31 m
--1.99 -1.64 -2.84 -8.76 -0.05 -11.18 c
-2.76 -2.38 8.48 1.07 8.94 4.58 c
-0.42 5.16 -6.9 8.3 -8.89 6.6 c
-f*
-25 G
-766.48 730.15 m
--2.01 -1.63 -2.81 -8.58 -0.14 -10.93 c
-2.64 -2.32 8.22 0.94 8.71 4.47 c
-0.46 4.98 -6.56 8.15 -8.57 6.46 c
-f*
-26 G
-766.63 730 m
--2.04 -1.62 -2.78 -8.39 -0.23 -10.68 c
-2.51 -2.26 7.95 0.81 8.49 4.36 c
-0.51 4.79 -6.22 8 -8.26 6.32 c
-f*
-28 G
-766.78 729.84 m
--2.06 -1.6 -2.75 -8.2 -0.32 -10.43 c
-2.39 -2.2 7.69 0.68 8.26 4.25 c
-0.55 4.6 -5.88 7.84 -7.94 6.18 c
-f*
-30 G
-766.93 729.69 m
--2.08 -1.59 -2.72 -8.02 -0.41 -10.18 c
-2.27 -2.14 7.43 0.55 8.04 4.14 c
-0.59 4.41 -5.54 7.69 -7.63 6.04 c
-f*
-32 G
-767.08 729.54 m
--2.11 -1.58 -2.69 -7.83 -0.5 -9.93 c
-2.15 -2.08 7.16 0.42 7.81 4.03 c
-0.64 4.22 -5.19 7.54 -7.31 5.9 c
-f*
-34 G
-767.23 729.38 m
--2.13 -1.57 -2.66 -7.65 -0.59 -9.68 c
-2.03 -2.02 6.9 0.29 7.59 3.92 c
-0.68 4.03 -4.85 7.38 -6.99 5.76 c
-f*
-36 G
-767.38 729.23 m
--2.16 -1.56 -2.63 -7.46 -0.68 -9.43 c
-1.9 -1.96 6.63 0.17 7.36 3.8 c
-0.72 3.85 -4.51 7.23 -6.68 5.62 c
-f*
-38 G
-767.53 729.07 m
--2.18 -1.55 -2.6 -7.28 -0.77 -9.18 c
-1.78 -1.9 6.37 0.04 7.13 3.69 c
-0.77 3.66 -4.17 7.08 -6.36 5.48 c
-f*
-K
-764.13 656.45 m
-1.66 -1.66 3.09 2.46 4.75 3.8 c
-1.66 1.35 4.36 4.28 9.74 4.28 c
-5.39 0 4.99 0.16 4.75 2.22 c
--0.16 1.98 -1.74 1.82 -6.49 1.11 c
--4.75 -0.63 -7.92 -3.09 -9.82 -5.31 c
--1.82 -2.14 -3.88 -5.15 -2.93 -6.1 c
-f*
-5 G
-764.49 656.85 m
-1.6 -1.59 2.97 2.33 4.63 3.64 c
-1.65 1.31 4.32 4.11 9.5 4.11 c
-5.18 0 4.86 0.14 4.63 2.13 c
--0.15 1.92 -1.7 1.75 -6.32 1.08 c
--4.63 -0.6 -7.73 -2.97 -9.58 -5.11 c
--1.78 -2.07 -3.78 -4.92 -2.85 -5.84 c
-f*
-10 G
-764.86 657.25 m
-1.55 -1.53 2.86 2.21 4.5 3.47 c
-1.64 1.26 4.29 3.93 9.27 3.94 c
-4.97 0 4.72 0.12 4.51 2.05 c
--0.15 1.86 -1.65 1.68 -6.15 1.05 c
--4.5 -0.56 -7.54 -2.86 -9.35 -4.92 c
--1.73 -1.99 -3.68 -4.7 -2.77 -5.58 c
-f*
-15 G
-765.22 657.66 m
-1.49 -1.46 2.74 2.09 4.37 3.31 c
-1.63 1.22 4.26 3.76 9.03 3.77 c
-4.77 0 4.59 0.1 4.38 1.96 c
--0.14 1.79 -1.61 1.61 -5.98 1.02 c
--4.38 -0.53 -7.35 -2.74 -9.11 -4.73 c
--1.69 -1.92 -3.58 -4.47 -2.69 -5.33 c
-f*
-20 G
-765.59 658.06 m
-1.43 -1.39 2.63 1.96 4.25 3.14 c
-1.62 1.18 4.23 3.59 8.79 3.59 c
-4.56 0 4.45 0.08 4.26 1.88 c
--0.13 1.73 -1.56 1.54 -5.81 0.98 c
--4.25 -0.49 -7.17 -2.62 -8.87 -4.53 c
--1.64 -1.85 -3.48 -4.25 -2.61 -5.07 c
-f*
-25 G
-765.96 658.47 m
-1.37 -1.32 2.51 1.84 4.12 2.98 c
-1.6 1.14 4.19 3.42 8.55 3.42 c
-4.36 0 4.32 0.07 4.14 1.8 c
--0.12 1.67 -1.51 1.47 -5.64 0.95 c
--4.13 -0.45 -6.98 -2.51 -8.63 -4.34 c
--1.59 -1.77 -3.38 -4.02 -2.53 -4.81 c
-f*
-30 G
-766.32 658.87 m
-1.32 -1.25 2.4 1.71 3.99 2.81 c
-1.59 1.1 4.16 3.25 8.31 3.25 c
-4.15 0 4.19 0.05 4.01 1.71 c
--0.12 1.61 -1.47 1.4 -5.47 0.92 c
--4 -0.42 -6.79 -2.39 -8.39 -4.15 c
--1.55 -1.7 -3.28 -3.8 -2.45 -4.55 c
-f*
-35 G
-766.69 659.28 m
-1.26 -1.19 2.28 1.59 3.86 2.65 c
-1.58 1.06 4.13 3.08 8.08 3.08 c
-3.95 0 4.05 0.03 3.89 1.63 c
--0.11 1.55 -1.42 1.34 -5.3 0.89 c
--3.88 -0.38 -6.6 -2.27 -8.16 -3.95 c
--1.5 -1.63 -3.18 -3.57 -2.37 -4.3 c
-f*
-40 G
-767.05 659.68 m
-1.2 -1.12 2.17 1.47 3.74 2.48 c
-1.57 1.02 4.1 2.91 7.84 2.91 c
-3.74 0 3.92 0.01 3.77 1.54 c
--0.1 1.48 -1.38 1.27 -5.13 0.86 c
--3.75 -0.35 -6.41 -2.16 -7.92 -3.76 c
--1.46 -1.55 -3.08 -3.35 -2.3 -4.04 c
-f*
-46 G
-767.42 660.09 m
-1.14 -1.05 2.05 1.34 3.61 2.32 c
-1.56 0.98 4.06 2.73 7.6 2.74 c
-3.54 0.01 3.79 -0.01 3.65 1.46 c
--0.1 1.42 -1.33 1.2 -4.96 0.83 c
--3.63 -0.31 -6.22 -2.04 -7.68 -3.57 c
--1.41 -1.48 -2.98 -3.12 -2.22 -3.78 c
-f*
-51 G
-767.79 660.49 m
-1.08 -0.98 1.94 1.22 3.48 2.16 c
-1.55 0.93 4.03 2.56 7.36 2.57 c
-3.33 0.01 3.65 -0.03 3.52 1.38 c
--0.09 1.36 -1.29 1.13 -4.79 0.8 c
--3.5 -0.28 -6.03 -1.93 -7.44 -3.37 c
--1.37 -1.41 -2.88 -2.9 -2.14 -3.52 c
-f*
-56 G
-768.15 660.9 m
-1.03 -0.91 1.82 1.1 3.36 1.99 c
-1.53 0.89 4 2.39 7.12 2.4 c
-3.13 0.01 3.52 -0.04 3.4 1.29 c
--0.08 1.3 -1.24 1.06 -4.62 0.77 c
--3.38 -0.24 -5.85 -1.81 -7.2 -3.18 c
--1.32 -1.34 -2.78 -2.67 -2.06 -3.27 c
-f*
-61 G
-768.52 661.3 m
-0.97 -0.85 1.71 0.97 3.23 1.83 c
-1.52 0.85 3.96 2.22 6.89 2.23 c
-2.92 0.01 3.38 -0.06 3.28 1.21 c
--0.08 1.24 -1.2 0.99 -4.45 0.74 c
--3.25 -0.2 -5.66 -1.69 -6.97 -2.99 c
--1.28 -1.26 -2.68 -2.44 -1.98 -3.01 c
-f*
-66 G
-768.88 661.71 m
-0.91 -0.78 1.59 0.85 3.1 1.66 c
-1.51 0.81 3.93 2.05 6.65 2.06 c
-2.72 0.01 3.25 -0.08 3.15 1.12 c
--0.07 1.17 -1.15 0.92 -4.28 0.71 c
--3.12 -0.17 -5.47 -1.58 -6.73 -2.79 c
--1.23 -1.19 -2.58 -2.22 -1.9 -2.75 c
-f*
-71 G
-769.25 662.11 m
-0.85 -0.71 1.48 0.73 2.98 1.5 c
-1.5 0.77 3.9 1.88 6.41 1.89 c
-2.51 0.01 3.12 -0.1 3.03 1.04 c
--0.06 1.11 -1.11 0.85 -4.11 0.67 c
--3 -0.13 -5.28 -1.46 -6.49 -2.6 c
--1.19 -1.12 -2.48 -1.99 -1.82 -2.49 c
-f*
-76 G
-769.62 662.51 m
-0.79 -0.64 1.36 0.6 2.85 1.33 c
-1.49 0.73 3.87 1.71 6.17 1.71 c
-2.31 0.01 2.98 -0.12 2.91 0.95 c
--0.06 1.05 -1.06 0.78 -3.94 0.64 c
--2.87 -0.1 -5.09 -1.34 -6.25 -2.41 c
--1.14 -1.04 -2.38 -1.77 -1.74 -2.24 c
-f*
-81 G
-769.98 662.92 m
-0.73 -0.57 1.25 0.48 2.72 1.17 c
-1.48 0.69 3.83 1.54 5.93 1.54 c
-2.1 0.01 2.85 -0.14 2.78 0.87 c
--0.05 0.99 -1.01 0.71 -3.77 0.61 c
--2.75 -0.06 -4.9 -1.23 -6.01 -2.21 c
--1.09 -0.97 -2.29 -1.54 -1.66 -1.98 c
-f*
-87 G
-770.35 663.32 m
-0.68 -0.51 1.13 0.36 2.6 1 c
-1.46 0.65 3.8 1.36 5.7 1.37 c
-1.9 0.01 2.72 -0.15 2.66 0.78 c
--0.04 0.93 -0.97 0.64 -3.59 0.58 c
--2.62 -0.02 -4.72 -1.11 -5.78 -2.02 c
--1.05 -0.9 -2.19 -1.32 -1.58 -1.72 c
-f*
-92 G
-770.72 663.73 m
-0.62 -0.44 1.02 0.23 2.47 0.84 c
-1.45 0.61 3.77 1.19 5.46 1.2 c
-1.69 0.01 2.58 -0.17 2.54 0.7 c
--0.04 0.86 -0.92 0.57 -3.42 0.55 c
--2.5 0.01 -4.53 -0.99 -5.54 -1.83 c
--1 -0.82 -2.09 -1.09 -1.5 -1.46 c
-f*
-97 G
-771.08 664.13 m
-0.56 -0.37 0.9 0.11 2.34 0.68 c
-1.44 0.56 3.74 1.02 5.22 1.03 c
-1.48 0.01 2.45 -0.19 2.42 0.61 c
--0.03 0.8 -0.88 0.5 -3.25 0.52 c
--2.37 0.05 -4.34 -0.88 -5.3 -1.63 c
--0.96 -0.75 -1.99 -0.87 -1.42 -1.2 c
-f*
-102 G
-771.45 664.54 m
-0.5 -0.3 0.79 -0.01 2.22 0.51 c
-1.43 0.52 3.7 0.85 4.98 0.86 c
-1.28 0.01 2.32 -0.21 2.29 0.53 c
--0.02 0.74 -0.83 0.43 -3.08 0.49 c
--2.25 0.08 -4.15 -0.76 -5.06 -1.44 c
--0.91 -0.68 -1.89 -0.64 -1.34 -0.95 c
-f*
-K
-785.59 666.82 m
-0 -2.53 5.15 -3.41 10.06 -4.12 c
-4.83 -0.71 8.71 -1.66 8.95 -6.73 c
-0.24 -4.99 -1.03 -8.55 1.19 -8.16 c
-4.75 0.87 6.49 6.02 6.42 8.4 c
-0 2.38 -3.48 6.65 -9.74 9.03 c
--4.59 1.74 -7.92 2.53 -11.96 2.69 c
--5.39 0.24 -4.91 -1.11 y
-f*
-3 G
-785.73 666.78 m
-0.01 -2.46 5.11 -3.27 9.95 -4 c
-4.79 -0.74 8.52 -1.66 8.92 -6.6 c
-0.38 -4.86 -0.94 -8.26 1.25 -7.91 c
-4.56 0.82 6.26 5.72 6.17 8.07 c
--0.02 2.37 -3.43 6.5 -9.61 8.84 c
--4.54 1.72 -7.82 2.53 -11.81 2.7 c
--5.23 0.24 -4.88 -1.05 -4.87 -1.09 c
-f*
-7 G
-785.87 666.74 m
-0.03 -2.39 5.07 -3.13 9.85 -3.89 c
-4.74 -0.77 8.34 -1.66 8.9 -6.47 c
-0.52 -4.72 -0.85 -7.98 1.31 -7.66 c
-4.37 0.76 6.02 5.42 5.92 7.74 c
--0.03 2.36 -3.38 6.35 -9.47 8.66 c
--4.49 1.7 -7.72 2.52 -11.67 2.7 c
--5.07 0.24 -4.85 -0.98 -4.83 -1.08 c
-f*
-11 G
-786 666.69 m
-0.04 -2.32 5.03 -2.99 9.74 -3.77 c
-4.7 -0.8 8.15 -1.66 8.87 -6.34 c
-0.66 -4.59 -0.76 -7.69 1.37 -7.41 c
-4.17 0.7 5.78 5.13 5.68 7.41 c
--0.05 2.35 -3.32 6.2 -9.34 8.47 c
--4.44 1.67 -7.63 2.51 -11.52 2.71 c
--4.92 0.24 -4.82 -0.92 -4.79 -1.06 c
-f*
-15 G
-786.14 666.65 m
-0.05 -2.25 4.99 -2.85 9.64 -3.66 c
-4.65 -0.83 7.97 -1.65 8.84 -6.21 c
-0.8 -4.46 -0.67 -7.4 1.43 -7.16 c
-3.98 0.65 5.55 4.83 5.43 7.08 c
--0.06 2.34 -3.27 6.05 -9.2 8.28 c
--4.39 1.65 -7.53 2.51 -11.38 2.71 c
--4.76 0.24 -4.79 -0.86 -4.76 -1.04 c
-f*
-19 G
-786.28 666.61 m
-0.06 -2.18 4.94 -2.72 9.53 -3.54 c
-4.61 -0.86 7.78 -1.65 8.81 -6.08 c
-0.94 -4.33 -0.58 -7.11 1.49 -6.91 c
-3.79 0.59 5.31 4.53 5.18 6.75 c
--0.08 2.33 -3.21 5.9 -9.07 8.1 c
--4.33 1.63 -7.43 2.5 -11.23 2.71 c
--4.6 0.24 -4.77 -0.8 -4.72 -1.03 c
-f*
-23 G
-786.42 666.57 m
-0.08 -2.1 4.9 -2.58 9.43 -3.43 c
-4.57 -0.89 7.59 -1.65 8.79 -5.96 c
-1.08 -4.19 -0.49 -6.82 1.55 -6.66 c
-3.6 0.53 5.07 4.23 4.94 6.42 c
--0.1 2.32 -3.16 5.74 -8.94 7.91 c
--4.28 1.61 -7.33 2.49 -11.09 2.72 c
--4.45 0.24 -4.74 -0.74 -4.68 -1.01 c
-f*
-26 G
-786.56 666.53 m
-0.09 -2.03 4.86 -2.44 9.32 -3.31 c
-4.52 -0.92 7.41 -1.65 8.76 -5.83 c
-1.22 -4.06 -0.4 -6.53 1.61 -6.41 c
-3.41 0.48 4.83 3.93 4.69 6.09 c
--0.11 2.31 -3.1 5.59 -8.8 7.73 c
--4.23 1.58 -7.23 2.48 -10.94 2.72 c
--4.29 0.25 -4.71 -0.68 -4.64 -0.99 c
-f*
-30 G
-786.7 666.48 m
-0.1 -1.96 4.82 -2.3 9.22 -3.2 c
-4.48 -0.95 7.22 -1.65 8.74 -5.7 c
-1.36 -3.93 -0.31 -6.24 1.67 -6.16 c
-3.21 0.42 4.59 3.64 4.44 5.76 c
--0.13 2.31 -3.05 5.44 -8.67 7.54 c
--4.18 1.56 -7.13 2.48 -10.8 2.73 c
--4.14 0.25 -4.68 -0.61 -4.6 -0.98 c
-f*
-34 G
-786.84 666.44 m
-0.12 -1.89 4.78 -2.16 9.11 -3.08 c
-4.43 -0.97 7.03 -1.64 8.71 -5.57 c
-1.5 -3.79 -0.22 -5.96 1.73 -5.91 c
-3.02 0.36 4.36 3.34 4.2 5.43 c
--0.15 2.3 -2.99 5.29 -8.53 7.35 c
--4.13 1.54 -7.04 2.47 -10.65 2.73 c
--3.98 0.25 -4.65 -0.55 -4.56 -0.96 c
-f*
-38 G
-786.97 666.4 m
-0.13 -1.82 4.74 -2.03 9.01 -2.96 c
-4.39 -1 6.85 -1.64 8.68 -5.44 c
-1.64 -3.66 -0.13 -5.67 1.79 -5.67 c
-2.83 0.31 4.12 3.04 3.95 5.1 c
--0.16 2.29 -2.94 5.14 -8.4 7.17 c
--4.08 1.52 -6.94 2.46 -10.51 2.74 c
--3.83 0.25 -4.62 -0.49 -4.53 -0.94 c
-f*
-42 G
-787.11 666.36 m
-0.14 -1.75 4.7 -1.89 8.9 -2.85 c
-4.34 -1.03 6.66 -1.64 8.65 -5.31 c
-1.78 -3.53 -0.04 -5.38 1.85 -5.42 c
-2.64 0.25 3.88 2.74 3.71 4.78 c
--0.18 2.28 -2.89 4.99 -8.26 6.98 c
--4.02 1.5 -6.84 2.46 -10.36 2.74 c
--3.67 0.25 -4.59 -0.43 -4.49 -0.93 c
-f*
-46 G
-787.25 666.32 m
-0.16 -1.67 4.66 -1.75 8.8 -2.73 c
-4.3 -1.06 6.47 -1.64 8.63 -5.18 c
-1.92 -3.39 0.05 -5.09 1.91 -5.17 c
-2.44 0.19 3.65 2.45 3.46 4.45 c
--0.19 2.27 -2.83 4.83 -8.13 6.79 c
--3.97 1.47 -6.74 2.45 -10.22 2.75 c
--3.51 0.25 -4.57 -0.37 -4.45 -0.91 c
-f*
-49 G
-787.39 666.27 m
-0.17 -1.6 4.62 -1.61 8.69 -2.62 c
-4.26 -1.09 6.29 -1.63 8.6 -5.05 c
-2.06 -3.26 0.15 -4.8 1.97 -4.92 c
-2.25 0.14 3.41 2.15 3.21 4.12 c
--0.21 2.26 -2.78 4.68 -7.99 6.61 c
--3.92 1.45 -6.64 2.44 -10.07 2.75 c
--3.36 0.25 -4.54 -0.3 -4.41 -0.89 c
-f*
-53 G
-787.53 666.23 m
-0.18 -1.53 4.58 -1.48 8.59 -2.5 c
-4.21 -1.12 6.1 -1.63 8.57 -4.92 c
-2.2 -3.13 0.24 -4.51 2.03 -4.67 c
-2.06 0.08 3.17 1.85 2.97 3.79 c
--0.23 2.25 -2.72 4.53 -7.86 6.42 c
--3.87 1.43 -6.54 2.44 -9.93 2.75 c
--3.2 0.25 -4.51 -0.24 -4.37 -0.88 c
-f*
-57 G
-787.67 666.19 m
-0.19 -1.46 4.54 -1.34 8.48 -2.39 c
-4.17 -1.15 5.92 -1.63 8.55 -4.79 c
-2.34 -2.99 0.32 -4.22 2.09 -4.42 c
-1.87 0.02 2.93 1.55 2.72 3.46 c
--0.24 2.24 -2.67 4.38 -7.73 6.24 c
--3.82 1.41 -6.44 2.43 -9.78 2.76 c
--3.05 0.25 -4.48 -0.18 -4.33 -0.86 c
-f*
-61 G
-787.81 666.15 m
-0.21 -1.39 4.5 -1.2 8.38 -2.27 c
-4.12 -1.18 5.73 -1.63 8.52 -4.66 c
-2.48 -2.86 0.41 -3.94 2.15 -4.17 c
-1.68 -0.03 2.7 1.26 2.47 3.13 c
--0.26 2.23 -2.61 4.23 -7.59 6.05 c
--3.77 1.38 -6.35 2.42 -9.64 2.76 c
--2.89 0.26 -4.45 -0.12 -4.3 -0.84 c
-f*
-65 G
-787.94 666.11 m
-0.22 -1.32 4.46 -1.06 8.27 -2.16 c
-4.08 -1.21 5.54 -1.62 8.49 -4.53 c
-2.62 -2.73 0.5 -3.65 2.21 -3.92 c
-1.48 -0.09 2.46 0.96 2.23 2.8 c
--0.28 2.23 -2.56 4.08 -7.46 5.86 c
--3.71 1.36 -6.25 2.42 -9.49 2.77 c
--2.73 0.26 -4.42 -0.06 -4.26 -0.83 c
-f*
-69 G
-788.08 666.06 m
-0.23 -1.24 4.42 -0.92 8.17 -2.04 c
-4.03 -1.24 5.36 -1.62 8.47 -4.4 c
-2.76 -2.59 0.6 -3.36 2.27 -3.67 c
-1.29 -0.15 2.22 0.66 1.98 2.47 c
--0.29 2.22 -2.5 3.93 -7.32 5.68 c
--3.66 1.34 -6.15 2.41 -9.35 2.77 c
--2.58 0.26 -4.39 0.01 -4.22 -0.81 c
-f*
-72 G
-788.22 666.02 m
-0.25 -1.17 4.38 -0.78 8.06 -1.93 c
-3.99 -1.27 5.17 -1.62 8.44 -4.27 c
-2.9 -2.46 0.69 -3.07 2.33 -3.42 c
-1.1 -0.2 1.98 0.36 1.73 2.14 c
--0.31 2.21 -2.45 3.78 -7.19 5.49 c
--3.61 1.32 -6.05 2.4 -9.2 2.78 c
--2.42 0.26 -4.36 0.07 -4.18 -0.79 c
-f*
-76 G
-788.36 665.98 m
-0.26 -1.1 4.33 -0.65 7.96 -1.81 c
-3.95 -1.29 4.98 -1.62 8.41 -4.14 c
-3.04 -2.33 0.78 -2.78 2.39 -3.17 c
-0.91 -0.26 1.75 0.06 1.49 1.81 c
--0.32 2.2 -2.39 3.62 -7.05 5.31 c
--3.56 1.29 -5.95 2.39 -9.06 2.78 c
--2.27 0.26 -4.34 0.13 -4.14 -0.78 c
-f*
-804.67 660.67 m
-1.81 -1.1 1.49 -2.26 2.65 -3.04 c
-0.58 -0.39 1.55 -0.39 0.97 1.1 c
--0.78 1.75 -1.42 2.72 -5.44 4.34 c
--2.59 1.04 -2.07 -0.06 1.81 -2.39 c
-f*
-80 G
-804.71 660.66 m
-1.77 -1.07 1.45 -2.21 2.59 -2.97 c
-0.57 -0.38 1.51 -0.38 0.95 1.07 c
--0.76 1.7 -1.39 2.65 -5.3 4.23 c
--2.52 1.01 -2.02 -0.06 1.77 -2.34 c
-f*
-84 G
-804.76 660.65 m
-1.72 -1.05 1.42 -2.15 2.52 -2.89 c
-0.55 -0.37 1.48 -0.37 0.92 1.05 c
--0.74 1.66 -1.35 2.58 -5.17 4.12 c
--2.46 0.98 -1.97 -0.06 1.72 -2.28 c
-f*
-88 G
-804.81 660.63 m
-1.68 -1.02 1.38 -2.1 2.46 -2.82 c
-0.54 -0.36 1.44 -0.36 0.9 1.02 c
--0.72 1.62 -1.32 2.52 -5.04 4.02 c
--2.4 0.96 -1.92 -0.06 1.68 -2.22 c
-f*
-92 G
-804.86 660.62 m
-1.63 -0.99 1.34 -2.04 2.39 -2.74 c
-0.52 -0.35 1.4 -0.35 0.88 0.99 c
--0.7 1.58 -1.28 2.45 -4.9 3.91 c
--2.33 0.93 -1.87 -0.06 1.63 -2.16 c
-f*
-95 G
-804.91 660.61 m
-1.59 -0.96 1.31 -1.99 2.33 -2.67 c
-0.51 -0.34 1.36 -0.34 0.85 0.96 c
--0.68 1.53 -1.25 2.39 -4.77 3.8 c
--2.27 0.91 -1.82 -0.06 1.59 -2.1 c
-f*
-99 G
-804.95 660.59 m
-1.55 -0.94 1.27 -1.93 2.26 -2.59 c
-0.5 -0.33 1.33 -0.33 0.83 0.94 c
--0.66 1.49 -1.21 2.32 -4.64 3.7 c
--2.21 0.88 -1.77 -0.05 1.55 -2.04 c
-f*
-103 G
-805 660.58 m
-1.5 -0.91 1.23 -1.88 2.2 -2.52 c
-0.48 -0.32 1.29 -0.32 0.8 0.91 c
--0.64 1.45 -1.18 2.25 -4.5 3.59 c
--2.14 0.86 -1.71 -0.05 1.5 -1.98 c
-f*
-107 G
-805.05 660.57 m
-1.46 -0.88 1.2 -1.82 2.13 -2.45 c
-0.47 -0.31 1.25 -0.31 0.78 0.88 c
--0.62 1.4 -1.15 2.18 -4.37 3.49 c
--2.08 0.83 -1.66 -0.05 1.46 -1.93 c
-f*
-111 G
-805.1 660.55 m
-1.41 -0.86 1.16 -1.77 2.07 -2.37 c
-0.45 -0.3 1.21 -0.3 0.76 0.86 c
--0.61 1.36 -1.11 2.12 -4.24 3.38 c
--2.02 0.81 -1.61 -0.05 1.41 -1.87 c
-f*
-115 G
-805.15 660.54 m
-1.37 -0.83 1.12 -1.71 2 -2.3 c
-0.44 -0.29 1.17 -0.29 0.73 0.83 c
--0.59 1.32 -1.07 2.05 -4.1 3.27 c
--1.95 0.78 -1.56 -0.05 1.37 -1.81 c
-f*
-119 G
-805.19 660.53 m
-1.32 -0.8 1.09 -1.65 1.94 -2.22 c
-0.43 -0.28 1.13 -0.28 0.71 0.8 c
--0.57 1.28 -1.04 1.99 -3.97 3.17 c
--1.89 0.76 -1.51 -0.05 1.32 -1.75 c
-f*
-122 G
-805.24 660.51 m
-1.28 -0.78 1.05 -1.6 1.87 -2.15 c
-0.41 -0.27 1.1 -0.27 0.68 0.78 c
--0.55 1.23 -1 1.92 -3.84 3.06 c
--1.83 0.73 -1.46 -0.05 1.28 -1.69 c
-f*
-126 G
-805.29 660.5 m
-1.24 -0.75 1.01 -1.54 1.81 -2.07 c
-0.4 -0.26 1.06 -0.26 0.66 0.75 c
--0.53 1.19 -0.97 1.85 -3.7 2.95 c
--1.76 0.71 -1.41 -0.04 1.23 -1.63 c
-f*
-130 G
-805.34 660.49 m
-1.19 -0.72 0.98 -1.49 1.74 -2 c
-0.38 -0.25 1.02 -0.25 0.64 0.72 c
--0.51 1.15 -0.94 1.79 -3.57 2.85 c
--1.7 0.68 -1.36 -0.04 1.19 -1.57 c
-f*
-134 G
-805.39 660.47 m
-1.15 -0.7 0.94 -1.43 1.68 -1.92 c
-0.37 -0.25 0.98 -0.25 0.61 0.7 c
--0.49 1.11 -0.9 1.72 -3.44 2.74 c
--1.64 0.65 -1.31 -0.04 1.15 -1.51 c
-f*
-138 G
-805.43 660.46 m
-1.1 -0.67 0.91 -1.38 1.61 -1.85 c
-0.35 -0.24 0.94 -0.24 0.59 0.67 c
--0.47 1.06 -0.87 1.65 -3.3 2.64 c
--1.57 0.63 -1.26 -0.04 1.1 -1.46 c
-f*
-142 G
-805.48 660.45 m
-1.06 -0.64 0.87 -1.32 1.55 -1.77 c
-0.34 -0.23 0.91 -0.23 0.57 0.64 c
--0.45 1.02 -0.83 1.59 -3.17 2.53 c
--1.51 0.6 -1.21 -0.04 1.06 -1.4 c
-f*
-145 G
-805.53 660.43 m
-1.01 -0.61 0.83 -1.27 1.48 -1.7 c
-0.33 -0.22 0.87 -0.22 0.54 0.61 c
--0.43 0.98 -0.8 1.52 -3.04 2.42 c
--1.45 0.58 -1.16 -0.04 1.01 -1.34 c
-f*
-149 G
-805.58 660.42 m
-0.97 -0.59 0.8 -1.21 1.42 -1.63 c
-0.31 -0.21 0.83 -0.21 0.52 0.59 c
--0.41 0.93 -0.76 1.45 -2.91 2.32 c
--1.38 0.55 -1.11 -0.03 0.97 -1.28 c
-f*
-153 G
-805.63 660.41 m
-0.92 -0.56 0.76 -1.15 1.35 -1.55 c
-0.3 -0.2 0.79 -0.2 0.49 0.56 c
--0.4 0.89 -0.73 1.39 -2.77 2.21 c
--1.32 0.53 -1.06 -0.03 0.92 -1.22 c
-f*
-Q q
-1304 512 329 0 0 1 ^ P
-1304 513 330 0 0 1 ^ P
-1304 514 331 0 0 1 ^ P
-1304 515 332 0 0 1 ^ P
-1304 516 333 0 0 1 ^ P
-1304 517 334 0 0 1 ^ P
-1304 518 335 0 0 1 ^ P
-1304 519 336 0 0 1 ^ P
-1304 520 337 0 0 1 ^ P
-1304 521 338 0 0 1 ^ P
-1304 522 339 0 0 1 ^ P
-1304 523 340 0 0 1 ^ P
-1304 524 341 0 0 2 ^ P
-1304 526 342 0 0 1 ^ P
-1304 527 343 0 0 1 ^ P
-1304 528 344 0 0 1 ^ P
-1304 529 345 0 0 1 ^ P
-1304 530 346 0 0 1 ^ P
-1304 531 347 0 0 1 ^ P
-1304 532 348 0 0 1 ^ P
-1304 533 349 0 0 1 ^ P
-1304 534 350 0 0 1 ^ P
-1304 535 351 0 0 2 ^ P
-1304 537 352 0 0 1 ^ P
-1304 538 353 0 0 1 ^ P
-1304 539 354 0 0 1 ^ P
-1304 540 355 0 0 1 ^ P
-1304 541 356 0 0 1 ^ P
-1304 542 357 0 0 2 ^ P
-1304 544 358 0 0 1 ^ P
-1304 545 359 0 0 1 ^ P
-1304 546 360 0 0 1 ^ P
-1304 547 361 0 0 1 ^ P
-1304 548 362 0 0 1 ^ P
-1304 549 363 0 0 1 ^ P
-1304 550 364 0 0 2 ^ P
-1304 552 365 0 0 1 ^ P
-1304 553 366 0 0 1 ^ P
-1304 554 367 0 0 1 ^ P
-1304 555 368 0 0 1 ^ P
-1304 556 369 0 0 1 ^ P
-1304 557 370 0 0 2 ^ P
-1304 559 371 0 0 1 ^ P
-1304 560 372 0 0 1 ^ P
-1304 561 373 0 0 1 ^ P
-1304 562 374 0 0 2 ^ P
-1304 564 375 0 0 1 ^ P
-1304 565 376 0 0 1 ^ P
-1304 566 377 0 0 1 ^ P
-1304 567 378 0 0 2 ^ P
-1304 569 379 0 0 1 ^ P
-1304 570 380 0 0 1 ^ P
-1304 571 381 0 0 2 ^ P
-1304 573 382 0 0 1 ^ P
-1304 574 383 0 0 1 ^ P
-1304 575 384 0 0 1 ^ P
-1304 576 385 0 0 2 ^ P
-1304 578 386 0 0 1 ^ P
-1304 579 387 0 0 1 ^ P
-1304 580 388 0 0 1 ^ P
-1304 581 389 0 0 2 ^ P
-1304 583 390 0 0 1 ^ P
-1304 584 391 0 0 1 ^ P
-1304 585 392 0 0 2 ^ P
-1304 587 393 0 0 1 ^ P
-1304 588 394 0 0 1 ^ P
-1304 589 395 0 0 2 ^ P
-1304 591 396 0 0 1 ^ P
-1304 592 397 0 0 1 ^ P
-1304 593 398 0 0 2 ^ P
-1304 595 399 0 0 1 ^ P
-1304 596 400 0 0 2 ^ P
-1304 598 401 0 0 1 ^ P
-1304 599 402 0 0 1 ^ P
-1304 600 403 0 0 2 ^ P
-1304 602 404 0 0 1 ^ P
-1304 603 405 0 0 2 ^ P
-1304 605 406 0 0 1 ^ P
-1304 606 407 0 0 1 ^ P
-1304 607 408 0 0 2 ^ P
-1304 609 409 0 0 1 ^ P
-1304 610 410 0 0 2 ^ P
-1304 612 411 0 0 1 ^ P
-1304 613 412 0 0 1 ^ P
-1304 614 413 0 0 2 ^ P
-1304 616 414 0 0 1 ^ P
-1304 617 415 0 0 2 ^ P
-1304 619 416 0 0 1 ^ P
-1304 620 417 0 0 2 ^ P
-1304 622 418 0 0 1 ^ P
-1304 623 419 0 0 2 ^ P
-1304 625 420 0 0 1 ^ P
-1304 626 421 0 0 2 ^ P
-1304 628 422 0 0 1 ^ P
-1304 629 423 0 0 2 ^ P
-1304 631 424 0 0 340 ^ P
-1304 971 424 0 0 1 ^ Y
-209 0 r3
-1392.38 817.67 0.33 0.73 0.26 0.66 0.4 0.73 0.4 0.79 0.46 0.79 0.53 0.86 0.59 
0.79 
-0.53 0.86 0.59 0.79 0.66 0.86 0.53 0.59 0.53 0.66 0.53 0.73 0.66 0.73 0.59 
0.79 
-0.66 0.79 0.66 0.86 0.66 0.92 0.66 0.86 0.59 0.86 0.59 0.79 0.53 0.86 0.46 
0.79 
-0.46 0.79 0.33 0.79 0.4 0.79 0.33 0.86 0.33 0.86 0.26 0.92 0.33 0.92 0.26 0.99 
-0.2 0.99 0.26 0.99 0.26 0.99 0.2 0.99 0.2 0.99 0.2 0.99 0.26 0.92 0.2 0.99 
-0.26 1.06 0.33 1.12 0.26 1.12 0.33 1.19 0.26 1.19 0.33 1.19 0.26 1.19 0.33 
1.19 
-0.26 1.06 0.2 1.06 0.2 0.99 0.2 0.86 0.13 0.86 0.13 1.06 0.13 1.06 0 2.9 
--0.13 0.86 -0.07 0.79 -0.13 0.79 -0.13 0.73 -0.13 0.66 -0.13 0.59 -0.13 0.59 
-0.13 0.66 
--0.13 0.73 -0.13 0.79 -0.2 0.79 -0.13 0.86 -0.2 0.92 -0.13 0.86 -0.2 0.92 -0.2 
0.99 
--0.13 0.99 -0.2 0.86 -0.2 0.99 -0.2 0.99 -0.13 1.06 -0.26 1.19 -0.2 1.19 -0.2 
1.19 
--0.2 1.19 -0.2 1.19 -0.13 1.19 -0.2 1.12 -0.13 1.06 -0.13 0.99 -0.07 0.92 
-0.13 1.06 
--0.07 0.99 -0.07 1.06 -0.07 0.99 0 1.06 0.07 0.99 0.07 0.99 0.07 0.92 0.07 
0.92 
-0.13 0.86 0.2 0.86 0.2 0.86 0.2 0.79 0.2 0.92 0.26 0.86 0.26 0.99 0.33 0.92 
-0.33 0.92 0.26 0.92 0.33 0.86 0.26 0.79 0.26 0.73 0.26 0.66 0.2 0.59 0.2 0.59 
-0.2 0.53 0.2 0.53 0.26 0.59 0.26 0.53 0.4 0.59 0.4 0.66 0.46 0.66 0.59 0.73 
-0.66 0.86 0.53 0.59 0.53 0.66 0.59 0.73 0.66 0.79 0.79 0.86 0.79 0.99 0.86 
0.92 
-0.92 1.06 0.92 1.06 0.99 1.06 0.99 0.99 0.92 1.06 0.99 0.99 0.92 0.99 0.99 
0.99 
-0.92 0.92 0.79 0.79 0.86 0.86 0.92 0.79 0.86 0.86 0.92 0.79 0.99 0.86 0.99 
0.86 
-0.99 0.86 0.99 0.86 0.99 0.86 0.99 0.79 0.99 0.86 0.99 0.73 0.99 0.73 0.92 
0.73 
-0.86 0.66 0.86 0.66 0.92 0.59 0.92 0.73 1.06 0.66 0.99 0.73 1.06 0.66 1.06 
0.73 
-1.06 0.66 1.12 0.73 1.06 0.66 1.12 0.66 0.99 0.59 1.06 0.59 0.99 0.59 0.92 
0.53 
-0.86 0.46 0.86 0.46 0.79 0.4 0.99 0.59 1.06 0.46 0.99 0.53 1.06 0.46 0.99 0.4 
-0.99 0.4 0.92 0.33 0.92 0.26 0.79 0.2 0.79 0.13 0.73 0.07 0.66 0 0.59 -0.07 
-0.59 -0.07 0.66 -0.2 0.53 -0.2 0.59 -0.26 0.46 -0.26 0.46 -0.33 0.33 -0.4 0.33 
-0.4 
-0.2 -0.33 0.07 -0.4 0.07 -0.4 -0.07 -0.4 -0.13 -0.46 -0.33 -0.53 -0.4 -0.53 
-0.46 -0.59 
--0.53 -0.59 -0.66 -0.59 -0.59 -0.59 -0.66 -0.53 -0.59 -0.66 -0.59 -0.46 -0.53 
-0.59 -0.59 -0.59 
--0.66 -0.66 -0.66 -0.66 -0.66 -0.73 -0.66 -0.73 -0.66 -0.73 -0.66 -0.73 -0.59 
-0.73 -0.59 -0.66 
--0.59 -0.73 -0.59 -0.66 -0.59 -0.73 -0.59 -0.79 -0.59 -0.79 -0.66 -0.79 -0.59 
-0.79 -0.59 -0.79 
--0.59 -0.79 -0.53 -0.73 -0.53 -0.66 -0.46 -0.66 -0.4 -0.59 -0.53 -0.73 -0.46 
-0.66 -0.46 -0.66 
--0.4 -0.66 -0.46 -0.66 -0.33 -0.66 -0.33 -0.59 -0.33 -0.59 -0.2 -0.53 -0.2 
-0.53 -0.26 -0.66 
--0.2 -0.73 -0.13 -0.73 -0.13 -0.86 -0.07 -0.79 -0.07 -0.79 -0.07 -0.79 0 -1.52 
0.07 -0.86 
-0 -0.86 0.13 -0.92 0.07 -0.86 0.13 -0.86 0.13 -0.73 0.2 -0.73 0.2 -0.59 0.26 
-0.66 
-0.26 -0.53 0.33 -0.59 0.4 -0.46 0.4 -0.4 0.46 -0.33 0.46 -0.26 0.46 -0.13 0.59 
-0.13 
-0.66 -0.07 0.73 0.07 0.79 0.13 0.86 0.13 0.86 0.26 0.92 0.33 0.66 0.26 0.66 
0.26 
-0.79 0.33 0.79 0.33 0.86 0.4 0.92 0.4 0.99 0.46 0.92 0.4 0.99 0.4 0.99 0.4 
-0.92 0.4 0.99 0.33 0.79 0.33 0.86 0.33 0.92 0.26 0.99 0.33 0.99 0.26 1.06 0.33 
-1.12 0.26 1.06 0.26 1.12 0.26 1.12 0.2 1.06 0.26 1.06 0.2 1.06 0.13 0.99 0.13 
-1.06 0.2 1.06 0.13 1.12 0.07 1.12 0.13 1.25 0.13 1.25 0.07 1.25 0.07 1.25 0.07 
-1.32 0 1.25 0.07 1.25 0 1.19 -0.07 1.19 0 1.12 -0.07 0.99 0 1.06 -0.07 
-1.12 -0.07 1.12 -0.13 1.19 -0.07 1.19 -0.2 1.32 -0.13 1.32 -0.2 1.32 -0.2 1.39 
-0.26 
-1.39 -0.26 1.39 -0.26 1.39 -0.33 1.39 -0.33 1.39 -0.4 1.39 -0.4 1.19 -0.33 
1.19 -0.33 
-1.25 -0.4 1.25 -0.4 1.39 -0.46 1.39 -0.46 1.39 -0.46 1.45 -0.53 1.45 -0.59 
1.45 -0.53 
-1.45 -0.59 1.45 -0.59 1.39 -0.53 1.39 -0.59 1.25 -0.59 1.25 -0.53 1.19 -0.59 
1.12 -0.53 
-1.06 -0.53 0.99 -0.53 1.32 -0.73 1.32 -0.79 1.19 -0.79 1.19 -0.79 1.12 -0.79 
1.12 -0.79 
-0.99 -0.86 0.92 -0.79 0.86 -0.73 0.79 -0.73 0.73 -0.66 0.59 -0.66 0.59 -0.59 
0.53 -0.53 
-0.66 -0.73 0.66 -0.73 0.66 -0.66 0.66 -0.59 0.66 -0.59 0.59 -0.53 0.66 -0.46 
0.59 -0.33 
-0.59 -0.26 0.66 -0.26 0.53 -0.13 0.59 -0.07 0.73 -0.07 0.73 0 0.79 0.07 0.86 
0.13 
-0.92 0.13 0.92 0.2 0.99 0.26 0.99 0.26 0.99 0.33 0.99 0.4 0.92 0.33 0.99 0.4 
-0.99 0.46 1.06 0.46 1.12 0.53 1.12 0.59 1.06 0.53 1.12 0.59 1.06 0.59 0.99 
0.59 
-0.92 0.53 0.79 0.53 0.73 0.53 0.66 0.46 0.66 0.53 0.59 0.53 0.53 0.59 0.4 0.53 
-0.4 0.59 0.26 0.66 0.26 0.66 0.13 0.73 0.13 0.73 0.07 0.73 0.07 0.79 0 0.79 
-0.07 0.79 0 0.86 -0.07 0.92 0 0.99 -0.07 1.12 -0.07 1.12 -0.07 1.19 -0.13 1.19 
--0.13 1.25 -0.2 1.19 -0.2 1.19 -0.26 1.12 -0.26 1.12 -0.26 1.06 -0.33 1.06 
-0.4 1.06 
--0.46 1.12 -0.46 1.06 -0.46 1.12 -0.53 1.12 -0.59 1.06 -0.53 1.12 -0.59 0.99 
-0.53 0.92 
--0.46 0.92 -0.53 0.79 -0.4 0.79 -0.4 0.66 -0.53 0.92 -0.46 0.92 -0.46 0.79 
-0.33 0.79 
--0.33 0.79 -0.2 0.66 -0.13 0.59 -0.07 0.59 0.07 0.46 0.07 0.4 0.2 0.4 0.26 
0.33 
-0.4 0.4 0.4 0.33 0.53 0.26 0.59 0.26 0.59 0.2 0.66 0.2 0.66 0.07 0.66 0.07 
-0.73 0.07 0.73 0 0.86 -0.07 0.86 -0.13 0.92 -0.2 0.92 -0.26 0.92 -0.26 0.86 
-0.33 
-0.92 -0.4 0.79 -0.4 0.59 -0.33 0.66 -0.33 0.59 -0.46 0.73 -0.46 0.66 -0.53 
0.73 -0.59 
-0.79 -0.59 0.79 -0.73 0.79 -0.73 0.79 -0.79 0.79 -0.79 0.79 -0.79 0.79 -0.92 
0.79 -0.92 
-0.66 -0.73 0.66 -0.79 0.73 -0.86 0.73 -0.86 0.79 -0.99 0.79 -0.99 0.79 -1.06 
0.86 -1.06 
-0.79 -1.12 0.86 -1.12 0.79 -1.12 0.79 -1.12 0.73 -1.12 0.73 -1.06 0.66 -1.06 
0.59 -0.99 
-0.66 -0.99 0.53 -0.99 0.59 -1.06 0.59 -1.06 0.53 -1.06 0.53 -1.12 0.53 -1.12 
0.46 -1.12 
-0.46 -1.19 0.46 -1.12 0.4 -1.12 0.4 -1.12 0.4 -1.12 0.33 -1.06 0.26 -1.06 0.33 
-0.99 
-0.26 -0.92 0.2 -0.99 0.26 -0.92 0.2 -0.99 0.26 -0.99 0.2 -0.99 0.2 -1.06 0.26 
-1.12 
-0.13 -1.12 0.2 -1.12 0.13 -1.12 0.13 -1.12 0.13 -1.06 0.07 -1.12 0.07 -0.99 0 
-2.05 
--0.07 -0.99 -0.07 -0.99 -0.07 -0.99 -0.13 -0.99 -0.13 -1.06 -0.2 -1.12 -0.26 
-1.19 -0.26 -1.12 
--0.33 -1.25 -0.4 -1.19 -0.4 -1.19 -0.46 -1.25 -0.46 -1.19 -0.53 -1.19 -0.53 
-1.12 -0.53 -1.12 
--0.59 -1.19 -0.59 -0.99 -0.59 -1.06 -0.66 -1.12 -0.66 -1.12 -0.73 -1.19 -0.79 
-1.19 -0.86 -1.25 
--0.92 -1.19 -0.86 -1.25 -0.99 -1.25 -0.92 -1.25 -0.99 -1.19 -0.92 -1.19 -0.99 
-1.12 -0.92 -1.06 
--0.99 -1.06 -0.92 -0.99 -0.92 -0.99 -0.92 -0.92 -0.99 -0.92 -0.99 -0.86 -0.99 
-0.92 -1.06 -0.92 
--1.12 -0.92 -1.06 -0.92 -1.12 -0.86 -1.12 -0.86 -1.06 -0.86 -1.06 -0.86 -1.06 
-0.73 -0.99 -0.79 
--0.99 -0.66 -0.92 -0.66 -0.86 -0.59 -0.79 -0.59 -0.79 -0.59 -1.12 -0.79 -1.12 
-0.73 -1.06 -0.79 
--0.99 -0.66 -0.99 -0.73 -0.92 -0.59 -0.86 -0.59 -0.73 -0.53 -0.66 -0.4 -0.53 
-0.4 -0.46 -0.26 
--0.33 -0.2 -0.26 -0.13 -0.2 -0.13 -0.2 -0.13 -0.13 -0.07 -0.07 -0.13 -0.07 
-0.07 -0.07 -0.2 
-0 -0.4 0.07 -0.33 0 -0.33 0.07 -0.4 0.07 -0.53 0 -0.59 0.07 -0.59 0 -4.42 
--0.07 -1.19 0 -1.19 -0.07 -1.32 -0.13 -1.25 -0.07 -1.32 -0.13 -1.25 -0.07 
-1.32 -0.13 -1.25 
--0.2 -1.19 -0.13 -1.25 -0.2 -1.19 -0.2 -1.25 -0.2 -1.25 -0.26 -1.25 -0.26 
-1.32 -0.33 -1.32 
--0.33 -1.32 -0.4 -1.39 -0.33 -1.32 -0.4 -1.32 -0.46 -1.25 -0.4 -1.25 -0.4 
-1.19 -0.46 -1.12 
--0.46 -1.06 -0.4 -1.06 -0.53 -1.06 -0.46 -0.99 -0.53 -1.06 -0.59 -1.06 -0.59 
-1.12 -0.66 -1.06 
--0.66 -1.12 -0.73 -1.12 -0.73 -1.12 -0.73 -1.06 -0.79 -1.06 -0.73 -0.99 -0.79 
-0.99 -0.79 -0.99 
--0.79 -0.92 -0.73 -0.92 -0.86 -0.92 -0.86 -0.92 -0.86 -0.92 -0.92 -0.99 -0.99 
-0.99 -0.92 -0.99 
--1.06 -0.99 -0.99 -1.06 -0.99 -0.99 -0.92 -0.99 -0.92 -0.92 -0.86 -0.86 -0.86 
-0.86 -0.73 -0.79 
--0.73 -0.73 -0.59 -0.73 -0.79 -0.86 -0.73 -0.86 -0.73 -0.86 -0.59 -0.86 -0.59 
-0.86 -0.53 -0.79 
--0.46 -0.79 -0.4 -0.73 -0.33 -0.73 -0.26 -0.66 -0.26 -0.66 -0.2 -0.59 -0.26 
-0.73 -0.2 -0.73 
--0.13 -0.79 -0.2 -0.79 -0.13 -0.86 -0.13 -0.86 -0.07 -0.79 0 -3.04 0.07 -0.79 
0.13 -0.79 
-0.13 -0.86 0.2 -0.86 0.2 -0.92 0.2 -0.86 0.26 -0.79 0.26 -0.73 0.33 -0.79 0.33 
-0.73 
-0.33 -0.73 0.46 -0.79 0.4 -0.86 0.53 -0.86 0.46 -0.79 0.46 -0.86 0.46 -0.79 
0.46 -0.73 
-0.4 -0.73 0.4 -0.79 0.4 -0.73 0.4 -0.86 0.4 -0.86 0.4 -0.92 0.4 -0.92 0.33 
-0.92 
-0.33 -0.92 0.33 -0.92 0.26 -0.92 0.2 -0.66 0.2 -0.73 0.2 -0.73 0.2 -0.79 0.13 
-0.86 
-0.2 -0.86 0.2 -0.99 0.2 -0.92 0.13 -1.06 0.13 -0.99 0.13 -1.06 0.13 -0.99 0.13 
-1.06 
-0.13 -1.12 0.07 -0.92 0.07 -1.06 0.07 -1.06 0.07 -1.12 0.07 -1.19 0.07 -1.19 
0.07 -1.25 
-0 -1.25 0.07 -1.25 0 -2.44 0.07 -1.12 0 -1.06 -0.07 -1.06 0 -1.91 -0.07 -1.12 
-0 -1.12 -0.07 -1.12 -0.13 -1.06 -0.07 -1.06 -0.13 -1.06 -0.13 -0.99 -0.2 -0.86 
-0.13 -0.86 
--0.2 -0.79 -0.2 -0.73 -0.13 -0.73 -0.26 -0.79 -0.33 -0.86 -0.26 -0.86 -0.33 
-0.86 -0.33 -0.92 
--0.33 -0.86 -0.33 -0.86 -0.26 -0.79 -0.2 -0.79 -0.2 -0.73 -0.13 -0.59 -0.07 
-0.59 -0.07 -0.66 
--0.07 -0.73 0 -0.79 0.07 -0.79 0.13 -0.86 0.13 -0.92 0.13 -0.99 0.26 -0.99 
0.26 -1.06 
-0.26 -1.12 0.26 -0.86 0.26 -0.99 0.33 -0.99 0.33 -1.12 0.4 -1.19 0.46 -1.25 
0.46 -1.25 
-0.46 -1.39 0.53 -1.39 0.53 -1.32 0.59 -1.39 0.53 -1.39 0.59 -1.25 0.59 -1.32 
0.59 -1.25 
-0.59 -1.19 0.53 -1.06 0.53 -1.12 0.59 -1.06 0.59 -1.12 0.66 -1.19 0.73 -1.12 
0.73 -1.19 
-0.73 -1.12 0.73 -1.19 0.79 -1.12 0.86 -1.12 0.79 -1.12 0.79 -1.06 0.79 -0.99 
0.86 -0.99 
-0.79 -0.92 0.79 -0.92 0.79 -0.86 0.86 -0.86 0.86 -0.86 0.92 -0.86 0.92 -0.79 
0.99 -0.86 
-0.99 -0.92 1.06 -0.86 1.12 -0.86 1.12 -0.86 1.12 -0.79 1.19 -0.86 1.12 -0.79 
1.12 -0.73 
-1.12 -0.73 1.12 -0.66 1.12 -0.73 1.06 -0.59 1.06 -0.66 1.12 -0.59 1.12 -0.59 
1.12 -0.59 
-1.19 -0.59 1.25 -0.66 1.25 -0.59 1.32 -0.59 1.39 -0.66 1.39 -0.59 1.39 -0.59 
1.39 -0.59 
-1.39 -0.53 1.39 -0.53 1.32 -0.53 1.32 -0.46 1.32 -0.46 1.32 -0.46 1.25 -0.4 
1.19 -0.4 
-1.19 -0.4 1.25 -0.33 1.25 -0.4 1.32 -0.33 1.39 -0.4 1.39 -0.33 1.45 -0.4 1.45 
-0.4 
-1.52 -0.33 1.45 -0.4 1.52 -0.33 1.52 -0.33 1.45 -0.4 1.52 -0.33 1.39 -0.26 
1.45 -0.33 
-1.39 -0.33 1.39 -0.26 1.39 -0.33 1.39 -0.26 1.39 -0.33 1.45 -0.26 1.45 -0.33 
1.52 -0.33 
-1.52 -0.33 1.58 -0.33 1.65 -0.33 1.58 -0.33 1.58 -0.33 1.65 -0.33 1.58 -0.33 
1.52 -0.33 
-1.52 -0.33 1.45 -0.33 1.39 -0.33 1.32 -0.26 1.32 -0.33 1.25 -0.26 1.19 -0.26 
1.45 -0.33 
-1.39 -0.33 1.45 -0.4 1.45 -0.33 1.39 -0.33 1.45 -0.4 1.39 -0.33 1.39 -0.4 1.32 
-0.33 
-1.25 -0.4 1.25 -0.33 1.12 -0.33 1.12 -0.33 0.99 -0.33 0.99 -0.33 0.92 -0.26 
1.06 -0.33 
-1.06 -0.33 0.99 -0.4 1.06 -0.33 1.06 -0.4 1.06 -0.4 1.06 -0.46 0.99 -0.4 0.99 
-0.4 
-0.99 -0.46 0.86 -0.4 0.86 -0.46 0.86 -0.4 0.79 -0.46 0.79 -0.4 0.79 -0.53 0.86 
-0.46 
-0.79 -0.53 0.86 -0.59 0.86 -0.59 0.86 -0.59 0.79 -0.66 0.79 -0.66 0.73 -0.59 
0.66 -0.66 
-0.66 -0.59 0.59 -0.59 0.53 -0.59 0.59 -0.73 0.53 -0.73 0.53 -0.79 0.53 -0.79 
0.46 -0.86 
-0.46 -0.86 0.4 -0.86 0.33 -0.86 0.33 -0.86 0.2 -0.73 0.26 -0.79 0.2 -0.73 0.13 
-0.86 
-0.13 -0.86 0.13 -0.92 0.07 -0.99 -0.07 -0.92 -0.07 -0.99 -0.2 -0.92 -0.26 
-0.92 -0.33 -0.86 
--0.4 -0.79 -0.4 -0.73 -0.46 -0.66 -0.53 -0.79 -0.59 -0.73 -0.66 -0.79 -0.73 
-0.79 -0.79 -0.73 
--0.79 -0.73 -0.73 -0.66 -0.79 -0.66 -0.73 -0.59 -0.73 -0.53 -0.59 -0.46 -0.66 
-0.46 -0.66 -0.4 
--0.73 -0.46 -0.73 -0.4 -0.86 -0.4 -0.86 -0.46 -0.86 -0.4 -0.99 -0.33 -0.99 
-0.4 -0.99 -0.33 
--1.06 -0.33 -1.12 -0.33 -1.12 -0.33 -1.06 -0.26 -1.19 -0.33 -1.19 -0.26 -1.32 
-0.33 -1.32 -0.26 
--1.45 -0.33 -1.45 -0.26 -1.45 -0.33 -1.39 -0.26 -1.45 -0.33 -1.32 -0.26 -1.25 
-0.2 -1.19 -0.26 
--1.06 -0.2 -0.99 -0.2 -0.86 -0.13 -1.06 -0.2 -0.92 -0.2 -0.79 -0.13 -0.66 -0.2 
-0.59 -0.13 
--0.53 -0.13 -0.33 -0.2 -0.26 -0.13 -0.2 -0.2 -0.13 -0.2 0 -0.4 0.07 -0.53 0.13 
-0.73 
-0.2 -0.79 0.2 -0.79 0.13 -0.73 0 -0.59 -0.13 -0.26 -0.13 -0.2 -0.2 -0.26 -0.4 
-0.13 
--0.46 -0.13 -0.59 -0.13 -0.73 -0.13 -0.92 -0.07 -0.99 0 -1.12 -0.07 -0.66 0 
-0.79 -0.07 
--2.71 0 -1.12 -0.07 -2.38 0 -1.32 -0.07 -1.32 0 -1.39 -0.07 -2.84 0 -1.45 
-0.07 
--1.45 0 -1.52 -0.07 -1.45 0 -1.45 -0.07 -1.39 -0.07 -1.45 0 -1.45 -0.07 -1.52 
-0.07 
--1.58 0 -1.58 -0.07 -1.72 -0.07 -1.65 -0.07 -1.78 -0.07 -1.72 -0.07 -1.72 
-0.07 -1.72 -0.07 
--1.65 -0.07 -1.65 -0.07 -1.52 -0.07 -1.52 -0.07 -1.45 -0.07 -1.39 -0.07 -1.32 
-0.07 -1.25 -0.07 
--1.52 -0.07 -1.52 -0.07 -1.45 -0.13 -1.39 -0.07 -1.45 -0.07 -1.39 -0.07 -1.32 
-0.13 -1.25 -0.07 
--1.19 -0.07 -1.19 -0.07 -1.06 -0.07 -0.92 0 -0.86 -0.07 -0.79 0 -0.73 -0.07 
-2.44 0 
--0.73 0.07 -0.66 0.07 -0.59 0.07 -0.46 0.13 -0.26 0.13 -0.26 0.13 -0.07 0.13 
-0.07 0.2 
-0 0.13 0.13 0.2 0.2 0.26 0.33 0.26 0.46 0.4 0.59 0.4 0.79 0.53 0.99 0.59 
-1.12 0.73 1.32 0.79 1.52 0.86 1.72 0.92 0.99 0.59 1.12 0.59 1.19 0.66 1.25 
0.73 
-1.32 0.73 1.45 0.79 1.52 0.79 1.52 0.86 1.65 0.92 1.65 0.86 1.72 0.99 1.65 
0.92 
-1.72 0.92 1.65 0.92 1.65 0.86 1.65 0.92 1.52 0.86 1.52 0.79 1.39 0.79 1.39 
0.73 
-1.25 0.73 1.25 0.66 1.58 0.92 1.58 0.86 1.45 0.86 1.39 0.79 1.39 0.79 1.32 
0.79 
-1.25 0.73 1.12 0.66 1.12 0.66 0.99 0.59 0.92 0.59 0.86 0.53 0.73 0.46 0.73 
0.46 
-0.59 0.4 0.59 0.33 0.79 0.59 0.79 0.53 0.79 0.53 0.66 0.53 0.66 0.4 0.66 0.4 
-0.53 0.26 0.46 0.2 0.4 0.13 0.73 0 0.33 -0.07 0.33 -0.2 0.33 -0.26 0.33 -0.26 
-0.33 -0.4 0.33 -0.4 0.33 -0.4 0.26 -0.4 0.33 -0.46 0.33 -0.53 0.4 -0.59 0.4 
-0.66 
-0.4 -0.66 0.4 -0.66 0.4 -0.73 0.33 -0.59 0.33 -0.66 0.26 -0.59 0.26 -0.66 0.33 
-0.66 
-0.26 -0.66 0.26 -0.66 0.26 -0.59 0.26 -0.53 0.2 -0.53 0.2 -0.4 0.26 -0.4 0.26 
-0.33 
-0.33 -0.33 0.4 -0.33 0.46 -0.33 0.46 -0.2 0.59 -0.2 0.59 -0.13 0.73 -0.07 1.32 
0 
-0.79 0.07 0.92 0.07 0.92 0.13 0.99 0.13 1.06 0.13 1.06 0.2 0.99 0.2 0.99 0.26 
-0.92 0.2 0.86 0.2 0.92 0.26 0.86 0.26 0.86 0.26 0.92 0.26 0.92 0.33 0.86 0.33 
-0.92 0.33 0.79 0.33 0.86 0.33 0.73 0.33 0.73 0.33 0.73 0.33 0.79 0.46 0.79 0.4 
-0.86 0.53 0.79 0.46 0.79 0.53 0.79 0.59 0.66 0.53 0.59 0.53 0.46 0.46 0.4 0.46 
-0.26 0.4 0.2 0.4 0.2 0.46 0.13 0.46 0.07 0.4 0 0.53 -0.07 0.46 -0.13 0.46 
--0.13 0.46 -0.2 0.46 -0.26 0.46 -0.33 0.46 -0.33 0.46 -0.4 0.53 -0.46 0.53 
-0.59 0.53 
--0.59 0.59 -0.66 0.59 -0.73 0.59 -0.79 0.53 -0.73 0.59 -0.79 0.53 -0.86 0.46 
-0.79 0.46 
--0.66 0.33 -0.66 0.33 -0.73 0.33 -0.73 0.33 -0.86 0.4 -0.92 0.33 -0.99 0.33 
-1.06 0.33 
--1.06 0.33 -1.19 0.33 -1.19 0.33 -1.25 0.26 -1.25 0.33 -1.32 0.26 -1.32 0.26 
-1.39 0.26 
--1.19 0.2 -1.25 0.2 -1.32 0.26 -1.39 0.2 -1.52 0.2 -1.52 0.26 -1.58 0.2 -1.65 
0.26 
--1.72 0.26 -1.78 0.2 -1.78 0.26 -1.72 0.26 -1.78 0.2 -1.72 0.26 -1.72 0.2 
-1.65 0.26 
--1.58 0.2 -1.58 0.26 -1.52 0.2 -1.45 0.2 -1.52 0.26 -1.45 0.2 -1.45 0.26 -1.45 
0.26 
--1.52 0.2 -1.52 0.26 -1.52 0.26 -1.52 0.26 -1.52 0.33 -1.45 0.26 -1.52 0.26 
-1.45 0.26 
--1.39 0.26 -1.39 0.33 -1.32 0.26 -1.25 0.26 -1.19 0.2 -1.12 0.26 -1.12 0.26 
-1.12 0.2 
--1.32 0.33 -1.39 0.33 -1.32 0.26 -1.32 0.33 -1.39 0.33 -1.39 0.4 -1.39 0.33 
-1.39 0.33 
--1.39 0.4 -1.32 0.33 -1.25 0.33 -1.25 0.4 -1.19 0.33 -1.12 0.33 -1.12 0.26 
-1.06 0.33 
--1.06 0.33 -1.12 0.33 -1.06 0.33 -1.12 0.4 -1.19 0.33 -1.12 0.4 -1.19 0.4 
-1.12 0.4 
--1.19 0.4 -1.12 0.4 -1.06 0.33 -1.06 0.4 -0.99 0.33 -0.92 0.33 -0.92 0.33 
-0.86 0.33 
--0.92 0.33 -0.99 0.4 -0.92 0.33 -0.99 0.4 -0.99 0.4 -0.99 0.4 -0.92 0.4 -0.99 
0.4 
--0.86 0.4 -0.92 0.4 -0.79 0.4 -0.79 0.4 -0.73 0.4 -0.73 0.4 -0.86 0.53 -0.86 
0.46 
--0.86 0.53 -0.86 0.59 -0.86 0.59 -0.92 0.59 -0.86 0.59 -0.86 0.59 -0.79 0.59 
-0.79 0.53 
--0.73 0.53 -0.73 0.46 -0.66 0.53 -0.73 0.46 -0.73 0.53 -0.73 0.53 -0.79 0.53 
-0.73 0.53 
--0.79 0.59 -0.73 0.53 -0.66 0.53 -0.73 0.53 -0.59 0.53 -0.66 0.53 -0.73 0.66 
-0.73 0.66 
--0.79 0.73 -0.79 0.73 -0.73 0.79 -0.79 0.66 -0.73 0.66 -0.66 0.53 -0.59 0.46 
-0.53 0.33 
--0.46 0.26 -0.4 0.2 -0.53 0.07 -0.59 0.07 -0.66 -0.13 -0.79 -0.13 -0.99 -0.26 
-1.12 -0.33 
--1.25 -0.46 -1.39 -0.59 -1.58 -0.59 -1.78 -0.73 -0.99 -0.4 -1.06 -0.46 -1.12 
-0.46 -1.25 -0.46 
--1.25 -0.46 -1.39 -0.53 -1.45 -0.53 -1.58 -0.53 -1.58 -0.53 -1.72 -0.53 -1.72 
-0.53 -1.78 -0.53 
--1.78 -0.46 -1.85 -0.46 -1.85 -0.4 -1.91 -0.33 -1.85 -0.33 -1.85 -0.26 -1.78 
-0.26 -1.78 -0.13 
--1.78 -0.13 -3.5 0 -1.72 0.07 -1.72 0.2 -1.72 0.2 -1.72 0.26 -1.72 0.4 -1.78 
0.4 
--1.78 0.46 -1.78 0.53 -1.78 0.59 -1.85 0.66 -1.78 0.66 -1.78 0.73 -1.72 0.73 
-1.72 0.73 
--1.65 0.79 -1.58 0.79 -1.52 0.73 -1.39 0.79 -1.39 0.73 -1.32 0.73 -1.19 0.73 
-1.12 0.66 
--0.99 0.59 -0.99 0.59 -0.86 0.59 -1.39 0.86 -1.25 0.86 -1.06 0.73 -0.99 0.73 
-0.86 0.66 
--0.73 0.66 -0.59 0.59 -0.59 0.53 -0.46 0.53 -0.4 0.53 -0.33 0.53 -0.33 0.46 
-0.33 0.53 
--0.33 0.53 -0.33 0.59 -0.4 0.66 -0.46 0.73 -0.46 0.79 -0.53 0.79 -0.53 0.86 
-0.59 0.92 
--0.59 0.92 -0.53 0.92 -0.53 0.92 -0.53 0.86 -0.53 0.86 -0.46 0.79 -0.4 0.73 
-0.53 0.92 
--0.46 0.86 -0.4 0.86 -0.46 0.92 -0.4 0.92 -0.33 0.86 -0.4 0.92 -0.26 0.86 
-0.26 0.79 
--0.26 0.79 -0.2 0.79 -0.13 0.73 -0.13 0.73 -0.13 0.79 -0.13 0.79 -0.07 0.86 
-0.07 0.86 
--0.07 0.86 -0.07 0.86 0 2.44 0.07 0.73 0 0.66 0.07 0.86 0.13 0.86 0.07 0.79 
-0.13 0.92 0.13 0.86 0.2 0.86 0.2 0.79 0.2 0.73 0.2 0.73 0.2 0.66 0.33 0.86 
-0.33 0.79 0.33 0.86 0.4 0.86 0.4 0.79 0.33 0.73 0.33 0.59 0.26 0.53 0.26 0.66 
-0.26 0.59 0.13 0.46 0.07 0.53 0.07 0.4 -0.07 0.33 -0.13 0.33 -0.2 0.4 -0.33 
0.46 
--0.33 0.46 -0.46 0.46 -0.46 0.53 -0.46 0.46 -0.46 0.53 -0.53 0.59 -0.59 0.59 
-0.53 0.66 
--0.46 0.66 -0.46 0.66 -0.4 0.59 -0.26 0.66 -0.26 0.66 -0.2 0.73 -0.2 0.73 
-0.07 0.66 
--0.07 0.66 0 0.59 0.07 0.53 0 0.46 0.13 0.46 0.07 0.46 0.07 0.4 0 0.4 
--0.07 0.33 -0.13 0.26 -0.2 0.13 -0.4 0.2 -0.66 0.2 -0.73 0.07 -0.86 0.13 -0.79 
0.07 
--0.73 0.07 -0.59 0.13 -0.59 0.13 -0.59 0.2 -0.46 0.26 -0.46 0.26 -0.33 0.26 
-0.33 0.33 
--0.4 0.4 -0.33 0.4 -0.4 0.4 -0.4 0.4 -0.46 0.26 -0.26 0.2 -0.26 0.2 -0.4 0.26 
--0.46 0.33 -0.53 0.46 -0.66 0.59 -0.73 0.73 -0.86 0.92 -0.92 1.06 -0.99 1.32 
-0.66 0.79 
--0.66 0.92 -0.73 0.99 -0.79 1.06 -0.79 1.12 -0.79 1.25 -0.86 1.32 -0.86 1.32 
-0.79 1.32 
--0.86 1.39 -0.73 1.39 -0.73 1.39 -0.66 1.25 -0.59 1.25 -0.53 1.19 -0.4 1.12 
-0.33 1.06 
--0.26 0.99 -0.13 0.86 -0.07 0.79 0 0.79 0.07 0.73 0.13 0.73 0.2 0.66 0.26 0.66 
-0.33 0.59 0.4 0.59 0.46 0.59 0.53 0.53 0.53 0.46 0.59 0.46 0.66 0.4 0.66 0.33 
-0.66 0.4 0.73 0.26 0.66 0.26 0.73 0.26 0.73 0.26 0.99 0.26 0.99 0.26 0.99 0.2 
-1.12 0.2 1.12 0.2 1.19 0.2 1.19 0.2 1.25 0.13 1.25 0.13 1.25 0.07 1.25 0.13 
-1.19 0.07 1.12 0 1.12 0.07 2.11 0 1.12 -0.07 1.19 0 1.19 -0.07 1.19 -0.07 
-1.19 -0.07 1.25 -0.13 1.19 -0.13 1.12 -0.07 1.12 -0.13 1.06 -0.13 0.99 -0.13 
0.92 -0.13 
-0.86 -0.13 0.86 -0.13 1.06 -0.13 1.06 -0.13 0.99 -0.2 1.06 -0.07 0.99 -0.13 
1.78 0 
-0.73 0.07 0.73 0.13 0.59 0.2 0.59 0.26 0.59 0.33 0.59 0.46 0.59 0.46 0.53 0.59 
-0.46 0.59 0.46 0.66 0.4 0.59 0.33 0.66 0.33 0.59 0.2 0.66 0.26 0.66 0.2 0.66 
-0.13 0.73 0.13 0.73 0.07 0.73 0 2.05 -0.07 0.59 -0.13 0.79 -0.26 0.79 -0.26 
0.79 
--0.33 0.79 -0.4 0.79 -0.46 0.66 -0.46 0.66 -0.46 0.46 -0.53 0.53 -0.66 0.4 
-0.66 0.4 
--0.73 0.4 -0.79 0.4 -0.79 0.33 -0.73 0.33 -0.66 0.33 -0.59 0.26 -0.59 0.26 
-0.66 0.33 
--0.66 0.33 -0.66 0.33 -0.66 0.4 -0.66 0.4 -0.66 0.46 -0.66 0.4 -0.59 0.4 -0.59 
0.46 
--0.66 0.53 -0.66 0.53 -0.79 0.59 -0.73 0.59 -0.79 0.59 -0.79 0.59 -0.79 0.59 
-0.73 0.59 
--0.79 0.53 -0.66 0.46 -0.66 0.4 -0.73 0.46 -0.73 0.46 -0.79 0.53 -0.79 0.46 
-0.79 0.46 
--0.79 0.46 -0.79 0.46 -0.66 0.4 -0.66 0.46 -0.66 0.33 -0.73 0.53 -0.73 0.46 
-0.79 0.46 
--0.73 0.46 -0.79 0.53 -0.79 0.46 -0.79 0.46 -0.73 0.4 -0.73 0.33 -0.73 0.33 
-0.59 0.26 
--0.66 0.26 -0.73 0.26 -0.73 0.26 -0.79 0.26 -0.79 0.26 -0.79 0.26 -0.86 0.33 
-0.79 0.26 
--0.79 0.33 -0.79 0.26 -0.73 0.33 -0.79 0.33 -0.79 0.4 -0.79 0.46 -0.86 0.46 
-0.86 0.53 
--0.92 0.53 -0.86 0.59 -0.86 0.59 -0.86 0.66 -0.79 0.59 -0.73 0.59 -0.66 0.66 
-0.73 0.66 
--0.66 0.66 -0.66 0.73 -0.73 0.79 -0.66 0.79 -0.66 0.79 -0.66 0.86 -0.59 0.79 
-0.59 0.73 
--0.53 0.73 -0.46 0.66 -0.4 0.59 -0.53 0.73 -0.46 0.73 -0.46 0.73 -0.46 0.73 
-0.46 0.79 
--0.4 0.73 -0.33 0.73 -0.4 0.73 -0.26 0.66 -0.26 0.73 -0.26 0.73 -0.26 0.79 
-0.26 0.86 
--0.26 0.86 -0.2 0.92 -0.2 0.92 -0.2 0.92 -0.2 0.79 -0.07 0.79 -0.13 0.73 -0.07 
0.73 
--0.07 0.73 -0.07 0.66 0 2.24 0.07 0.66 0.07 0.73 0.13 0.59 0.07 0.66 0.13 0.66 
-0.13 0.73 0.2 0.79 0.2 0.79 0.2 0.79 0.26 0.86 0.26 0.79 0.26 0.79 0.26 0.73 f*
-1.98 w
-1 J
-K
-1392.38 817.67 0.33 0.73 0.26 0.66 0.4 0.73 0.4 0.79 0.46 0.79 0.53 0.86 0.59 
0.79 
-0.53 0.86 0.59 0.79 0.66 0.86 0.53 0.59 0.53 0.66 0.53 0.73 0.66 0.73 0.59 
0.79 
-0.66 0.79 0.66 0.86 0.66 0.92 0.66 0.86 0.59 0.86 0.59 0.79 0.53 0.86 0.46 
0.79 
-0.46 0.79 0.33 0.79 0.4 0.79 0.33 0.86 0.33 0.86 0.26 0.92 0.33 0.92 0.26 0.99 
-0.2 0.99 0.26 0.99 0.26 0.99 0.2 0.99 0.2 0.99 0.2 0.99 0.26 0.92 0.2 0.99 
-0.26 1.06 0.33 1.12 0.26 1.12 0.33 1.19 0.26 1.19 0.33 1.19 0.26 1.19 0.33 
1.19 
-0.26 1.06 0.2 1.06 0.2 0.99 0.2 0.86 0.13 0.86 0.13 1.06 0.13 1.06 0 0.99 
-0 0.99 0 0.92 -0.13 0.86 -0.07 0.79 -0.13 0.79 -0.13 0.73 -0.13 0.66 -0.13 
0.59 
--0.13 0.59 -0.13 0.66 -0.13 0.73 -0.13 0.79 -0.2 0.79 -0.13 0.86 -0.2 0.92 
-0.13 0.86 
--0.2 0.92 -0.2 0.99 -0.13 0.99 -0.2 0.86 -0.2 0.99 -0.2 0.99 -0.13 1.06 -0.26 
1.19 
--0.2 1.19 -0.2 1.19 -0.2 1.19 -0.2 1.19 -0.13 1.19 -0.2 1.12 -0.13 1.06 -0.13 
0.99 
--0.07 0.92 -0.13 1.06 -0.07 0.99 -0.07 1.06 -0.07 0.99 0 1.06 0.07 0.99 0.07 
0.99 
-0.07 0.92 0.07 0.92 0.13 0.86 0.2 0.86 0.2 0.86 0.2 0.79 0.2 0.92 0.26 0.86 
-0.26 0.99 0.33 0.92 0.33 0.92 0.26 0.92 0.33 0.86 0.26 0.79 0.26 0.73 0.26 
0.66 
-0.2 0.59 0.2 0.59 0.2 0.53 0.2 0.53 0.26 0.59 0.26 0.53 0.4 0.59 0.4 0.66 
-0.46 0.66 0.59 0.73 0.66 0.86 0.53 0.59 0.53 0.66 0.59 0.73 0.66 0.79 0.79 
0.86 
-0.79 0.99 0.86 0.92 0.92 1.06 0.92 1.06 0.99 1.06 0.99 0.99 0.92 1.06 0.99 
0.99 
-0.92 0.99 0.99 0.99 0.92 0.92 0.79 0.79 0.86 0.86 0.92 0.79 0.86 0.86 0.92 
0.79 
-0.99 0.86 0.99 0.86 0.99 0.86 0.99 0.86 0.99 0.86 0.99 0.79 0.99 0.86 0.99 
0.73 
-0.99 0.73 0.92 0.73 0.86 0.66 0.86 0.66 0.92 0.59 0.92 0.73 1.06 0.66 0.99 
0.73 
-1.06 0.66 1.06 0.73 1.06 0.66 1.12 0.73 1.06 0.66 1.12 0.66 0.99 0.59 1.06 
0.59 
-0.99 0.59 0.92 0.53 0.86 0.46 0.86 0.46 0.79 0.4 0.99 0.59 1.06 0.46 0.99 0.53 
-1.06 0.46 0.99 0.4 0.99 0.4 0.92 0.33 0.92 0.26 0.79 0.2 0.79 0.13 0.73 0.07 
-0.66 0 0.59 -0.07 0.59 -0.07 0.66 -0.2 0.53 -0.2 0.59 -0.26 0.46 -0.26 0.46 
-0.33 
-0.33 -0.4 0.33 -0.4 0.2 -0.33 0.07 -0.4 0.07 -0.4 -0.07 -0.4 -0.13 -0.46 -0.33 
-0.53 
--0.4 -0.53 -0.46 -0.59 -0.53 -0.59 -0.66 -0.59 -0.59 -0.59 -0.66 -0.53 -0.59 
-0.66 -0.59 -0.46 
--0.53 -0.59 -0.59 -0.59 -0.66 -0.66 -0.66 -0.66 -0.66 -0.73 -0.66 -0.73 -0.66 
-0.73 -0.66 -0.73 
--0.59 -0.73 -0.59 -0.66 -0.59 -0.73 -0.59 -0.66 -0.59 -0.73 -0.59 -0.79 -0.59 
-0.79 -0.66 -0.79 
--0.59 -0.79 -0.59 -0.79 -0.59 -0.79 -0.53 -0.73 -0.53 -0.66 -0.46 -0.66 -0.4 
-0.59 -0.53 -0.73 
--0.46 -0.66 -0.46 -0.66 -0.4 -0.66 -0.46 -0.66 -0.33 -0.66 -0.33 -0.59 -0.33 
-0.59 -0.2 -0.53 
--0.2 -0.53 -0.26 -0.66 -0.2 -0.73 -0.13 -0.73 -0.13 -0.86 -0.07 -0.79 -0.07 
-0.79 -0.07 -0.79 
-0 -0.79 0 -0.73 0.07 -0.86 0 -0.86 0.13 -0.92 0.07 -0.86 0.13 -0.86 0.13 -0.73 
-0.2 -0.73 0.2 -0.59 0.26 -0.66 0.26 -0.53 0.33 -0.59 0.4 -0.46 0.4 -0.4 0.46 
-0.33 
-0.46 -0.26 0.46 -0.13 0.59 -0.13 0.66 -0.07 0.73 0.07 0.79 0.13 0.86 0.13 0.86 
0.26 
-0.92 0.33 0.66 0.26 0.66 0.26 0.79 0.33 0.79 0.33 0.86 0.4 0.92 0.4 0.99 0.46 
-0.92 0.4 0.99 0.4 0.99 0.4 0.92 0.4 0.99 0.33 0.79 0.33 0.86 0.33 0.92 0.26 
-0.99 0.33 0.99 0.26 1.06 0.33 1.12 0.26 1.06 0.26 1.12 0.26 1.12 0.2 1.06 0.26 
-1.06 0.2 1.06 0.13 0.99 0.13 1.06 0.2 1.06 0.13 1.12 0.07 1.12 0.13 1.25 0.13 
-1.25 0.07 1.25 0.07 1.25 0.07 1.32 0 1.25 0.07 1.25 0 1.19 -0.07 1.19 0 
-1.12 -0.07 0.99 0 1.06 -0.07 1.12 -0.07 1.12 -0.13 1.19 -0.07 1.19 -0.2 1.32 
-0.13 
-1.32 -0.2 1.32 -0.2 1.39 -0.26 1.39 -0.26 1.39 -0.26 1.39 -0.33 1.39 -0.33 
1.39 -0.4 
-1.39 -0.4 1.19 -0.33 1.19 -0.33 1.25 -0.4 1.25 -0.4 1.39 -0.46 1.39 -0.46 1.39 
-0.46 
-1.45 -0.53 1.45 -0.59 1.45 -0.53 1.45 -0.59 1.45 -0.59 1.39 -0.53 1.39 -0.59 
1.25 -0.59 
-1.25 -0.53 1.19 -0.59 1.12 -0.53 1.06 -0.53 0.99 -0.53 1.32 -0.73 1.32 -0.79 
1.19 -0.79 
-1.19 -0.79 1.12 -0.79 1.12 -0.79 0.99 -0.86 0.92 -0.79 0.86 -0.73 0.79 -0.73 
0.73 -0.66 
-0.59 -0.66 0.59 -0.59 0.53 -0.53 0.66 -0.73 0.66 -0.73 0.66 -0.66 0.66 -0.59 
0.66 -0.59 
-0.59 -0.53 0.66 -0.46 0.59 -0.33 0.59 -0.26 0.66 -0.26 0.53 -0.13 0.59 -0.07 
0.73 -0.07 
-0.73 0 0.79 0.07 0.86 0.13 0.92 0.13 0.92 0.2 0.99 0.26 0.99 0.26 0.99 0.33 
-0.99 0.4 0.92 0.33 0.99 0.4 0.99 0.46 1.06 0.46 1.12 0.53 1.12 0.59 1.06 0.53 
-1.12 0.59 1.06 0.59 0.99 0.59 0.92 0.53 0.79 0.53 0.73 0.53 0.66 0.46 0.66 
0.53 
-0.59 0.53 0.53 0.59 0.4 0.53 0.4 0.59 0.26 0.66 0.26 0.66 0.13 0.73 0.13 0.73 
-0.07 0.73 0.07 0.79 0 0.79 0.07 0.79 0 0.86 -0.07 0.92 0 0.99 -0.07 1.12 
--0.07 1.12 -0.07 1.19 -0.13 1.19 -0.13 1.25 -0.2 1.19 -0.2 1.19 -0.26 1.12 
-0.26 1.12 
--0.26 1.06 -0.33 1.06 -0.4 1.06 -0.46 1.12 -0.46 1.06 -0.46 1.12 -0.53 1.12 
-0.59 1.06 
--0.53 1.12 -0.59 0.99 -0.53 0.92 -0.46 0.92 -0.53 0.79 -0.4 0.79 -0.4 0.66 
-0.53 0.92 
--0.46 0.92 -0.46 0.79 -0.33 0.79 -0.33 0.79 -0.2 0.66 -0.13 0.59 -0.07 0.59 
0.07 0.46 
-0.07 0.4 0.2 0.4 0.26 0.33 0.4 0.4 0.4 0.33 0.53 0.26 0.59 0.26 0.59 0.2 
-0.66 0.2 0.66 0.07 0.66 0.07 0.73 0.07 0.73 0 0.86 -0.07 0.86 -0.13 0.92 -0.2 
-0.92 -0.26 0.92 -0.26 0.86 -0.33 0.92 -0.4 0.79 -0.4 0.59 -0.33 0.66 -0.33 
0.59 -0.46 
-0.73 -0.46 0.66 -0.53 0.73 -0.59 0.79 -0.59 0.79 -0.73 0.79 -0.73 0.79 -0.79 
0.79 -0.79 
-0.79 -0.79 0.79 -0.92 0.79 -0.92 0.66 -0.73 0.66 -0.79 0.73 -0.86 0.73 -0.86 
0.79 -0.99 
-0.79 -0.99 0.79 -1.06 0.86 -1.06 0.79 -1.12 0.86 -1.12 0.79 -1.12 0.79 -1.12 
0.73 -1.12 
-0.73 -1.06 0.66 -1.06 0.59 -0.99 0.66 -0.99 0.53 -0.99 0.59 -1.06 0.59 -1.06 
0.53 -1.06 
-0.53 -1.12 0.53 -1.12 0.46 -1.12 0.46 -1.19 0.46 -1.12 0.4 -1.12 0.4 -1.12 0.4 
-1.12 
-0.33 -1.06 0.26 -1.06 0.33 -0.99 0.26 -0.92 0.2 -0.99 0.26 -0.92 0.2 -0.99 
0.26 -0.99 
-0.2 -0.99 0.2 -1.06 0.26 -1.12 0.13 -1.12 0.2 -1.12 0.13 -1.12 0.13 -1.12 0.13 
-1.06 
-0.07 -1.12 0.07 -0.99 0 -1.06 0 -0.99 -0.07 -0.99 -0.07 -0.99 -0.07 -0.99 
-0.13 -0.99 
--0.13 -1.06 -0.2 -1.12 -0.26 -1.19 -0.26 -1.12 -0.33 -1.25 -0.4 -1.19 -0.4 
-1.19 -0.46 -1.25 
--0.46 -1.19 -0.53 -1.19 -0.53 -1.12 -0.53 -1.12 -0.59 -1.19 -0.59 -0.99 -0.59 
-1.06 -0.66 -1.12 
--0.66 -1.12 -0.73 -1.19 -0.79 -1.19 -0.86 -1.25 -0.92 -1.19 -0.86 -1.25 -0.99 
-1.25 -0.92 -1.25 
--0.99 -1.19 -0.92 -1.19 -0.99 -1.12 -0.92 -1.06 -0.99 -1.06 -0.92 -0.99 -0.92 
-0.99 -0.92 -0.92 
--0.99 -0.92 -0.99 -0.86 -0.99 -0.92 -1.06 -0.92 -1.12 -0.92 -1.06 -0.92 -1.12 
-0.86 -1.12 -0.86 
--1.06 -0.86 -1.06 -0.86 -1.06 -0.73 -0.99 -0.79 -0.99 -0.66 -0.92 -0.66 -0.86 
-0.59 -0.79 -0.59 
--0.79 -0.59 -1.12 -0.79 -1.12 -0.73 -1.06 -0.79 -0.99 -0.66 -0.99 -0.73 -0.92 
-0.59 -0.86 -0.59 
--0.73 -0.53 -0.66 -0.4 -0.53 -0.4 -0.46 -0.26 -0.33 -0.2 -0.26 -0.13 -0.2 
-0.13 -0.2 -0.13 
--0.13 -0.07 -0.07 -0.13 -0.07 -0.07 -0.07 -0.2 0 -0.2 0 -0.2 0.07 -0.33 0 
-0.33 
-0.07 -0.4 0.07 -0.53 0 -0.59 0.07 -0.59 0 -0.73 0 -0.79 0 -0.86 0 -0.99 
-0 -1.06 -0.07 -1.19 0 -1.19 -0.07 -1.32 -0.13 -1.25 -0.07 -1.32 -0.13 -1.25 
-0.07 -1.32 
--0.13 -1.25 -0.2 -1.19 -0.13 -1.25 -0.2 -1.19 -0.2 -1.25 -0.2 -1.25 -0.26 
-1.25 -0.26 -1.32 
--0.33 -1.32 -0.33 -1.32 -0.4 -1.39 -0.33 -1.32 -0.4 -1.32 -0.46 -1.25 -0.4 
-1.25 -0.4 -1.19 
--0.46 -1.12 -0.46 -1.06 -0.4 -1.06 -0.53 -1.06 -0.46 -0.99 -0.53 -1.06 -0.59 
-1.06 -0.59 -1.12 
--0.66 -1.06 -0.66 -1.12 -0.73 -1.12 -0.73 -1.12 -0.73 -1.06 -0.79 -1.06 -0.73 
-0.99 -0.79 -0.99 
--0.79 -0.99 -0.79 -0.92 -0.73 -0.92 -0.86 -0.92 -0.86 -0.92 -0.86 -0.92 -0.92 
-0.99 -0.99 -0.99 
--0.92 -0.99 -1.06 -0.99 -0.99 -1.06 -0.99 -0.99 -0.92 -0.99 -0.92 -0.92 -0.86 
-0.86 -0.86 -0.86 
--0.73 -0.79 -0.73 -0.73 -0.59 -0.73 -0.79 -0.86 -0.73 -0.86 -0.73 -0.86 -0.59 
-0.86 -0.59 -0.86 
--0.53 -0.79 -0.46 -0.79 -0.4 -0.73 -0.33 -0.73 -0.26 -0.66 -0.26 -0.66 -0.2 
-0.59 -0.26 -0.73 
--0.2 -0.73 -0.13 -0.79 -0.2 -0.79 -0.13 -0.86 -0.13 -0.86 -0.07 -0.79 0 -0.79 
0 -0.79 
-0 -0.73 0 -0.73 0.07 -0.79 0.13 -0.79 0.13 -0.86 0.2 -0.86 0.2 -0.92 0.2 -0.86 
-0.26 -0.79 0.26 -0.73 0.33 -0.79 0.33 -0.73 0.33 -0.73 0.46 -0.79 0.4 -0.86 
0.53 -0.86 
-0.46 -0.79 0.46 -0.86 0.46 -0.79 0.46 -0.73 0.4 -0.73 0.4 -0.79 0.4 -0.73 0.4 
-0.86 
-0.4 -0.86 0.4 -0.92 0.4 -0.92 0.33 -0.92 0.33 -0.92 0.33 -0.92 0.26 -0.92 0.2 
-0.66 
-0.2 -0.73 0.2 -0.73 0.2 -0.79 0.13 -0.86 0.2 -0.86 0.2 -0.99 0.2 -0.92 0.13 
-1.06 
-0.13 -0.99 0.13 -1.06 0.13 -0.99 0.13 -1.06 0.13 -1.12 0.07 -0.92 0.07 -1.06 
0.07 -1.06 
-0.07 -1.12 0.07 -1.19 0.07 -1.19 0.07 -1.25 0 -1.25 0.07 -1.25 0 -1.19 0 -1.25 
-0.07 -1.12 0 -1.06 -0.07 -1.06 0 -0.99 0 -0.92 -0.07 -1.12 0 -1.12 -0.07 -1.12 
--0.13 -1.06 -0.07 -1.06 -0.13 -1.06 -0.13 -0.99 -0.2 -0.86 -0.13 -0.86 -0.2 
-0.79 -0.2 -0.73 
--0.13 -0.73 -0.26 -0.79 -0.33 -0.86 -0.26 -0.86 -0.33 -0.86 -0.33 -0.92 -0.33 
-0.86 -0.33 -0.86 
--0.26 -0.79 -0.2 -0.79 -0.2 -0.73 -0.13 -0.59 -0.07 -0.59 -0.07 -0.66 -0.07 
-0.73 0 -0.79 
-0.07 -0.79 0.13 -0.86 0.13 -0.92 0.13 -0.99 0.26 -0.99 0.26 -1.06 0.26 -1.12 
0.26 -0.86 
-0.26 -0.99 0.33 -0.99 0.33 -1.12 0.4 -1.19 0.46 -1.25 0.46 -1.25 0.46 -1.39 
0.53 -1.39 
-0.53 -1.32 0.59 -1.39 0.53 -1.39 0.59 -1.25 0.59 -1.32 0.59 -1.25 0.59 -1.19 
0.53 -1.06 
-0.53 -1.12 0.59 -1.06 0.59 -1.12 0.66 -1.19 0.73 -1.12 0.73 -1.19 0.73 -1.12 
0.73 -1.19 
-0.79 -1.12 0.86 -1.12 0.79 -1.12 0.79 -1.06 0.79 -0.99 0.86 -0.99 0.79 -0.92 
0.79 -0.92 
-0.79 -0.86 0.86 -0.86 0.86 -0.86 0.92 -0.86 0.92 -0.79 0.99 -0.86 0.99 -0.92 
1.06 -0.86 
-1.12 -0.86 1.12 -0.86 1.12 -0.79 1.19 -0.86 1.12 -0.79 1.12 -0.73 1.12 -0.73 
1.12 -0.66 
-1.12 -0.73 1.06 -0.59 1.06 -0.66 1.12 -0.59 1.12 -0.59 1.12 -0.59 1.19 -0.59 
1.25 -0.66 
-1.25 -0.59 1.32 -0.59 1.39 -0.66 1.39 -0.59 1.39 -0.59 1.39 -0.59 1.39 -0.53 
1.39 -0.53 
-1.32 -0.53 1.32 -0.46 1.32 -0.46 1.32 -0.46 1.25 -0.4 1.19 -0.4 1.19 -0.4 1.25 
-0.33 
-1.25 -0.4 1.32 -0.33 1.39 -0.4 1.39 -0.33 1.45 -0.4 1.45 -0.4 1.52 -0.33 1.45 
-0.4 
-1.52 -0.33 1.52 -0.33 1.45 -0.4 1.52 -0.33 1.39 -0.26 1.45 -0.33 1.39 -0.33 
1.39 -0.26 
-1.39 -0.33 1.39 -0.26 1.39 -0.33 1.45 -0.26 1.45 -0.33 1.52 -0.33 1.52 -0.33 
1.58 -0.33 
-1.65 -0.33 1.58 -0.33 1.58 -0.33 1.65 -0.33 1.58 -0.33 1.52 -0.33 1.52 -0.33 
1.45 -0.33 
-1.39 -0.33 1.32 -0.26 1.32 -0.33 1.25 -0.26 1.19 -0.26 1.45 -0.33 1.39 -0.33 
1.45 -0.4 
-1.45 -0.33 1.39 -0.33 1.45 -0.4 1.39 -0.33 1.39 -0.4 1.32 -0.33 1.25 -0.4 1.25 
-0.33 
-1.12 -0.33 1.12 -0.33 0.99 -0.33 0.99 -0.33 0.92 -0.26 1.06 -0.33 1.06 -0.33 
0.99 -0.4 
-1.06 -0.33 1.06 -0.4 1.06 -0.4 1.06 -0.46 0.99 -0.4 0.99 -0.4 0.99 -0.46 0.86 
-0.4 
-0.86 -0.46 0.86 -0.4 0.79 -0.46 0.79 -0.4 0.79 -0.53 0.86 -0.46 0.79 -0.53 
0.86 -0.59 
-0.86 -0.59 0.86 -0.59 0.79 -0.66 0.79 -0.66 0.73 -0.59 0.66 -0.66 0.66 -0.59 
0.59 -0.59 
-0.53 -0.59 0.59 -0.73 0.53 -0.73 0.53 -0.79 0.53 -0.79 0.46 -0.86 0.46 -0.86 
0.4 -0.86 
-0.33 -0.86 0.33 -0.86 0.2 -0.73 0.26 -0.79 0.2 -0.73 0.13 -0.86 0.13 -0.86 
0.13 -0.92 
-0.07 -0.99 -0.07 -0.92 -0.07 -0.99 -0.2 -0.92 -0.26 -0.92 -0.33 -0.86 -0.4 
-0.79 -0.4 -0.73 
--0.46 -0.66 -0.53 -0.79 -0.59 -0.73 -0.66 -0.79 -0.73 -0.79 -0.79 -0.73 -0.79 
-0.73 -0.73 -0.66 
--0.79 -0.66 -0.73 -0.59 -0.73 -0.53 -0.59 -0.46 -0.66 -0.46 -0.66 -0.4 -0.73 
-0.46 -0.73 -0.4 
--0.86 -0.4 -0.86 -0.46 -0.86 -0.4 -0.99 -0.33 -0.99 -0.4 -0.99 -0.33 -1.06 
-0.33 -1.12 -0.33 
--1.12 -0.33 -1.06 -0.26 -1.19 -0.33 -1.19 -0.26 -1.32 -0.33 -1.32 -0.26 -1.45 
-0.33 -1.45 -0.26 
--1.45 -0.33 -1.39 -0.26 -1.45 -0.33 -1.32 -0.26 -1.25 -0.2 -1.19 -0.26 -1.06 
-0.2 -0.99 -0.2 
--0.86 -0.13 -1.06 -0.2 -0.92 -0.2 -0.79 -0.13 -0.66 -0.2 -0.59 -0.13 -0.53 
-0.13 -0.33 -0.2 
--0.26 -0.13 -0.2 -0.2 -0.13 -0.2 0 -0.2 0 -0.2 0.07 -0.53 0.13 -0.73 0.2 -0.79 
-0.2 -0.79 0.13 -0.73 0 -0.59 -0.13 -0.26 -0.13 -0.2 -0.2 -0.26 -0.4 -0.13 
-0.46 -0.13 
--0.59 -0.13 -0.73 -0.13 -0.92 -0.07 -0.99 0 -1.12 -0.07 -0.66 0 -0.79 -0.07 
-0.79 0 
--0.92 0 -0.99 0 -1.12 -0.07 -1.12 0 -1.25 0 -1.32 -0.07 -1.32 0 -1.39 -0.07 
--1.45 0 -1.39 0 -1.45 -0.07 -1.45 0 -1.52 -0.07 -1.45 0 -1.45 -0.07 -1.39 
-0.07 
--1.45 0 -1.45 -0.07 -1.52 -0.07 -1.58 0 -1.58 -0.07 -1.72 -0.07 -1.65 -0.07 
-1.78 -0.07 
--1.72 -0.07 -1.72 -0.07 -1.72 -0.07 -1.65 -0.07 -1.65 -0.07 -1.52 -0.07 -1.52 
-0.07 -1.45 -0.07 
--1.39 -0.07 -1.32 -0.07 -1.25 -0.07 -1.52 -0.07 -1.52 -0.07 -1.45 -0.13 -1.39 
-0.07 -1.45 -0.07 
--1.39 -0.07 -1.32 -0.13 -1.25 -0.07 -1.19 -0.07 -1.19 -0.07 -1.06 -0.07 -0.92 
0 -0.86 -0.07 
--0.79 0 -0.73 -0.07 -0.66 0 -0.92 0 -0.86 0 -0.73 0.07 -0.66 0.07 -0.59 0.07 
--0.46 0.13 -0.26 0.13 -0.26 0.13 -0.07 0.13 -0.07 0.2 0 0.13 0.13 0.2 0.2 0.26 
-0.33 0.26 0.46 0.4 0.59 0.4 0.79 0.53 0.99 0.59 1.12 0.73 1.32 0.79 1.52 0.86 
-1.72 0.92 0.99 0.59 1.12 0.59 1.19 0.66 1.25 0.73 1.32 0.73 1.45 0.79 1.52 
0.79 
-1.52 0.86 1.65 0.92 1.65 0.86 1.72 0.99 1.65 0.92 1.72 0.92 1.65 0.92 1.65 
0.86 
-1.65 0.92 1.52 0.86 1.52 0.79 1.39 0.79 1.39 0.73 1.25 0.73 1.25 0.66 1.58 
0.92 
-1.58 0.86 1.45 0.86 1.39 0.79 1.39 0.79 1.32 0.79 1.25 0.73 1.12 0.66 1.12 
0.66 
-0.99 0.59 0.92 0.59 0.86 0.53 0.73 0.46 0.73 0.46 0.59 0.4 0.59 0.33 0.79 0.59 
-0.79 0.53 0.79 0.53 0.66 0.53 0.66 0.4 0.66 0.4 0.53 0.26 0.46 0.2 0.4 0.13 
-0.4 0 0.33 0 0.33 -0.07 0.33 -0.2 0.33 -0.26 0.33 -0.26 0.33 -0.4 0.33 -0.4 
-0.33 -0.4 0.26 -0.4 0.33 -0.46 0.33 -0.53 0.4 -0.59 0.4 -0.66 0.4 -0.66 0.4 
-0.66 
-0.4 -0.73 0.33 -0.59 0.33 -0.66 0.26 -0.59 0.26 -0.66 0.33 -0.66 0.26 -0.66 
0.26 -0.66 
-0.26 -0.59 0.26 -0.53 0.2 -0.53 0.2 -0.4 0.26 -0.4 0.26 -0.33 0.33 -0.33 0.4 
-0.33 
-0.46 -0.33 0.46 -0.2 0.59 -0.2 0.59 -0.13 0.73 -0.07 0.59 0 0.73 0 0.79 0.07 
-0.92 0.07 0.92 0.13 0.99 0.13 1.06 0.13 1.06 0.2 0.99 0.2 0.99 0.26 0.92 0.2 
-0.86 0.2 0.92 0.26 0.86 0.26 0.86 0.26 0.92 0.26 0.92 0.33 0.86 0.33 0.92 0.33 
-0.79 0.33 0.86 0.33 0.73 0.33 0.73 0.33 0.73 0.33 0.79 0.46 0.79 0.4 0.86 0.53 
-0.79 0.46 0.79 0.53 0.79 0.59 0.66 0.53 0.59 0.53 0.46 0.46 0.4 0.46 0.26 0.4 
-0.2 0.4 0.2 0.46 0.13 0.46 0.07 0.4 0 0.53 -0.07 0.46 -0.13 0.46 -0.13 0.46 
--0.2 0.46 -0.26 0.46 -0.33 0.46 -0.33 0.46 -0.4 0.53 -0.46 0.53 -0.59 0.53 
-0.59 0.59 
--0.66 0.59 -0.73 0.59 -0.79 0.53 -0.73 0.59 -0.79 0.53 -0.86 0.46 -0.79 0.46 
-0.66 0.33 
--0.66 0.33 -0.73 0.33 -0.73 0.33 -0.86 0.4 -0.92 0.33 -0.99 0.33 -1.06 0.33 
-1.06 0.33 
--1.19 0.33 -1.19 0.33 -1.25 0.26 -1.25 0.33 -1.32 0.26 -1.32 0.26 -1.39 0.26 
-1.19 0.2 
--1.25 0.2 -1.32 0.26 -1.39 0.2 -1.52 0.2 -1.52 0.26 -1.58 0.2 -1.65 0.26 -1.72 
0.26 
--1.78 0.2 -1.78 0.26 -1.72 0.26 -1.78 0.2 -1.72 0.26 -1.72 0.2 -1.65 0.26 
-1.58 0.2 
--1.58 0.26 -1.52 0.2 -1.45 0.2 -1.52 0.26 -1.45 0.2 -1.45 0.26 -1.45 0.26 
-1.52 0.2 
--1.52 0.26 -1.52 0.26 -1.52 0.26 -1.52 0.33 -1.45 0.26 -1.52 0.26 -1.45 0.26 
-1.39 0.26 
--1.39 0.33 -1.32 0.26 -1.25 0.26 -1.19 0.2 -1.12 0.26 -1.12 0.26 -1.12 0.2 
-1.32 0.33 
--1.39 0.33 -1.32 0.26 -1.32 0.33 -1.39 0.33 -1.39 0.4 -1.39 0.33 -1.39 0.33 
-1.39 0.4 
--1.32 0.33 -1.25 0.33 -1.25 0.4 -1.19 0.33 -1.12 0.33 -1.12 0.26 -1.06 0.33 
-1.06 0.33 
--1.12 0.33 -1.06 0.33 -1.12 0.4 -1.19 0.33 -1.12 0.4 -1.19 0.4 -1.12 0.4 -1.19 
0.4 
--1.12 0.4 -1.06 0.33 -1.06 0.4 -0.99 0.33 -0.92 0.33 -0.92 0.33 -0.86 0.33 
-0.92 0.33 
--0.99 0.4 -0.92 0.33 -0.99 0.4 -0.99 0.4 -0.99 0.4 -0.92 0.4 -0.99 0.4 -0.86 
0.4 
--0.92 0.4 -0.79 0.4 -0.79 0.4 -0.73 0.4 -0.73 0.4 -0.86 0.53 -0.86 0.46 -0.86 
0.53 
--0.86 0.59 -0.86 0.59 -0.92 0.59 -0.86 0.59 -0.86 0.59 -0.79 0.59 -0.79 0.53 
-0.73 0.53 
--0.73 0.46 -0.66 0.53 -0.73 0.46 -0.73 0.53 -0.73 0.53 -0.79 0.53 -0.73 0.53 
-0.79 0.59 
--0.73 0.53 -0.66 0.53 -0.73 0.53 -0.59 0.53 -0.66 0.53 -0.73 0.66 -0.73 0.66 
-0.79 0.73 
--0.79 0.73 -0.73 0.79 -0.79 0.66 -0.73 0.66 -0.66 0.53 -0.59 0.46 -0.53 0.33 
-0.46 0.26 
--0.4 0.2 -0.53 0.07 -0.59 0.07 -0.66 -0.13 -0.79 -0.13 -0.99 -0.26 -1.12 -0.33 
-1.25 -0.46 
--1.39 -0.59 -1.58 -0.59 -1.78 -0.73 -0.99 -0.4 -1.06 -0.46 -1.12 -0.46 -1.25 
-0.46 -1.25 -0.46 
--1.39 -0.53 -1.45 -0.53 -1.58 -0.53 -1.58 -0.53 -1.72 -0.53 -1.72 -0.53 -1.78 
-0.53 -1.78 -0.46 
--1.85 -0.46 -1.85 -0.4 -1.91 -0.33 -1.85 -0.33 -1.85 -0.26 -1.78 -0.26 -1.78 
-0.13 -1.78 -0.13 
--1.78 0 -1.72 0 -1.72 0.07 -1.72 0.2 -1.72 0.2 -1.72 0.26 -1.72 0.4 -1.78 0.4 
--1.78 0.46 -1.78 0.53 -1.78 0.59 -1.85 0.66 -1.78 0.66 -1.78 0.73 -1.72 0.73 
-1.72 0.73 
--1.65 0.79 -1.58 0.79 -1.52 0.73 -1.39 0.79 -1.39 0.73 -1.32 0.73 -1.19 0.73 
-1.12 0.66 
--0.99 0.59 -0.99 0.59 -0.86 0.59 -1.39 0.86 -1.25 0.86 -1.06 0.73 -0.99 0.73 
-0.86 0.66 
--0.73 0.66 -0.59 0.59 -0.59 0.53 -0.46 0.53 -0.4 0.53 -0.33 0.53 -0.33 0.46 
-0.33 0.53 
--0.33 0.53 -0.33 0.59 -0.4 0.66 -0.46 0.73 -0.46 0.79 -0.53 0.79 -0.53 0.86 
-0.59 0.92 
--0.59 0.92 -0.53 0.92 -0.53 0.92 -0.53 0.86 -0.53 0.86 -0.46 0.79 -0.4 0.73 
-0.53 0.92 
--0.46 0.86 -0.4 0.86 -0.46 0.92 -0.4 0.92 -0.33 0.86 -0.4 0.92 -0.26 0.86 
-0.26 0.79 
--0.26 0.79 -0.2 0.79 -0.13 0.73 -0.13 0.73 -0.13 0.79 -0.13 0.79 -0.07 0.86 
-0.07 0.86 
--0.07 0.86 -0.07 0.86 0 0.86 0 0.79 0 0.79 0.07 0.73 0 0.66 0.07 0.86 
-0.13 0.86 0.07 0.79 0.13 0.92 0.13 0.86 0.2 0.86 0.2 0.79 0.2 0.73 0.2 0.73 
-0.2 0.66 0.33 0.86 0.33 0.79 0.33 0.86 0.4 0.86 0.4 0.79 0.33 0.73 0.33 0.59 
-0.26 0.53 0.26 0.66 0.26 0.59 0.13 0.46 0.07 0.53 0.07 0.4 -0.07 0.33 -0.13 
0.33 
--0.2 0.4 -0.33 0.46 -0.33 0.46 -0.46 0.46 -0.46 0.53 -0.46 0.46 -0.46 0.53 
-0.53 0.59 
--0.59 0.59 -0.53 0.66 -0.46 0.66 -0.46 0.66 -0.4 0.59 -0.26 0.66 -0.26 0.66 
-0.2 0.73 
--0.2 0.73 -0.07 0.66 -0.07 0.66 0 0.59 0.07 0.53 0 0.46 0.13 0.46 0.07 0.46 
-0.07 0.4 0 0.4 -0.07 0.33 -0.13 0.26 -0.2 0.13 -0.4 0.2 -0.66 0.2 -0.73 0.07 
--0.86 0.13 -0.79 0.07 -0.73 0.07 -0.59 0.13 -0.59 0.13 -0.59 0.2 -0.46 0.26 
-0.46 0.26 
--0.33 0.26 -0.33 0.33 -0.4 0.4 -0.33 0.4 -0.4 0.4 -0.4 0.4 -0.46 0.26 -0.26 
0.2 
--0.26 0.2 -0.4 0.26 -0.46 0.33 -0.53 0.46 -0.66 0.59 -0.73 0.73 -0.86 0.92 
-0.92 1.06 
--0.99 1.32 -0.66 0.79 -0.66 0.92 -0.73 0.99 -0.79 1.06 -0.79 1.12 -0.79 1.25 
-0.86 1.32 
--0.86 1.32 -0.79 1.32 -0.86 1.39 -0.73 1.39 -0.73 1.39 -0.66 1.25 -0.59 1.25 
-0.53 1.19 
--0.4 1.12 -0.33 1.06 -0.26 0.99 -0.13 0.86 -0.07 0.79 0 0.79 0.07 0.73 0.13 
0.73 
-0.2 0.66 0.26 0.66 0.33 0.59 0.4 0.59 0.46 0.59 0.53 0.53 0.53 0.46 0.59 0.46 
-0.66 0.4 0.66 0.33 0.66 0.4 0.73 0.26 0.66 0.26 0.73 0.26 0.73 0.26 0.99 0.26 
-0.99 0.26 0.99 0.2 1.12 0.2 1.12 0.2 1.19 0.2 1.19 0.2 1.25 0.13 1.25 0.13 
-1.25 0.07 1.25 0.13 1.19 0.07 1.12 0 1.12 0.07 1.06 0 1.06 0 1.12 -0.07 
-1.19 0 1.19 -0.07 1.19 -0.07 1.19 -0.07 1.25 -0.13 1.19 -0.13 1.12 -0.07 1.12 
-0.13 
-1.06 -0.13 0.99 -0.13 0.92 -0.13 0.86 -0.13 0.86 -0.13 1.06 -0.13 1.06 -0.13 
0.99 -0.2 
-1.06 -0.07 0.99 -0.13 0.92 0 0.86 0 0.73 0.07 0.73 0.13 0.59 0.2 0.59 0.26 
-0.59 0.33 0.59 0.46 0.59 0.46 0.53 0.59 0.46 0.59 0.46 0.66 0.4 0.59 0.33 0.66 
-0.33 0.59 0.2 0.66 0.26 0.66 0.2 0.66 0.13 0.73 0.13 0.73 0.07 0.73 0 0.73 
-0 0.66 0 0.66 -0.07 0.59 -0.13 0.79 -0.26 0.79 -0.26 0.79 -0.33 0.79 -0.4 0.79 
--0.46 0.66 -0.46 0.66 -0.46 0.46 -0.53 0.53 -0.66 0.4 -0.66 0.4 -0.73 0.4 
-0.79 0.4 
--0.79 0.33 -0.73 0.33 -0.66 0.33 -0.59 0.26 -0.59 0.26 -0.66 0.33 -0.66 0.33 
-0.66 0.33 
--0.66 0.4 -0.66 0.4 -0.66 0.46 -0.66 0.4 -0.59 0.4 -0.59 0.46 -0.66 0.53 -0.66 
0.53 
--0.79 0.59 -0.73 0.59 -0.79 0.59 -0.79 0.59 -0.79 0.59 -0.73 0.59 -0.79 0.53 
-0.66 0.46 
--0.66 0.4 -0.73 0.46 -0.73 0.46 -0.79 0.53 -0.79 0.46 -0.79 0.46 -0.79 0.46 
-0.79 0.46 
--0.66 0.4 -0.66 0.46 -0.66 0.33 -0.73 0.53 -0.73 0.46 -0.79 0.46 -0.73 0.46 
-0.79 0.53 
--0.79 0.46 -0.79 0.46 -0.73 0.4 -0.73 0.33 -0.73 0.33 -0.59 0.26 -0.66 0.26 
-0.73 0.26 
--0.73 0.26 -0.79 0.26 -0.79 0.26 -0.79 0.26 -0.86 0.33 -0.79 0.26 -0.79 0.33 
-0.79 0.26 
--0.73 0.33 -0.79 0.33 -0.79 0.4 -0.79 0.46 -0.86 0.46 -0.86 0.53 -0.92 0.53 
-0.86 0.59 
--0.86 0.59 -0.86 0.66 -0.79 0.59 -0.73 0.59 -0.66 0.66 -0.73 0.66 -0.66 0.66 
-0.66 0.73 
--0.73 0.79 -0.66 0.79 -0.66 0.79 -0.66 0.86 -0.59 0.79 -0.59 0.73 -0.53 0.73 
-0.46 0.66 
--0.4 0.59 -0.53 0.73 -0.46 0.73 -0.46 0.73 -0.46 0.73 -0.46 0.79 -0.4 0.73 
-0.33 0.73 
--0.4 0.73 -0.26 0.66 -0.26 0.73 -0.26 0.73 -0.26 0.79 -0.26 0.86 -0.26 0.86 
-0.2 0.92 
--0.2 0.92 -0.2 0.92 -0.2 0.79 -0.07 0.79 -0.13 0.73 -0.07 0.73 -0.07 0.73 
-0.07 0.66 
-0 0.73 0 0.79 0 0.73 0.07 0.66 0.07 0.73 0.13 0.59 0.07 0.66 0.13 0.66 
-0.13 0.73 0.2 0.79 0.2 0.79 0.2 0.79 0.26 0.86 0.26 0.79 0.26 0.79 0.26 0.73 H
-S
-176 0 r5
-1408.61 587.86 0.79 0.07 0.79 0 0.86 0.07 0.92 0.07 0.86 0 0.92 0.07 3.3 0 
-0.79 0.07 7.19 0 0.66 0.07 1.39 0 0.73 0.07 0.73 0.07 0.73 0.07 0.66 0.07 
-0.59 0.13 0.59 0.13 0.59 0.13 0.66 0.26 0.66 0.33 0.73 0.33 0.73 0.4 0.66 0.4 
-0.73 0.4 0.66 0.33 0.73 0.33 0.66 0.33 0.73 0.26 0.79 0.33 0.86 0.33 0.86 0.26 
-0.79 0.26 0.73 0.26 0.73 0.26 0.66 0.26 0.66 0.26 0.66 0.26 0.66 0.33 0.66 
0.26 
-0.59 0.33 0.46 0.26 0.53 0.2 0.53 0.33 0.53 0.4 0.53 0.4 0.4 0.4 0.33 0.53 
-0.26 0.46 0.07 0.46 0.07 0.53 0 1.25 -0.07 0.66 -0.13 0.59 -0.13 0.59 -0.13 
0.53 
--0.2 0.53 -0.2 0.59 -0.2 0.53 -0.26 0.59 -0.26 0.53 -0.26 0.59 -0.26 0.53 -0.2 
0.53 
--0.26 0.59 -0.26 0.66 -0.26 0.66 -0.26 0.73 -0.2 0.79 -0.26 0.66 -0.2 0.73 
-0.13 0.59 
--0.26 0.79 -0.2 0.86 -0.13 0.79 -0.07 0.73 0 0.59 0.07 0.4 0.07 0.2 0.07 0.13 
-0.2 0.13 0.13 0.13 0.26 0 0.2 0.07 0.26 -0.07 0.26 -0.07 0.33 -0.07 0.26 -0.13 
-0.53 -0.2 0.53 -0.33 0.66 -0.4 0.66 -0.4 0.53 -0.46 0.53 -0.4 0.46 -0.46 0.53 
-0.4 
-0.46 -0.46 0.53 -0.4 0.46 -0.33 0.53 -0.2 0.53 -0.07 0.66 0 0.73 0.07 0.73 
0.07 
-0.73 0.13 0.73 0.07 0.53 0.07 0.59 0.07 2.38 0 0.53 -0.07 1.12 0 0.66 -0.07 
-0.73 -0.07 0.66 -0.13 0.53 -0.13 0.53 -0.13 0.46 -0.2 0.53 -0.26 0.46 -0.4 
0.53 -0.4 
-0.46 -0.4 0.4 -0.46 0.46 -0.4 0.46 -0.53 0.53 -0.53 0.53 -0.46 0.59 -0.33 0.53 
-0.26 
-0.59 -0.13 1.32 0 0.66 0.13 0.59 0.07 0.59 0.07 0.53 0.07 0.53 0.07 0.59 -0.07 
-0.46 -0.13 0.46 -0.13 0.33 -0.26 0.33 -0.33 0.26 -0.4 0.33 -0.53 0.26 -0.59 
0.2 -0.59 
-0.2 -0.59 0.13 -0.46 0.13 -0.53 0.13 -0.53 0.13 -0.59 0.13 -0.53 0.13 -0.59 
0.07 -0.46 
-0.07 -0.53 0.07 -0.59 0.07 -0.59 0.13 -0.53 0.07 -0.4 0.13 -0.2 0.13 0 0.13 
0.2 
-0.2 0.4 0.26 0.59 0.26 0.73 0.26 0.79 0.26 0.73 0.2 0.59 0.26 0.59 0.2 0.66 
-0.26 0.66 0.26 0.66 0.26 0.66 0.26 0.59 0.26 0.53 0.26 0.59 0.26 0.59 0.33 
0.59 
-0.33 0.53 0.33 0.59 0.4 0.53 0.33 0.4 0.4 0.4 0.33 0.4 0.46 0.33 0.46 0.33 
-0.53 0.33 0.59 0.26 0.53 0.2 0.53 0.2 0.53 0.13 0.46 0.13 0.59 0.13 0.59 0.07 
-0.59 0.07 0.59 0.07 1.19 0 0.53 -0.07 0.46 0 0.53 -0.07 0.59 -0.13 0.53 -0.13 
-0.59 -0.13 0.53 -0.2 0.53 -0.13 0.53 -0.26 0.46 -0.2 0.53 -0.26 0.53 -0.33 
0.59 -0.33 
-0.59 -0.33 0.53 -0.4 0.53 -0.33 0.53 -0.33 0.46 -0.33 0.53 -0.4 0.53 -0.4 0.53 
-0.4 
-0.46 -0.4 0.46 -0.4 0.4 -0.4 0.4 -0.4 0.4 -0.46 0.4 -0.46 0.33 -0.4 0.26 -0.33 
-0.2 -0.26 0.2 -0.07 0.13 0.13 0.13 0.33 0.13 0.46 0.2 0.46 0.2 0.46 0.2 0.26 
-0.2 0.2 0.26 0.2 0.33 0.2 0.4 0.13 0.4 0.13 0.46 0.13 0.46 0.07 0.53 0.07 
-0.53 0.07 0.66 0 0.73 0.07 1.45 0 0.66 0.07 1.39 0 0.73 0.07 0.73 0.07 
-0.79 0.07 0.79 0.07 0.73 0.07 0.73 0.13 0.66 0.13 0.66 0.13 0.66 0.2 0.73 0.2 
-0.73 0.2 0.73 0.26 0.66 0.2 0.66 0.2 0.59 0.2 0.53 0.2 0.53 0.2 0.59 0.2 
-0.59 0.26 0.59 0.2 0.59 0.2 0.53 0.26 0.53 0.2 0.53 0.26 0.59 0.2 0.59 0.26 
-0.59 0.2 0.59 0.13 0.59 0 0.53 -0.07 0.46 -0.2 0.46 -0.26 0.4 -0.46 0.46 -0.59 
-0.46 -0.73 0.46 -0.79 0.4 -0.86 0.4 -0.79 0.4 -0.86 0.33 -0.66 0.33 -0.73 0.33 
-0.79 
-0.4 -0.79 0.4 -0.86 0.4 -0.86 0.4 -0.86 0.4 -0.79 0.33 -0.79 0.4 -0.79 0.26 
-0.66 
-0.33 -0.66 0.26 -0.73 0.33 -0.79 0.4 -0.73 0.33 -0.86 0.33 -0.79 0.33 -0.79 
0.26 -0.79 
-0.33 -0.73 0.26 -0.73 0.26 -0.73 0.26 -0.73 0.26 -0.73 0.26 -0.79 0.26 -0.79 
0.26 -0.79 
-0.26 -0.86 0.26 -0.79 0.2 -0.79 0.26 -0.79 0.2 -0.73 0.26 -0.66 0.2 -0.73 0.26 
-0.73 
-0.26 -0.79 0.26 -0.86 0.26 -0.79 0.26 -0.79 0.26 -0.79 0.26 -0.73 0.26 -0.66 
0.2 -0.59 
-0.2 -0.59 0.13 -0.46 0.13 -0.53 0.13 -0.46 0.07 -0.46 0 -0.53 -0.07 -0.53 
-0.13 -0.46 
--0.26 -0.53 -0.26 -0.46 -0.4 -0.53 -0.4 -0.4 -0.4 -0.4 -0.53 -0.46 -0.53 -0.53 
-0.73 -0.53 
--0.79 -0.53 -0.86 -0.66 -0.99 -0.59 -1.06 -0.66 -1.19 -0.66 -1.19 -0.66 -1.25 
-0.73 -1.39 -0.66 
--1.39 -0.73 -0.92 -0.4 -1.06 -0.53 -1.06 -0.46 -1.12 -0.46 -1.19 -0.53 -1.25 
-0.53 -1.32 -0.59 
--1.39 -0.53 -1.39 -0.59 -1.52 -0.59 -1.52 -0.59 -1.52 -0.59 -1.58 -0.53 -1.52 
-0.59 -1.58 -0.53 
--1.52 -0.53 -1.58 -0.53 -1.52 -0.46 -1.45 -0.46 -1.45 -0.46 -1.52 -0.46 -1.39 
-0.4 -1.45 -0.4 
--1.52 -0.4 -1.45 -0.4 -1.58 -0.33 -1.52 -0.4 -1.65 -0.33 -1.65 -0.33 -1.65 
-0.33 -1.72 -0.33 
--1.78 -0.33 -1.78 -0.33 -1.78 -0.26 -1.72 -0.26 -1.78 -0.26 -1.78 -0.2 -1.72 
-0.26 -1.72 -0.2 
--1.72 -0.13 -1.65 -0.2 -1.65 -0.13 -1.58 -0.13 -1.65 -0.13 -1.52 -0.13 -1.52 
-0.07 -1.58 -0.07 
--1.58 -0.07 -1.58 -0.07 -1.65 -0.07 -1.72 -0.07 -1.72 -0.07 -3.56 0 -1.78 
-0.07 -1.72 0 
--1.78 0.07 -3.5 0 -1.65 0.07 -1.65 0.07 -1.58 0 -1.52 0.07 -1.45 0.07 -1.45 
0.13 
--1.39 0.07 -1.32 0.07 -1.25 0.13 -1.72 0.13 -1.65 0.2 -1.58 0.2 -1.65 0.2 
-1.58 0.2 
--1.58 0.26 -1.58 0.33 -1.58 0.33 -1.52 0.33 -1.45 0.33 -1.39 0.4 -1.39 0.4 
-1.25 0.46 
--1.19 0.46 -1.19 0.46 -1.06 0.46 -0.99 0.46 -0.99 0.53 -0.92 0.53 -0.92 0.59 
-0.99 0.59 
--0.92 0.66 -0.92 0.73 -0.92 0.73 -0.92 0.79 -0.92 0.86 -0.92 0.86 -0.92 0.86 
-0.92 0.92 
--0.86 0.92 -0.86 0.86 -0.79 0.92 -0.79 0.92 -0.79 0.86 -0.79 0.92 -0.73 0.86 
-0.86 1.06 
--0.86 1.06 -0.86 1.12 -0.92 1.12 -0.86 1.12 -0.86 1.19 -0.86 1.19 -0.79 1.19 
-0.66 1.12 
--0.66 1.12 -0.53 1.06 -0.46 0.99 -0.26 0.92 -0.26 0.86 -0.07 0.73 0.07 0.73 
0.13 0.73 
-0.33 0.66 0.46 0.59 0.66 0.59 0.73 0.53 0.86 0.46 0.99 0.4 1.06 0.4 1.06 0.33 
-1.06 0.26 1.06 0.2 0.99 0.2 0.99 0.13 0.92 0.13 0.99 0.2 0.99 0.13 0.99 0.13 
-0.92 0.13 0.92 0.13 0.92 0.07 0.86 0.13 0.79 0.07 0.79 0.07 0.73 0.07 0.66 
0.07 f*
-K
-1408.61 587.86 0.79 0.07 0.79 0 0.86 0.07 0.92 0.07 0.86 0 0.92 0.07 0.86 0 
-0.86 0 0.79 0 0.79 0 0.79 0.07 0.79 0 0.79 0 0.86 0 0.86 0 
-0.86 0 0.79 0 0.79 0 0.73 0 0.73 0 0.66 0.07 0.66 0 0.73 0 
-0.73 0.07 0.73 0.07 0.73 0.07 0.66 0.07 0.59 0.13 0.59 0.13 0.59 0.13 0.66 
0.26 
-0.66 0.33 0.73 0.33 0.73 0.4 0.66 0.4 0.73 0.4 0.66 0.33 0.73 0.33 0.66 0.33 
-0.73 0.26 0.79 0.33 0.86 0.33 0.86 0.26 0.79 0.26 0.73 0.26 0.73 0.26 0.66 
0.26 
-0.66 0.26 0.66 0.26 0.66 0.33 0.66 0.26 0.59 0.33 0.46 0.26 0.53 0.2 0.53 0.33 
-0.53 0.4 0.53 0.4 0.4 0.4 0.33 0.53 0.26 0.46 0.07 0.46 0.07 0.53 0 0.59 
-0 0.66 -0.07 0.66 -0.13 0.59 -0.13 0.59 -0.13 0.53 -0.2 0.53 -0.2 0.59 -0.2 
0.53 
--0.26 0.59 -0.26 0.53 -0.26 0.59 -0.26 0.53 -0.2 0.53 -0.26 0.59 -0.26 0.66 
-0.26 0.66 
--0.26 0.73 -0.2 0.79 -0.26 0.66 -0.2 0.73 -0.13 0.59 -0.26 0.79 -0.2 0.86 
-0.13 0.79 
--0.07 0.73 0 0.59 0.07 0.4 0.07 0.2 0.07 0.13 0.2 0.13 0.13 0.13 0.26 0 
-0.2 0.07 0.26 -0.07 0.26 -0.07 0.33 -0.07 0.26 -0.13 0.53 -0.2 0.53 -0.33 0.66 
-0.4 
-0.66 -0.4 0.53 -0.46 0.53 -0.4 0.46 -0.46 0.53 -0.4 0.46 -0.46 0.53 -0.4 0.46 
-0.33 
-0.53 -0.2 0.53 -0.07 0.66 0 0.73 0.07 0.73 0.07 0.73 0.13 0.73 0.07 0.53 0.07 
-0.59 0.07 0.59 0 0.59 0 0.59 0 0.59 0 0.53 -0.07 0.53 0 0.59 0 
-0.66 -0.07 0.73 -0.07 0.66 -0.13 0.53 -0.13 0.53 -0.13 0.46 -0.2 0.53 -0.26 
0.46 -0.4 
-0.53 -0.4 0.46 -0.4 0.4 -0.46 0.46 -0.4 0.46 -0.53 0.53 -0.53 0.53 -0.46 0.59 
-0.33 
-0.53 -0.26 0.59 -0.13 0.59 0 0.73 0 0.66 0.13 0.59 0.07 0.59 0.07 0.53 0.07 
-0.53 0.07 0.59 -0.07 0.46 -0.13 0.46 -0.13 0.33 -0.26 0.33 -0.33 0.26 -0.4 
0.33 -0.53 
-0.26 -0.59 0.2 -0.59 0.2 -0.59 0.13 -0.46 0.13 -0.53 0.13 -0.53 0.13 -0.59 
0.13 -0.53 
-0.13 -0.59 0.07 -0.46 0.07 -0.53 0.07 -0.59 0.07 -0.59 0.13 -0.53 0.07 -0.4 
0.13 -0.2 
-0.13 0 0.13 0.2 0.2 0.4 0.26 0.59 0.26 0.73 0.26 0.79 0.26 0.73 0.2 0.59 
-0.26 0.59 0.2 0.66 0.26 0.66 0.26 0.66 0.26 0.66 0.26 0.59 0.26 0.53 0.26 0.59 
-0.26 0.59 0.33 0.59 0.33 0.53 0.33 0.59 0.4 0.53 0.33 0.4 0.4 0.4 0.33 0.4 
-0.46 0.33 0.46 0.33 0.53 0.33 0.59 0.26 0.53 0.2 0.53 0.2 0.53 0.13 0.46 0.13 
-0.59 0.13 0.59 0.07 0.59 0.07 0.59 0.07 0.59 0 0.59 0 0.53 -0.07 0.46 0 
-0.53 -0.07 0.59 -0.13 0.53 -0.13 0.59 -0.13 0.53 -0.2 0.53 -0.13 0.53 -0.26 
0.46 -0.2 
-0.53 -0.26 0.53 -0.33 0.59 -0.33 0.59 -0.33 0.53 -0.4 0.53 -0.33 0.53 -0.33 
0.46 -0.33 
-0.53 -0.4 0.53 -0.4 0.53 -0.4 0.46 -0.4 0.46 -0.4 0.4 -0.4 0.4 -0.4 0.4 -0.46 
-0.4 -0.46 0.33 -0.4 0.26 -0.33 0.2 -0.26 0.2 -0.07 0.13 0.13 0.13 0.33 0.13 
0.46 
-0.2 0.46 0.2 0.46 0.2 0.26 0.2 0.2 0.26 0.2 0.33 0.2 0.4 0.13 0.4 0.13 
-0.46 0.13 0.46 0.07 0.53 0.07 0.53 0.07 0.66 0 0.73 0.07 0.73 0 0.73 0 
-0.66 0.07 0.73 0 0.66 0 0.73 0.07 0.73 0.07 0.79 0.07 0.79 0.07 0.73 0.07 
-0.73 0.13 0.66 0.13 0.66 0.13 0.66 0.2 0.73 0.2 0.73 0.2 0.73 0.26 0.66 0.2 
-0.66 0.2 0.59 0.2 0.53 0.2 0.53 0.2 0.59 0.2 0.59 0.26 0.59 0.2 0.59 0.2 
-0.53 0.26 0.53 0.2 0.53 0.26 0.59 0.2 0.59 0.26 0.59 0.2 0.59 0.13 0.59 0 
-0.53 -0.07 0.46 -0.2 0.46 -0.26 0.4 -0.46 0.46 -0.59 0.46 -0.73 0.46 -0.79 0.4 
-0.86 
-0.4 -0.79 0.4 -0.86 0.33 -0.66 0.33 -0.73 0.33 -0.79 0.4 -0.79 0.4 -0.86 0.4 
-0.86 
-0.4 -0.86 0.4 -0.79 0.33 -0.79 0.4 -0.79 0.26 -0.66 0.33 -0.66 0.26 -0.73 0.33 
-0.79 
-0.4 -0.73 0.33 -0.86 0.33 -0.79 0.33 -0.79 0.26 -0.79 0.33 -0.73 0.26 -0.73 
0.26 -0.73 
-0.26 -0.73 0.26 -0.73 0.26 -0.79 0.26 -0.79 0.26 -0.79 0.26 -0.86 0.26 -0.79 
0.2 -0.79 
-0.26 -0.79 0.2 -0.73 0.26 -0.66 0.2 -0.73 0.26 -0.73 0.26 -0.79 0.26 -0.86 
0.26 -0.79 
-0.26 -0.79 0.26 -0.79 0.26 -0.73 0.26 -0.66 0.2 -0.59 0.2 -0.59 0.13 -0.46 
0.13 -0.53 
-0.13 -0.46 0.07 -0.46 0 -0.53 -0.07 -0.53 -0.13 -0.46 -0.26 -0.53 -0.26 -0.46 
-0.4 -0.53 
--0.4 -0.4 -0.4 -0.4 -0.53 -0.46 -0.53 -0.53 -0.73 -0.53 -0.79 -0.53 -0.86 
-0.66 -0.99 -0.59 
--1.06 -0.66 -1.19 -0.66 -1.19 -0.66 -1.25 -0.73 -1.39 -0.66 -1.39 -0.73 -0.92 
-0.4 -1.06 -0.53 
--1.06 -0.46 -1.12 -0.46 -1.19 -0.53 -1.25 -0.53 -1.32 -0.59 -1.39 -0.53 -1.39 
-0.59 -1.52 -0.59 
--1.52 -0.59 -1.52 -0.59 -1.58 -0.53 -1.52 -0.59 -1.58 -0.53 -1.52 -0.53 -1.58 
-0.53 -1.52 -0.46 
--1.45 -0.46 -1.45 -0.46 -1.52 -0.46 -1.39 -0.4 -1.45 -0.4 -1.52 -0.4 -1.45 
-0.4 -1.58 -0.33 
--1.52 -0.4 -1.65 -0.33 -1.65 -0.33 -1.65 -0.33 -1.72 -0.33 -1.78 -0.33 -1.78 
-0.33 -1.78 -0.26 
--1.72 -0.26 -1.78 -0.26 -1.78 -0.2 -1.72 -0.26 -1.72 -0.2 -1.72 -0.13 -1.65 
-0.2 -1.65 -0.13 
--1.58 -0.13 -1.65 -0.13 -1.52 -0.13 -1.52 -0.07 -1.58 -0.07 -1.58 -0.07 -1.58 
-0.07 -1.65 -0.07 
--1.72 -0.07 -1.72 -0.07 -1.78 0 -1.78 0 -1.78 -0.07 -1.72 0 -1.78 0.07 -1.78 0 
--1.72 0 -1.65 0.07 -1.65 0.07 -1.58 0 -1.52 0.07 -1.45 0.07 -1.45 0.13 -1.39 
0.07 
--1.32 0.07 -1.25 0.13 -1.72 0.13 -1.65 0.2 -1.58 0.2 -1.65 0.2 -1.58 0.2 -1.58 
0.26 
--1.58 0.33 -1.58 0.33 -1.52 0.33 -1.45 0.33 -1.39 0.4 -1.39 0.4 -1.25 0.46 
-1.19 0.46 
--1.19 0.46 -1.06 0.46 -0.99 0.46 -0.99 0.53 -0.92 0.53 -0.92 0.59 -0.99 0.59 
-0.92 0.66 
--0.92 0.73 -0.92 0.73 -0.92 0.79 -0.92 0.86 -0.92 0.86 -0.92 0.86 -0.92 0.92 
-0.86 0.92 
--0.86 0.86 -0.79 0.92 -0.79 0.92 -0.79 0.86 -0.79 0.92 -0.73 0.86 -0.86 1.06 
-0.86 1.06 
--0.86 1.12 -0.92 1.12 -0.86 1.12 -0.86 1.19 -0.86 1.19 -0.79 1.19 -0.66 1.12 
-0.66 1.12 
--0.53 1.06 -0.46 0.99 -0.26 0.92 -0.26 0.86 -0.07 0.73 0.07 0.73 0.13 0.73 
0.33 0.66 
-0.46 0.59 0.66 0.59 0.73 0.53 0.86 0.46 0.99 0.4 1.06 0.4 1.06 0.33 1.06 0.26 
-1.06 0.2 0.99 0.2 0.99 0.13 0.92 0.13 0.99 0.2 0.99 0.13 0.99 0.13 0.92 0.13 
-0.92 0.13 0.92 0.07 0.86 0.13 0.79 0.07 0.79 0.07 0.73 0.07 0.66 0.07 H
-S
-255 215 0 rG
-1410.72 738.27 -0.07 0 -0.2 0.2 -0.59 0.46 -0.99 0.73 -1.25 0.92 -1.39 1.12 
-1.45 1.06 
--1.39 1.06 -1.25 0.99 -1.12 0.79 -0.99 0.79 -0.86 0.66 -0.79 0.59 -0.73 0.53 
-0.79 0.66 
--0.79 0.66 -0.79 0.59 -0.79 0.66 -0.73 0.59 -0.73 0.59 -0.66 0.59 -0.66 0.53 
-0.59 0.46 
--0.53 0.46 -0.46 0.4 -0.4 0.4 -0.59 0.53 -0.53 0.46 -0.46 0.53 -0.46 0.4 -0.33 
0.46 
--0.33 0.33 -0.2 0.33 -0.13 0.33 -0.07 0.4 0 0.33 0.13 0.4 0.13 0.4 0.26 0.4 
-0.2 0.4 0.26 0.33 0.33 0.46 0.33 0.46 0.33 0.53 0.33 0.59 0.26 0.53 0.2 0.4 
-0.2 0.53 0.2 0.53 0.13 0.53 0.2 0.59 0.13 0.53 0.13 0.53 0.13 0.46 0.07 0.59 
-0.13 0.59 0.07 0.66 0.07 0.73 0.07 0.66 0 2.51 -0.07 0.73 0 0.73 -0.07 0.66 
--0.07 0.73 -0.07 0.59 -0.07 0.66 -0.13 0.59 -0.13 0.73 -0.2 0.66 -0.13 0.73 
-0.2 0.66 
--0.2 0.66 -0.2 0.66 -0.2 0.59 -0.2 0.66 -0.26 0.73 -0.33 0.79 -0.33 0.73 -0.33 
0.73 
--0.4 0.66 -0.46 0.66 -0.33 0.53 -0.46 0.53 -0.46 0.53 -0.53 0.53 -0.53 0.53 
-0.53 0.53 
--0.53 0.46 -0.53 0.4 -0.46 0.33 -0.46 0.33 -0.53 0.33 -0.53 0.26 -0.53 0.26 
-0.4 0.2 
--0.4 0.26 -0.2 0.26 -0.07 0.2 0 0.33 0.2 0.33 0.26 0.4 0.33 0.53 0.4 0.53 
-0.33 0.53 0.26 0.59 0.07 0.53 -0.07 0.46 -0.2 0.46 -0.46 0.46 -0.66 0.46 -0.73 
0.46 
--0.86 0.46 -0.86 0.4 -0.86 0.33 -0.79 0.33 -0.73 0.26 -0.73 0.33 -0.66 0.26 
-0.73 0.26 
--0.66 0.26 -0.66 0.33 -0.59 0.2 -0.53 0.26 -0.53 0.26 -0.59 0.26 -0.59 0.33 
-0.66 0.33 
--0.66 0.4 -0.66 0.33 -0.66 0.33 -0.66 0.26 -0.53 0.26 -0.59 0.26 -0.59 0.33 
-0.73 0.26 
--0.66 0.33 -0.73 0.33 -0.73 0.26 -0.73 0.33 -0.66 0.33 -0.66 0.26 -0.79 0.4 
-0.86 0.4 
--0.86 0.4 -0.86 0.33 -0.73 0.33 -0.53 0.13 -0.46 0.07 -0.26 -0.07 -0.07 -0.2 0 
-0.33 
-0.2 -0.46 0.33 -0.59 0.4 -0.59 0.4 -0.66 0.46 -0.66 0.46 -0.59 0.4 -0.53 0.46 
-0.59 
-0.46 -0.59 0.46 -0.59 0.4 -0.59 0.46 -0.59 0.4 -0.59 0.4 -0.59 0.33 -0.59 0.4 
-0.66 
-0.4 -0.73 0.4 -0.79 0.4 -0.73 0.4 -0.73 0.33 -0.66 0.33 -0.66 0.33 -0.59 0.26 
-0.59 
-0.33 -0.59 0.33 -0.66 0.33 -0.66 0.26 -0.73 0.26 -0.66 0.26 -0.66 0.26 -0.79 
0.26 -0.79 
-0.26 -0.86 0.26 -0.86 0.33 -0.79 0.33 -0.73 0.26 -0.53 0.33 -0.4 0.26 -0.2 
0.26 -0.07 
-0.66 0 0.33 0.13 0.4 0.2 0.33 0.26 0.33 0.26 0.33 0.26 0.33 0.26 0.59 0.46 
-0.59 0.46 0.59 0.4 0.66 0.33 0.59 0.2 0.59 0 0.4 -0.07 0.4 -0.2 0.46 -0.33 
-0.46 -0.33 0.46 -0.46 0.46 -0.46 0.46 -0.46 0.4 -0.53 0.46 -0.46 0.46 -0.59 
0.46 -0.59 
-0.46 -0.59 0.46 -0.66 0.46 -0.59 0.33 -0.59 0.33 -0.59 0.26 -0.59 0.26 -0.59 
0.26 -0.66 
-0.2 -0.66 0.13 -0.66 0.13 -0.66 0.13 -0.53 0.07 -0.53 0.13 -0.59 0.07 -0.59 0 
-1.85 
--0.07 -0.53 -0.13 -0.59 -0.13 -0.59 -0.2 -0.66 -0.26 -0.59 -0.26 -0.59 -0.33 
-0.53 -0.4 -0.4 
--0.46 -0.46 -0.53 -0.46 -0.53 -0.4 -0.53 -0.4 -0.4 -0.33 -0.46 -0.33 -0.4 
-0.33 -0.46 -0.26 
--0.4 -0.26 -0.46 -0.13 -0.4 -0.07 -0.4 0.13 -0.46 0.2 -0.53 0.26 -0.53 0.33 
-0.53 0.4 
--0.46 0.4 -0.4 0.33 -0.46 0.4 -0.53 0.4 -0.46 0.4 -0.46 0.4 -0.4 0.33 -0.46 
0.33 
--0.46 0.33 -0.46 0.4 -0.53 0.4 -0.53 0.4 -0.46 0.33 -0.33 0.26 -0.4 0.33 -0.46 
0.33 
--0.46 0.4 -0.46 0.4 -0.53 0.33 -0.46 0.33 -0.46 0.33 -0.46 0.4 -0.46 0.33 
-0.53 0.4 
--0.46 0.46 -0.4 0.4 -0.33 0.46 -0.2 0.46 -0.07 0.46 0 0.46 0.13 0.53 0.26 0.53 
-0.33 0.59 0.33 0.59 0.33 0.53 0.33 0.46 0.26 0.4 0.07 0.13 0.07 0.13 0.07 0.2 
-0.07 0.13 0.07 0.13 0 0.46 -0.07 0.13 -0.07 0.13 -0.13 0.07 -0.13 0.07 -0.13 
0.13 
--0.13 0.07 -0.2 0.07 -0.26 0.07 -0.2 0.07 -0.26 0.07 -0.33 0.07 -0.53 0.07 
-0.66 0.07 
--0.73 0.13 -0.92 0.13 -0.99 0.13 -1.06 0.2 -1.19 0.26 -1.19 0.33 -1.25 0.33 
-1.19 0.4 
--1.25 0.46 -1.25 0.53 -1.12 0.53 -1.19 0.59 -1.19 0.59 -1.25 0.73 -1.25 0.66 
-1.25 0.73 
--1.25 0.73 -1.19 0.66 -1.06 0.59 -0.99 0.46 -0.86 0.46 -0.73 0.26 -0.59 0.2 
-0.46 0.07 
--0.4 -0.07 -0.2 -0.2 -0.13 -0.33 0 -0.46 0.13 -0.59 0.2 -0.66 0.26 -0.79 0.33 
-0.79 
-0.46 -0.92 0.4 -0.86 0.46 -0.92 0.46 -0.92 0.53 -0.86 0.46 -0.92 0.46 -0.99 
0.53 -0.99 
-0.53 -0.99 0.53 -1.06 0.53 -0.99 0.53 -1.06 0.46 -0.99 0.46 -0.92 0.4 -0.92 
0.33 -0.79 
-0.33 -0.73 0.26 -0.73 0.4 -0.92 0.26 -0.99 0.26 -0.92 0.26 -0.86 0.2 -0.79 
0.13 -0.66 
-0.2 -0.59 0.13 -0.46 0.13 -0.46 0.13 -0.33 0.2 -0.4 0.2 -0.26 0.2 -0.26 0.2 
-0.2 
-0.2 -0.07 0.2 -0.07 0.33 0 0.33 0.13 0.4 0.26 0.46 0.26 0.46 0.4 0.46 0.46 
-0.4 0.33 0.4 0.4 0.46 0.46 0.46 0.4 0.53 0.4 0.46 0.26 0.46 0.26 0.46 0.07 
-0.4 0.07 0.46 -0.13 0.46 -0.13 0.53 -0.33 0.53 -0.33 0.53 -0.4 0.53 -0.4 0.53 
-0.46 
-0.53 -0.46 0.59 -0.46 0.66 -0.53 0.73 -0.59 0.66 -0.59 0.66 -0.53 0.59 -0.53 
0.59 -0.46 
-0.53 -0.4 0.53 -0.46 0.46 -0.53 0.53 -0.46 0.46 -0.53 0.46 -0.53 0.33 -0.46 
0.4 -0.53 
-0.26 -0.53 0.26 -0.59 0.26 -0.59 0.2 -0.73 0.13 -0.66 0.07 -0.59 0 -0.59 -0.13 
-0.53 
--0.2 -0.53 -0.33 -0.46 -0.4 -0.53 -0.59 -0.53 -0.73 -0.46 -0.79 -0.46 -0.86 
-0.46 -0.99 -0.46 
--0.59 -0.26 -0.66 -0.26 -0.73 -0.26 -0.79 -0.26 -0.86 -0.26 -0.86 -0.26 -0.99 
-0.26 -0.99 -0.2 
--1.06 -0.2 -1.06 -0.13 -0.99 -0.07 -1.06 -0.07 -2.11 0 -1.06 0.07 -1.12 0.13 
-1.12 0.2 
--1.19 0.26 -1.25 0.26 -1.19 0.26 -1.19 0.33 -1.19 0.4 -1.06 0.33 -0.99 0.4 
-0.86 0.4 
--0.79 0.33 -0.59 0.33 -0.53 0.33 -0.33 0.26 -0.26 0.2 -0.2 0.26 -0.2 0.2 -0.13 
0.2 
--0.07 0.26 -0.07 0.2 0 0.4 0.07 0.26 0.13 0.2 0.07 0.2 0.2 0.2 0.13 0.2 
-0.2 0.13 0.2 0.2 0.2 0.13 0.2 0.2 0.2 0.13 0.2 0.13 0.53 0.33 0.53 0.4 
-0.53 0.33 0.53 0.4 0.46 0.4 0.46 0.4 0.33 0.4 0.26 0.33 0.13 0.26 0.07 0.33 
-0.07 0.26 0 0.66 -0.13 0.33 -0.2 0.33 -0.2 0.33 -0.33 0.33 -0.33 0.26 -0.46 
0.26 
--0.53 0.26 -0.59 0.2 -0.66 0.26 -0.79 0.26 -0.92 0.26 -0.99 0.33 -1.06 0.33 
-1.19 0.33 
--1.12 0.4 -1.19 0.4 -1.19 0.46 -1.12 0.53 -1.19 0.53 -0.99 0.53 -0.99 0.53 
-1.06 0.66 
--1.06 0.66 -1.12 0.66 -1.06 0.73 -1.12 0.73 -0.99 0.66 -1.06 0.66 -0.92 0.59 
-0.79 0.53 
--0.79 0.46 -0.66 0.4 -0.59 0.26 -0.33 0.13 -0.26 0.07 -0.26 0.07 -0.26 0.07 
-0.66 0 
--0.13 -0.07 -0.2 -0.07 -0.13 -0.07 -0.13 -0.13 -0.13 -0.13 -0.07 -0.2 -0.07 
-0.2 -0.07 -0.2 
-0 -0.2 -0.07 -0.26 0 -0.26 0.07 -0.26 0 -0.33 0.07 -0.26 0.07 -0.33 0.07 -0.33 
-0.13 -0.33 0.07 -0.33 0.13 -0.4 0.26 -0.66 0.26 -0.73 0.33 -0.86 0.46 -0.86 
0.46 -0.99 
-0.53 -0.99 0.53 -1.06 0.66 -1.12 0.59 -1.06 0.66 -1.12 0.73 -1.06 0.66 -1.06 
0.73 -1.06 
-0.66 -1.06 0.66 -0.86 0.66 -0.92 0.73 -0.92 0.73 -0.99 0.79 -0.92 0.86 -0.99 
0.79 -0.99 
-0.92 -0.99 0.86 -0.99 0.86 -0.92 0.86 -0.86 0.86 -0.79 0.86 -0.79 0.79 -0.66 
0.79 -0.66 
-0.79 -0.59 0.86 -0.66 0.86 -0.59 0.92 -0.53 0.99 -0.53 0.92 -0.53 1.06 -0.46 
0.99 -0.4 
-0.99 -0.4 1.06 -0.33 0.99 -0.26 0.92 -0.26 0.99 -0.26 0.92 -0.2 0.92 -0.2 0.86 
-0.13 
-0.99 -0.13 0.99 -0.2 0.99 -0.13 1.06 -0.13 1.12 -0.07 1.06 -0.07 1.06 -0.07 
1.06 -0.07 
-2.05 0 0.92 0.07 0.86 0.07 0.86 0.07 0.92 0.13 0.99 0.2 0.92 0.2 0.99 0.26 
-0.99 0.33 0.92 0.33 0.92 0.33 0.92 0.4 0.86 0.4 0.79 0.33 0.79 0.4 0.73 0.33 
-0.86 0.4 0.86 0.46 0.86 0.46 0.92 0.46 0.86 0.46 0.86 0.46 0.73 0.46 0.73 0.4 
-0.59 0.33 0.46 0.33 0.46 0.26 0.46 0.33 0.4 0.26 0.4 0.2 0.4 0.2 0.4 0.07 
-0.33 0.07 0.4 0 0.4 -0.07 0.46 -0.2 0.46 -0.2 0.59 -0.33 0.59 -0.46 0.73 -0.46 
-0.79 -0.59 0.79 -0.59 0.79 -0.66 0.79 -0.66 0.79 -0.73 0.79 -0.66 0.66 -0.59 
0.73 -0.59 
-0.73 -0.66 0.73 -0.66 0.79 -0.66 0.79 -0.73 0.79 -0.66 0.79 -0.73 0.73 -0.66 
0.73 -0.59 
-0.66 -0.59 0.66 -0.53 0.66 -0.53 0.66 -0.53 0.66 -0.59 0.79 -0.59 0.86 -0.66 
0.92 -0.66 
-0.99 -0.79 0.86 -0.66 0.79 -0.59 0.46 -0.33 0.2 -0.2 0.07 0 f*
-K
-1410.72 738.27 -0.07 0 -0.2 0.2 -0.59 0.46 -0.99 0.73 -1.25 0.92 -1.39 1.12 
-1.45 1.06 
--1.39 1.06 -1.25 0.99 -1.12 0.79 -0.99 0.79 -0.86 0.66 -0.79 0.59 -0.73 0.53 
-0.79 0.66 
--0.79 0.66 -0.79 0.59 -0.79 0.66 -0.73 0.59 -0.73 0.59 -0.66 0.59 -0.66 0.53 
-0.59 0.46 
--0.53 0.46 -0.46 0.4 -0.4 0.4 -0.59 0.53 -0.53 0.46 -0.46 0.53 -0.46 0.4 -0.33 
0.46 
--0.33 0.33 -0.2 0.33 -0.13 0.33 -0.07 0.4 0 0.33 0.13 0.4 0.13 0.4 0.26 0.4 
-0.2 0.4 0.26 0.33 0.33 0.46 0.33 0.46 0.33 0.53 0.33 0.59 0.26 0.53 0.2 0.4 
-0.2 0.53 0.2 0.53 0.13 0.53 0.2 0.59 0.13 0.53 0.13 0.53 0.13 0.46 0.07 0.59 
-0.13 0.59 0.07 0.66 0.07 0.73 0.07 0.66 0 0.66 0 0.59 0 0.59 0 0.66 
--0.07 0.73 0 0.73 -0.07 0.66 -0.07 0.73 -0.07 0.59 -0.07 0.66 -0.13 0.59 -0.13 
0.73 
--0.2 0.66 -0.13 0.73 -0.2 0.66 -0.2 0.66 -0.2 0.66 -0.2 0.59 -0.2 0.66 -0.26 
0.73 
--0.33 0.79 -0.33 0.73 -0.33 0.73 -0.4 0.66 -0.46 0.66 -0.33 0.53 -0.46 0.53 
-0.46 0.53 
--0.53 0.53 -0.53 0.53 -0.53 0.53 -0.53 0.46 -0.53 0.4 -0.46 0.33 -0.46 0.33 
-0.53 0.33 
--0.53 0.26 -0.53 0.26 -0.4 0.2 -0.4 0.26 -0.2 0.26 -0.07 0.2 0 0.33 0.2 0.33 
-0.26 0.4 0.33 0.53 0.4 0.53 0.33 0.53 0.26 0.59 0.07 0.53 -0.07 0.46 -0.2 0.46 
--0.46 0.46 -0.66 0.46 -0.73 0.46 -0.86 0.46 -0.86 0.4 -0.86 0.33 -0.79 0.33 
-0.73 0.26 
--0.73 0.33 -0.66 0.26 -0.73 0.26 -0.66 0.26 -0.66 0.33 -0.59 0.2 -0.53 0.26 
-0.53 0.26 
--0.59 0.26 -0.59 0.33 -0.66 0.33 -0.66 0.4 -0.66 0.33 -0.66 0.33 -0.66 0.26 
-0.53 0.26 
--0.59 0.26 -0.59 0.33 -0.73 0.26 -0.66 0.33 -0.73 0.33 -0.73 0.26 -0.73 0.33 
-0.66 0.33 
--0.66 0.26 -0.79 0.4 -0.86 0.4 -0.86 0.4 -0.86 0.33 -0.73 0.33 -0.53 0.13 
-0.46 0.07 
--0.26 -0.07 -0.07 -0.2 0 -0.33 0.2 -0.46 0.33 -0.59 0.4 -0.59 0.4 -0.66 0.46 
-0.66 
-0.46 -0.59 0.4 -0.53 0.46 -0.59 0.46 -0.59 0.46 -0.59 0.4 -0.59 0.46 -0.59 0.4 
-0.59 
-0.4 -0.59 0.33 -0.59 0.4 -0.66 0.4 -0.73 0.4 -0.79 0.4 -0.73 0.4 -0.73 0.33 
-0.66 
-0.33 -0.66 0.33 -0.59 0.26 -0.59 0.33 -0.59 0.33 -0.66 0.33 -0.66 0.26 -0.73 
0.26 -0.66 
-0.26 -0.66 0.26 -0.79 0.26 -0.79 0.26 -0.86 0.26 -0.86 0.33 -0.79 0.33 -0.73 
0.26 -0.53 
-0.33 -0.4 0.26 -0.2 0.26 -0.07 0.33 0 0.33 0 0.33 0.13 0.4 0.2 0.33 0.26 
-0.33 0.26 0.33 0.26 0.33 0.26 0.59 0.46 0.59 0.46 0.59 0.4 0.66 0.33 0.59 0.2 
-0.59 0 0.4 -0.07 0.4 -0.2 0.46 -0.33 0.46 -0.33 0.46 -0.46 0.46 -0.46 0.46 
-0.46 
-0.4 -0.53 0.46 -0.46 0.46 -0.59 0.46 -0.59 0.46 -0.59 0.46 -0.66 0.46 -0.59 
0.33 -0.59 
-0.33 -0.59 0.26 -0.59 0.26 -0.59 0.26 -0.66 0.2 -0.66 0.13 -0.66 0.13 -0.66 
0.13 -0.53 
-0.07 -0.53 0.13 -0.59 0.07 -0.59 0 -0.66 0 -0.59 0 -0.59 -0.07 -0.53 -0.13 
-0.59 
--0.13 -0.59 -0.2 -0.66 -0.26 -0.59 -0.26 -0.59 -0.33 -0.53 -0.4 -0.4 -0.46 
-0.46 -0.53 -0.46 
--0.53 -0.4 -0.53 -0.4 -0.4 -0.33 -0.46 -0.33 -0.4 -0.33 -0.46 -0.26 -0.4 -0.26 
-0.46 -0.13 
--0.4 -0.07 -0.4 0.13 -0.46 0.2 -0.53 0.26 -0.53 0.33 -0.53 0.4 -0.46 0.4 -0.4 
0.33 
--0.46 0.4 -0.53 0.4 -0.46 0.4 -0.46 0.4 -0.4 0.33 -0.46 0.33 -0.46 0.33 -0.46 
0.4 
--0.53 0.4 -0.53 0.4 -0.46 0.33 -0.33 0.26 -0.4 0.33 -0.46 0.33 -0.46 0.4 -0.46 
0.4 
--0.53 0.33 -0.46 0.33 -0.46 0.33 -0.46 0.4 -0.46 0.33 -0.53 0.4 -0.46 0.46 
-0.4 0.4 
--0.33 0.46 -0.2 0.46 -0.07 0.46 0 0.46 0.13 0.53 0.26 0.53 0.33 0.59 0.33 0.59 
-0.33 0.53 0.33 0.46 0.26 0.4 0.07 0.13 0.07 0.13 0.07 0.2 0.07 0.13 0.07 0.13 
-0 0.13 0 0.13 0 0.07 0 0.13 -0.07 0.13 -0.07 0.13 -0.13 0.07 -0.13 0.07 
--0.13 0.13 -0.13 0.07 -0.2 0.07 -0.26 0.07 -0.2 0.07 -0.26 0.07 -0.33 0.07 
-0.53 0.07 
--0.66 0.07 -0.73 0.13 -0.92 0.13 -0.99 0.13 -1.06 0.2 -1.19 0.26 -1.19 0.33 
-1.25 0.33 
--1.19 0.4 -1.25 0.46 -1.25 0.53 -1.12 0.53 -1.19 0.59 -1.19 0.59 -1.25 0.73 
-1.25 0.66 
--1.25 0.73 -1.25 0.73 -1.19 0.66 -1.06 0.59 -0.99 0.46 -0.86 0.46 -0.73 0.26 
-0.59 0.2 
--0.46 0.07 -0.4 -0.07 -0.2 -0.2 -0.13 -0.33 0 -0.46 0.13 -0.59 0.2 -0.66 0.26 
-0.79 
-0.33 -0.79 0.46 -0.92 0.4 -0.86 0.46 -0.92 0.46 -0.92 0.53 -0.86 0.46 -0.92 
0.46 -0.99 
-0.53 -0.99 0.53 -0.99 0.53 -1.06 0.53 -0.99 0.53 -1.06 0.46 -0.99 0.46 -0.92 
0.4 -0.92 
-0.33 -0.79 0.33 -0.73 0.26 -0.73 0.4 -0.92 0.26 -0.99 0.26 -0.92 0.26 -0.86 
0.2 -0.79 
-0.13 -0.66 0.2 -0.59 0.13 -0.46 0.13 -0.46 0.13 -0.33 0.2 -0.4 0.2 -0.26 0.2 
-0.26 
-0.2 -0.2 0.2 -0.07 0.2 -0.07 0.33 0 0.33 0.13 0.4 0.26 0.46 0.26 0.46 0.4 
-0.46 0.46 0.4 0.33 0.4 0.4 0.46 0.46 0.46 0.4 0.53 0.4 0.46 0.26 0.46 0.26 
-0.46 0.07 0.4 0.07 0.46 -0.13 0.46 -0.13 0.53 -0.33 0.53 -0.33 0.53 -0.4 0.53 
-0.4 
-0.53 -0.46 0.53 -0.46 0.59 -0.46 0.66 -0.53 0.73 -0.59 0.66 -0.59 0.66 -0.53 
0.59 -0.53 
-0.59 -0.46 0.53 -0.4 0.53 -0.46 0.46 -0.53 0.53 -0.46 0.46 -0.53 0.46 -0.53 
0.33 -0.46 
-0.4 -0.53 0.26 -0.53 0.26 -0.59 0.26 -0.59 0.2 -0.73 0.13 -0.66 0.07 -0.59 0 
-0.59 
--0.13 -0.53 -0.2 -0.53 -0.33 -0.46 -0.4 -0.53 -0.59 -0.53 -0.73 -0.46 -0.79 
-0.46 -0.86 -0.46 
--0.99 -0.46 -0.59 -0.26 -0.66 -0.26 -0.73 -0.26 -0.79 -0.26 -0.86 -0.26 -0.86 
-0.26 -0.99 -0.26 
--0.99 -0.2 -1.06 -0.2 -1.06 -0.13 -0.99 -0.07 -1.06 -0.07 -1.06 0 -1.06 0 
-1.06 0.07 
--1.12 0.13 -1.12 0.2 -1.19 0.26 -1.25 0.26 -1.19 0.26 -1.19 0.33 -1.19 0.4 
-1.06 0.33 
--0.99 0.4 -0.86 0.4 -0.79 0.33 -0.59 0.33 -0.53 0.33 -0.33 0.26 -0.26 0.2 -0.2 
0.26 
--0.2 0.2 -0.13 0.2 -0.07 0.26 -0.07 0.2 0 0.2 0 0.2 0.07 0.26 0.13 0.2 
-0.07 0.2 0.2 0.2 0.13 0.2 0.2 0.13 0.2 0.2 0.2 0.13 0.2 0.2 0.2 0.13 
-0.2 0.13 0.53 0.33 0.53 0.4 0.53 0.33 0.53 0.4 0.46 0.4 0.46 0.4 0.33 0.4 
-0.26 0.33 0.13 0.26 0.07 0.33 0.07 0.26 0 0.33 0 0.33 -0.13 0.33 -0.2 0.33 
--0.2 0.33 -0.33 0.33 -0.33 0.26 -0.46 0.26 -0.53 0.26 -0.59 0.2 -0.66 0.26 
-0.79 0.26 
--0.92 0.26 -0.99 0.33 -1.06 0.33 -1.19 0.33 -1.12 0.4 -1.19 0.4 -1.19 0.46 
-1.12 0.53 
--1.19 0.53 -0.99 0.53 -0.99 0.53 -1.06 0.66 -1.06 0.66 -1.12 0.66 -1.06 0.73 
-1.12 0.73 
--0.99 0.66 -1.06 0.66 -0.92 0.59 -0.79 0.53 -0.79 0.46 -0.66 0.4 -0.59 0.26 
-0.33 0.13 
--0.26 0.07 -0.26 0.07 -0.26 0.07 -0.2 0 -0.26 0 -0.2 0 -0.13 -0.07 -0.2 -0.07 
--0.13 -0.07 -0.13 -0.13 -0.13 -0.13 -0.07 -0.2 -0.07 -0.2 -0.07 -0.2 0 -0.2 
-0.07 -0.26 
-0 -0.26 0.07 -0.26 0 -0.33 0.07 -0.26 0.07 -0.33 0.07 -0.33 0.13 -0.33 0.07 
-0.33 
-0.13 -0.4 0.26 -0.66 0.26 -0.73 0.33 -0.86 0.46 -0.86 0.46 -0.99 0.53 -0.99 
0.53 -1.06 
-0.66 -1.12 0.59 -1.06 0.66 -1.12 0.73 -1.06 0.66 -1.06 0.73 -1.06 0.66 -1.06 
0.66 -0.86 
-0.66 -0.92 0.73 -0.92 0.73 -0.99 0.79 -0.92 0.86 -0.99 0.79 -0.99 0.92 -0.99 
0.86 -0.99 
-0.86 -0.92 0.86 -0.86 0.86 -0.79 0.86 -0.79 0.79 -0.66 0.79 -0.66 0.79 -0.59 
0.86 -0.66 
-0.86 -0.59 0.92 -0.53 0.99 -0.53 0.92 -0.53 1.06 -0.46 0.99 -0.4 0.99 -0.4 
1.06 -0.33 
-0.99 -0.26 0.92 -0.26 0.99 -0.26 0.92 -0.2 0.92 -0.2 0.86 -0.13 0.99 -0.13 
0.99 -0.2 
-0.99 -0.13 1.06 -0.13 1.12 -0.07 1.06 -0.07 1.06 -0.07 1.06 -0.07 1.06 0 0.99 
0 
-0.92 0.07 0.86 0.07 0.86 0.07 0.92 0.13 0.99 0.2 0.92 0.2 0.99 0.26 0.99 0.33 
-0.92 0.33 0.92 0.33 0.92 0.4 0.86 0.4 0.79 0.33 0.79 0.4 0.73 0.33 0.86 0.4 
-0.86 0.46 0.86 0.46 0.92 0.46 0.86 0.46 0.86 0.46 0.73 0.46 0.73 0.4 0.59 0.33 
-0.46 0.33 0.46 0.26 0.46 0.33 0.4 0.26 0.4 0.2 0.4 0.2 0.4 0.07 0.33 0.07 
-0.4 0 0.4 -0.07 0.46 -0.2 0.46 -0.2 0.59 -0.33 0.59 -0.46 0.73 -0.46 0.79 
-0.59 
-0.79 -0.59 0.79 -0.66 0.79 -0.66 0.79 -0.73 0.79 -0.66 0.66 -0.59 0.73 -0.59 
0.73 -0.66 
-0.73 -0.66 0.79 -0.66 0.79 -0.73 0.79 -0.66 0.79 -0.73 0.73 -0.66 0.73 -0.59 
0.66 -0.59 
-0.66 -0.53 0.66 -0.53 0.66 -0.53 0.66 -0.59 0.79 -0.59 0.86 -0.66 0.92 -0.66 
0.99 -0.79 
-0.86 -0.66 0.79 -0.59 0.46 -0.33 0.2 -0.2 0.07 0 S
-1438.71 670.16 0.07 -0.07 0.2 -0.26 0.46 -0.66 0.66 -0.92 0.73 -0.99 0.73 
-0.86 0.59 -0.79 
-0.53 -0.66 0.46 -0.53 0.4 -0.46 0.53 -0.53 0.53 -0.53 0.59 -0.53 0.59 -0.46 
0.66 -0.46 
-0.59 -0.46 0.59 -0.4 0.59 -0.33 0.59 -0.4 0.66 -0.4 0.73 -0.4 0.79 -0.46 0.73 
-0.4 
-0.73 -0.4 0.66 -0.26 0.66 -0.33 0.59 -0.2 0.59 -0.26 0.66 -0.2 0.59 -0.2 0.66 
-0.13 
-0.53 -0.13 0.59 -0.13 0.46 -0.13 0.53 -0.13 0.53 -0.13 0.53 -0.07 0.59 -0.13 
0.59 -0.13 
-0.59 -0.13 0.53 -0.07 0.53 -0.07 0.53 -0.07 0.59 -0.07 0.59 -0.07 0.59 -0.07 
0.59 0 
-0.53 0 0.53 -0.07 0.46 0 0.53 0 0.53 0.07 0.66 0 0.66 0.07 0.4 0.07 
-0.07 0 S
-1457.52 655.31 0.07 0 0.26 -0.2 0.66 -0.4 1.06 -0.66 1.25 -0.73 1.32 -0.79 
1.19 -0.73 
-1.12 -0.59 0.92 -0.53 0.86 -0.46 0.66 -0.33 0.73 -0.33 0.73 -0.33 0.73 -0.33 
0.73 -0.26 
-0.79 -0.26 0.73 -0.2 0.73 -0.2 0.73 -0.13 0.66 -0.2 0.66 -0.07 0.66 -0.13 0.66 
-0.13 
-0.66 -0.13 0.79 -0.07 0.79 -0.13 0.79 -0.07 0.86 -0.13 0.79 0 0.73 -0.07 0.73 
0 
-0.73 0 0.66 0.07 0.66 0.07 0.66 0.13 0.73 0.13 0.73 0.13 0.73 0.2 0.73 0.2 
-0.66 0.2 0.66 0.2 0.66 0.2 0.66 0.2 0.73 0.2 0.73 0.2 0.73 0.26 0.79 0.2 
-0.79 0.26 0.79 0.2 0.79 0.26 0.66 0.2 0.73 0.2 0.66 0.26 0.73 0.2 0.73 0.26 
-0.79 0.2 0.79 0.26 0.79 0.26 0.86 0.2 0.79 0.2 0.73 0.2 0.79 0.13 0.73 0.2 
-0.86 0.13 0.86 0.13 0.92 0.13 0.99 0.13 0.99 0.13 0.92 0.13 0.92 0.07 0.86 
0.13 
-0.79 0.07 0.86 0.07 0.79 0.13 0.92 0.13 0.92 0.13 0.92 0.13 0.92 0.13 0.92 0.2 
-0.92 0.26 0.92 0.2 0.86 0.26 0.73 0.26 0.73 0.26 0.86 0.26 0.86 0.33 0.86 0.4 
-0.92 0.33 0.86 0.4 0.86 0.4 0.86 0.4 0.86 0.33 0.73 0.4 0.79 0.33 0.86 0.4 
-0.86 0.4 0.92 0.4 0.92 0.4 0.92 0.4 0.92 0.4 0.86 0.4 0.79 0.33 0.79 0.33 
-0.73 0.33 0.73 0.33 0.79 0.26 0.73 0.33 0.79 0.33 0.79 0.4 0.73 0.33 0.73 0.33 
-0.66 0.33 0.59 0.33 0.53 0.26 0.66 0.46 0.66 0.46 0.59 0.46 0.66 0.53 0.59 
0.59 
-0.59 0.59 0.53 0.59 0.46 0.59 0.4 0.53 0.4 0.59 0.46 0.66 0.53 0.79 0.59 0.99 
-0.66 0.99 0.53 0.92 0.46 0.66 0.2 0.26 0 0.07 S
-209 0 r3
-1423.13 690.29 0.2 -0.33 0.26 -0.33 0.33 -0.33 0.26 -0.33 0.33 -0.26 0.33 
-0.26 0.4 -0.2 
-0.4 -0.2 0.46 -0.2 0.46 -0.13 0.46 -0.13 0.46 -0.07 0.46 -0.07 0.53 -0.07 0.53 
-0.07 
-0.46 -0.07 0.46 -0.07 0.46 0 0.4 -0.07 0.46 -0.07 0.46 -0.07 0.4 0 0.33 -0.07 
-0.33 0.07 0.4 0 0.4 0.07 0.46 0.07 0.53 0.13 0.53 0.07 0.46 0.13 0.53 0.07 
-0.53 0.13 0.66 0.13 0.66 0.13 0.59 0.2 0.53 0.13 0.53 0.2 0.66 0.26 0.59 0.33 
-0.66 0.33 0.53 0.4 0.53 0.4 0.4 0.33 0.4 0.33 0.4 0.4 0.4 0.46 0.4 0.4 
-0.33 0.46 0.33 0.46 0.4 0.46 0.4 0.53 0.4 0.59 0.46 0.66 0.4 0.59 0.46 0.53 
-0.4 0.59 0.4 0.59 0.46 0.59 0.46 0.53 0.4 0.53 0.4 0.4 0.33 0.33 0.26 0.4 
-0.33 0.33 0.26 0.26 0.2 0.33 0.2 0.26 0.13 0.33 0.07 0.46 0 0.92 -0.07 0.4 
--0.07 0.4 -0.13 0.46 -0.13 0.53 -0.13 0.46 -0.2 0.4 -0.13 0.33 -0.13 0.4 -0.2 
0.4 
--0.2 0.33 -0.13 0.4 -0.2 0.33 -0.2 0.33 -0.26 0.4 -0.2 0.4 -0.26 0.4 -0.26 0.4 
--0.26 0.4 -0.07 0.13 -0.13 0.13 -0.13 0.13 -0.13 0.13 -0.13 0.13 -0.2 0.07 
-0.26 0.07 
--0.33 0 -0.33 -0.07 -0.4 -0.13 -0.4 -0.13 -0.53 -0.2 -0.53 -0.26 -0.59 -0.33 
-0.66 -0.46 
--0.73 -0.46 -0.73 -0.46 -0.73 -0.53 -0.86 -0.66 -0.92 -0.66 -0.99 -0.73 -0.99 
-0.79 -1.06 -0.86 
--1.12 -0.92 -1.12 -0.86 -1.06 -0.92 -1.12 -0.92 -1.06 -0.86 -0.99 -0.86 -0.92 
-0.79 -0.86 -0.79 
--0.79 -0.73 -0.73 -0.66 -0.66 -0.59 -0.86 -0.79 -0.73 -0.73 -0.59 -0.66 -0.53 
-0.59 -0.33 -0.53 
--0.33 -0.46 -0.13 -0.33 -0.13 -0.33 0 -0.46 0.07 -0.2 f*
-K
-1423.13 690.29 0.2 -0.33 0.26 -0.33 0.33 -0.33 0.26 -0.33 0.33 -0.26 0.33 
-0.26 0.4 -0.2 
-0.4 -0.2 0.46 -0.2 0.46 -0.13 0.46 -0.13 0.46 -0.07 0.46 -0.07 0.53 -0.07 0.53 
-0.07 
-0.46 -0.07 0.46 -0.07 0.46 0 0.4 -0.07 0.46 -0.07 0.46 -0.07 0.4 0 0.33 -0.07 
-0.33 0.07 0.4 0 0.4 0.07 0.46 0.07 0.53 0.13 0.53 0.07 0.46 0.13 0.53 0.07 
-0.53 0.13 0.66 0.13 0.66 0.13 0.59 0.2 0.53 0.13 0.53 0.2 0.66 0.26 0.59 0.33 
-0.66 0.33 0.53 0.4 0.53 0.4 0.4 0.33 0.4 0.33 0.4 0.4 0.4 0.46 0.4 0.4 
-0.33 0.46 0.33 0.46 0.4 0.46 0.4 0.53 0.4 0.59 0.46 0.66 0.4 0.59 0.46 0.53 
-0.4 0.59 0.4 0.59 0.46 0.59 0.46 0.53 0.4 0.53 0.4 0.4 0.33 0.33 0.26 0.4 
-0.33 0.33 0.26 0.26 0.2 0.33 0.2 0.26 0.13 0.33 0.07 0.46 0 0.46 0 0.46 
--0.07 0.4 -0.07 0.4 -0.13 0.46 -0.13 0.53 -0.13 0.46 -0.2 0.4 -0.13 0.33 -0.13 
0.4 
--0.2 0.4 -0.2 0.33 -0.13 0.4 -0.2 0.33 -0.2 0.33 -0.26 0.4 -0.2 0.4 -0.26 0.4 
--0.26 0.4 -0.26 0.4 -0.07 0.13 -0.13 0.13 -0.13 0.13 -0.13 0.13 -0.13 0.13 
-0.2 0.07 
--0.26 0.07 -0.33 0 -0.33 -0.07 -0.4 -0.13 -0.4 -0.13 -0.53 -0.2 -0.53 -0.26 
-0.59 -0.33 
--0.66 -0.46 -0.73 -0.46 -0.73 -0.46 -0.73 -0.53 -0.86 -0.66 -0.92 -0.66 -0.99 
-0.73 -0.99 -0.79 
--1.06 -0.86 -1.12 -0.92 -1.12 -0.86 -1.06 -0.92 -1.12 -0.92 -1.06 -0.86 -0.99 
-0.86 -0.92 -0.79 
--0.86 -0.79 -0.79 -0.73 -0.73 -0.66 -0.66 -0.59 -0.86 -0.79 -0.73 -0.73 -0.59 
-0.66 -0.53 -0.59 
--0.33 -0.53 -0.33 -0.46 -0.13 -0.33 -0.13 -0.33 0 -0.26 0 -0.2 0.07 -0.2 H
-S
-1439.7 670.95 0.13 -0.07 0.59 -0.2 0.86 -0.26 0.86 -0.33 0.66 -0.2 0.59 -0.2 
0.53 -0.2 
-0.59 -0.2 0.66 -0.2 0.59 -0.2 0.59 -0.2 0.59 -0.13 0.53 -0.13 0.59 -0.13 0.66 
-0.07 
-0.59 -0.07 0.59 -0.13 0.53 -0.07 0.53 0 0.53 -0.07 0.53 -0.07 0.53 0 0.53 
-0.07 
-0.46 0 0.46 -0.07 0.46 0 0.53 0 0.53 0 0.53 0 0.4 0 0.53 0 
-0.53 0 0.53 0 0.46 0 0.26 0.07 0.13 0 0.07 0 0.07 0 0.07 0.07 
-0.07 0 0 0.07 0.07 0 0 0.07 S
-255 G
-1411.78 577.3 -0.4 0.46 -0.4 0.46 -0.53 0.46 -0.53 0.46 -0.53 0.53 -0.59 0.46 
-0.53 0.46 
--0.46 0.4 -0.53 0.4 -0.59 0.46 -0.59 0.4 -0.59 0.46 -0.66 0.4 -0.66 0.4 -0.59 
0.33 
--0.59 0.26 -0.66 0.33 -0.73 0.26 -0.73 0.2 -0.86 0.26 -0.79 0.2 -0.86 0.2 
-0.79 0.13 
--0.73 0.13 -0.66 0.07 -0.66 0.07 -0.66 0.13 -0.73 0 -0.73 0.07 -0.79 0.07 
-1.52 0 
--0.73 0.07 -0.66 -0.07 -1.52 0 -0.86 -0.07 -0.86 0 -0.92 -0.07 -0.86 -0.07 
-0.92 -0.13 
--0.86 -0.07 -0.86 -0.13 -0.79 -0.13 -0.66 -0.07 -0.73 -0.13 -0.73 -0.13 -0.73 
-0.13 -0.79 -0.13 
--0.86 -0.2 -0.79 -0.2 -0.86 -0.2 -0.86 -0.2 -0.86 -0.2 -0.79 -0.2 -0.86 -0.26 
-0.73 -0.13 
--0.79 -0.26 -0.86 -0.2 -0.86 -0.2 -0.92 -0.26 -0.92 -0.26 -0.99 -0.33 -0.99 
-0.26 -0.99 -0.33 
--0.92 -0.26 -0.99 -0.33 -0.92 -0.33 -0.86 -0.26 -0.86 -0.33 -0.99 -0.4 -1.06 
-0.4 -1.06 -0.4 
--1.06 -0.4 -1.06 -0.46 -1.12 -0.53 -0.99 -0.46 -0.99 -0.46 -0.92 -0.4 -0.79 
-0.4 -0.73 -0.4 
--0.66 -0.4 -0.92 -0.53 -0.79 -0.53 -0.73 -0.53 -0.73 -0.59 -0.53 -0.53 -0.46 
-0.46 -0.4 -0.46 
--0.33 -0.4 -0.4 -0.53 -0.33 -0.59 -0.26 -0.66 -0.2 -0.66 -0.13 -0.66 -0.07 
-0.66 0 -1.06 
-0.07 -0.66 0.13 -0.66 0.13 -0.66 0.13 -0.73 0.13 -0.59 0.2 -0.66 0.2 -0.59 0.2 
-0.59 
-0.26 -0.66 0.33 -0.66 0.33 -0.66 0.4 -0.66 0.33 -0.59 0.46 -0.53 0.4 -0.46 
0.53 -0.53 
-0.59 -0.53 0.66 -0.53 0.66 -0.46 0.73 -0.46 0.73 -0.4 0.73 -0.4 0.59 -0.26 
0.66 -0.33 
-0.66 -0.26 0.79 -0.26 0.79 -0.26 0.79 -0.26 0.79 -0.26 0.79 -0.2 0.79 -0.2 
0.79 -0.2 
-0.79 -0.13 0.86 -0.13 0.86 -0.13 0.99 -0.13 0.99 -0.07 1.06 -0.13 0.99 -0.07 
0.99 -0.07 
-0.92 -0.07 0.99 -0.07 0.73 0 0.86 -0.07 0.86 0 0.86 -0.07 1.85 0 0.92 -0.07 
-1.78 0 0.79 -0.07 0.79 0 0.73 -0.07 1.72 0 0.92 -0.07 0.86 0 0.92 -0.07 
-0.92 0 0.79 -0.07 0.79 0 0.79 -0.07 2.11 0 0.73 -0.07 6.67 0 0.59 0.07 
-0.66 0.07 0.66 0.07 0.73 0.13 0.73 0.26 0.73 0.26 0.73 0.33 0.73 0.46 0.73 
0.46 
-0.73 0.59 0.73 0.66 0.73 0.73 0.59 0.79 0.66 0.86 0.66 0.92 0.66 0.99 0.66 
1.12 
-0.73 1.19 0.66 1.25 0.66 1.25 0.66 1.25 0.66 1.25 0.59 1.19 0.53 1.19 0.46 
1.06 
-0.4 1.06 0.4 0.92 0.33 0.79 0.33 1.06 0.26 0.92 0.2 0.86 0.13 0.73 0 1.32 
--0.07 0.53 -0.13 0.46 -0.13 0.4 -0.2 0.33 -0.2 0.26 f*
-K
-1411.78 577.3 -0.4 0.46 -0.4 0.46 -0.53 0.46 -0.53 0.46 -0.53 0.53 -0.59 0.46 
-0.53 0.46 
--0.46 0.4 -0.53 0.4 -0.59 0.46 -0.59 0.4 -0.59 0.46 -0.66 0.4 -0.66 0.4 -0.59 
0.33 
--0.59 0.26 -0.66 0.33 -0.73 0.26 -0.73 0.2 -0.86 0.26 -0.79 0.2 -0.86 0.2 
-0.79 0.13 
--0.73 0.13 -0.66 0.07 -0.66 0.07 -0.66 0.13 -0.73 0 -0.73 0.07 -0.79 0.07 
-0.73 0 
--0.79 0 -0.73 0.07 -0.66 -0.07 -0.79 0 -0.73 0 -0.86 -0.07 -0.86 0 -0.92 -0.07 
--0.86 -0.07 -0.92 -0.13 -0.86 -0.07 -0.86 -0.13 -0.79 -0.13 -0.66 -0.07 -0.73 
-0.13 -0.73 -0.13 
--0.73 -0.13 -0.79 -0.13 -0.86 -0.2 -0.79 -0.2 -0.86 -0.2 -0.86 -0.2 -0.86 -0.2 
-0.79 -0.2 
--0.86 -0.26 -0.73 -0.13 -0.79 -0.26 -0.86 -0.2 -0.86 -0.2 -0.92 -0.26 -0.92 
-0.26 -0.99 -0.33 
--0.99 -0.26 -0.99 -0.33 -0.92 -0.26 -0.99 -0.33 -0.92 -0.33 -0.86 -0.26 -0.86 
-0.33 -0.99 -0.4 
--1.06 -0.4 -1.06 -0.4 -1.06 -0.4 -1.06 -0.46 -1.12 -0.53 -0.99 -0.46 -0.99 
-0.46 -0.92 -0.4 
--0.79 -0.4 -0.73 -0.4 -0.66 -0.4 -0.92 -0.53 -0.79 -0.53 -0.73 -0.53 -0.73 
-0.59 -0.53 -0.53 
--0.46 -0.46 -0.4 -0.46 -0.33 -0.4 -0.4 -0.53 -0.33 -0.59 -0.26 -0.66 -0.2 
-0.66 -0.13 -0.66 
--0.07 -0.66 0 -0.53 0 -0.53 0.07 -0.66 0.13 -0.66 0.13 -0.66 0.13 -0.73 0.13 
-0.59 
-0.2 -0.66 0.2 -0.59 0.2 -0.59 0.26 -0.66 0.33 -0.66 0.33 -0.66 0.4 -0.66 0.33 
-0.59 
-0.46 -0.53 0.4 -0.46 0.53 -0.53 0.59 -0.53 0.66 -0.53 0.66 -0.46 0.73 -0.46 
0.73 -0.4 
-0.73 -0.4 0.59 -0.26 0.66 -0.33 0.66 -0.26 0.79 -0.26 0.79 -0.26 0.79 -0.26 
0.79 -0.26 
-0.79 -0.2 0.79 -0.2 0.79 -0.2 0.79 -0.13 0.86 -0.13 0.86 -0.13 0.99 -0.13 0.99 
-0.07 
-1.06 -0.13 0.99 -0.07 0.99 -0.07 0.92 -0.07 0.99 -0.07 0.73 0 0.86 -0.07 0.86 
0 
-0.86 -0.07 0.92 0 0.92 0 0.92 -0.07 0.92 0 0.86 0 0.79 -0.07 0.79 0 
-0.73 -0.07 0.86 0 0.86 0 0.92 -0.07 0.86 0 0.92 -0.07 0.92 0 0.79 -0.07 
-0.79 0 0.79 -0.07 0.73 0 0.66 0 0.73 0 0.73 -0.07 0.79 0 0.79 0 
-0.86 0 0.79 0 0.79 0 0.79 0 0.73 0 0.53 0 0.59 0 0.59 0.07 
-0.66 0.07 0.66 0.07 0.73 0.13 0.73 0.26 0.73 0.26 0.73 0.33 0.73 0.46 0.73 
0.46 
-0.73 0.59 0.73 0.66 0.73 0.73 0.59 0.79 0.66 0.86 0.66 0.92 0.66 0.99 0.66 
1.12 
-0.73 1.19 0.66 1.25 0.66 1.25 0.66 1.25 0.66 1.25 0.59 1.19 0.53 1.19 0.46 
1.06 
-0.4 1.06 0.4 0.92 0.33 0.79 0.33 1.06 0.26 0.92 0.2 0.86 0.13 0.73 0 0.66 
-0 0.66 -0.07 0.53 -0.13 0.46 -0.13 0.4 -0.2 0.33 -0.2 0.26 H
-S
-1519.62 706.06 -0.13 -0.07 -0.53 -0.4 -0.79 -0.53 -0.79 -0.53 -0.59 -0.33 
-0.53 -0.26 -0.46 -0.2 
--0.53 -0.2 -0.59 -0.13 -0.59 -0.13 -0.59 -0.07 -0.53 -0.07 -0.46 -0.07 -0.53 0 
-0.53 -0.07 
--0.59 0 -0.59 -0.07 -0.53 0 -0.53 0 -0.53 -0.07 -0.59 0 -0.66 0 -0.66 0 
--0.66 0.07 -0.59 0.07 -0.53 0.07 -0.59 0.13 -0.66 0.13 -0.73 0.2 -0.73 0.2 
-0.66 0.2 
--0.66 0.26 -0.53 0.2 -0.59 0.2 -0.59 0.26 -0.66 0.26 -0.66 0.26 -0.59 0.33 
-0.59 0.33 
--0.59 0.26 -0.59 0.4 -0.59 0.4 -0.59 0.4 -0.66 0.46 -0.66 0.46 -0.59 0.46 
-0.53 0.4 
--0.53 0.4 -0.46 0.4 -0.53 0.4 -0.53 0.4 -0.53 0.4 -0.53 0.4 -0.53 0.4 -0.53 
0.33 
--0.53 0.33 -0.53 0.33 -0.59 0.33 -0.59 0.4 -0.66 0.33 -0.73 0.4 -0.66 0.33 
-0.66 0.26 
--0.59 0.33 -0.66 0.26 -0.66 0.33 -0.73 0.26 -0.79 0.26 -0.79 0.33 -0.79 0.26 
-0.79 0.2 
--0.73 0.2 -0.66 0.2 -0.66 0.13 -0.73 0.13 -0.73 0.13 -0.79 0.13 -0.79 0.13 
-0.79 0.13 
--0.73 0.07 -0.73 0.13 -0.66 0.07 -0.66 0.07 -0.73 0 -0.73 0.07 -0.73 0.07 
-0.73 0 
--0.73 0 -0.73 0 -0.73 0 -0.66 -0.07 -0.59 0 -0.79 -0.13 -0.86 -0.07 -0.79 
-0.13 
--0.86 -0.2 -0.79 -0.2 -0.73 -0.13 -0.66 -0.2 -0.59 -0.2 -0.53 -0.2 -0.46 -0.26 
-0.53 -0.26 
--0.53 -0.26 -0.46 -0.33 -0.53 -0.26 -0.53 -0.33 -0.53 -0.4 -0.46 -0.26 -0.53 
-0.33 -0.66 -0.4 
--0.73 -0.46 -0.92 -0.53 -0.99 -0.59 -0.92 -0.59 -0.66 -0.4 -0.26 -0.2 -0.07 0 S
-1442.93 816.42 -0.07 0.07 -0.46 0.26 -0.79 0.53 -0.99 0.66 -0.92 0.59 -0.79 
0.46 -0.66 0.4 
--0.66 0.26 -0.66 0.26 -0.66 0.2 -0.79 0.2 -0.73 0.2 -0.79 0.13 -0.79 0.13 
-0.73 0.07 
--0.73 0.07 -0.66 0 -0.79 0.07 -0.79 -0.07 -0.79 0 -0.79 -0.07 -0.79 -0.13 
-0.73 -0.13 
--0.66 -0.13 -0.66 -0.2 -0.66 -0.26 -0.73 -0.26 -0.73 -0.33 -0.66 -0.33 -0.66 
-0.4 -0.59 -0.33 
--0.46 -0.4 -0.53 -0.4 -0.46 -0.46 -0.46 -0.46 -0.46 -0.53 -0.4 -0.53 -0.4 
-0.59 -0.26 -0.53 
--0.26 -0.53 -0.26 -0.59 -0.2 -0.59 -0.2 -0.73 -0.13 -0.66 -0.13 -0.73 -0.13 
-0.73 -0.07 -0.66 
--0.07 -0.66 0 -0.59 0 -0.66 0 -0.73 0 -0.66 0.13 -0.73 0.07 -0.66 0.2 -0.59 
-0.13 -0.59 0.26 -0.59 0.26 -0.59 0.33 -0.66 0.33 -0.66 0.46 -0.59 0.4 -0.59 
0.4 -0.53 
-0.46 -0.46 0.4 -0.46 0.46 -0.4 0.53 -0.46 0.59 -0.4 0.53 -0.46 0.53 -0.33 0.53 
-0.33 
-0.53 -0.33 0.53 -0.26 0.53 -0.26 0.59 -0.26 0.66 -0.26 0.66 -0.26 0.59 -0.2 
0.66 -0.2 
-0.59 -0.13 0.59 -0.13 0.66 -0.13 0.66 -0.07 0.79 -0.13 0.73 -0.07 0.66 -0.07 
0.73 0 
-0.59 -0.07 0.59 0 0.66 0 0.66 -0.07 0.66 0 0.66 0.07 0.66 0 0.59 0 
-0.59 0.07 0.59 0.07 0.59 0 0.59 0.13 0.66 0.07 0.59 0.07 0.59 0.07 0.59 0.13 
-0.46 0.07 0.66 0.13 0.59 0.07 0.66 0.13 0.59 0.13 0.53 0.07 0.53 0 0.46 0.07 
-0.46 0 0.46 -0.07 0.46 -0.07 0.46 -0.13 0.46 -0.2 0.4 -0.2 0.53 -0.26 0.59 
-0.26 
-0.59 -0.26 0.59 -0.26 0.59 -0.13 0.66 -0.13 0.66 -0.07 0.79 0.07 0.73 0 0.66 
0.07 
-0.59 0.13 0.53 0.07 0.53 0.13 0.46 0.2 0.4 0.2 0.33 0.26 0.26 0.33 0.2 0.4 
-0.2 0.53 0.13 0.59 0.07 0.66 0 0.73 0 0.59 -0.07 0.66 -0.07 0.73 -0.2 0.73 
--0.2 0.73 -0.2 0.66 -0.26 0.53 -0.26 0.46 -0.4 0.46 -0.53 0.53 -0.59 0.53 -0.4 
0.33 
--0.07 0.07 S
-255 G
-1467.29 879.45 0.59 0.92 0.66 0.86 0.66 0.79 0.73 0.86 0.73 0.79 0.73 0.79 
0.73 0.79 
-0.79 0.73 0.73 0.66 0.79 0.59 0.73 0.59 0.79 0.59 0.79 0.59 0.92 0.53 0.92 
0.59 
-0.99 0.53 1.06 0.53 1.12 0.53 1.06 0.4 1.12 0.33 1.06 0.26 0.99 0.13 0.99 0 
-0.92 -0.07 0.73 -0.13 0.79 -0.26 0.79 -0.26 0.79 -0.4 0.73 -0.53 0.79 -0.53 
0.73 -0.66 
-0.73 -0.73 0.66 -0.73 0.66 -0.73 0.53 -0.79 0.53 -0.79 0.46 -0.79 0.4 -0.79 
0.33 -0.86 
-0.33 -0.86 0.33 -0.86 0.26 -0.99 0.26 -0.99 0.2 -1.06 0.2 -1.12 0.13 -1.12 
0.13 -1.12 
-0.13 -1.19 0.07 -1.12 0 -1.12 0.07 -1.12 0 -3.17 -0.07 -1.12 0 -1.12 -0.07 
-1.25 
--0.07 -1.25 -0.07 -1.25 -0.13 -1.32 -0.07 -1.32 -0.13 -1.32 -0.2 -1.32 -0.13 
-1.25 -0.13 -1.25 
--0.2 -1.25 -0.2 -1.19 -0.2 -1.19 -0.26 -1.12 -0.2 -1.19 -0.26 -1.19 -0.33 
-1.25 -0.33 -1.25 
--0.33 -1.32 -0.33 -1.25 -0.4 -1.32 -0.4 -1.25 -0.46 -1.25 -0.4 -1.25 -0.46 
-1.12 -0.4 -1.12 
--0.46 -1.06 -0.4 -0.99 -0.46 -0.99 -0.53 -1.12 -0.53 -1.06 -0.53 -1.06 -0.66 
-1.06 -0.66 -1.06 
--0.66 -1.06 -0.73 -1.06 -0.73 -0.99 -0.79 -0.99 -0.73 -0.86 -0.79 -0.86 -0.79 
-0.73 -0.73 -0.73 
--0.79 -0.66 -0.79 -0.66 -0.86 -0.59 -0.92 -0.59 -0.92 -0.53 -0.99 -0.53 -1.06 
-0.53 -1.06 -0.46 
--1.12 -0.4 -1.12 -0.33 -1.06 -0.26 -1.06 -0.2 -0.99 -0.13 -0.99 -0.07 -0.99 
-0.07 -0.99 0.07 
--0.99 0.07 -0.99 0.2 -1.06 0.2 -1.06 0.33 -1.06 0.4 -1.06 0.4 -0.99 0.53 -0.99 
0.53 
--0.92 0.59 -0.86 0.59 -0.79 0.66 -0.73 0.73 -0.66 0.66 -0.59 0.79 -0.59 0.79 
-0.53 0.86 
--0.53 0.99 -0.53 0.99 -0.46 1.06 -0.4 1.06 -0.4 1.12 -0.33 1.06 -0.26 1.12 
-0.26 0.99 
--0.2 1.06 -0.2 0.92 -0.13 0.92 -0.13 0.92 -0.07 0.92 -0.07 0.99 -0.07 0.92 0 
2.05 
-0.07 1.06 0.07 1.06 0.13 1.06 0.13 1.06 0.2 1.06 0.26 0.99 0.2 0.99 0.26 1.06 
-0.26 0.92 0.33 0.92 0.33 0.99 0.33 1.06 0.46 1.06 0.4 1.19 0.46 1.12 0.53 1.19 
-0.46 1.25 0.53 1.19 0.53 1.12 0.53 1.19 0.53 1.12 0.53 1.06 0.53 1.06 0.53 
0.99 
-0.53 0.99 0.53 1.06 0.53 0.99 0.53 1.06 0.59 1.06 0.59 1.06 0.66 1.06 0.59 
1.06 
-0.59 1.06 0.66 0.99 0.59 0.92 0.53 0.92 0.59 0.79 0.53 0.79 0.46 0.79 f*
-K
-1467.29 879.45 0.59 0.92 0.66 0.86 0.66 0.79 0.73 0.86 0.73 0.79 0.73 0.79 
0.73 0.79 
-0.79 0.73 0.73 0.66 0.79 0.59 0.73 0.59 0.79 0.59 0.79 0.59 0.92 0.53 0.92 
0.59 
-0.99 0.53 1.06 0.53 1.12 0.53 1.06 0.4 1.12 0.33 1.06 0.26 0.99 0.13 0.99 0 
-0.92 -0.07 0.73 -0.13 0.79 -0.26 0.79 -0.26 0.79 -0.4 0.73 -0.53 0.79 -0.53 
0.73 -0.66 
-0.73 -0.73 0.66 -0.73 0.66 -0.73 0.53 -0.79 0.53 -0.79 0.46 -0.79 0.4 -0.79 
0.33 -0.86 
-0.33 -0.86 0.33 -0.86 0.26 -0.99 0.26 -0.99 0.2 -1.06 0.2 -1.12 0.13 -1.12 
0.13 -1.12 
-0.13 -1.19 0.07 -1.12 0 -1.12 0.07 -1.12 0 -1.12 0 -0.99 0 -1.06 -0.07 -1.12 
-0 -1.12 -0.07 -1.25 -0.07 -1.25 -0.07 -1.25 -0.13 -1.32 -0.07 -1.32 -0.13 
-1.32 -0.2 -1.32 
--0.13 -1.25 -0.13 -1.25 -0.2 -1.25 -0.2 -1.19 -0.2 -1.19 -0.26 -1.12 -0.2 
-1.19 -0.26 -1.19 
--0.33 -1.25 -0.33 -1.25 -0.33 -1.32 -0.33 -1.25 -0.4 -1.32 -0.4 -1.25 -0.46 
-1.25 -0.4 -1.25 
--0.46 -1.12 -0.4 -1.12 -0.46 -1.06 -0.4 -0.99 -0.46 -0.99 -0.53 -1.12 -0.53 
-1.06 -0.53 -1.06 
--0.66 -1.06 -0.66 -1.06 -0.66 -1.06 -0.73 -1.06 -0.73 -0.99 -0.79 -0.99 -0.73 
-0.86 -0.79 -0.86 
--0.79 -0.73 -0.73 -0.73 -0.79 -0.66 -0.79 -0.66 -0.86 -0.59 -0.92 -0.59 -0.92 
-0.53 -0.99 -0.53 
--1.06 -0.53 -1.06 -0.46 -1.12 -0.4 -1.12 -0.33 -1.06 -0.26 -1.06 -0.2 -0.99 
-0.13 -0.99 -0.07 
--0.99 -0.07 -0.99 0.07 -0.99 0.07 -0.99 0.2 -1.06 0.2 -1.06 0.33 -1.06 0.4 
-1.06 0.4 
--0.99 0.53 -0.99 0.53 -0.92 0.59 -0.86 0.59 -0.79 0.66 -0.73 0.73 -0.66 0.66 
-0.59 0.79 
--0.59 0.79 -0.53 0.86 -0.53 0.99 -0.53 0.99 -0.46 1.06 -0.4 1.06 -0.4 1.12 
-0.33 1.06 
--0.26 1.12 -0.26 0.99 -0.2 1.06 -0.2 0.92 -0.13 0.92 -0.13 0.92 -0.07 0.92 
-0.07 0.99 
--0.07 0.92 0 1.06 0 0.99 0.07 1.06 0.07 1.06 0.13 1.06 0.13 1.06 0.2 1.06 
-0.26 0.99 0.2 0.99 0.26 1.06 0.26 0.92 0.33 0.92 0.33 0.99 0.33 1.06 0.46 1.06 
-0.4 1.19 0.46 1.12 0.53 1.19 0.46 1.25 0.53 1.19 0.53 1.12 0.53 1.19 0.53 1.12 
-0.53 1.06 0.53 1.06 0.53 0.99 0.53 0.99 0.53 1.06 0.53 0.99 0.53 1.06 0.59 
1.06 
-0.59 1.06 0.66 1.06 0.59 1.06 0.59 1.06 0.66 0.99 0.59 0.92 0.53 0.92 0.59 
0.79 
-0.53 0.79 0.46 0.79 H
-S
-2.97 w
-1413.76 785.2 0.07 0 0.4 0 0.79 0 0.99 -0.07 0.86 -0.07 0.66 0 0.53 -0.07 
-0.53 -0.13 0.53 -0.2 0.53 -0.26 0.53 -0.33 0.53 -0.33 0.46 -0.46 0.46 -0.46 
0.4 -0.4 
-0.4 -0.4 0.46 -0.46 0.46 -0.53 0.53 -0.53 0.46 -0.53 0.46 -0.53 0.46 -0.46 
0.46 -0.46 
-0.46 -0.53 0.46 -0.53 0.53 -0.53 0.46 -0.53 0.53 -0.46 0.46 -0.46 0.46 -0.46 
0.46 -0.46 
-0.46 -0.46 0.53 -0.46 0.59 -0.53 0.53 -0.46 0.53 -0.53 0.53 -0.46 0.46 -0.53 
0.46 -0.46 
-0.53 -0.53 0.53 -0.53 0.59 -0.59 0.59 -0.59 0.53 -0.59 0.59 -0.53 0.59 -0.46 
0.46 -0.4 
-0.53 -0.4 0.59 -0.46 0.59 -0.4 0.66 -0.46 0.59 -0.4 0.66 -0.4 0.66 -0.4 0.59 
-0.4 
-0.66 -0.33 0.59 -0.33 0.66 -0.4 0.66 -0.33 0.73 -0.4 0.73 -0.4 0.73 -0.33 0.79 
-0.33 
-0.73 -0.33 0.66 -0.26 0.73 -0.26 0.66 -0.26 0.73 -0.2 0.79 -0.2 0.79 -0.2 0.86 
-0.2 
-0.86 -0.2 0.92 -0.13 0.86 -0.13 0.79 -0.13 0.86 -0.13 0.66 -0.07 0.79 -0.07 
0.73 -0.07 
-0.86 0 0.86 -0.07 0.86 0 0.86 -0.07 0.86 0 0.79 0 0.79 0 0.73 0.07 
-0.73 0 0.86 0.07 0.86 0.07 0.86 0.13 0.92 0.07 0.92 0.2 0.92 0.13 0.86 0.2 
-0.86 0.2 0.79 0.26 0.79 0.2 0.79 0.33 0.79 0.26 0.86 0.33 0.86 0.4 0.92 0.4 
-0.86 0.4 0.86 0.46 0.79 0.33 0.79 0.4 0.73 0.33 0.73 0.4 0.73 0.33 0.73 0.4 
-0.79 0.33 0.79 0.4 0.73 0.4 0.79 0.4 0.73 0.4 0.73 0.4 0.73 0.4 0.73 0.4 
-0.79 0.46 0.79 0.46 0.79 0.46 0.79 0.53 0.86 0.53 0.73 0.53 0.66 0.46 0.66 0.4 
-0.53 0.46 0.59 0.46 0.59 0.53 0.53 0.53 0.53 0.46 0.46 0.4 0.53 0.4 0.46 0.33 
-0.46 0.26 0.46 0.2 0.53 0.13 0.66 0.2 0.66 0.07 0.59 0.07 0.66 0.07 0.53 0.07 
-0.53 0 0.59 0 0.59 0.07 0.66 0 0.73 0 0.46 0 0.07 0 S
-255 G
-1438.31 832.92 0.4 0.59 0.4 0.53 0.4 0.59 0.46 0.59 0.4 0.73 0.4 0.73 0.4 0.79 
-0.4 0.86 0.4 0.92 0.4 0.99 0.26 0.86 0.33 0.86 0.33 0.92 0.33 1.06 0.4 1.12 
-0.4 1.19 0.33 1.25 0.4 1.25 0.4 1.25 0.4 1.19 0.4 1.25 0.33 1.12 0.33 1.12 
-0.33 1.06 0.33 1.06 0.33 0.99 0.33 1.06 0.33 1.06 0.33 1.06 0.33 1.06 0.33 
1.06 
-0.33 0.99 0.33 0.99 0.33 0.92 0.33 0.86 0.26 0.79 0.26 0.73 0.26 0.73 0.33 
0.86 
-0.33 0.79 0.33 0.79 0.26 0.79 0.33 0.79 0.33 0.86 0.33 0.79 0.33 0.73 0.33 
0.73 
-0.26 0.66 0.26 0.66 0.26 0.59 0.26 0.79 0.33 0.73 0.26 0.79 0.33 0.86 0.33 
0.79 
-0.26 0.79 0.26 0.73 0.26 0.73 0.2 0.59 0.2 0.59 0.2 0.66 0.2 0.66 0.2 0.66 
-0.07 0.66 0.07 0.66 -0.07 0.66 -0.07 0.66 -0.2 0.66 -0.2 0.53 -0.2 0.46 -0.26 
0.53 
--0.33 0.59 -0.4 0.53 -0.4 0.53 -0.53 0.53 -0.53 0.46 -0.53 0.4 -0.59 0.33 
-0.59 0.2 
--0.59 0.13 -0.66 0.13 -0.73 0 -0.73 -0.13 -0.86 -0.13 -0.86 -0.2 -0.86 -0.26 
-0.86 -0.33 
--0.86 -0.4 -0.79 -0.33 -0.73 -0.4 -0.73 -0.33 -0.59 -0.4 -0.73 -0.46 -0.73 
-0.46 -0.66 -0.46 
--0.66 -0.53 -0.66 -0.59 -0.66 -0.66 -0.66 -0.66 -0.66 -0.73 -0.66 -0.73 -0.66 
-0.86 -0.53 -0.59 
--0.53 -0.66 -0.59 -0.79 -0.59 -0.79 -0.66 -0.86 -0.73 -0.99 -0.73 -0.92 -0.66 
-1.06 -0.73 -0.99 
--0.73 -1.06 -0.66 -0.99 -0.66 -0.99 -0.59 -0.99 -0.59 -0.99 -0.59 -0.99 -0.59 
-0.99 -0.59 -1.06 
--0.59 -1.06 -0.59 -1.06 -0.59 -1.12 -0.53 -1.12 -0.53 -1.06 -0.53 -1.06 -0.46 
-0.92 -0.46 -0.92 
--0.4 -0.86 -0.4 -0.79 -0.33 -0.73 -0.4 -0.79 -0.33 -0.79 -0.33 -0.73 -0.26 
-0.73 -0.33 -0.79 
--0.26 -0.79 -0.26 -0.73 -0.2 -0.79 -0.2 -0.86 -0.2 -0.79 -0.2 -0.86 -0.13 
-0.92 -0.13 -0.79 
--0.13 -0.92 -0.13 -0.92 -0.07 -1.06 -0.13 -1.12 -0.07 -1.19 -0.07 -1.12 -0.07 
-1.19 -0.07 -1.19 
-0 -1.12 0.07 -1.06 0 -0.99 0.07 -0.92 0.13 -0.92 0.2 -1.12 0.26 -1.06 0.33 
-0.99 
-0.4 -0.92 0.4 -0.92 0.46 -0.79 0.46 -0.73 0.46 -0.59 0.46 -0.53 0.46 -0.46 
0.53 -0.46 
-0.53 -0.46 0.59 -0.46 0.59 -0.33 0.66 -0.33 0.59 -0.26 0.66 -0.2 0.59 -0.13 
0.66 -0.13 
-1.58 0 0.86 0.07 0.92 0.2 0.86 0.2 0.79 0.4 0.73 0.4 0.59 0.4 0.66 0.46 
-0.59 0.59 0.66 0.59 0.59 0.66 0.59 0.73 0.59 0.66 0.53 0.66 0.46 0.66 f*
-1.98 w
-K
-1438.31 832.92 0.4 0.59 0.4 0.53 0.4 0.59 0.46 0.59 0.4 0.73 0.4 0.73 0.4 0.79 
-0.4 0.86 0.4 0.92 0.4 0.99 0.26 0.86 0.33 0.86 0.33 0.92 0.33 1.06 0.4 1.12 
-0.4 1.19 0.33 1.25 0.4 1.25 0.4 1.25 0.4 1.19 0.4 1.25 0.33 1.12 0.33 1.12 
-0.33 1.06 0.33 1.06 0.33 0.99 0.33 1.06 0.33 1.06 0.33 1.06 0.33 1.06 0.33 
1.06 
-0.33 0.99 0.33 0.99 0.33 0.92 0.33 0.86 0.26 0.79 0.26 0.73 0.26 0.73 0.33 
0.86 
-0.33 0.79 0.33 0.79 0.26 0.79 0.33 0.79 0.33 0.86 0.33 0.79 0.33 0.73 0.33 
0.73 
-0.26 0.66 0.26 0.66 0.26 0.59 0.26 0.79 0.33 0.73 0.26 0.79 0.33 0.86 0.33 
0.79 
-0.26 0.79 0.26 0.73 0.26 0.73 0.2 0.59 0.2 0.59 0.2 0.66 0.2 0.66 0.2 0.66 
-0.07 0.66 0.07 0.66 -0.07 0.66 -0.07 0.66 -0.2 0.66 -0.2 0.53 -0.2 0.46 -0.26 
0.53 
--0.33 0.59 -0.4 0.53 -0.4 0.53 -0.53 0.53 -0.53 0.46 -0.53 0.4 -0.59 0.33 
-0.59 0.2 
--0.59 0.13 -0.66 0.13 -0.73 0 -0.73 -0.13 -0.86 -0.13 -0.86 -0.2 -0.86 -0.26 
-0.86 -0.33 
--0.86 -0.4 -0.79 -0.33 -0.73 -0.4 -0.73 -0.33 -0.59 -0.4 -0.73 -0.46 -0.73 
-0.46 -0.66 -0.46 
--0.66 -0.53 -0.66 -0.59 -0.66 -0.66 -0.66 -0.66 -0.66 -0.73 -0.66 -0.73 -0.66 
-0.86 -0.53 -0.59 
--0.53 -0.66 -0.59 -0.79 -0.59 -0.79 -0.66 -0.86 -0.73 -0.99 -0.73 -0.92 -0.66 
-1.06 -0.73 -0.99 
--0.73 -1.06 -0.66 -0.99 -0.66 -0.99 -0.59 -0.99 -0.59 -0.99 -0.59 -0.99 -0.59 
-0.99 -0.59 -1.06 
--0.59 -1.06 -0.59 -1.06 -0.59 -1.12 -0.53 -1.12 -0.53 -1.06 -0.53 -1.06 -0.46 
-0.92 -0.46 -0.92 
--0.4 -0.86 -0.4 -0.79 -0.33 -0.73 -0.4 -0.79 -0.33 -0.79 -0.33 -0.73 -0.26 
-0.73 -0.33 -0.79 
--0.26 -0.79 -0.26 -0.73 -0.2 -0.79 -0.2 -0.86 -0.2 -0.79 -0.2 -0.86 -0.13 
-0.92 -0.13 -0.79 
--0.13 -0.92 -0.13 -0.92 -0.07 -1.06 -0.13 -1.12 -0.07 -1.19 -0.07 -1.12 -0.07 
-1.19 -0.07 -1.19 
-0 -1.12 0.07 -1.06 0 -0.99 0.07 -0.92 0.13 -0.92 0.2 -1.12 0.26 -1.06 0.33 
-0.99 
-0.4 -0.92 0.4 -0.92 0.46 -0.79 0.46 -0.73 0.46 -0.59 0.46 -0.53 0.46 -0.46 
0.53 -0.46 
-0.53 -0.46 0.59 -0.46 0.59 -0.33 0.66 -0.33 0.59 -0.26 0.66 -0.2 0.59 -0.13 
0.66 -0.13 
-0.79 0 0.79 0 0.86 0.07 0.92 0.2 0.86 0.2 0.79 0.4 0.73 0.4 0.59 0.4 
-0.66 0.46 0.59 0.59 0.66 0.59 0.59 0.66 0.59 0.73 0.59 0.66 0.53 0.66 0.46 
0.66 H
-S
-1479.17 904.66 0.07 0 0.26 0.2 0.66 0.4 1.06 0.53 1.25 0.66 1.32 0.73 1.25 
0.66 
-1.19 0.53 1.06 0.46 0.92 0.33 0.86 0.26 0.86 0.26 0.86 0.13 0.86 0.13 0.92 
0.07 
-0.92 0 0.99 0 0.99 -0.07 0.99 -0.13 0.99 -0.13 0.92 -0.2 0.86 -0.26 0.79 -0.26 
-0.79 -0.26 0.79 -0.33 0.73 -0.4 0.79 -0.4 0.73 -0.46 0.79 -0.59 0.73 -0.59 
0.73 -0.66 
-0.66 -0.66 0.66 -0.73 0.53 -0.73 0.53 -0.79 0.46 -0.79 0.4 -0.73 0.4 -0.79 
0.33 -0.92 
-0.33 -0.99 0.4 -1.12 0.4 -1.32 0.4 -1.45 0.4 -1.52 0.4 -1.45 0.4 -1.39 0.26 
-0.99 
-0.13 -0.59 0.07 -0.26 0 -0.07 S
-1465.24 902.61 0 0.07 -0.07 0.33 -0.2 0.66 -0.26 0.92 -0.33 1.06 -0.33 0.92 
-0.26 0.86 
--0.33 0.59 -0.33 0.59 -0.33 0.4 -0.46 0.46 -0.46 0.33 -0.53 0.33 -0.66 0.33 
-0.66 0.26 
--0.73 0.26 -0.73 0.2 -0.79 0.13 -0.73 0.13 -0.73 0.07 -0.73 0.07 -0.79 0.07 
-0.86 0 
--0.92 -0.07 -0.92 -0.07 -0.99 -0.13 -0.92 -0.2 -0.86 -0.26 -0.86 -0.26 -0.86 
-0.33 -0.66 -0.4 
--0.66 -0.4 -0.73 -0.46 -0.73 -0.53 -0.79 -0.59 -0.79 -0.66 -0.79 -0.73 -0.86 
-0.73 -0.79 -0.79 
--0.79 -0.73 -0.73 -0.79 -0.79 -0.79 -0.59 -0.66 -0.66 -0.59 -0.66 -0.73 -0.66 
-0.73 -0.73 -0.73 
--0.73 -0.79 -0.73 -0.86 -0.79 -0.86 -0.73 -0.92 -0.79 -0.86 -0.73 -0.92 -0.73 
-0.92 -0.66 -0.86 
--0.66 -0.86 -0.66 -0.86 -0.59 -0.92 -0.59 -0.86 -0.59 -0.92 -0.59 -0.92 -0.59 
-0.99 -0.59 -1.06 
--0.59 -1.06 -0.59 -1.06 -0.59 -1.12 -0.59 -1.12 -0.53 -1.06 -0.53 -1.06 -0.46 
-1.06 -0.46 -0.99 
--0.4 -0.99 -0.4 -0.92 -0.4 -0.86 -0.4 -0.99 -0.4 -1.06 -0.4 -0.99 -0.33 -1.06 
-0.4 -1.06 
--0.4 -1.06 -0.33 -1.06 -0.33 -0.99 -0.33 -1.06 -0.33 -0.92 -0.26 -0.92 -0.33 
-0.86 -0.26 -0.79 
--0.26 -0.79 -0.33 -0.86 -0.26 -0.92 -0.4 -0.92 -0.33 -0.92 -0.33 -0.92 -0.4 
-0.99 -0.4 -0.92 
--0.33 -0.92 -0.4 -0.92 -0.33 -0.86 -0.33 -0.86 -0.33 -0.86 -0.26 -0.86 -0.33 
-0.92 -0.4 -0.99 
--0.4 -1.12 -0.46 -1.25 -0.46 -1.45 -0.53 -1.52 -0.46 -1.45 -0.4 -1.12 -0.26 
-0.79 -0.13 -0.33 
-0 -0.07 S
-255 215 0 rG
-1515.27 643.03 0.79 -0.53 0.79 -0.53 0.73 -0.53 0.79 -0.46 0.79 -0.53 0.73 
-0.46 0.73 -0.46 
-0.73 -0.46 0.66 -0.4 0.59 -0.4 0.66 -0.4 0.53 -0.33 0.73 -0.46 0.73 -0.46 0.73 
-0.46 
-0.79 -0.46 0.73 -0.53 0.79 -0.46 0.79 -0.53 0.66 -0.46 0.66 -0.4 0.66 -0.46 
0.59 -0.4 
-0.66 -0.4 0.66 -0.4 0.66 -0.46 0.59 -0.4 0.66 -0.46 0.59 -0.33 0.53 -0.4 0.46 
-0.26 
-0.4 -0.26 0.66 -0.46 0.59 -0.33 0.59 -0.33 0.53 -0.26 0.46 -0.2 0.4 -0.13 0.46 
-0.07 
-0.92 0 0.46 0.07 0.4 0.13 0.33 0.13 0.4 0.13 0.33 0.26 0.33 0.2 0.26 0.2 
-0.26 0.26 0.26 0.26 0.2 0.33 0.26 0.33 0.26 0.33 0.2 0.33 0.26 0.33 0.26 0.33 
-0.33 0.4 0.2 0.33 0.2 0.33 0.26 0.4 0.2 0.46 0.13 0.46 0.13 0.46 0.07 0.4 
-0 0.86 -0.07 0.46 -0.07 0.53 -0.07 0.4 -0.07 0.4 -0.13 0.33 -0.2 0.33 -0.2 0.4 
--0.26 0.33 -0.26 0.26 -0.33 0.33 -0.33 0.26 -0.33 0.33 -0.46 0.33 -0.46 0.33 
-0.46 0.33 
--0.46 0.33 -0.46 0.33 -0.53 0.33 -0.59 0.4 -0.66 0.4 -0.66 0.4 -0.59 0.4 -0.53 
0.33 
--0.59 0.33 -0.59 0.4 -0.73 0.46 -0.66 0.46 -0.66 0.4 -0.66 0.46 -0.59 0.4 
-0.66 0.4 
--0.59 0.4 -0.66 0.46 -0.73 0.4 -0.59 0.4 -0.59 0.4 -0.53 0.33 -0.53 0.26 -0.4 
0.26 
--0.46 0.26 -0.46 0.26 -0.46 0.26 -0.46 0.26 -0.46 0.26 -0.46 0.26 -0.46 0.33 
-0.53 0.4 
--0.59 0.4 -0.59 0.4 -0.66 0.53 -0.59 0.46 -0.59 0.4 -0.46 0.33 -0.4 0.33 -0.33 
0.2 
--0.26 0.2 -0.2 0.13 -0.26 0.07 -0.92 0 -0.4 -0.07 -0.46 -0.07 -0.53 -0.07 
-0.59 -0.13 
--0.66 -0.07 -0.79 -0.13 -0.79 -0.13 -0.86 -0.13 -0.79 -0.07 -0.79 -0.13 -0.79 
-0.13 -0.79 -0.13 
--0.79 -0.13 -0.79 -0.07 -0.86 -0.13 -0.79 -0.2 -0.79 -0.13 -0.66 -0.13 -0.66 
-0.07 -0.53 -0.13 
--0.46 -0.13 -0.2 -0.07 -0.13 0 -0.13 -0.07 -0.13 -0.07 -0.13 -0.07 -0.13 0 
-0.07 -0.07 
--0.13 -0.07 -0.07 -0.07 -0.07 -0.07 0 -0.13 -0.07 -0.07 0 -0.26 0.07 -0.13 
0.07 -0.13 
-0.07 -0.13 0.07 -0.13 0.13 -0.13 0.13 -0.13 0.13 -0.13 0.13 -0.2 0.2 -0.13 0.2 
-0.2 
-0.2 -0.2 0.46 -0.4 0.66 -0.46 0.66 -0.59 0.79 -0.59 0.86 -0.66 0.99 -0.66 0.92 
-0.73 
-0.99 -0.66 0.92 -0.66 0.92 -0.66 0.86 -0.59 f*
-K
-1515.27 643.03 0.79 -0.53 0.79 -0.53 0.73 -0.53 0.79 -0.46 0.79 -0.53 0.73 
-0.46 0.73 -0.46 
-0.73 -0.46 0.66 -0.4 0.59 -0.4 0.66 -0.4 0.53 -0.33 0.73 -0.46 0.73 -0.46 0.73 
-0.46 
-0.79 -0.46 0.73 -0.53 0.79 -0.46 0.79 -0.53 0.66 -0.46 0.66 -0.4 0.66 -0.46 
0.59 -0.4 
-0.66 -0.4 0.66 -0.4 0.66 -0.46 0.59 -0.4 0.66 -0.46 0.59 -0.33 0.53 -0.4 0.46 
-0.26 
-0.4 -0.26 0.66 -0.46 0.59 -0.33 0.59 -0.33 0.53 -0.26 0.46 -0.2 0.4 -0.13 0.46 
-0.07 
-0.46 0 0.46 0 0.46 0.07 0.4 0.13 0.33 0.13 0.4 0.13 0.33 0.26 0.33 0.2 
-0.26 0.2 0.26 0.26 0.26 0.26 0.2 0.33 0.26 0.33 0.26 0.33 0.2 0.33 0.26 0.33 
-0.26 0.33 0.33 0.4 0.2 0.33 0.2 0.33 0.26 0.4 0.2 0.46 0.13 0.46 0.13 0.46 
-0.07 0.4 0 0.46 0 0.4 -0.07 0.46 -0.07 0.53 -0.07 0.4 -0.07 0.4 -0.13 0.33 
--0.2 0.33 -0.2 0.4 -0.26 0.33 -0.26 0.26 -0.33 0.33 -0.33 0.26 -0.33 0.33 
-0.46 0.33 
--0.46 0.33 -0.46 0.33 -0.46 0.33 -0.46 0.33 -0.53 0.33 -0.59 0.4 -0.66 0.4 
-0.66 0.4 
--0.59 0.4 -0.53 0.33 -0.59 0.33 -0.59 0.4 -0.73 0.46 -0.66 0.46 -0.66 0.4 
-0.66 0.46 
--0.59 0.4 -0.66 0.4 -0.59 0.4 -0.66 0.46 -0.73 0.4 -0.59 0.4 -0.59 0.4 -0.53 
0.33 
--0.53 0.26 -0.4 0.26 -0.46 0.26 -0.46 0.26 -0.46 0.26 -0.46 0.26 -0.46 0.26 
-0.46 0.26 
--0.46 0.33 -0.53 0.4 -0.59 0.4 -0.59 0.4 -0.66 0.53 -0.59 0.46 -0.59 0.4 -0.46 
0.33 
--0.4 0.33 -0.33 0.2 -0.26 0.2 -0.2 0.13 -0.26 0.07 -0.26 0 -0.26 0 -0.4 0 
--0.4 -0.07 -0.46 -0.07 -0.53 -0.07 -0.59 -0.13 -0.66 -0.07 -0.79 -0.13 -0.79 
-0.13 -0.86 -0.13 
--0.79 -0.07 -0.79 -0.13 -0.79 -0.13 -0.79 -0.13 -0.79 -0.13 -0.79 -0.07 -0.86 
-0.13 -0.79 -0.2 
--0.79 -0.13 -0.66 -0.13 -0.66 -0.07 -0.53 -0.13 -0.46 -0.13 -0.2 -0.07 -0.13 0 
-0.13 -0.07 
--0.13 -0.07 -0.13 -0.07 -0.13 0 -0.07 -0.07 -0.13 -0.07 -0.07 -0.07 -0.07 
-0.07 0 -0.13 
--0.07 -0.07 0 -0.07 0 -0.13 0 -0.07 0.07 -0.13 0.07 -0.13 0.07 -0.13 0.07 
-0.13 
-0.13 -0.13 0.13 -0.13 0.13 -0.13 0.13 -0.2 0.2 -0.13 0.2 -0.2 0.2 -0.2 0.46 
-0.4 
-0.66 -0.46 0.66 -0.59 0.79 -0.59 0.86 -0.66 0.99 -0.66 0.92 -0.73 0.99 -0.66 
0.92 -0.66 
-0.92 -0.66 0.86 -0.59 H
-S
-1477.56 834.88 m
--2.46 -9.87 -9.59 -16.59 -15.92 -15.01 c
--6.33 1.58 -9.47 10.86 -7.01 20.73 c
-2.46 9.87 9.59 16.59 15.92 15.01 c
-6.33 -1.58 9.47 -10.86 7.01 -20.73 c
-f*
-0.495 w
-1477.56 834.88 m
--2.46 -9.87 -9.59 -16.59 -15.92 -15.01 c
--6.33 1.58 -9.47 10.86 -7.01 20.73 c
-2.46 9.87 9.59 16.59 15.92 15.01 c
-6.33 -1.58 9.47 -10.86 7.01 -20.73 c
-h
-S
-209 0 r3
-1400.89 699.2 0.4 -0.53 0.46 -0.46 0.46 -0.46 0.46 -0.53 0.46 -0.46 0.46 -0.4 
0.4 -0.4 
-0.4 -0.33 0.53 -0.46 0.53 -0.46 0.59 -0.46 0.59 -0.4 0.59 -0.33 0.59 -0.26 
0.46 -0.13 
-0.53 -0.2 0.59 -0.13 0.59 -0.13 0.66 -0.13 0.66 -0.07 0.66 -0.13 0.59 -0.07 
0.59 0 
-0.73 -0.07 0.66 -0.07 2.9 0 0.59 0.07 0.59 0.07 0.66 0.07 0.66 0.07 0.66 0.13 
-0.73 0.13 0.66 0.13 0.66 0.13 0.59 0.13 0.59 0.13 0.66 0.2 0.73 0.13 0.66 0.2 
-0.73 0.2 0.66 0.2 0.59 0.2 0.53 0.2 0.53 0.13 0.53 0.26 0.53 0.2 0.46 0.26 
-0.53 0.26 0.46 0.26 0.46 0.33 0.4 0.33 0.4 0.33 0.46 0.4 0.46 0.46 0.53 0.46 
-0.53 0.53 0.53 0.59 0.46 0.53 0.53 0.53 0.4 0.46 0.46 0.46 0.46 0.46 0.46 0.53 
-0.53 0.59 0.46 0.53 0.53 0.53 0.46 0.53 0.4 0.53 0.46 0.46 0.46 0.59 0.53 0.59 
-0.53 0.59 0.53 0.66 0.53 0.59 0.4 0.59 0.46 0.53 0.33 0.46 0.33 0.53 0.33 0.46 
-0.26 0.53 0.33 0.53 0.2 0.53 0.2 0.46 0.2 0.46 0.07 0.46 0.13 0.46 0 0.53 
-0.07 0.53 0 1.12 -0.07 0.59 0 0.53 -0.07 0.53 -0.07 0.53 -0.07 0.59 -0.13 0.59 
--0.13 0.59 -0.13 0.66 -0.2 0.59 -0.2 0.53 -0.26 0.46 -0.33 0.53 -0.33 0.46 
-0.4 0.46 
--0.46 0.53 -0.46 0.4 -0.53 0.46 -0.46 0.4 -0.4 0.33 -0.46 0.33 -0.46 0.26 
-0.53 0.33 
--0.53 0.33 -0.53 0.26 -0.46 0.26 -0.53 0.26 -0.46 0.2 -0.46 0.26 -0.53 0.2 
-0.53 0.2 
--0.59 0.2 -0.59 0.13 -0.53 0.2 -0.53 0.13 -0.53 0.07 -0.53 0.07 -0.53 0.07 
-0.59 0.07 
--1.72 0 -0.53 -0.07 -0.53 -0.07 -0.66 -0.07 -0.66 -0.13 -0.66 -0.13 -0.73 
-0.26 -0.59 -0.2 
--0.53 -0.26 -0.26 -0.2 -0.33 -0.2 -0.4 -0.33 -0.46 -0.4 -0.59 -0.46 -0.66 
-0.59 -0.79 -0.73 
--0.92 -0.86 -1.06 -0.92 -1.19 -1.12 -0.73 -0.66 -0.79 -0.73 -0.92 -0.79 -0.92 
-0.86 -0.99 -0.92 
--1.06 -0.99 -1.06 -0.99 -1.12 -1.06 -1.12 -1.06 -1.12 -1.06 -1.06 -1.12 -1.06 
-0.99 -0.92 -0.99 
--0.92 -0.99 -0.86 -0.86 -0.73 -0.86 -0.73 -0.79 -0.59 -0.73 -0.53 -0.79 -0.53 
-0.66 -0.4 -0.73 
--0.33 -0.59 -0.26 -0.66 -0.2 -0.53 -0.07 -0.53 -0.07 -0.53 0 -0.46 0.07 -0.4 
0.13 -0.4 
-0.13 -0.33 0.2 -0.26 0.2 -0.33 0.2 -0.26 f*
-1.98 w
-K
-1400.89 699.2 0.4 -0.53 0.46 -0.46 0.46 -0.46 0.46 -0.53 0.46 -0.46 0.46 -0.4 
0.4 -0.4 
-0.4 -0.33 0.53 -0.46 0.53 -0.46 0.59 -0.46 0.59 -0.4 0.59 -0.33 0.59 -0.26 
0.46 -0.13 
-0.53 -0.2 0.59 -0.13 0.59 -0.13 0.66 -0.13 0.66 -0.07 0.66 -0.13 0.59 -0.07 
0.59 0 
-0.73 -0.07 0.66 -0.07 0.79 0 0.73 0 0.66 0 0.73 0 0.59 0.07 0.59 0.07 
-0.66 0.07 0.66 0.07 0.66 0.13 0.73 0.13 0.66 0.13 0.66 0.13 0.59 0.13 0.59 
0.13 
-0.66 0.2 0.73 0.13 0.66 0.2 0.73 0.2 0.66 0.2 0.59 0.2 0.53 0.2 0.53 0.13 
-0.53 0.26 0.53 0.2 0.46 0.26 0.53 0.26 0.46 0.26 0.46 0.33 0.4 0.33 0.4 0.33 
-0.46 0.4 0.46 0.46 0.53 0.46 0.53 0.53 0.53 0.59 0.46 0.53 0.53 0.53 0.4 0.46 
-0.46 0.46 0.46 0.46 0.46 0.53 0.53 0.59 0.46 0.53 0.53 0.53 0.46 0.53 0.4 0.53 
-0.46 0.46 0.46 0.59 0.53 0.59 0.53 0.59 0.53 0.66 0.53 0.59 0.4 0.59 0.46 0.53 
-0.33 0.46 0.33 0.53 0.33 0.46 0.26 0.53 0.33 0.53 0.2 0.53 0.2 0.46 0.2 0.46 
-0.07 0.46 0.13 0.46 0 0.53 0.07 0.53 0 0.53 0 0.59 -0.07 0.59 0 0.53 
--0.07 0.53 -0.07 0.53 -0.07 0.59 -0.13 0.59 -0.13 0.59 -0.13 0.66 -0.2 0.59 
-0.2 0.53 
--0.26 0.46 -0.33 0.53 -0.33 0.46 -0.4 0.46 -0.46 0.53 -0.46 0.4 -0.53 0.46 
-0.46 0.4 
--0.4 0.33 -0.46 0.33 -0.46 0.26 -0.53 0.33 -0.53 0.33 -0.53 0.26 -0.46 0.26 
-0.53 0.26 
--0.46 0.2 -0.46 0.26 -0.53 0.2 -0.53 0.2 -0.59 0.2 -0.59 0.13 -0.53 0.2 -0.53 
0.13 
--0.53 0.07 -0.53 0.07 -0.53 0.07 -0.59 0.07 -0.59 0 -0.59 0 -0.53 0 -0.53 
-0.07 
--0.53 -0.07 -0.66 -0.07 -0.66 -0.13 -0.66 -0.13 -0.73 -0.26 -0.59 -0.2 -0.53 
-0.26 -0.26 -0.2 
--0.33 -0.2 -0.4 -0.33 -0.46 -0.4 -0.59 -0.46 -0.66 -0.59 -0.79 -0.73 -0.92 
-0.86 -1.06 -0.92 
--1.19 -1.12 -0.73 -0.66 -0.79 -0.73 -0.92 -0.79 -0.92 -0.86 -0.99 -0.92 -1.06 
-0.99 -1.06 -0.99 
--1.12 -1.06 -1.12 -1.06 -1.12 -1.06 -1.06 -1.12 -1.06 -0.99 -0.92 -0.99 -0.92 
-0.99 -0.86 -0.86 
--0.73 -0.86 -0.73 -0.79 -0.59 -0.73 -0.53 -0.79 -0.53 -0.66 -0.4 -0.73 -0.33 
-0.59 -0.26 -0.66 
--0.2 -0.53 -0.07 -0.53 -0.07 -0.53 0 -0.46 0.07 -0.4 0.13 -0.4 0.13 -0.33 0.2 
-0.26 
-0.2 -0.33 0.2 -0.26 H
-S
-1438.58 843.58 m
--2.1 -8.42 -7.53 -14.31 -12.13 -13.17 c
--4.6 1.15 -6.62 8.9 -4.52 17.32 c
-2.1 8.42 7.53 14.31 12.13 13.17 c
-4.6 -1.15 6.62 -8.9 4.52 -17.32 c
-f*
-0.495 w
-1438.58 843.58 m
--2.1 -8.42 -7.53 -14.31 -12.13 -13.17 c
--4.6 1.15 -6.62 8.9 -4.52 17.32 c
-2.1 8.42 7.53 14.31 12.13 13.17 c
-4.6 -1.15 6.62 -8.9 4.52 -17.32 c
-h
-S
-255 G
-1433.17 848.19 m
--0.66 -3.77 -2.8 -6.54 -4.78 -6.19 c
--1.97 0.35 -3.04 3.69 -2.37 7.45 c
-0.66 3.77 2.8 6.54 4.78 6.19 c
-1.97 -0.35 3.04 -3.69 2.37 -7.45 c
-f*
-K
-1433.17 848.19 m
--0.66 -3.77 -2.8 -6.54 -4.78 -6.19 c
--1.97 0.35 -3.04 3.69 -2.37 7.45 c
-0.66 3.77 2.8 6.54 4.78 6.19 c
-1.97 -0.35 3.04 -3.69 2.37 -7.45 c
-h
-S
-255 G
-1399.9 561.52 0.26 0.73 0.4 0.66 0.46 0.79 0.53 0.73 0.59 0.73 0.66 0.66 0.66 
0.66 
-0.59 0.59 0.59 0.46 0.59 0.46 0.59 0.46 0.53 0.33 0.59 0.4 0.53 0.4 0.66 0.33 
-0.59 0.33 0.53 0.33 0.59 0.26 0.59 0.26 0.53 0.26 0.59 0.33 0.59 0.33 0.66 
0.33 
-0.73 0.33 0.73 0.33 0.79 0.4 0.73 0.33 0.73 0.33 0.66 0.33 0.66 0.26 0.66 0.26 
-0.66 0.26 0.73 0.26 0.73 0.26 0.79 0.26 0.79 0.2 0.73 0.26 0.73 0.2 0.73 0.2 
-0.73 0.13 0.73 0.2 0.73 0.2 0.86 0.13 0.86 0.2 0.86 0.13 0.86 0.2 0.86 0.13 
-0.86 0.13 0.79 0.13 0.79 0.07 0.73 0.13 0.79 0.07 0.79 0.13 0.86 0.07 0.86 
0.07 
-0.86 0.07 0.79 0 0.79 0.07 1.45 0 0.73 0.07 0.73 -0.07 1.58 0 0.79 -0.07 
-0.86 -0.07 0.79 -0.07 0.73 -0.07 0.79 -0.07 0.73 -0.13 0.66 -0.07 0.79 -0.13 
0.79 -0.13 
-0.79 -0.2 0.86 -0.13 0.79 -0.2 0.79 -0.2 0.79 -0.13 0.66 -0.2 0.66 -0.2 0.79 
-0.26 
-0.79 -0.2 0.79 -0.33 0.86 -0.26 0.79 -0.33 0.73 -0.33 0.66 -0.33 0.66 -0.4 
0.66 -0.33 
-0.66 -0.4 0.66 -0.46 0.73 -0.53 0.73 -0.53 0.66 -0.53 0.59 -0.53 0.59 -0.59 
0.46 -0.4 
-0.46 -0.46 0.46 -0.53 0.46 -0.53 0.46 -0.53 0.46 -0.59 0.46 -0.53 0.4 -0.59 
0.33 -0.53 
-0.33 -0.53 0.4 -0.59 0.33 -0.73 0.33 -0.79 0.33 -0.79 0.33 -0.79 0.26 -0.79 
0.2 -0.79 
-0.26 -0.73 0.13 -0.59 0.13 -0.66 0.13 -0.66 0.13 -0.73 0.13 -0.73 0.13 -0.66 
0.07 -0.73 
-0.13 -0.59 0.07 -0.66 0.07 -0.53 0 -0.99 -0.07 -0.33 -0.07 -0.4 -0.13 -0.33 
-0.13 -0.33 
--0.26 -0.4 -0.33 -0.33 -0.33 -0.33 -0.46 -0.4 -0.53 -0.33 -0.59 -0.33 -0.73 
-0.26 -0.73 -0.33 
--0.86 -0.33 -0.79 -0.26 -0.86 -0.26 -0.92 -0.26 -1.06 -0.26 -1.06 -0.26 -1.25 
-0.26 -1.32 -0.26 
--1.39 -0.2 -1.45 -0.26 -1.52 -0.2 -1.65 -0.2 -1.58 -0.2 -1.72 -0.13 -1.72 
-0.13 -1.65 -0.07 
--1.72 0 -1.72 -0.07 -1.72 0.07 -1.72 0.07 -1.72 0.07 -1.58 0.13 -1.65 0.2 
-1.65 0.2 
--1.72 0.2 -1.72 0.26 -1.78 0.26 -1.78 0.33 -1.85 0.4 -1.85 0.4 -1.85 0.4 -1.85 
0.4 
--1.78 0.46 -1.72 0.46 -1.65 0.46 -1.65 0.46 -1.52 0.46 -1.45 0.46 -1.32 0.46 
-1.25 0.46 
--1.19 0.46 -1.06 0.4 -0.99 0.46 -1.12 0.46 -0.99 0.53 -0.92 0.53 -0.86 0.53 
-0.73 0.53 
--0.66 0.53 -0.59 0.53 -0.46 0.53 -0.4 0.53 -0.33 0.53 -0.2 0.53 -0.2 0.53 
-0.07 0.46 
--0.07 0.46 0 0.46 0.07 0.4 0.13 0.46 f*
-1.98 w
-K
-1399.9 561.52 0.26 0.73 0.4 0.66 0.46 0.79 0.53 0.73 0.59 0.73 0.66 0.66 0.66 
0.66 
-0.59 0.59 0.59 0.46 0.59 0.46 0.59 0.46 0.53 0.33 0.59 0.4 0.53 0.4 0.66 0.33 
-0.59 0.33 0.53 0.33 0.59 0.26 0.59 0.26 0.53 0.26 0.59 0.33 0.59 0.33 0.66 
0.33 
-0.73 0.33 0.73 0.33 0.79 0.4 0.73 0.33 0.73 0.33 0.66 0.33 0.66 0.26 0.66 0.26 
-0.66 0.26 0.73 0.26 0.73 0.26 0.79 0.26 0.79 0.2 0.73 0.26 0.73 0.2 0.73 0.2 
-0.73 0.13 0.73 0.2 0.73 0.2 0.86 0.13 0.86 0.2 0.86 0.13 0.86 0.2 0.86 0.13 
-0.86 0.13 0.79 0.13 0.79 0.07 0.73 0.13 0.79 0.07 0.79 0.13 0.86 0.07 0.86 
0.07 
-0.86 0.07 0.79 0 0.79 0.07 0.73 0 0.73 0 0.73 0.07 0.73 -0.07 0.79 0 
-0.79 0 0.79 -0.07 0.86 -0.07 0.79 -0.07 0.73 -0.07 0.79 -0.07 0.73 -0.13 0.66 
-0.07 
-0.79 -0.13 0.79 -0.13 0.79 -0.2 0.86 -0.13 0.79 -0.2 0.79 -0.2 0.79 -0.13 0.66 
-0.2 
-0.66 -0.2 0.79 -0.26 0.79 -0.2 0.79 -0.33 0.86 -0.26 0.79 -0.33 0.73 -0.33 
0.66 -0.33 
-0.66 -0.4 0.66 -0.33 0.66 -0.4 0.66 -0.46 0.73 -0.53 0.73 -0.53 0.66 -0.53 
0.59 -0.53 
-0.59 -0.59 0.46 -0.4 0.46 -0.46 0.46 -0.53 0.46 -0.53 0.46 -0.53 0.46 -0.59 
0.46 -0.53 
-0.4 -0.59 0.33 -0.53 0.33 -0.53 0.4 -0.59 0.33 -0.73 0.33 -0.79 0.33 -0.79 
0.33 -0.79 
-0.26 -0.79 0.2 -0.79 0.26 -0.73 0.13 -0.59 0.13 -0.66 0.13 -0.66 0.13 -0.73 
0.13 -0.73 
-0.13 -0.66 0.07 -0.73 0.13 -0.59 0.07 -0.66 0.07 -0.53 0 -0.33 0 -0.33 0 -0.33 
--0.07 -0.33 -0.07 -0.4 -0.13 -0.33 -0.13 -0.33 -0.26 -0.4 -0.33 -0.33 -0.33 
-0.33 -0.46 -0.4 
--0.53 -0.33 -0.59 -0.33 -0.73 -0.26 -0.73 -0.33 -0.86 -0.33 -0.79 -0.26 -0.86 
-0.26 -0.92 -0.26 
--1.06 -0.26 -1.06 -0.26 -1.25 -0.26 -1.32 -0.26 -1.39 -0.2 -1.45 -0.26 -1.52 
-0.2 -1.65 -0.2 
--1.58 -0.2 -1.72 -0.13 -1.72 -0.13 -1.65 -0.07 -1.72 0 -1.72 -0.07 -1.72 0.07 
-1.72 0.07 
--1.72 0.07 -1.58 0.13 -1.65 0.2 -1.65 0.2 -1.72 0.2 -1.72 0.26 -1.78 0.26 
-1.78 0.33 
--1.85 0.4 -1.85 0.4 -1.85 0.4 -1.85 0.4 -1.78 0.46 -1.72 0.46 -1.65 0.46 -1.65 
0.46 
--1.52 0.46 -1.45 0.46 -1.32 0.46 -1.25 0.46 -1.19 0.46 -1.06 0.4 -0.99 0.46 
-1.12 0.46 
--0.99 0.53 -0.92 0.53 -0.86 0.53 -0.73 0.53 -0.66 0.53 -0.59 0.53 -0.46 0.53 
-0.4 0.53 
--0.33 0.53 -0.2 0.53 -0.2 0.53 -0.07 0.46 -0.07 0.46 0 0.46 0.07 0.4 0.13 0.46 
H
-S
-209 0 r3
-1396.2 733.72 -0.53 -0.2 -0.53 -0.33 -0.59 -0.26 -0.59 -0.33 -0.53 -0.33 -0.46 
-0.4 -0.46 -0.33 
--0.46 -0.4 -0.46 -0.53 -0.53 -0.53 -0.46 -0.59 -0.46 -0.66 -0.33 -0.46 -0.33 
-0.59 -0.33 -0.59 
--0.4 -0.73 -0.33 -0.66 -0.26 -0.66 -0.26 -0.66 -0.13 -0.53 -0.2 -0.59 -0.13 
-0.59 -0.07 -0.59 
--0.07 -0.59 -0.07 -0.59 0 -1.12 -0.07 -0.59 0 -3.1 0.07 -0.59 0 -0.59 0.13 
-0.59 
-0.07 -0.53 0.2 -0.53 0.2 -0.59 0.26 -0.59 0.33 -0.59 0.33 -0.53 0.4 -0.53 0.4 
-0.53 
-0.46 -0.46 0.59 -0.53 0.59 -0.53 0.66 -0.53 0.66 -0.53 0.66 -0.46 0.66 -0.4 
0.53 -0.33 
-0.59 -0.33 0.59 -0.26 0.59 -0.2 0.59 -0.2 0.66 -0.2 0.66 -0.13 0.59 -0.07 0.66 
-0.13 
-0.66 -0.07 0.73 -0.07 0.79 -0.13 0.86 -0.07 0.86 -0.07 0.86 -0.07 0.73 0 0.73 
-0.07 
-0.73 -0.07 3.04 0 0.79 0.13 0.66 0.07 0.73 0.13 0.59 0.2 0.59 0.2 0.59 0.2 
-0.66 0.26 0.66 0.33 0.73 0.33 0.59 0.33 0.66 0.33 0.53 0.4 0.59 0.33 0.66 0.46 
-0.66 0.53 0.66 0.53 0.66 0.59 0.59 0.59 0.53 0.59 0.4 0.53 0.4 0.53 0.33 0.53 
-0.26 0.46 0.26 0.53 0.2 0.59 0.2 0.53 0.13 0.46 0.07 0.46 0.13 0.46 0.07 0.53 
-0.13 0.66 0.07 0.66 0 1.45 -0.07 0.73 -0.13 0.59 -0.13 0.66 -0.13 0.73 -0.2 
0.73 
--0.2 0.79 -0.26 0.73 -0.26 0.66 -0.2 0.59 -0.26 0.59 -0.33 0.53 -0.33 0.59 
-0.4 0.53 
--0.4 0.53 -0.46 0.46 -0.4 0.46 -0.46 0.4 -0.46 0.33 -0.4 0.33 -0.53 0.33 -0.59 
0.33 
--0.66 0.33 -0.73 0.33 -0.79 0.33 -0.79 0.33 -0.86 0.26 -0.86 0.33 -0.79 0.2 
-0.86 0.26 
--0.92 0.2 -0.99 0.2 -1.06 0.26 -1.06 0.2 -1.06 0.2 -1.06 0.13 -0.92 0.13 -0.92 
0.13 
--0.79 0.07 -0.73 0.07 -0.99 0.07 -0.86 0 -0.79 -0.07 -0.73 -0.13 -0.66 -0.13 
-0.53 -0.2 
--0.46 -0.2 f*
-K
-1396.2 733.72 -0.53 -0.2 -0.53 -0.33 -0.59 -0.26 -0.59 -0.33 -0.53 -0.33 -0.46 
-0.4 -0.46 -0.33 
--0.46 -0.4 -0.46 -0.53 -0.53 -0.53 -0.46 -0.59 -0.46 -0.66 -0.33 -0.46 -0.33 
-0.59 -0.33 -0.59 
--0.4 -0.73 -0.33 -0.66 -0.26 -0.66 -0.26 -0.66 -0.13 -0.53 -0.2 -0.59 -0.13 
-0.59 -0.07 -0.59 
--0.07 -0.59 -0.07 -0.59 0 -0.59 0 -0.53 -0.07 -0.59 0 -0.53 0 -0.59 0 -0.59 
-0 -0.73 0 -0.66 0.07 -0.59 0 -0.59 0.13 -0.59 0.07 -0.53 0.2 -0.53 0.2 -0.59 
-0.26 -0.59 0.33 -0.59 0.33 -0.53 0.4 -0.53 0.4 -0.53 0.46 -0.46 0.59 -0.53 
0.59 -0.53 
-0.66 -0.53 0.66 -0.53 0.66 -0.46 0.66 -0.4 0.53 -0.33 0.59 -0.33 0.59 -0.26 
0.59 -0.2 
-0.59 -0.2 0.66 -0.2 0.66 -0.13 0.59 -0.07 0.66 -0.13 0.66 -0.07 0.73 -0.07 
0.79 -0.13 
-0.86 -0.07 0.86 -0.07 0.86 -0.07 0.73 0 0.73 -0.07 0.73 -0.07 0.73 0 0.79 0 
-0.73 0 0.79 0 0.79 0.13 0.66 0.07 0.73 0.13 0.59 0.2 0.59 0.2 0.59 0.2 
-0.66 0.26 0.66 0.33 0.73 0.33 0.59 0.33 0.66 0.33 0.53 0.4 0.59 0.33 0.66 0.46 
-0.66 0.53 0.66 0.53 0.66 0.59 0.59 0.59 0.53 0.59 0.4 0.53 0.4 0.53 0.33 0.53 
-0.26 0.46 0.26 0.53 0.2 0.59 0.2 0.53 0.13 0.46 0.07 0.46 0.13 0.46 0.07 0.53 
-0.13 0.66 0.07 0.66 0 0.73 0 0.73 -0.07 0.73 -0.13 0.59 -0.13 0.66 -0.13 0.73 
--0.2 0.73 -0.2 0.79 -0.26 0.73 -0.26 0.66 -0.2 0.59 -0.26 0.59 -0.33 0.53 
-0.33 0.59 
--0.4 0.53 -0.4 0.53 -0.46 0.46 -0.4 0.46 -0.46 0.4 -0.46 0.33 -0.4 0.33 -0.53 
0.33 
--0.59 0.33 -0.66 0.33 -0.73 0.33 -0.79 0.33 -0.79 0.33 -0.86 0.26 -0.86 0.33 
-0.79 0.2 
--0.86 0.26 -0.92 0.2 -0.99 0.2 -1.06 0.26 -1.06 0.2 -1.06 0.2 -1.06 0.13 -0.92 
0.13 
--0.92 0.13 -0.79 0.07 -0.73 0.07 -0.99 0.07 -0.86 0 -0.79 -0.07 -0.73 -0.13 
-0.66 -0.13 
--0.53 -0.2 -0.46 -0.2 H
-S
-255 G
-1467.63 841.06 m
--0.66 -3.77 -2.8 -6.54 -4.78 -6.19 c
--1.97 0.35 -3.04 3.69 -2.37 7.45 c
-0.66 3.77 2.8 6.54 4.78 6.19 c
-1.97 -0.35 3.04 -3.69 2.37 -7.45 c
-f*
-0.495 w
-K
-1467.63 841.06 m
--0.66 -3.77 -2.8 -6.54 -4.78 -6.19 c
--1.97 0.35 -3.04 3.69 -2.37 7.45 c
-0.66 3.77 2.8 6.54 4.78 6.19 c
-1.97 -0.35 3.04 -3.69 2.37 -7.45 c
-h
-S
-209 0 r3
-1397.13 746.32 0.07 0.53 0.07 0.66 0.2 0.66 0.2 0.73 0.33 0.66 0.26 0.66 0.33 
0.4 
-0.26 0.46 0.4 0.46 0.4 0.4 0.46 0.4 0.46 0.4 0.4 0.33 0.46 0.33 0.4 0.26 
-0.46 0.33 0.46 0.26 0.53 0.26 0.46 0.26 0.53 0.26 0.53 0.2 0.46 0.13 0.53 0.2 
-0.53 0.13 0.59 0.2 0.66 0.13 0.59 0.13 0.66 0.07 0.53 0.13 0.59 0 0.53 0.07 
-0.53 0.07 0.59 0 0.59 0.07 1.65 0 0.53 0.07 1.32 0 0.73 0.07 2.51 0 
-0.59 -0.07 0.59 -0.07 0.66 -0.13 0.53 -0.13 0.53 -0.13 0.53 -0.13 0.59 -0.26 
0.59 -0.26 
-0.59 -0.26 0.66 -0.4 0.59 -0.4 0.46 -0.26 0.46 -0.4 0.59 -0.4 0.53 -0.46 0.53 
-0.46 
-0.53 -0.46 0.4 -0.46 0.4 -0.4 0.33 -0.4 0.33 -0.46 0.26 -0.53 0.26 -0.46 0.2 
-0.53 
-0.2 -0.53 0.13 -0.46 0.13 -0.46 0.13 -0.46 0.13 -0.53 0.13 -0.59 0.07 -0.59 
0.13 -0.66 
-0.07 -0.59 0.07 -0.66 0 -0.66 0.07 -0.66 0 -0.66 -0.07 -0.79 -0.07 -0.79 -0.07 
-0.79 
--0.13 -0.79 -0.2 -0.73 -0.2 -0.59 -0.26 -0.59 -0.26 -0.59 -0.4 -0.59 -0.46 
-0.53 -0.53 -0.53 
--0.53 -0.46 -0.53 -0.46 -0.59 -0.33 -0.46 -0.26 -0.53 -0.26 -0.59 -0.26 -0.66 
-0.2 -0.66 -0.26 
--0.66 -0.2 -0.73 -0.2 -0.66 -0.13 -0.73 -0.13 -0.66 -0.13 -0.66 -0.07 -0.73 
-0.07 -0.79 -0.07 
--0.86 -0.07 -0.86 -0.07 -0.86 -0.07 -3.17 0 -0.73 0.07 -0.73 0 -0.79 0.07 
-0.73 0.07 
--0.79 0.13 -0.79 0.13 -0.73 0.13 -0.66 0.13 -0.66 0.2 -0.59 0.2 -0.66 0.33 
-0.73 0.33 
--0.73 0.4 -0.66 0.53 -0.66 0.53 -0.59 0.53 -0.53 0.53 -0.53 0.53 -0.46 0.53 
-0.46 0.59 
--0.4 0.66 -0.46 0.66 -0.4 0.66 -0.33 0.66 -0.26 0.59 -0.2 0.53 -0.26 0.66 -0.2 
0.66 
--0.13 0.66 -0.07 0.59 -0.07 0.53 -0.07 0.46 -0.07 0.4 -0.07 0.46 -0.07 0.46 0 
0.99 f*
-1.98 w
-K
-1397.13 746.32 0.07 0.53 0.07 0.66 0.2 0.66 0.2 0.73 0.33 0.66 0.26 0.66 0.33 
0.4 
-0.26 0.46 0.4 0.46 0.4 0.4 0.46 0.4 0.46 0.4 0.4 0.33 0.46 0.33 0.4 0.26 
-0.46 0.33 0.46 0.26 0.53 0.26 0.46 0.26 0.53 0.26 0.53 0.2 0.46 0.13 0.53 0.2 
-0.53 0.13 0.59 0.2 0.66 0.13 0.59 0.13 0.66 0.07 0.53 0.13 0.59 0 0.53 0.07 
-0.53 0.07 0.59 0 0.59 0.07 0.59 0 0.59 0 0.46 0 0.53 0.07 0.66 0 
-0.66 0 0.73 0.07 0.66 0 0.66 0 0.59 0 0.59 0 0.59 -0.07 0.59 -0.07 
-0.66 -0.13 0.53 -0.13 0.53 -0.13 0.53 -0.13 0.59 -0.26 0.59 -0.26 0.59 -0.26 
0.66 -0.4 
-0.59 -0.4 0.46 -0.26 0.46 -0.4 0.59 -0.4 0.53 -0.46 0.53 -0.46 0.53 -0.46 0.4 
-0.46 
-0.4 -0.4 0.33 -0.4 0.33 -0.46 0.26 -0.53 0.26 -0.46 0.2 -0.53 0.2 -0.53 0.13 
-0.46 
-0.13 -0.46 0.13 -0.46 0.13 -0.53 0.13 -0.59 0.07 -0.59 0.13 -0.66 0.07 -0.59 
0.07 -0.66 
-0 -0.66 0.07 -0.66 0 -0.66 -0.07 -0.79 -0.07 -0.79 -0.07 -0.79 -0.13 -0.79 
-0.2 -0.73 
--0.2 -0.59 -0.26 -0.59 -0.26 -0.59 -0.4 -0.59 -0.46 -0.53 -0.53 -0.53 -0.53 
-0.46 -0.53 -0.46 
--0.59 -0.33 -0.46 -0.26 -0.53 -0.26 -0.59 -0.26 -0.66 -0.2 -0.66 -0.26 -0.66 
-0.2 -0.73 -0.2 
--0.66 -0.13 -0.73 -0.13 -0.66 -0.13 -0.66 -0.07 -0.73 -0.07 -0.79 -0.07 -0.86 
-0.07 -0.86 -0.07 
--0.86 -0.07 -0.86 0 -0.79 0 -0.79 0 -0.73 0 -0.73 0.07 -0.73 0 -0.79 0.07 
--0.73 0.07 -0.79 0.13 -0.79 0.13 -0.73 0.13 -0.66 0.13 -0.66 0.2 -0.59 0.2 
-0.66 0.33 
--0.73 0.33 -0.73 0.4 -0.66 0.53 -0.66 0.53 -0.59 0.53 -0.53 0.53 -0.53 0.53 
-0.46 0.53 
--0.46 0.59 -0.4 0.66 -0.46 0.66 -0.4 0.66 -0.33 0.66 -0.26 0.59 -0.2 0.53 
-0.26 0.66 
--0.2 0.66 -0.13 0.66 -0.07 0.59 -0.07 0.53 -0.07 0.46 -0.07 0.4 -0.07 0.46 
-0.07 0.46 
-0 0.53 0 0.46 H
-S
-1346.64 573.34 0.07 -0.07 0.33 -0.2 0.79 -0.46 1.12 -0.66 1.19 -0.66 1.12 
-0.66 1.06 -0.59 
-0.86 -0.46 0.86 -0.4 0.79 -0.33 0.66 -0.26 0.73 -0.26 0.73 -0.26 0.79 -0.2 
0.79 -0.26 
-0.86 -0.2 0.86 -0.2 0.86 -0.2 0.86 -0.13 0.79 -0.2 0.79 -0.07 0.79 -0.13 0.86 
-0.13 
-0.79 -0.07 0.92 -0.13 0.92 -0.07 0.99 -0.07 1.06 -0.07 0.99 -0.07 1.06 -0.07 
0.99 0 
-0.99 -0.07 0.92 0 0.92 0 0.79 0 0.79 0 0.86 0 0.92 0 0.92 0 
-0.99 0.07 0.99 0 0.99 0 0.99 0.07 0.99 0 0.99 0.07 0.99 0.07 0.99 0 
-0.92 0.07 1.12 0 1.19 0.07 1.25 0.07 1.25 0.07 1.25 0 1.25 0.07 1.19 0.07 
-1.12 0.07 0.99 0 0.86 0.07 0.73 0 0.59 0.07 0.13 0 0.13 0 0.13 0 
-0.13 0 0.13 0 0.07 0 0.13 0 0.07 0 0.07 0 0.07 0 0.07 0.07 
-0.07 0 0.07 0 0.07 0 -0.07 -0.07 -0.07 0 -0.07 0 -0.07 0 -0.07 0 
--0.07 0 -0.07 0 -0.07 0 S
-1482.07 599.87 0 -0.07 0.07 -0.46 0.07 -0.92 0.07 -1.06 0.07 -0.99 0.07 -0.73 
0 -0.66 
-0 -0.53 -0.13 -0.66 -0.07 -0.59 -0.2 -0.59 -0.2 -0.53 -0.26 -0.46 -0.2 -0.4 
-0.33 -0.4 
--0.33 -0.4 -0.4 -0.46 -0.4 -0.4 -0.46 -0.33 -0.46 -0.33 -0.4 -0.2 -0.4 -0.26 
-0.53 -0.2 
--0.53 -0.26 -0.66 -0.2 -0.59 -0.2 -0.66 -0.2 -0.66 -0.2 -0.59 -0.13 -0.66 
-0.13 -0.66 -0.2 
--0.86 -0.2 -0.86 -0.2 -0.92 -0.26 -0.99 -0.26 -1.06 -0.33 -0.99 -0.26 -1.12 
-0.4 -0.79 -0.26 
--0.92 -0.33 -0.99 -0.33 -1.12 -0.46 -1.25 -0.46 -1.45 -0.53 -1.58 -0.66 -1.65 
-0.66 -1.65 -0.59 
--1.52 -0.59 -1.06 -0.46 -0.73 -0.26 -0.26 -0.13 -0.07 0 S
-1511.77 605.55 0 -0.07 0 -0.26 0.07 -0.66 0.13 -0.99 0.07 -1.25 0.13 -1.32 
0.13 -1.19 
-0.07 -1.06 0.07 -0.99 0.07 -0.79 0.07 -0.73 0.07 -0.73 0.07 -0.79 0 -0.79 0.07 
-0.79 
-0 -0.73 0 -0.79 0 -0.73 0 -0.66 -0.07 -0.66 0 -0.53 -0.07 -0.53 -0.13 -0.59 
--0.2 -0.59 -0.2 -0.53 -0.26 -0.59 -0.33 -0.46 -0.33 -0.46 -0.4 -0.4 -0.4 -0.33 
-0.46 -0.26 
--0.53 -0.26 -0.66 -0.26 -0.66 -0.33 -0.79 -0.26 -0.79 -0.2 -0.73 -0.26 -0.79 
-0.26 -0.73 -0.13 
--0.66 -0.26 -0.79 -0.2 -0.86 -0.26 -0.86 -0.2 -0.92 -0.26 -0.92 -0.26 -0.92 
-0.2 -0.86 -0.2 
--0.86 -0.2 -0.73 -0.13 -0.79 -0.2 -0.79 -0.13 -0.92 -0.13 -0.92 -0.2 -0.99 
-0.2 -0.99 -0.26 
--0.99 -0.2 -1.06 -0.26 -0.99 -0.33 -1.06 -0.26 -1.06 -0.33 -0.79 -0.33 -0.86 
-0.26 -0.92 -0.33 
--0.99 -0.4 -1.12 -0.46 -1.19 -0.53 -1.39 -0.59 -1.52 -0.66 -1.52 -0.66 -1.52 
-0.73 -1.45 -0.59 
--1.19 -0.53 -0.86 -0.4 -0.46 -0.2 -0.26 -0.13 S
-255 G
-1398.25 559.21 -0.2 -0.46 -0.13 -0.59 -0.13 -0.59 -0.13 -0.53 0 -0.59 -0.07 
-0.53 0 -0.59 
--0.07 -0.59 0 -1.39 0.07 -0.66 0 -0.59 0.07 -0.59 0 -0.59 0.13 -0.59 0.07 
-0.59 
-0.13 -0.59 0.2 -0.53 0.13 -0.33 0.2 -0.4 0.26 -0.46 0.4 -0.46 0.46 -0.46 0.53 
-0.53 
-0.59 -0.46 0.73 -0.53 0.53 -0.33 0.66 -0.33 0.66 -0.4 0.79 -0.46 0.79 -0.4 
0.92 -0.46 
-0.92 -0.46 0.92 -0.4 0.92 -0.46 0.86 -0.33 0.86 -0.4 0.86 -0.33 0.86 -0.26 
0.86 -0.26 
-0.86 -0.33 0.92 -0.26 0.99 -0.26 0.99 -0.2 1.06 -0.26 1.06 -0.2 1.06 -0.2 1.06 
-0.2 
-1.12 -0.13 1.06 -0.13 0.99 -0.13 0.99 -0.07 1.12 -0.13 1.12 -0.13 1.19 -0.07 
1.32 -0.13 
-1.25 -0.07 1.32 -0.13 1.25 -0.07 1.25 -0.07 1.25 -0.13 1.12 -0.07 1.12 -0.07 
1.06 -0.07 
-1.06 0 1.06 -0.07 1.06 -0.07 1.06 -0.07 1.12 -0.07 1.12 -0.07 1.12 0 1.19 
-0.07 
-1.12 -0.07 1.12 -0.07 1.12 0 1.12 -0.07 1.06 -0.07 1.12 -0.07 0.92 0 1.06 
-0.07 
-0.99 0 1.12 -0.07 1.19 -0.07 1.19 0 1.19 -0.07 1.25 0 1.19 -0.07 1.25 0 
-1.19 -0.07 6.4 0 1.12 0.07 1.12 0 1.12 0.07 1.12 0.07 1.19 0.07 1.19 0.07 
-1.19 0.13 1.19 0.07 1.19 0.13 1.12 0.07 1.12 0.13 1.12 0.13 1.12 0.13 0.99 
0.13 
-0.99 0.13 1.06 0.13 1.12 0.13 1.19 0.13 1.19 0.13 1.25 0.2 1.25 0.13 1.19 0.2 
-1.19 0.2 1.19 0.13 1.12 0.2 1.12 0.13 0.99 0.2 0.99 0.13 0.92 0.13 0.99 0.2 
-0.99 0.2 0.99 0.2 0.99 0.2 0.99 0.2 0.99 0.2 0.92 0.2 0.92 0.2 0.92 0.26 
-0.92 0.2 0.79 0.26 0.86 0.2 0.73 0.26 0.79 0.2 0.79 0.26 0.79 0.2 0.79 0.33 
-0.86 0.26 0.92 0.33 0.92 0.33 0.92 0.33 0.99 0.33 0.92 0.4 0.99 0.33 0.92 0.4 
-0.92 0.33 0.86 0.4 0.92 0.33 0.86 0.4 0.92 0.33 0.99 0.46 0.99 0.4 0.99 0.46 
-1.06 0.4 1.06 0.46 1.06 0.46 1.06 0.46 0.92 0.4 0.99 0.46 0.86 0.4 0.86 0.33 
-0.79 0.33 0.86 0.4 0.86 0.4 0.86 0.4 0.86 0.4 0.86 0.4 0.79 0.33 0.73 0.33 
-0.73 0.33 0.59 0.33 0.59 0.26 0.53 0.2 0.46 0.2 0.79 0.4 0.66 0.4 0.66 0.33 
-0.53 0.33 0.4 0.33 0.33 0.33 0.26 0.33 0.33 0.46 0.26 0.46 0.2 0.46 0.2 0.46 
-0.13 0.46 0.07 0.4 0.07 0.46 0 0.46 0.07 0.46 -0.07 0.46 0 0.4 -0.07 0.4 
-0 0.46 -0.07 0.46 -0.07 0.46 0 0.46 -0.07 0.4 0 0.46 -0.07 0.46 0 0.53 
--0.07 0.59 0 0.53 -0.07 0.59 -0.07 0.33 0 0.4 -0.13 0.4 -0.13 0.33 -0.13 0.4 
--0.2 0.33 -0.26 0.2 -0.26 0.2 -0.33 0.13 -0.86 0 -0.53 -0.13 -0.66 -0.26 -0.73 
-0.26 
--0.79 -0.4 -0.92 -0.4 -0.92 -0.46 -0.92 -0.53 -0.92 -0.46 -0.92 -0.53 -0.86 
-0.4 -0.86 -0.46 
--0.92 -0.46 -0.99 -0.46 -1.06 -0.46 -1.06 -0.53 -1.06 -0.46 -0.99 -0.53 -1.06 
-0.4 -0.92 -0.46 
--0.92 -0.4 -0.79 -0.33 -0.86 -0.33 -0.86 -0.33 -0.86 -0.33 -0.86 -0.33 -0.86 
-0.33 -0.92 -0.33 
--0.86 -0.26 -0.92 -0.26 -0.79 -0.33 -0.86 -0.26 -0.79 -0.2 -0.79 -0.26 -0.73 
-0.2 -0.73 -0.2 
--0.79 -0.26 -0.79 -0.2 -0.86 -0.26 -0.92 -0.26 -0.92 -0.26 -0.99 -0.2 -0.99 
-0.26 -0.99 -0.26 
--0.92 -0.2 -0.99 -0.26 -0.92 -0.2 -0.99 -0.26 -0.99 -0.2 -1.06 -0.2 -1.06 -0.2 
-1.12 -0.26 
--1.19 -0.2 -1.25 -0.26 -1.25 -0.2 -1.25 -0.26 -1.25 -0.2 -1.25 -0.2 -1.12 
-0.13 -1.12 -0.2 
--1.12 -0.13 -0.99 -0.2 -1.06 -0.07 -1.06 -0.13 -1.06 -0.13 -1.06 -0.13 -1.06 
-0.13 -1.12 -0.07 
--1.12 -0.13 -1.12 -0.07 -1.06 -0.07 -1.06 -0.07 -1.06 -0.07 -0.92 -0.07 -0.99 
-0.07 -0.92 -0.07 
--0.92 -0.07 -0.99 -0.07 -0.99 0 -1.06 -0.07 -1.12 -0.07 -1.19 -0.07 -1.19 0 
-1.25 -0.07 
--1.25 -0.07 -1.25 -0.07 -1.25 0 -1.25 -0.07 -1.25 0 -1.25 -0.07 -1.06 0 -1.06 
-0.07 
--1.12 0 -1.19 -0.07 -1.25 0 -1.25 -0.07 -1.32 0 -1.32 -0.07 -4.16 0 -1.32 
-0.07 
--7.39 0 -1.25 0.07 -1.25 0 -1.25 0.07 -1.32 0 -1.32 0.07 -1.25 0.07 -1.32 0.07 
--1.25 0.07 -1.25 0.07 -1.19 0.07 -1.12 0.13 -1.12 0.07 -0.99 0.07 -0.92 0.13 
-0.92 0.07 
--0.79 0.07 -1.12 0.2 -1.06 0.13 -0.99 0.13 -0.99 0.13 -0.99 0.2 -0.99 0.2 
-0.92 0.2 
--0.86 0.2 -0.79 0.2 -0.73 0.13 -0.66 0.2 -0.66 0.2 -0.73 0.2 -0.79 0.26 -0.79 
0.26 
--0.73 0.26 -0.79 0.26 -0.73 0.26 -0.66 0.26 -0.66 0.26 -0.53 0.26 -0.46 0.26 
-0.59 0.33 
--0.59 0.33 -0.53 0.4 -0.53 0.33 -0.53 0.4 -0.46 0.33 -0.4 0.33 -0.33 0.33 
-0.53 0.4 
--0.53 0.4 -0.53 0.4 -0.53 0.33 -0.46 0.33 -0.33 0.26 -0.26 0.2 -0.26 0.2 -0.26 
0.13 
--0.2 0.13 -0.26 0.07 -0.2 0 -0.2 -0.07 -0.2 -0.13 -0.33 -0.26 -0.33 -0.4 -0.4 
-0.53 
--0.33 -0.59 -0.26 -0.59 f*
-K
-1398.25 559.21 -0.2 -0.46 -0.13 -0.59 -0.13 -0.59 -0.13 -0.53 0 -0.59 -0.07 
-0.53 0 -0.59 
--0.07 -0.59 0 -0.73 0 -0.66 0.07 -0.66 0 -0.59 0.07 -0.59 0 -0.59 0.13 -0.59 
-0.07 -0.59 0.13 -0.59 0.2 -0.53 0.13 -0.33 0.2 -0.4 0.26 -0.46 0.4 -0.46 0.46 
-0.46 
-0.53 -0.53 0.59 -0.46 0.73 -0.53 0.53 -0.33 0.66 -0.33 0.66 -0.4 0.79 -0.46 
0.79 -0.4 
-0.92 -0.46 0.92 -0.46 0.92 -0.4 0.92 -0.46 0.86 -0.33 0.86 -0.4 0.86 -0.33 
0.86 -0.26 
-0.86 -0.26 0.86 -0.33 0.92 -0.26 0.99 -0.26 0.99 -0.2 1.06 -0.26 1.06 -0.2 
1.06 -0.2 
-1.06 -0.2 1.12 -0.13 1.06 -0.13 0.99 -0.13 0.99 -0.07 1.12 -0.13 1.12 -0.13 
1.19 -0.07 
-1.32 -0.13 1.25 -0.07 1.32 -0.13 1.25 -0.07 1.25 -0.07 1.25 -0.13 1.12 -0.07 
1.12 -0.07 
-1.06 -0.07 1.06 0 1.06 -0.07 1.06 -0.07 1.06 -0.07 1.12 -0.07 1.12 -0.07 1.12 
0 
-1.19 -0.07 1.12 -0.07 1.12 -0.07 1.12 0 1.12 -0.07 1.06 -0.07 1.12 -0.07 0.92 
0 
-1.06 -0.07 0.99 0 1.12 -0.07 1.19 -0.07 1.19 0 1.19 -0.07 1.25 0 1.19 -0.07 
-1.25 0 1.19 -0.07 1.12 0 1.12 0 1.06 0 1.06 0 0.99 0 1.06 0 
-1.12 0.07 1.12 0 1.12 0.07 1.12 0.07 1.19 0.07 1.19 0.07 1.19 0.13 1.19 0.07 
-1.19 0.13 1.12 0.07 1.12 0.13 1.12 0.13 1.12 0.13 0.99 0.13 0.99 0.13 1.06 
0.13 
-1.12 0.13 1.19 0.13 1.19 0.13 1.25 0.2 1.25 0.13 1.19 0.2 1.19 0.2 1.19 0.13 
-1.12 0.2 1.12 0.13 0.99 0.2 0.99 0.13 0.92 0.13 0.99 0.2 0.99 0.2 0.99 0.2 
-0.99 0.2 0.99 0.2 0.99 0.2 0.92 0.2 0.92 0.2 0.92 0.26 0.92 0.2 0.79 0.26 
-0.86 0.2 0.73 0.26 0.79 0.2 0.79 0.26 0.79 0.2 0.79 0.33 0.86 0.26 0.92 0.33 
-0.92 0.33 0.92 0.33 0.99 0.33 0.92 0.4 0.99 0.33 0.92 0.4 0.92 0.33 0.86 0.4 
-0.92 0.33 0.86 0.4 0.92 0.33 0.99 0.46 0.99 0.4 0.99 0.46 1.06 0.4 1.06 0.46 
-1.06 0.46 1.06 0.46 0.92 0.4 0.99 0.46 0.86 0.4 0.86 0.33 0.79 0.33 0.86 0.4 
-0.86 0.4 0.86 0.4 0.86 0.4 0.86 0.4 0.79 0.33 0.73 0.33 0.73 0.33 0.59 0.33 
-0.59 0.26 0.53 0.2 0.46 0.2 0.79 0.4 0.66 0.4 0.66 0.33 0.53 0.33 0.4 0.33 
-0.33 0.33 0.26 0.33 0.33 0.46 0.26 0.46 0.2 0.46 0.2 0.46 0.13 0.46 0.07 0.4 
-0.07 0.46 0 0.46 0.07 0.46 -0.07 0.46 0 0.4 -0.07 0.4 0 0.46 -0.07 0.46 
--0.07 0.46 0 0.46 -0.07 0.4 0 0.46 -0.07 0.46 0 0.53 -0.07 0.59 0 0.53 
--0.07 0.59 -0.07 0.33 0 0.4 -0.13 0.4 -0.13 0.33 -0.13 0.4 -0.2 0.33 -0.26 0.2 
--0.26 0.2 -0.33 0.13 -0.4 0 -0.46 0 -0.53 -0.13 -0.66 -0.26 -0.73 -0.26 -0.79 
-0.4 
--0.92 -0.4 -0.92 -0.46 -0.92 -0.53 -0.92 -0.46 -0.92 -0.53 -0.86 -0.4 -0.86 
-0.46 -0.92 -0.46 
--0.99 -0.46 -1.06 -0.46 -1.06 -0.53 -1.06 -0.46 -0.99 -0.53 -1.06 -0.4 -0.92 
-0.46 -0.92 -0.4 
--0.79 -0.33 -0.86 -0.33 -0.86 -0.33 -0.86 -0.33 -0.86 -0.33 -0.86 -0.33 -0.92 
-0.33 -0.86 -0.26 
--0.92 -0.26 -0.79 -0.33 -0.86 -0.26 -0.79 -0.2 -0.79 -0.26 -0.73 -0.2 -0.73 
-0.2 -0.79 -0.26 
--0.79 -0.2 -0.86 -0.26 -0.92 -0.26 -0.92 -0.26 -0.99 -0.2 -0.99 -0.26 -0.99 
-0.26 -0.92 -0.2 
--0.99 -0.26 -0.92 -0.2 -0.99 -0.26 -0.99 -0.2 -1.06 -0.2 -1.06 -0.2 -1.12 
-0.26 -1.19 -0.2 
--1.25 -0.26 -1.25 -0.2 -1.25 -0.26 -1.25 -0.2 -1.25 -0.2 -1.12 -0.13 -1.12 
-0.2 -1.12 -0.13 
--0.99 -0.2 -1.06 -0.07 -1.06 -0.13 -1.06 -0.13 -1.06 -0.13 -1.06 -0.13 -1.12 
-0.07 -1.12 -0.13 
--1.12 -0.07 -1.06 -0.07 -1.06 -0.07 -1.06 -0.07 -0.92 -0.07 -0.99 -0.07 -0.92 
-0.07 -0.92 -0.07 
--0.99 -0.07 -0.99 0 -1.06 -0.07 -1.12 -0.07 -1.19 -0.07 -1.19 0 -1.25 -0.07 
-1.25 -0.07 
--1.25 -0.07 -1.25 0 -1.25 -0.07 -1.25 0 -1.25 -0.07 -1.06 0 -1.06 -0.07 -1.12 
0 
--1.19 -0.07 -1.25 0 -1.25 -0.07 -1.32 0 -1.32 -0.07 -1.39 0 -1.39 0 -1.39 0 
--1.32 -0.07 -1.32 0 -1.32 0 -1.25 0 -1.19 0 -1.19 0 -1.12 0 -1.25 0.07 
--1.25 0 -1.25 0.07 -1.32 0 -1.32 0.07 -1.25 0.07 -1.32 0.07 -1.25 0.07 -1.25 
0.07 
--1.19 0.07 -1.12 0.13 -1.12 0.07 -0.99 0.07 -0.92 0.13 -0.92 0.07 -0.79 0.07 
-1.12 0.2 
--1.06 0.13 -0.99 0.13 -0.99 0.13 -0.99 0.2 -0.99 0.2 -0.92 0.2 -0.86 0.2 -0.79 
0.2 
--0.73 0.13 -0.66 0.2 -0.66 0.2 -0.73 0.2 -0.79 0.26 -0.79 0.26 -0.73 0.26 
-0.79 0.26 
--0.73 0.26 -0.66 0.26 -0.66 0.26 -0.53 0.26 -0.46 0.26 -0.59 0.33 -0.59 0.33 
-0.53 0.4 
--0.53 0.33 -0.53 0.4 -0.46 0.33 -0.4 0.33 -0.33 0.33 -0.53 0.4 -0.53 0.4 -0.53 
0.4 
--0.53 0.33 -0.46 0.33 -0.33 0.26 -0.26 0.2 -0.26 0.2 -0.26 0.13 -0.2 0.13 
-0.26 0.07 
--0.2 0 -0.2 -0.07 -0.2 -0.13 -0.33 -0.26 -0.33 -0.4 -0.4 -0.53 -0.33 -0.59 
-0.26 -0.59 H
-S
-0 255 r3
-1453.16 601.26 0.07 0 0.26 0 0.59 0 0.92 -0.07 1.19 -0.07 1.19 0 1.19 -0.07 
-1.06 -0.13 0.92 -0.07 0.86 -0.07 0.79 -0.13 0.79 -0.13 0.79 -0.2 0.86 -0.2 
0.92 -0.2 
-1.06 -0.33 1.19 -0.33 1.32 -0.4 1.39 -0.46 1.32 -0.4 1.06 -0.4 0.73 -0.2 0.26 
-0.13 
-0.07 0 S
-1486.43 599.28 0.07 0 0.33 -0.07 0.73 -0.07 1.12 -0.07 1.39 -0.13 1.45 -0.13 
1.39 -0.13 
-1.32 -0.13 1.12 -0.13 0.99 -0.13 0.92 -0.13 0.92 -0.13 0.92 -0.13 0.92 -0.2 
1.06 -0.13 
-1.12 -0.26 1.32 -0.2 1.39 -0.33 1.52 -0.26 1.45 -0.33 1.19 -0.2 0.73 -0.2 0.33 
-0.07 
-0.07 0 S
-255 G
-1531.44 597.56 0.46 0.4 0.59 0.33 0.53 0.26 0.59 0.26 0.53 0.13 0.53 0.07 0.46 
0.07 
-0.46 0 0.53 -0.07 0.46 -0.13 0.46 -0.13 0.46 -0.2 0.46 -0.2 0.46 -0.26 0.46 
-0.4 
-0.46 -0.4 0.46 -0.4 0.4 -0.46 0.4 -0.46 0.4 -0.53 0.4 -0.59 0.33 -0.66 0.26 
-0.66 
-0.2 -0.66 0.07 -0.46 0.07 -0.53 0.07 -0.59 0 -0.66 -0.07 -0.66 -0.07 -0.59 
-0.07 -0.59 
--0.07 -0.59 -0.13 -0.53 -0.13 -0.59 -0.2 -0.59 -0.2 -0.59 -0.2 -0.66 -0.26 
-0.53 -0.26 -0.53 
--0.26 -0.53 -0.33 -0.4 -0.33 -0.46 -0.46 -0.46 -0.4 -0.46 -0.53 -0.4 -0.46 
-0.33 -0.46 -0.2 
--0.46 -0.26 -0.59 -0.13 -0.73 -0.13 -0.66 0 -0.73 0.07 -0.66 0.13 -0.59 0.13 
-0.59 0.2 
--0.59 0.26 -0.59 0.33 -0.53 0.26 -0.53 0.33 -0.4 0.33 -0.46 0.33 -0.33 0.33 
-0.4 0.33 
--0.33 0.4 -0.26 0.4 -0.2 0.33 -0.2 0.46 -0.2 0.4 -0.13 0.53 -0.07 0.53 -0.07 
0.53 
-0 0.53 -0.07 0.53 0.07 0.59 0 0.59 0.07 0.66 0.13 0.59 0.07 0.46 0.13 0.53 
-0.07 0.53 0.2 0.53 0.2 0.53 0.26 0.59 0.26 0.46 0.26 0.46 0.26 0.4 0.33 0.53 
-0.4 0.46 0.4 0.46 0.4 0.46 0.4 0.4 f*
-0.99 w
-K
-1531.44 597.56 0.46 0.4 0.59 0.33 0.53 0.26 0.59 0.26 0.53 0.13 0.53 0.07 0.46 
0.07 
-0.46 0 0.53 -0.07 0.46 -0.13 0.46 -0.13 0.46 -0.2 0.46 -0.2 0.46 -0.26 0.46 
-0.4 
-0.46 -0.4 0.46 -0.4 0.4 -0.46 0.4 -0.46 0.4 -0.53 0.4 -0.59 0.33 -0.66 0.26 
-0.66 
-0.2 -0.66 0.07 -0.46 0.07 -0.53 0.07 -0.59 0 -0.66 -0.07 -0.66 -0.07 -0.59 
-0.07 -0.59 
--0.07 -0.59 -0.13 -0.53 -0.13 -0.59 -0.2 -0.59 -0.2 -0.59 -0.2 -0.66 -0.26 
-0.53 -0.26 -0.53 
--0.26 -0.53 -0.33 -0.4 -0.33 -0.46 -0.46 -0.46 -0.4 -0.46 -0.53 -0.4 -0.46 
-0.33 -0.46 -0.2 
--0.46 -0.26 -0.59 -0.13 -0.73 -0.13 -0.66 0 -0.73 0.07 -0.66 0.13 -0.59 0.13 
-0.59 0.2 
--0.59 0.26 -0.59 0.33 -0.53 0.26 -0.53 0.33 -0.4 0.33 -0.46 0.33 -0.33 0.33 
-0.4 0.33 
--0.33 0.4 -0.26 0.4 -0.2 0.33 -0.2 0.46 -0.2 0.4 -0.13 0.53 -0.07 0.53 -0.07 
0.53 
-0 0.53 -0.07 0.53 0.07 0.59 0 0.59 0.07 0.66 0.13 0.59 0.07 0.46 0.13 0.53 
-0.07 0.53 0.2 0.53 0.2 0.53 0.26 0.59 0.26 0.46 0.26 0.46 0.26 0.4 0.33 0.53 
-0.4 0.46 0.4 0.46 0.4 0.46 0.4 0.4 H
-S
-1.98 w
-0 255 r3
-1463.26 581.46 0.07 0 0.33 0 0.73 -0.07 0.99 -0.07 1.06 -0.13 1.06 -0.13 0.92 
-0.07 
-0.79 -0.13 0.73 -0.13 0.66 -0.2 0.66 -0.13 0.73 -0.26 0.79 -0.26 0.92 -0.4 
1.06 -0.4 
-1.06 -0.46 0.99 -0.46 0.73 -0.26 0.33 -0.2 0.07 0 S
-1475.93 584.23 0.07 0 0.26 0 0.73 0 0.92 0 0.99 0 0.99 -0.07 0.86 0 
-0.79 -0.07 0.66 -0.07 0.66 -0.07 0.66 -0.13 0.66 -0.13 0.79 -0.2 0.86 -0.2 
1.06 -0.33 
-1.06 -0.33 0.99 -0.26 0.66 -0.2 0.33 -0.13 0.07 0 S
-1483.85 590.96 0.07 0 0.33 -0.07 0.79 -0.07 1.25 -0.07 1.52 -0.13 1.58 -0.13 
1.45 -0.13 
-1.32 -0.13 1.19 -0.13 1.06 -0.13 0.92 -0.13 0.86 -0.13 0.86 -0.13 0.92 -0.13 
0.86 -0.2 
-1.06 -0.2 1.06 -0.2 1.25 -0.33 1.25 -0.26 1.19 -0.26 0.99 -0.26 0.59 -0.13 
0.26 -0.07 
-0.07 0 S
-1437.72 589.18 0.13 0 0.2 -0.07 0.4 -0.07 0.59 -0.07 0.4 -0.07 0.46 -0.07 0.53 
-0.07 
-0.66 -0.13 0.73 -0.13 0.79 -0.2 0.79 -0.13 0.79 -0.2 0.79 -0.2 0.79 -0.26 0.66 
-0.2 
-0.73 -0.2 0.79 -0.26 0.86 -0.33 0.99 -0.33 1.06 -0.4 1.19 -0.46 1.12 -0.4 0.92 
-0.4 
-0.53 -0.2 0.26 -0.13 0.07 0 S
-1420.1 585.02 0.07 0 0.33 0 0.73 -0.07 1.12 0 1.39 -0.07 1.45 -0.07 1.39 -0.13 
-1.32 -0.07 1.12 -0.07 1.06 -0.13 0.92 -0.07 0.99 -0.13 0.79 -0.13 0.86 -0.13 
0.92 -0.2 
-0.99 -0.2 1.12 -0.2 1.25 -0.26 1.32 -0.33 1.45 -0.33 1.39 -0.33 1.19 -0.26 
0.92 -0.2 
-0.59 -0.13 0.2 -0.07 0.07 0 S
-1448.41 593.73 0.07 0 0.26 -0.07 0.59 -0.07 0.99 -0.2 1.19 -0.2 1.25 -0.2 1.19 
-0.2 
-1.06 -0.2 0.99 -0.2 0.86 -0.2 0.79 -0.13 0.79 -0.2 0.79 -0.2 0.86 -0.26 0.86 
-0.26 
-0.99 -0.26 1.19 -0.4 1.25 -0.4 1.32 -0.4 1.25 -0.46 1.06 -0.33 0.66 -0.2 0.26 
-0.13 
-0.07 0 S
-Q q
-0 0 250000 0 0 250000 ^ Y
-0.396 i
-K
-729 1546 137.28 0 0 33 ^ 0 92 156.28 0 0 33 -193.28 0 
-0 -289 37 0 H
-f*
-925 1623 0 -208 34 0 0 107.71 P
-0 29.7 7.39 49.1 22.95 60.59 c
-10.3 7.52 20.2 9.9 43.16 10.3 c
-0 33.66 p
--5.54 0.79 -8.32 1.68 -12.67 1.68 c
--21.69 0 -38.16 -12.82 -57.44 -44.06 c
-0 38.12 h
-f*
-1233.15 1508 m
-0 31.52 -2.38 50.43 -8.32 65.8 c
--13.46 34.06 -45.14 55.14 -83.95 55.14 c
--57.82 0 -95.04 -44.55 -95.04 -112.96 c
-0 -68.11 36.04 -110.09 94.25 -110.09 c
-47.52 0 80.39 26.93 88.7 72.07 c
--33.26 0 p
--9.11 -27.32 -27.72 -41.07 -54.25 -41.07 c
--20.99 0 -38.81 9.32 -49.9 26.42 c
--7.92 11.97 -10.69 23.94 -11.09 44.69 c
-h
-1081.08 1535 m
-2.77 38.16 26.14 62.94 59.4 62.94 c
-32.47 0 57.42 -26.92 57.42 -60.97 c
-0 -0.66 0 -1.31 -0.4 -1.97 c
-h
-f*
-1453.15 1508 m
-0 31.52 -2.38 50.43 -8.32 65.8 c
--13.46 34.06 -45.14 55.14 -83.95 55.14 c
--57.82 0 -95.04 -44.55 -95.04 -112.96 c
-0 -68.11 36.04 -110.09 94.25 -110.09 c
-47.52 0 80.39 26.93 88.7 72.07 c
--33.26 0 p
--9.11 -27.32 -27.72 -41.07 -54.25 -41.07 c
--20.99 0 -38.81 9.32 -49.9 26.42 c
--7.92 11.97 -10.69 23.94 -11.09 44.69 c
-h
-1301.08 1535 m
-2.77 38.16 26.14 62.94 59.4 62.94 c
-32.47 0 57.42 -26.92 57.42 -60.97 c
-0 -0.66 0 -1.31 -0.4 -1.97 c
-h
-f*
-518.1 1266.94 m
--0.4 56.63 -39.24 89.81 -105.82 89.81 c
--63.36 0 -102.28 -32.59 -102.28 -85.06 c
-0 -35.24 18.52 -57.42 56.35 -67.32 c
-71.68 -19.01 p
-36.43 -9.5 52.98 -24.16 52.98 -46.73 c
-0 -15.44 -8.28 -31.28 -20.5 -40 c
--11.48 -7.92 -29.7 -11.75 -53.06 -11.75 c
--31.28 0 -52.67 7.36 -66.53 23.63 c
--10.69 12.67 -14.99 26.53 -14.6 44.35 c
--35.3 0 p
-0.4 -26.53 5.54 -43.96 17.03 -59.8 c
-19.8 -26.93 53.06 -41.18 97.02 -41.18 c
-34.45 0 62.57 7.92 81.18 22.18 c
-19.4 15.44 31.76 41.18 31.76 66.13 c
-0 35.64 -22.21 61.78 -61.46 72.47 c
--72.47 19.4 p
--34.85 9.5 -47.07 20.59 -47.07 42.77 c
-0 29.3 25.56 48.91 64.1 48.91 c
-45.94 0 71.68 -21.06 72.07 -58.81 c
-h
-f*
-653.71 1276.94 m
--58.21 0 -93.71 -41.77 -93.71 -111.77 c
-0 -69.7 34.94 -111.28 94.11 -111.28 c
-58.21 0 93.89 41.58 93.89 109.69 c
-0 71.68 -34.47 113.36 -94.29 113.36 c
-h
-654.11 1245.94 m
-37.22 0 59.89 -30.49 59.89 -81.96 c
-0 -48.71 -23.16 -79.09 -59.89 -79.09 c
--36.83 0 -60.11 30.3 -60.11 80.28 c
-0 49.9 22.84 80.77 60.11 80.77 c
-h
-f*
-868.17 1271 -34.17 0 0 31.98 P
-0 13.86 7.82 21.21 22.68 21.21 c
-2.77 0 3.96 0 11.48 -0.4 c
-0 27.1 p
--7.52 1.58 -11.88 2.3 -18.61 2.3 c
--30.49 0 -48.56 -17.54 -48.56 -47.44 c
-0 -34.75 -27.87 0 0 -27 ^ 0 -181 33 0 ^ 34.17 0 h
-f*
-976.58 1271 -33.58 0 0 56.53 -33 0 ^ -28.46 0 0 -27 ^ 
-0 -157.24 P
-0 -20.99 14.13 -32.87 39.66 -32.87 c
-7.92 0 15.84 0.79 26.93 2.77 c
-0 27.72 p
--4.36 -1.19 -9.5 -1.49 -15.84 -1.49 c
--14.26 0 -17.74 3.94 -17.74 18.52 c
-0 142.59 33.58 0 h
-f*
-1205.38 1063 60.98 208 -37.22 0 -41.18 -162.06 -40.79 162.06 -40.39 0 -39.6 
-162.06 -42.37 162.06 
--36.43 0 60.19 -208 37.22 0 40 162.76 41.98 -162.76 H
-f*
-1483.86 1082.4 m
--3.56 -0.79 -5.15 -0.7 -7.13 -0.7 c
--11.48 0 -17.73 5.91 -17.73 16.14 c
-0 121.97 p
-0 36.83 -26.96 57.12 -78.1 57.12 c
--30.1 0 -55.04 -8.89 -68.9 -24.65 c
--9.5 -10.69 -13.1 -22.57 -13.89 -43.16 c
-32.9 0 p
-2.77 25.34 17.82 36.82 48.71 36.82 c
-29.7 0 46.29 -11.08 46.29 -30.88 c
-0 -8.71 p
-0 -13.86 -8.31 -19.8 -34.41 -22.97 c
--46.73 -5.94 -53.86 -7.52 -66.53 -12.67 c
--24.16 -9.9 -36.06 -28.51 -36.06 -55.44 c
-0 -37.62 25.99 -61.38 67.74 -61.38 c
-26.14 0 47.12 9.11 70.49 30.49 c
-2.38 -20.99 12.67 -30.49 34.06 -30.49 c
-6.73 0 11.88 0.79 22.57 3.56 c
-h
-1426 1128.34 m
-0 -11.09 -3.16 -17.82 -13.02 -26.93 c
--13.46 -12.28 -29.7 -18.52 -49.1 -18.52 c
--25.74 0 -40.87 12.24 -40.87 33.17 c
-0 21.78 14.68 32.87 49.98 38.02 c
-34.82 4.75 41.94 6.34 53.02 11.48 c
-h
-f*
-1519 1271 0 -208 34 0 0 107.71 P
-0 29.7 7.39 49.1 22.95 60.59 c
-10.3 7.52 20.2 9.9 43.16 10.3 c
-0 33.66 p
--5.54 0.79 -8.32 1.68 -12.67 1.68 c
--21.69 0 -38.16 -12.82 -57.44 -44.06 c
-0 38.12 h
-f*
-1827.15 1156 m
-0 31.52 -2.38 50.43 -8.32 65.8 c
--13.46 34.06 -45.14 55.14 -83.95 55.14 c
--57.82 0 -95.04 -44.55 -95.04 -112.96 c
-0 -68.11 36.04 -110.09 94.25 -110.09 c
-47.52 0 80.39 26.93 88.7 72.07 c
--33.26 0 p
--9.11 -27.32 -27.72 -41.07 -54.25 -41.07 c
--20.99 0 -38.81 9.32 -49.9 26.42 c
--7.92 11.97 -10.69 23.94 -11.09 44.69 c
-h
-1675.08 1183 m
-2.77 38.16 26.14 62.94 59.4 62.94 c
-32.47 0 57.42 -26.92 57.42 -60.97 c
-0 -0.66 0 -1.31 -0.4 -1.97 c
-h
-f*
-0.2 i
-424.07 751.21 m
--6.86 -3.5 -10.04 -2.01 -16.24 7.8 c
--3.43 -1.75 24.47 -48.02 ^ p
--4.63 10.78 -4.04 14.36 3.1 18 c
-66.41 33.84 p
-7.14 3.64 10.8 1.87 16.38 -8.07 c
-3.43 1.75 -24.47 48.02 ^ p
-4.35 -10.23 3.76 -14.16 -3.24 -17.73 c
-h
-f*
-519.1 697.78 -7.67 12.28 22.07 13.79 -2.04 3.27 P
--16.21 0.95 -25.35 2.5 -37.84 6.5 c
--3.53 -2.2 4.24 -6.79 -42.32 -26.44 p
--8.49 -5.3 -10.2 -14.18 -4.57 -23.2 c
-5.47 -8.75 12.65 -11.53 26.7 -10.19 c
--0.6 4.16 p
--6.59 -0.49 -9.73 0.46 -11.44 3.2 c
--2.28 3.66 -0.96 6.48 4.26 9.74 c
-39.31 24.56 7.67 -12.28 h
-f*
-517.92 671.7 m
-18.93 -8.19 31.69 -8.31 42.32 -0.41 c
-8.53 6.34 10.58 15.72 5.07 23.14 c
--4.59 6.18 -11.7 7.23 -17.76 2.73 c
--5.93 -4.41 -7.1 -10.84 -2.97 -16.4 c
-0.46 -0.62 0.92 -1.24 1.59 -1.89 c
-0.4 -0.28 0.58 -0.53 0.77 -0.77 c
-1.01 -1.36 0.51 -3.27 -0.98 -4.37 c
--4.7 -3.49 -13.1 -3.02 -26.33 1.35 c
-h
-f*
-572.3 597.17 16.7 14.82 -2.25 2.53 P
--2.34 -0.84 -3.53 -0.66 -4.76 0.72 c
--0.61 0.69 -1.41 2.05 -2.47 4.4 c
--2.11 4.93 -4 7.98 -6.25 10.52 c
--9.3 10.48 -23.19 11.74 -32.87 3.16 c
--7.6 -6.75 -8.71 -16.17 -3.33 -32.2 c
-3.5 -10.9 3.48 -16.68 -0.21 -19.95 c
--4.49 -3.99 -10.55 -3.19 -15.15 1.99 c
--7.16 8.06 -6.68 17.96 1.2 29.27 c
--2.86 3.22 -19 -16.87 2.56 -2.88 p
-3.54 0.88 4.96 0.9 5.88 -0.13 c
-0.51 -0.58 1.1 -1.7 1.66 -3.26 c
-1.38 -4.34 5.53 -11.56 8.39 -14.79 c
-9.3 -10.48 22.88 -11.4 33.25 -2.2 c
-8.18 7.26 9.14 16.15 3.86 31.84 c
--3.61 10.8 -3.6 16.58 0.32 20.05 c
-3.8 3.37 9.54 2.7 13.43 -1.67 c
-2.66 -2.99 4.15 -7.23 3.98 -11.91 c
--0.16 -4.46 -1.1 -7.57 -4.64 -13.8 c
-h
-f*
-640.94 483.04 -2.17 -0.24 P
--0.65 -0.07 -1.11 0.1 -1.71 0.58 c
--1.68 1.35 -1.65 3.11 -0.11 5.03 c
-25.19 31.32 p
-8.11 10.08 4.1 23.78 -10.54 35.55 c
--13.56 10.9 -27.6 12.12 -34.84 3.12 c
--3.96 -4.92 -3.49 -10.24 1.43 -14.19 c
-4.8 -3.86 10.48 -3.68 13.76 0.4 c
-1.35 1.68 1.89 3.82 1.99 6.9 c
--0.11 2.07 0.1 3.08 0.68 3.8 c
-2.03 2.52 6.93 1.74 11.13 -1.64 c
-6.96 -5.6 7.48 -11.35 1.59 -18.67 c
--7.04 -8.76 p
--17.76 7.16 -25.57 9.49 -32.42 10.06 c
--8.06 0.55 -13.86 -1.51 -18.01 -6.67 c
--5.89 -7.32 -4.59 -17.26 3.09 -23.43 c
-6.84 -5.5 14.29 -7.54 25.72 -6.85 c
--3.6 -7.18 -2.79 -11.59 3.09 -16.31 c
-5.16 -4.15 10.43 -5.22 18.94 -3.97 c
-h
-622.82 504.73 m
--6.23 -1.11 -9.79 -0.63 -12.67 1.69 c
--3.6 2.9 -3.52 8.16 0.34 12.96 c
-5.6 6.96 14.69 7.95 26.32 2.75 c
-h
-f*
-728.82 538.42 -24.42 16.12 -2.04 -3.08 P
-4.24 -3.35 4.77 -7.03 1.64 -11.78 c
--43.26 -65.55 p
--3.14 -4.76 -7.02 -5.88 -11.64 -3.39 c
--2.04 -3.08 30.72 -20.27 ^ p
--4.16 2.93 -4.6 6.73 -1.21 11.87 c
-h
-f*
-764.97 516.88 -25.45 14.44 -1.82 -3.21 P
-4.46 -3.06 5.23 -6.69 2.42 -11.64 c
--38.76 -68.31 p
--2.81 -4.96 -6.61 -6.34 -11.39 -4.16 c
--1.82 -3.21 32.01 -18.17 ^ p
--4.34 2.64 -5.04 6.4 -2 11.76 c
-h
-f*
-841.61 381.42 -1.99 -0.89 P
--0.6 -0.27 -1.08 -0.25 -1.8 0.02 c
--2.02 0.76 -2.53 2.44 -1.66 4.75 c
-14.23 37.59 p
-4.58 12.1 -3.47 23.88 -21.05 30.53 c
--16.27 6.16 -30 2.96 -34.09 -7.84 c
--2.24 -5.9 -0.14 -10.81 5.76 -13.05 c
-5.76 -2.18 11.1 -0.25 12.96 4.65 c
-0.76 2.02 0.61 4.22 -0.25 7.17 c
--0.75 1.93 -0.86 2.96 -0.53 3.82 c
-1.15 3.02 6.05 3.8 11.09 1.89 c
-8.35 -3.16 10.63 -8.47 7.3 -17.25 c
--3.98 -10.51 p
--19.1 1.3 -27.25 1.1 -33.94 -0.49 c
--7.83 -1.98 -12.71 -5.73 -15.05 -11.92 c
--3.33 -8.79 0.99 -17.83 10.21 -21.32 c
-8.21 -3.11 15.92 -2.74 26.57 1.47 c
--1.2 -7.95 0.94 -11.88 7.99 -14.55 c
-6.19 -2.34 11.53 -1.73 19.24 2.1 c
-h
-817.65 396.42 m
--5.58 -2.99 -9.11 -3.63 -12.57 -2.32 c
--4.32 1.64 -5.87 6.67 -3.69 12.43 c
-3.16 8.35 11.5 12.11 24.17 10.77 c
-h
-f*
-908.79 460.7 -29.06 6.94 -0.86 -3.59 P
-6.57 -2.99 7.59 -4.66 6.16 -10.66 c
--21.72 -90.92 1.8 -0.43 13.84 5.56 p
-5.42 -7.79 10.24 -11.47 17.73 -13.26 c
-19.92 -4.76 37.57 7.49 42.9 29.81 c
-4.94 20.67 -3.16 37.81 -19.79 41.78 c
--7.19 1.72 -13.34 0.5 -20.28 -4.02 c
-h
-897.49 413.37 m
-4.08 5.83 7.65 7.51 12.6 6.33 c
-9.29 -2.22 11.53 -13.36 6.84 -32.99 c
--4.94 -20.67 -11.76 -29.33 -21.34 -27.04 c
--6.29 1.5 -9.23 7.11 -7.51 14.3 c
-h
-f*
-993.22 413.29 m
--19.45 2.09 -36.33 -12.36 -38.57 -33.18 c
--2.35 -21.9 10.5 -39.23 30.56 -41.39 c
-19.75 -2.12 36.16 12.22 38.45 33.51 c
-2.3 21.44 -10.68 38.94 -30.44 41.06 c
-h
-992.86 408.53 m
-8.88 -0.95 10.89 -9.69 8.19 -34.8 c
--2.53 -23.58 -6.45 -31.21 -15.33 -30.26 c
--9.03 0.97 -11.26 9.11 -8.85 31.46 c
-2.9 26.95 6.51 34.61 16 33.59 c
-h
-f*
-1030 334 88 74 /6G
-$X
-00000000780000000000000000001FFFE000200000000000007FFFFC003C0000
-00000001FFFFFF003FC00000000003FFFFFF803FFE0000000007FFFFFFE03FFF
-FE0000000FFFFFFFF03FFFFFFC00001FFFFFFFFC3FFFFFFF00003FFFFFFFFE3F
-FFFFFF00003FFFFFFFFF3FFFFFFF00007FFFFFFFFFBFFFFFF800007FFFFF007F
-FFFFFFC00000FFFFFE001FFFFFFF800000FFFFFC0007FFFFFF000000FFFFF800
-03FFFFFE000001FFFFF80001FFFFFE000001FFFFF80000FFFFFE000001FFFFF0
-00007FFFFE000001FFFFF000007FFFFE000001FFFFF000007FFFFE000001FFFF
-F000007FFFFE000001FFFFF000007FFFFE000001FFFFF000007FFFFE000001FF
-FFF000007FFFFE000001FFFFF000007FFFFE000003FFFFF000007FFFFE000003
-FFFFF000007FFFFE000003FFFFF000007FFFFE000003FFFFF000007FFFFE0000
-03FFFFF000007FFFFE000003FFFFF000007FFFFE000003FFFFF000007FFFFE00
-0003FFFFF000007FFFFE000003FFFFF000007FFFFC000003FFFFF000007FFFFC
-000003FFFFF000007FFFFC000003FFFFF000007FFFFC000003FFFFF000007FFF
-FC000003FFFFF000007FFFFC000003FFFFF000007FFFFC000003FFFFF000007F
-FFFC000003FFFFF000007FFFFC000003FFFFF000007FFFFC000003FFFFF00000
-7FFFFC000003FFFFF000007FFFFC000003FFFFF000007FFFFC000003FFFFF000
-007FFFFC000003FFFFF000007FFFFC000003FFFFF000007FFFFC000003FFFFF0
-00007FFFFC000003FFFFE000007FFFFC000003FFFFE000007FFFFC000003FFFF
-E000007FFFFC000003FFFFE000007FFFFC000003FFFFE000007FFFFC000003FF
-FFE000007FFFFC000003FFFFE000007FFFFC000003FFFFE00000FFFFFC000003
-FFFFE00000FFFFFC000003FFFFE00000FFFFFC000003FFFFE00000FFFFFC0000
-03FFFFE00000FFFFFC000003FFFFE00000FFFFFC000003FFFFE00000FFFFFC00
-0007FFFFE00000FFFFFC000007FFFFE00000FFFFFC00000FFFFFE00001FFFFFC
-00001FFFFFE00001FFFFFC00007FFFFFE00003FFFFFC0003FFFFFFE0001FFFFF
-FC0003FFFFFFE001FFFFFFFC0003FFFFFFE001FFFFFFFC0003FFFFFFE001FFFF
-FFFC000000001FE001FFFFFFFC00
-,
-1167.55 416.4 -14.36 -1.84 -3.31 25.81 -3.82 -0.49 P
--7.63 -14.33 -12.86 -21.99 -21.71 -31.67 c
-0.53 -4.12 7.94 1.02 6.35 -49.49 p
-1.27 -9.93 8.63 -15.2 19.17 -13.84 c
-10.23 1.31 15.76 6.68 20.41 20.01 c
--4.03 1.19 p
--2.31 -6.2 -4.48 -8.65 -7.69 -9.06 c
--4.28 -0.55 -6.29 1.83 -7.07 7.94 c
--5.9 45.98 14.36 1.84 h
-f*
-1224.51 420.82 13.6 -49.45 P
-1.76 -6.38 0.61 -8.62 -6.01 -11.24 c
-0.98 -3.56 41.28 11.35 ^ p
--10.48 -2.56 -12.75 -1.27 -15.4 8.38 c
--12.82 46.62 12.92 3.55 -1.8 6.53 ^ -4.98 18.12 p
--2.25 8.17 -0.92 12.05 4.28 13.48 c
-2.67 0.74 4.59 0.15 5.08 -1.64 c
-0.16 -0.59 0 -1.76 -0.48 -3.49 c
--0.72 -2.59 -0.87 -4.39 -0.46 -5.88 c
-1.27 -4.6 6.11 -7.1 11.16 -5.72 c
-5.49 1.51 8.19 6.24 6.67 11.74 c
--2.41 8.76 -12.84 12.44 -25.32 9.01 c
--9.95 -2.74 -16.69 -8.42 -18.9 -16.06 c
--1.84 -6.1 -1.2 -12.47 2.31 -25.24 c
--8.46 -2.33 1.8 -6.53 h
-f*
-1294.24 450.28 -27.22 -10.31 1.31 -3.46 P
-6.52 1.48 8.81 0.21 11 -5.55 c
-16.04 -42.34 p
-2.24 -5.9 1.4 -8.03 -4.5 -11.59 c
-1.31 -3.46 38.31 14.51 ^ p
--9 -2.75 -11.44 -1.54 -14.82 7.39 c
--10.31 27.22 p
--2.84 7.49 -1.15 15.21 3.6 17.01 c
-1.15 0.44 2.83 -0.08 5.29 -1.78 c
-4.21 -2.85 6.86 -3.33 10.6 -1.91 c
-5.33 2.02 7.54 7.47 5.42 13.09 c
--2.46 6.48 -9.15 9.38 -15.92 6.81 c
--7.2 -2.73 -11.2 -8.69 -14.31 -20.9 c
-h
-f*
-1407.51 445.17 m
--2.08 -9.52 -5.08 -14.15 -10.99 -17.14 c
--5.36 -2.72 -10.59 -2.26 -15.92 1.08 c
--4.7 3.14 -8.1 7.12 -13.45 16.31 c
-34.61 17.55 p
--6.68 11.12 -12.01 16.53 -19.05 19.52 c
--7.25 3.06 -14.96 2.6 -22.51 -1.23 c
--17.17 -8.71 -21.81 -28.16 -11.64 -48.21 c
-10.17 -20.05 28.12 -27.53 45.15 -18.89 c
-11.13 5.64 15.63 13.45 18.08 30.75 c
-h
-1363.88 450.16 m
--7.95 16.69 -8.26 23.44 -1.53 26.85 c
-3.85 1.95 7.57 1.08 10.83 -2.62 c
-2.01 -2.26 4.24 -5.97 8.06 -12.83 c
-1.04 -2.06 h
-f*
-1471.41 485.89 m
--1.05 -9.68 -3.54 -14.61 -9.09 -18.22 c
--5.04 -3.27 -10.29 -3.38 -15.94 -0.63 c
--5.01 2.62 -8.81 6.21 -15.12 14.78 c
-32.53 21.16 p
--7.83 10.34 -13.71 15.15 -21.03 17.37 c
--7.53 2.26 -15.15 0.99 -22.25 -3.63 c
--16.14 -10.49 -18.67 -30.33 -6.42 -49.18 c
-12.26 -18.85 30.9 -24.36 46.91 -13.95 c
-10.46 6.8 14.1 15.04 14.68 32.51 c
-h
-1427.5 486.18 m
--9.69 15.74 -10.72 22.42 -4.39 26.53 c
-3.61 2.35 7.41 1.88 11.05 -1.45 c
-2.24 -2.03 4.85 -5.48 9.39 -11.9 c
-1.26 -1.94 h
-f*
-1537.31 510.99 m
-4.15 6.08 6.6 9.15 13.23 16.1 c
-6.53 7.08 -2.27 2.72 p
--5.73 -4.19 -8.55 -3.95 -12.7 1.01 c
--56.86 67.88 -25.38 -21.26 2.37 -2.83 p
-8.4 6.03 10.16 6.1 14.71 0.67 c
-18.1 -21.6 p
--9.63 1.18 -14.75 0.1 -20.18 -4.45 c
--12.99 -10.88 -12.09 -31.62 2.25 -48.74 c
-13.45 -16.06 32.21 -20.23 44.61 -9.85 c
-6.26 5.24 8.57 10.39 9.18 20.94 c
-h
-1524.59 525.45 m
-0.59 -0.71 1.09 -3.7 0.96 -6.43 c
--0.09 -4.69 -1.48 -8.07 -4.08 -10.24 c
--6.26 -5.24 -15.14 -0.63 -27.7 14.36 c
--12.76 15.23 -15.4 24.87 -8.55 30.6 c
-3.9 3.26 9.93 3.5 15.34 0.39 c
-h
-f*
-1542.75 619.83 m
--13.28 -14.36 -11.75 -36.53 3.63 -50.75 c
-16.17 -14.95 37.75 -14.97 51.44 -0.16 c
-13.49 14.59 11.76 36.32 -3.96 50.85 c
--15.83 14.63 -37.63 14.65 -51.11 0.06 c
-h
-1546.36 616.7 m
-6.06 6.56 14.27 2.96 32.81 -14.19 c
-17.42 -16.1 21.21 -23.8 15.14 -30.35 c
--6.17 -6.67 -14.03 -3.6 -30.54 11.66 c
--19.9 18.4 -23.9 25.87 -17.42 32.88 c
-h
-f*
-1591.43 673.79 -16.25 -24.52 3.08 -2.04 P
-4.51 5.14 6.99 5.53 12.25 2.04 c
-37.74 -25.01 p
-5.26 -3.49 5.74 -5.84 3.02 -12.16 c
-3.08 -2.04 20.42 30.81 ^ p
--3.62 -4.07 -6.35 -4.29 -11.23 -1.06 c
--34.27 22.71 p
--0.77 0.51 -1.85 4.18 -2.03 6.7 c
--0.27 4.06 0.28 6.83 1.73 9.02 c
-3.32 5.01 7.55 4.98 15.25 -0.13 c
-31.07 -20.59 p
-5.26 -3.49 6 -6.01 3.23 -11.01 c
-3.08 -2.04 19.91 30.04 ^ p
--3.49 -4.15 -6.44 -4.42 -11.32 -1.18 c
--34.27 22.71 p
--0.64 0.43 -1.72 4.1 -1.9 6.61 c
--0.31 4.27 0.24 7.05 1.68 9.23 c
-3.23 4.88 7.59 4.76 15.16 -0.26 c
-31.07 -20.59 p
-5.39 -3.57 6 -6.01 3.15 -11.14 c
-3.08 -2.04 20.25 30.55 ^ p
--3.57 -4.84 -6.05 -5.23 -11.57 -1.57 c
--32.22 21.35 p
--11.04 7.32 -22.61 5.19 -29.58 -5.34 c
--4.85 -7.32 -5.13 -14.15 -1.34 -26.27 c
--10.64 1.51 -16.7 -0.94 -22.06 -9.03 c
--5.36 -8.09 -5.81 -16.29 -1.34 -26.27 c
-h
-f*
-1693.87 754.84 m
--3.11 -6.36 -0.28 -14.26 5.94 -17.3 c
-6.64 -3.25 14.19 -0.77 17.37 5.74 c
-3.25 6.64 0.7 14.4 -5.67 17.51 c
--6.5 3.18 -14.47 0.56 -17.65 -5.95 c
-h
-f*
-824 1751 65 66 /1T
-$X
-02000000000000000003C00000000000000001FC0000000000000000FF800000
-00000000007FF8000000000000003FFE000000000000003FC600000000000000
-3F00000000000000001F00000000000000001F00000000000000001F00000000
-000000001E00000018000000001F0000001F000000001F00000007E00000000F
-00000001FE0000000F00000000FFC000000F00000000FFFC00000F00000000FF
-FF80000F00000001FFFF00000F00000001FFE000000F00000003FFC000000F00
-000007FF800000070000000FFF00000007C000000FFE00000007F800001FFC00
-000007FF80003FF800000007FFF0007FF800000007BFFF00FFF00000000783FF
-E1FFE000000007807FFDFFC0000000038007FFFF80000000038000FFFF000000
-0003C0001FFF0000000003C0000FFE0000000003C0001FFC0000000003C0003F
-F80000000003C0007FF00000000003C000FFE00000000003C000FFC000000000
-01C001FFC00000000001C003FF800000000001E007FF000000000001E00FFE00
-0000000001E00FFC000000000001E01FF8000000000001E03FF8000000000001
-E07FF0000000000000E0FFE0000000000000E1FFC0000000000000E1FF800000
-00000000F3FF00000000000000F7FF00000000000000FFFE00000000000000FF
-FC00000000000000FFF800000000000000FFF0000000000000007FE000000000
-0000007FE0000000000000007FC0000000000000007F80000000000000007F00
-000000000000007E00000000000000007C00000000000000007C000000000000
-000038000000000000000030000000000000
-,
-880 1769 37 44 /6M
-$X
-00060000000007C000000007FFF8000007FFFE00000FE00F00000F800780000F
-0003C0000E0001E0000E0001F0001C0001F000180001F000180001F800100001
-F800000003F800000003F80000000FF80000001FF8000001FFF000000FFFF000
-007FFFE00001FFFFC00007FFFF80001FFFFF00003FFFFC00007FFFE00000FFFF
-000000FFF8000001FFC0000001FE00000001FC00000001F800000001F0000000
-01F0000C0001F0000C0001F000180000F000380000F00038000078007800003C
-00F000001E03F000000FFFF0000003FFF00000000060000000002000
-,
-908 1775 57 62 /1X
-$X
-00070000000000000007FC00000000000000FFF00000000000003FFFC0000000
-00001FFFC300000000001FF003FC000000001FE0007FF00000001FE0007FFF80
-00001FC000FFFF8000001FC001FFE00000003FC003FF800000003FC007FF0000
-00003FC00FFC000000003FC01FF8000000003F803FF0000000003F807FE00000
-00007F80FFC0000000007F81FF80000000007F83FF00000000007F87FE000000
-00007F0FFC00000000007F3FF00000000000FF7FE00000000000FFFFC0000000
-0000FFFF800000000000FFFF000000000000FE7E000000000000FE7C00000000
-0001FE3C000000000001FE1E000000000001FE0E000000000001FE0700000000
-0001FC07800000000001FC03C00000000003FC01E00000000003FC00E0000000
-0003FC00700000000003FC00780000000003F8003C0000000003F8001E000000
-0007F8001F0000000007F8001F8000000007F803FFC000000007F8007FF00000
-0007F00003FE00000007F000000F0000000FF00000000000000FF00000000000
-000FF00000000000000FF00000000000000FE00000000000000FE00000000000
-001FE00000000000001FE000000000000C3FE000000000000FFFE00000000000
-03FFC0000000000000FFC00000000000003FC000000000000007C00000000000
-0001C000000000000000400000000000
-,
-980 1785 72 44 /6S
-$X
-07F80000000000000003FFFF800000000000007FFF87FFF8000000003FF000FF
-FF87F800001FE0003FF807FFFF001FE0003FE0007FFF001FE0001FE0003FE000
-1FE0001FC0003FC0001FE0001FC0003FC0001FC0001FC0003FC0001FC0001FC0
-003FC0001FC0003FC0003FC0001FC0003FC0003FC0001FC0003FC0003F80001F
-C0003FC0003F80001FC0003FC0003F80001FC0003FC0003F80003FC0003FC000
-3F80003FC0003FC0003F80003FC0003F80003F80003FC0003F80003F80003FC0
-003F80007F80003FC0003F80007F80003FC0003F80007F80003FC0003F80007F
-80003F80003F80007F80003F80003F80007F80003F80007F80007F80003F8000
-7F80007F80003F80007F80007F00003F80007F80007F00003F80007F80007F00
-007FC0007F80007F00007FE000FF8000FF00007FF000FFC000FF001DFF7801FF
-E000FE001FFF1E03FEF001FE0003FF0FFFFE7801FE00007F07FFFC3F07FC0000
-1F01FFF81FFFFC00000300FFF007FFF8000000003FC003FFF000000000000000
-FFE0000000000000000F0000
-,
-1051 1788 37 41 /2D
-$X
-0003FF0000001FFFC000003FFFF00000FFFFFC0001FFFFFE0003FFFFFF0003FF
-E03F8007FF8007C007FE0003C00FFC0001E00FF80000F01FF00000701FF00000
-381FE00000181FE00000081FC00000003FC00000003FC00000003F800000003F
-800000003F800000003F800000003F800000001F800000001F800000001FFFFF
-FFF01FFFFFFFF01FFFFFFFF00F80001FE00F80001FE00FC0003FE007C0003FE0
-07C0003FC003E0003FC001E0007F8000F000FF80007800FF00003E03FE00001F
-FFFC000007FFF0000001FFC000
-,
-1109 1784 40 43 /6Y
-$X
-00000003E00000000FF8001FC00FFC007FF81FFF00FFFE1FFF01FFFF1FE103FF
-FFDFC003FF01FFC007FE007FC007FC003FC007F8001FC007F8001FC007F8001F
-C007F8001FC007F8001FE003F8001FE003FC001FE001FC000FE000FE000FE000
-7F000FE0003F800FE0000FC00FE00003F00FE00000FE0FE000001FCFE0000003
-FFF00000003FF00000000FF000000007F000000007F0003E0007F0007F0007F0
-007F0007F0007F0007F0007F0007F0007F0007E0007F0007E0003F800FC0001F
-801FC0000FC03F800007FFFE000001FFF80000000F8000
-,
-1153 1780 39 62 /2J
-$X
-0007FE0000003FFFC00001FFFFF00007FC01FC000FF0007E001FE0003F003FC0
-001F803F80000FC03F80000FE03F800007E03FC00007F03FC00007F83FC00003
-F83FC00003F81FC00003FC1FC00003FC1FE00001FC1FE00001FE1FE00001FE1F
-E00001FE0FE00001FE0FE00001FE0FE00001FE0FF00001FE0FF00001FE0FF000
-01FE0FF00003FE07F00003FE07F00003FC07F00007FC07F80007FC07F8000FF8
-07FC001FF807FE003FF003FF007FF003FBFFFFE003FBFFFFC003FCFFFF8003FC
-7FFE0003FC1FF80003FC00000001FC00000001FC00000001FE00000001FE0000
-0001FE00000001FE00000000FE00000000FE00000000FE00000000FF00000000
-FF00000000FF00000000FF00000000FF00000000FF00000000FF00000001FF80
-00001FFF8000001FFF800000003F8000000000800000
-,
-1194 1772 41 42 /7C
-$X
-00003F0000000003FFF00000000FFFFC0000003F80FF0000007E003F800000FC
-001FC00001F8000FE00003F80007F00007F00007F80007F00003F8000FE00003
-FC000FE00001FE001FE00001FE001FE00000FE001FE00000FF003FE00000FF00
-3FC00000FF003FC00000FF803FC000007F803FC000007F803FC000007F803FC0
-00007F803FE000007F803FE000007F803FE000007F801FE000007F801FE00000
-7F801FE000007F800FE000007F000FF00000FF000FF00000FF0007F00000FE00
-07F80001FE0003F80001FC0001FC0003F80000FE0003F000007F0007E000003F
-801FC000001FE03F80000007FFFE00000001FFF0000000001F000000
-,
-1235 1760 43 47 /2N
-$X
-0000003000000000003FFE000000003FFC000003E03FF000001FFC1FE000007F
-FF1FE00000FFFFDFE00001FFFFFFE00003FF007FE00003FE001FE00003FC001F
-E00007F8000FF00007F8000FF00007F80007F00007F80007F80007F80007F800
-07F80007F80003F80003F80003FC0003FC0003FC0003FC0001FC0003FC0001FE
-0001FC0001FE0001FE0001FE0001FE0000FE0001FE0000FF0000FF0000FF0000
-FF0000FF0000FF00007F00007F00007F80007F80007F80007F80003F80007F80
-003FC0003F80003FC0003FC0003FC0003FC0001FC0003FC0001FE0003FE0001F
-E0007FE0001FE000FF00000FE003F000000FF0070000000FF0000000000FF000
-0000001FF8000000003FC0000000007C0000000000C000000000
-,
-1275 1752 31 50 /7G
-$X
-000F8000007FE00000FFF80001FFFE0001FE060003FC000003FC000003FC0000
-03FC000003FC000003FC000003FC000001FC000001FE000001FE000001FE0000
-00FF000000FF000000FF0000007F8000007F8000007F8000003FC000003FC000
-003FC000001FE000001FE000001FE000000FF000000FF000000FF0000007F000
-0007F8000007F8000003F8060003FC3E0003FDFE0001FFFC0001FFE00003FE00
-001FFE00001FFF000007FF000001FF0000007F8000001F8000000F80000003C0
-000001C0000000C0
-,
-cleartomark end end pagesave restore showpage
-%%PageTrailer
-%%Trailer
-%%Pages: 1

Index: Press-use/3-image/a-gnu-head.eps
===================================================================
RCS file: Press-use/3-image/a-gnu-head.eps
diff -N Press-use/3-image/a-gnu-head.eps
--- Press-use/3-image/a-gnu-head.eps    1 Mar 2004 14:50:26 -0000       1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,3771 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: Adobe Illustrator by AutoTrace version 0.30
-%%Title: 
-%%CreationDate: Fri Oct 18 01:30:23 2002
-%%BoundingBox: 0 0 1200 1200
-%%DocumentData: Clean7Bit
-%%EndComments
-%%BeginProlog
-/bd { bind def } bind def
-/incompound false def
-/m { moveto } bd
-/l { lineto } bd
-/c { curveto } bd
-/F { incompound not {fill} if } bd
-/f { closepath F } bd
-/S { stroke } bd
-/*u { /incompound true def } bd
-/*U { /incompound false def f} bd
-/k { setcmykcolor } bd
-/K { k } bd
-%%EndProlog
-%%BeginSetup
-%%EndSetup
-0.000 0.000 0.000 0.000 k
-*u
-0 1200 m
-0 0 l
-1200 0 l
-1200 1200 l
-0 1200 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-310 503 m
-315.308 499  318.735 493  326 495  c 
-325.709 488.217  323.562 481.717  323 475  c 
-322.439 465.705  324 456.306  324 447  c 
-324 432.826  322.757 418  324.171 404  c 
-324.915 396.557  327.211 389.298  328.715 382  c 
-329.529 378  329.608 373.903  330.608 370  c 
-337.847 341.742  350.724 313.867  363.967 288  c 
-370.226 275.773  380.538 262.934  390.174 253.170  c 
-396.896 246.358  404.202 240  409.688 232  c 
-413.545 226.503  421 219.389  420.671 212  c 
-420.503 209.505  418.981 207.251  418 205  c 
-429.807 208.506  419.188 222.563  416 229  c 
-422.230 223  429.772 218.507  432.867 210  c 
-435.334 203.217  432 197  425 196  c 
-425 194 l
-435 194.556  437.827 203.205  434.756 212  c 
-431.742 220.634  425.535 224.827  419 230.730  c 
-415.215 234.278  411.865 238.345  408 241.907  c 
-394.190 254.631  380.829 268.711  371 285  c 
-364.448 296  359.966 308.282  354.688 320  c 
-341.527 349.219  331.231 378.851  328.170 411  c 
-327.387 419.219  328 427.747  328 436  c 
-328 451.429  326.183 466.723  328.753 482  c 
-329.651 487.341  330.481 493.305  333.343 498  c 
-338.944 507.187  348.813 512.990  359 515.525  c 
-363.633 516.677  368.505 516.812  373 518.464  c 
-385.440 523  395 530.598  406 538  c 
-402.650 530.442  398.898 520.338  401.563 512  c 
-403.971 504.470  412.183 498.662  411.408 490  c 
-410.989 485.316  406.854 480.918  404.548 477  c 
-401.502 471.826  400.626 463.525  403.457 458  c 
-408.316 448.553  422.734 448.583  428.288 439.674  c 
-430.345 436.374  427 433.374  425 431  c 
-422 427.312  419.509 422.922  419.275 418  c 
-418.774 407.480  428.449 400.650  438 400  c 
-441.697 399.878  445.334 401  449 400.752  c 
-451.700 400.494  454.324 399.453  457 399  c 
-454.982 396.657  452.395 394.618  450.742 391.985  c 
-447.249 386.425  449 378.810  455 375.920  c 
-462 372.473  468.655 374  474.891 368.242  c 
-476.704 366.566  478.543 364.621  478.543 361.985  c 
-478.543 355  468.874 351.565  465 347  c 
-483 353 l
-479.416 349.416  475.431 345.975  472.279 342  c 
-470.841 340.187  469.810 338.278  469.344 336  c 
-466 319.742  484 315.281  493.985 307  c 
-502 300.283  508 290.518  519 288  c 
-517.344 291.977  512.329 293.986  509 296.778  c 
-503.614 301.295  499.821 307.209  494 311.306  c 
-486.910 316.294  476.455 318.665  472.278 327  c 
-466.841 337.847  482.787 347  489 354  c 
-491.553 356.814  493.206 360  495.472 363  c 
-497.620 365.832  500.762 367.818  503.667 364.583  c 
-507.955 359.808  498.849 354.561  496 351.917  c 
-489.182 345.587  483.671 333  488.278 324  c 
-491.663 317.291  499.587 315.194  506 312.611  c 
-512.899 309.832  517.720 305.574  523 300.611  c 
-527 296.939  531.307 293.515  532.583 288  c 
-533.893 282.341  530.789 278.383  527.694 274  c 
-520.500 263.810  506.357 252  514 238  c 
-517.656 231.468  524.461 233.396  529.972 230.278  c 
-532.721 228.722  534 225.456  535.861 223  c 
-538.451 219.471  541.529 215.942  545 213.250  c 
-547.347 211.430  550.549 211  551 208  c 
-556 207.354  562.329 207.734  566.996 205.467  c 
-578 200  579 185.254  572.362 176  c 
-570.588 173.544  568.350 171.555  565.999 169.665  c 
-556.963 162.400  543.782 156.307  544 143  c 
-544 139.596  544.819 136.813  547.228 134.301  c 
-549.173 132.273  551.640 130.719  554 129.228  c 
-557.222 127.194  560.426 125.309  564 124  c 
-561.927 128.283  556.274 131.898  556.372 137  c 
-556.435 140.304  558.903 143.444  560.746 145.999  c 
-566.344 153.762  573.986 158  580.985 164.209  c 
-592 173.946  593.248 189.567  589 203  c 
-588 203 l
-588 191.960  591.192 181.781  584.211 172  c 
-574 157.867  554.170 153.320  554 133  c 
-546.281 137.502  543.868 144.353  549.305 151.996  c 
-558.212 164.516  577.308 168.314  578.895 186  c 
-580.346 202  566.808 211.872  557.565 223  c 
-554.519 226.667  550.975 230.202  549.829 235  c 
-548.438 240.827  553.178 246.659  555 252  c 
-552.351 250.497  551 248.747  549.761 245.995  c 
-542.508 231.689  555.647 219.774  565 210  c 
-550 213.457 l
-539 223.996 l
-535 232 l
-530.858 236.477  533.240 242  535.825 247  c 
-541.223 257.261  552.650 262.398  556 274  c 
-552.250 271.595  550 267.242  546.960 264  c 
-538 254.726  530.280 246.511  530 233  c 
-527.313 233.362  524.524 233.754  522 234.854  c 
-504.833 242.390  522 262.240  529 270  c 
-531 272.224  533.421 274.298  534.836 277  c 
-537 281  537 286.592  535.884 291  c 
-532.380 303.347  519 310.944  508 315.186  c 
-500.629 317.989  490 320.459  489 330  c 
-488.490 336.483  492.750 344.410  497 348.910  c 
-500.427 352.343  505.344 355  506.551 360  c 
-508.308 367.234  501.705 369.635  496 368  c 
-494.219 376.488  488.805 380.338  482 385.255  c 
-475.833 389.711  469.502 394.598  463 398.522  c 
-458.722 401  454 402.791  450 405.924  c 
-444.700 410.186  437.309 417.689  436.799 425  c 
-436.436 430.213  439.734 433.702  436.582 438.870  c 
-434.790 441.808  431.583 443.222  429 445.340  c 
-423.520 449.833  417.741 455  415.728 462  c 
-414.367 466.729  415.585 471.244  415.910 476  c 
-416.324 482  415.737 488  414.714 494  c 
-413.546 500.781  409.337 505.737  406.954 512  c 
-404.807 517.646  404.935 523.238  406.489 529  c 
-409.393 539.766  416.988 544.947  424.576 552.421  c 
-436.766 564.427  449.603 576.454  457.181 592  c 
-465.875 609.839  474.769 629.481  478.880 649  c 
-481.816 662.937  483.967 676.990  486.324 691  c 
-487 695.751  489 700.249  489.894 705  c 
-492 717.522  491.414 730.541  498 742  c 
-502.394 749.400  510.976 754.977  517 761  c 
-514 753 l
-517 744 l
-518 736 l
-509 723 l
-515.296 723.292  520.538 731.468  524.421 736  c 
-529.693 742  534.398 748.674  539.449 755  c 
-546 763.407  553.889 771.848  555 783  c 
-548 786.608  555.375 791.983  554 798  c 
-539.389 783 l
-529 782.444 l
-518 780 l
-502.222 779.278 l
-497.972 775 l
-488.667 766.306 l
-491 765 l
-482.584 757.255 l
-477.853 750.169 l
-463 735 l
-470.491 735.193  476.171 744.894  482 749  c 
-473 736 l
-477 738 l
-464.992 721 l
-450 706 l
-456.346 707.509  461.322 712.730  466 717  c 
-474.308 724.831  481.303 734.598  487.640 744  c 
-492.259 750.852  495.617 757.595  502 763  c 
-508.495 768.636  514 773.595  523 774  c 
-520.555 769.881  515.860 768.851  512.464 765.610  c 
-503.596 757  494.725 747.585  490.439 736  c 
-487 727  488 718  486.536 709  c 
-485.527 703.238  483.563 697.714  482.467 692  c 
-479.862 678.419  478.417 664.546  475.547 651  c 
-474 644.446  471 638.356  469 632  c 
-463 613.385  456.285 593.261  443.335 578.170  c 
-441 575.559  438.574 572.547  435.830 570.464  c 
-432.595 568  429 566.839  426 564  c 
-427.170 566.965  433.249 572.364  428 573  c 
-434 583 l
-427.898 579.712  423.987 572.241  419.561 567  c 
-412.252 558.344  403.565 550.351  394.830 543.171  c 
-391.836 540.710  380.954 534.615  385 530  c 
-385 529 l
-368 524 l
-371 528.521  375.948 532.273  374 538  c 
-373 538 l
-368.938 532.931  364.346 526  358.170 523.488  c 
-355.187 522.198  351.167 523  348 522.996  c 
-340.895 522.920  331.802 522.984  325 520.956  c 
-318.701 519  315.400 514.269  309.910 511.314  c 
-305.647 509  300.442 510.224  296 508  c 
-290.925 505.459  288.406 500.457  283.816 497.514  c 
-281.428 495.983  278.677 496  276 495.483  c 
-272 494.604  268.265 492.920  265 490.471  c 
-257.967 485.197  252.706 479  244 476.580  c 
-239.352 475.261  234.990 474.598  231.843 479  c 
-224.464 489.688  236.324 500.819  243 507.996  c 
-251 516.528  262.478 522.611  266.882 534  c 
-270.427 543.168  265.563 553.575  270.279 561.999  c 
-275 570.587  285 573.543  289 583  c 
-292.816 591.799  291 600.846  290.999 610  c 
-290.977 614.584  289.855 618.591  295 620  c 
-295 610 l
-299.523 612.435  299.664 616.300  300.661 621  c 
-302.633 630.292  304.426 639.639  306 649  c 
-307.576 657.421  307.978 668  311.264 676  c 
-314.661 684  320.815 690.870  324.174 699  c 
-326.925 705.658  329.921 712.294  332.536 719  c 
-334.555 724.176  335.478 729.375  338.789 733.999  c 
-341.553 737.858  345.433 740.516  348.485 744  c 
-358.574 755.901  369.755 768.398  383 776.867  c 
-392.791 783  404.278 786  415 790.232  c 
-419 791.849  422.804 794.445  427 795.982  c 
-435.900 799.243  445.685 801.341  455 803  c 
-468 805.519  478.330 806.746  486 819  c 
-487 819 l
-491 816.378  495.363 818.374  499 821  c 
-500 818 l
-507 822 l
-505 815 l
-518 820 l
-523.891 820.843 l
-528 828 l
-522 828 l
-525 840 l
-531 827.961 l
-530 817 l
-541 826 l
-542 826 l
-541 818 l
-548 819 l
-548 815 l
-557 812 l
-561 822 l
-567 820 l
-567.208 815.496  569.910 815  574 815  c 
-574 808 l
-593 822.818 l
-611 832 l
-615.985 827.312  619.479 830.849  625 832.617  c 
-629.448 834  633.559 834  638 836  c 
-640.950 823.615  641.500 807.425  653.185 799  c 
-656.396 796.869  660.372 796.497  664 795.239  c 
-667.238 794  670 792.240  673 790.569  c 
-676.262 788.730  679.762 787.339  683 785.472  c 
-686.900 783.224  689.334 780.328  694 781  c 
-690.421 787.583  683.374 789.969  677 793.258  c 
-673.347 795  669.890 797.511  666 798.896  c 
-663.369 799.833  660.509 800  658 801.453  c 
-654.451 803.334  652.308 806.707  650.181 810  c 
-643.912 819.706  640.278 832.568  643 844  c 
-648.636 830.730  649 816.998  660.174 806.185  c 
-664.340 802  671.451 797.811  677 795.992  c 
-681.609 794.482  686.918 794.943  690.787 791.570  c 
-695.416 787.535  695.984 781.708  696 776  c 
-702.904 778.428  699.406 787.588  696.211 791.985  c 
-691 798.982  683.550 804  678.688 811  c 
-670.671 822.539  667.286 840  667 854  c 
-668 854 l
-669 850.427  671.311 847.504  672.444 844  c 
-675.638 834  676.831 824.934  682.915 816  c 
-685.811 811.748  689.685 808.213  694 805.443  c 
-697.226 803.372  700.927 801.872  703.442 798.870  c 
-708.662 792.639  709.363 782.493  709 774.714  c 
-709 771.772  709 768.623  707.258 766  c 
-704.452 762  697.389 760  693 758  c 
-693 756 l
-706.925 750.785  726.219 756.174  728.786 773  c 
-730.186 782.186  725.761 789.703  721 797  c 
-739 809.914 l
-755.830 817.841 l
-783 817 l
-785 811 l
-785 808 l
-792 815 l
-793 815 l
-788 804 l
-793.660 805  797.587 808.830  800 814  c 
-802 814 l
-803 807 l
-807.542 807.374  812.476 809.954  816.996 808.977  c 
-820.770 808  823.306 804.860  827 803.970  c 
-829.865 803.296  832.764 803.818  835.576 802.871  c 
-842.293 800.609  848.947 796  855 792.502  c 
-868.704 784.275  881.489 773.575  891.485 761  c 
-900 750  905.913 737.294  912.258 725  c 
-924.328 701.617  935.537 677.737  948.810 655  c 
-959.232 637  968.482 618.532  979.425 601  c 
-984.498 592.873  990.669 585.576  1001 588  c 
-992.626 575.787  981.901 574.333  968 575  c 
-967.430 579.534  961.498 577.359  958 576.884  c 
-948.564 575.603  935.168 571.738  927 578  c 
-932.449 579  943 578.577  942 586  c 
-930.619 582.391  918.820 581.269  907 583.260  c 
-903.604 583.832  900.354 585.304  897 586  c 
-879.772 590.280  864 596.499  851 609  c 
-846 613.787  841 619  837.468 625  c 
-834.771 629.353  833.387 635  829 638  c 
-828 614 l
-827 614 l
-819.576 638 l
-817.607 647.961 l
-824.486 656.300 l
-827 665 l
-811 653 l
-816 663 l
-812.455 660.730  810.629 656.764  806.960 654.483  c 
-799.888 650  780.688 651.388  780 662  c 
-791.180 659.924  805.841 662.228  807.783 676  c 
-808.394 680.331  807 684.843  806 689  c 
-811.827 688  815.814 684.827  817 679  c 
-824.561 679.572  828.598 687  824.208 693.906  c 
-821.828 697.567  818 698.725  814 699  c 
-815.702 705  814.992 711  816.302 717  c 
-816.933 719.872  818.778 722.248  819.741 725  c 
-821.237 729.276  821.604 734.494  821.911 739  c 
-823.290 759.253  810.935 776.833  797 790.424  c 
-793 794.391  789.176 798.274  785 802  c 
-781.727 805  779.554 807.643  775 807  c 
-776.976 801.899  780.783 798.204  784.196 794  c 
-796.227 779.181  814.656 766.256  816.826 746  c 
-817.445 740.224  817.485 733.340  814.950 728  c 
-812.719 723.302  808.815 720.307  808 715  c 
-813 716 l
-811 701 l
-806.445 702.869  801.836 705.582  797 706.610  c 
-783.886 709.399  764.858 704.421  754 697  c 
-750 710.937  759.696 725  772 731.676  c 
-777.232 734.484  787.373 737.530  792.685 733.259  c 
-794.586 731.731  795.184 729.181  796 727  c 
-798 727 l
-800.524 737  792.292 739  784 738.985  c 
-772.984 738.750  761 733.745  757 723  c 
-756 723 l
-757.891 735.615  768.550 744.750  775.242 755  c 
-777.345 758.221  781.798 761.879  782 765.910  c 
-782.349 770  776.823 773.637  775 777  c 
-786 781 l
-772.747 784.312  761.979 770.494  757.178 760  c 
-753 751  751.453 742.511  749.551 733  c 
-747.348 721.986  745 712.207  747.680 701  c 
-749 695.270  752.563 689.200  755.327 684  c 
-761.330 672.706  771 663.651  778 653  c 
-781.562 647.586  784.223 641.602  787.427 636  c 
-794.516 623.610  801.918 611.398  808.999 599  c 
-814.249 589.809  818.406 579.683  822.691 570  c 
-824.657 565.558  825.787 560.798  829.214 557.174  c 
-836 549.872  847.617 542.478  858 544.900  c 
-862.763 546  867.483 547.561  872 549.424  c 
-876.749 551.383  881.935 554  886.999 551.539  c 
-893.624 548.285  895.440 541.379  897.707 535  c 
-899.365 530.331  901.212 525.911  902 521  c 
-903.933 510.451  907.849 495.186  902.987 485  c 
-896.729 471.889  879.889 467.994  868 462.179  c 
-857.211 456.903  846.429 448.406  837 441  c 
-843 450 l
-833.464 446.961  825.664 439.343  818 433.200  c 
-813.227 429.374  808.477 426.194  807 420  c 
-825 434 l
-816 419 l
-826.424 426.741 l
-837 436 l
-838 435 l
-827 420 l
-839.246 430.733 l
-849 436 l
-836 420 l
-854 436 l
-852 432  846.957 427  853 425  c 
-856 428 l
-853 417.241  866.943 409.304  873.995 403.385  c 
-877.980 400  882.487 395.422  879.243 390  c 
-877.719 387.457  875.281 385.497  872.999 383.665  c 
-869.973 381.236  866.683 378  863 376.738  c 
-858 374.939  851.984 376  847 376.715  c 
-840.892 377.435  834 378  828 378.251  c 
-821 378.464  812.932 378.765  806 377.791  c 
-800.952 377  796 375.182  791 374.427  c 
-782.585 373.181  773 372.390  765 369.616  c 
-748.324 363.874  732.173 352  714 351  c 
-705.844 350.652  697.708 353.813  690 356  c 
-690 357 l
-720 360.378 l
-744 367 l
-741 371.598  734.698 370.610  730 369  c 
-723.417 367  716.883 363.215  710 362.319  c 
-703.242 361.438  693.724 363.254  687 364.465  c 
-672.519 367  662.700 376.762  652.911 387  c 
-640.815 399.682  627 415.332  628 434  c 
-628.797 449.572  639 464.384  647 477  c 
-646 478 l
-636 470.906  629.342 455.535  626.286 444  c 
-624.786 438.343  624.282 432.399  622 427  c 
-618.916 434  613.902 440.340  610 447  c 
-605.313 455  601.664 463.331  594.996 469.996  c 
-589.506 475.485  582.886 480.167  575 477  c 
-575 476 l
-595.273 475.830  602.213 453  610.478 438  c 
-617.232 425.695  626 414.341  634.255 403  c 
-645.922 386.880  659.260 369.381  677 359.398  c 
-688 353.172  702 347.403  715 347.340  c 
-728.291 347.276  740.418 355  753 358.856  c 
-775.931 365.592  801 366.950  824 359  c 
-827.919 357.757  832.712 356.262  835.985 353.687  c 
-849.334 343.186  847.763 323.493  840.327 310  c 
-836.892 303.793  831 304.995  825 305  c 
-813.898 305  803 303  792 305.502  c 
-779.730 308.194  765.326 308.993  753 306.235  c 
-743 304  733.939 298.721  724 296.402  c 
-719.448 295.340  714.631 296.250  710 295.910  c 
-705.449 295.576  701.232 294  697 292.424  c 
-690.425 289.950  684.179 286.973  678 283.626  c 
-674.271 281.606  671.287 280.172  670 276  c 
-688 285 l
-679 273 l
-691.961 280.517 l
-705 286 l
-687 268 l
-703 278.998 l
-711 283 l
-712 283 l
-717 285 l
-717 284 l
-710 281  700.376 275.870  697 269  c 
-723 285 l
-720.238 281.656  716 279.593  713.650 275.999  c 
-712.396 274  711.954 271.886  711.184 269.830  c 
-708 261.532  703.480 243.314  715 240  c 
-713.543 242.684  711.245 244.996  710.433 248  c 
-707.859 257.535  712.897 266.460  716 275  c 
-717 275 l
-717 272 l
-723 273 l
-719.692 265.211  716.670 252.911  720.920 245  c 
-725.437 236.621  738.747 228.709  734 218  c 
-729.414 207.244  720.528 195  711.700 187.419  c 
-708.930 184.997  705.370 184.335  702 183  c 
-696.525 181.188  690.687 178.766  686 175.292  c 
-675.356 167.402  669.950 158.826  664.695 147  c 
-661.348 139.468  659.318 129.967  662.479 122  c 
-665.924 113.317  673.499 107.302  681 102.258  c 
-687 98.181  693.834 91.446  701 90  c 
-699.662 98.247  691.544 101  687.765 108  c 
-681.613 119.290  683 138.314  687.444 150  c 
-694.791 170  715.959 179.882  729.575 194.961  c 
-733.769 199.605  738.362 203.777  740.199 210  c 
-741.669 214.979  741 225.264  738.860 230  c 
-736.900 234.301  732.876 237.349  731.572 242  c 
-728.723 252  734.934 264  742 270.910  c 
-744.841 273.608  748.868 277.771  752.981 278.200  c 
-759.517 278.882  757.856 267.953  759.919 264  c 
-762.651 258.766  767 254.773  770.367 250  c 
-775.172 243.174  778.834 232.399  776.994 223.985  c 
-772.785 204.742  756.313 195.647  741 185.947  c 
-733 180.906  725 175  718 168.725  c 
-713 164  708 158  704.984 152  c 
-701.910 146  700.404 140  696 135  c 
-698.414 164.552  728 175.991  745.816 196  c 
-757.574 209.318  759 224  759 241  c 
-757 241 l
-757 230.375  757.219 218.563  751.790 209  c 
-744.409 195.996  731.467 185.404  720 176  c 
-715 172  709.551 168.725  705.301 163.961  c 
-695.907 153.430  691.678 138.901  692 125  c 
-692.193 117.625  693.429 108.203  697.850 102  c 
-700.289 98.716  703.985 96.507  706.272 92.996  c 
-708.998 88.812  708.816 83.443  713.214 80.353  c 
-719.195 76  727 77  734 77.835  c 
-738 78.258  740.837 78.297  743 82  c 
-732.549 81.175  715.835 76.958  713 91  c 
-717 88.957  720.381 89  723 93  c 
-720.812 92.743  718.254 92  716 92.832  c 
-710.681 94.729  708.286 104  707.211 109  c 
-703.994 123.855  704.594 145  714 157.910  c 
-728 176.934  752.665 183.767  768.906 200  c 
-773.746 204.959  776.764 211.807  779.547 218  c 
-783.352 226.464  782.719 236.669  778.826 245  c 
-776.370 250.257  772 255  771.214 261  c 
-770.250 267.529  773.641 273.977  777.529 278.999  c 
-784.281 287.719  791.870 290.922  802 293.605  c 
-806.411 294.773  810.349 296.785  815 296.956  c 
-822 297.214  828 293.883  835 296.970  c 
-847.662 302.654  850 318.823  850 331  c 
-850.000 335.455  850 339.766  848.532 344  c 
-846.613 349  843.691 353  840 357  c 
-854 361.895  866.858 372.750  877.999 382.425  c 
-882.378 386.228  888 391.631  884.971 398  c 
-881.398 405.223  872 411.591  866 416.676  c 
-862.719 419.416  857.613 421.924  858.708 427  c 
-860.394 434.824  868.678 440.722  873.985 446  c 
-878.830 450.845  883.189 456  888 461  c 
-898.544 471.647  908.257 480.277  909.829 496  c 
-910.778 505.485  908.876 513  906.552 522  c 
-904.712 529  903.386 536  900.896 543  c 
-898.868 548.685  893.363 556.453  886.911 557.597  c 
-882.167 558.438  877.221 555.888  873 554.194  c 
-863 550.208  852.840 545.400  843 551.903  c 
-840.641 553.462  838 555  836 557.184  c 
-831.542 562  834 570.802  833.996 577  c 
-833.913 584  832.568 591  832 598  c 
-831.454 607.281  832 616.703  832 626  c 
-833 626 l
-839.713 606.474  863 590.861  882 584.597  c 
-888.556 582.425  895.469 581.762  902 579.714  c 
-912.715 576.354  923.762 571.377  935 570.174  c 
-942.848 569.333  951 570.845  959 571.335  c 
-963.754 571.632  968.279 570  973 570  c 
-980.999 570.326  992.481 571.328  998.896 576.558  c 
-1003.663 580.444  1006.678 587  1008 593  c 
-1009 597  1008.983 600.868  1008 605  c 
-1005 605 l
-997.907 595.346 l
-992 598 l
-983 609 l
-952 665 l
-959.598 665  967.434 664.447  975 665.170  c 
-989.242 666.531  1003.422 670.849  1017 675.194  c 
-1034 680.665  1048.261 690.419  1062 701.750  c 
-1070.515 708.773  1079.868 715.435  1086.905 724  c 
-1102.690 743.225  1114 766.513  1122 790  c 
-1124.334 796.987  1127 803.748  1128.551 811  c 
-1131.576 826  1131 840.845  1132 856  c 
-1132.501 862  1133.697 867.985  1133.961 874  c 
-1134.579 888  1133.504 901.980  1132.170 916  c 
-1130.987 928.424  1130.763 940.643  1128.388 953  c 
-1127 959.552  1124.295 965.613  1122.424 972  c 
-1115.424 995.905  1105.685 1016.823  1089.589 1036  c 
-1085.809 1040.504  1082.336 1045.483  1077.911 1049.384  c 
-1066.719 1059.250  1052.717 1065.766  1039 1071.204  c 
-1031.686 1074  1024.681 1078.223  1017 1080  c 
-978.451 1089.524  937 1077  902 1061  c 
-890.755 1056  880.491 1048.979  869 1044.312  c 
-856.816 1039.364  840.815 1035.333  828 1039.695  c 
-821.830 1041.796  815.916 1044.176  810 1046.901  c 
-807.951 1047.845  804.903 1049.573  802.742 1047.954  c 
-799 1045.224  802 1036.454  803.170 1033  c 
-807.518 1018  824.902 1008.339  839 1004.898  c 
-845.367 1003.344  851.555 1003.444  858 1002.830  c 
-879 1000.831  900 1002.857  921 1000.830  c 
-935 999.469  947.668 993.812  960 987.298  c 
-966.271 983.985  972.442 981  978 976.539  c 
-990.633 966.333  997.721 952.983  1003.424 938  c 
-1015.183 907  1017.790 870.885  1008 839  c 
-1002 819.331  987.994 796.247  967 789.774  c 
-944.929 782.969  920.915 794  906 810  c 
-893.710 823.358  883.936 838.758  872.714 853  c 
-865.345 862.352  858.180 872.390  849.961 881  c 
-841.987 889.353  833 896.649  824 903.789  c 
-788.844 931.501  742.837 958  697 942  c 
-690.311 939.818  684.860 937  679 933  c 
-670.900 927.633  662.647 921.735  654 917.185  c 
-649.322 914.723  645.263 915.333  643 910  c 
-639.215 914.204  636.249 919  631.996 922.816  c 
-620.680 932.895  605.948 940.572  592 946.201  c 
-586.999 948.219  582.210 950.792  577 952.254  c 
-568.608 954.609  559.645 955.246  551 956  c 
-532.863 957.583  513.648 957.840  496 952.560  c 
-488.564 950.336  481.849 946.793  475 943.258  c 
-446 928.371  422.253 904.703  401.439 880  c 
-389.759 866  379.353 851.513  367.170 838  c 
-348.634 817.442  330.273 798.472  306 784.579  c 
-297.316 779.608  288.236 773.804  278 773  c 
-268 772.401  263.352 777.343  256 783  c 
-237.683 797.499  226.387 819.674  225.997 843  c 
-225.907 848.374  224.805 853.600  225 859  c 
-226.558 893.999  236 930.523  260.286 956.961  c 
-272.957 970.773  289.570 982.692  305 993.242  c 
-315.688 1000.549  330.517 1001.488  343 1003.424  c 
-365.456 1006.907  388.313 1008.501  411 1006.911  c 
-417.404 1006.462  423.640 1004.817  430 1004.171  c 
-436.382 1003.522  442.703 1004  449 1003.675  c 
-458.284 1002.986  467.780 1002.201  477 1004  c 
-498 1008  531.644 1018.856  533 1045  c 
-527.966 1044.558  523.835 1042.234  519 1041  c 
-512 1039.333  503 1039  496 1040.468  c 
-480.730 1043.349  468.689 1054.879  456 1062.907  c 
-444.744 1070  430.646 1074.757  418 1078.784  c 
-403.838 1083.293  387.694 1082.395  373 1083  c 
-347.467 1084  322.185 1086.169  297 1080.576  c 
-259.672 1072.285  220.984 1059  191 1034.536  c 
-156 1006  128 965.842  113.890 923  c 
-110.351 912.324  108.571 901  106.576 890  c 
-103.280 871.766  101 854.572  101 836  c 
-101 808  104 780.246  114 754  c 
-118.864 741.464  126.730 730  134 719  c 
-139.513 710.880  144.632 702.701  150.662 695  c 
-173.530 665.796  201 642  236 628.808  c 
-247.711 624.373  260.526 621  273 619.925  c 
-277.491 619.507  285.345 619.830  287.397 614.891  c 
-288.371 612.547  288 609.494  288.246 607  c 
-288.976 597.222  287 586.555  280.560 579  c 
-275.716 573.510  268.293 570.180  265.564 563  c 
-262.541 555  265.661 546  263.431 538  c 
-262 533.397  258.484 529.825  255 526.640  c 
-252.555 524.225  249.584 522.322  247 519.896  c 
-244.470 517.448  242.312 514.608  239.914 512  c 
-232 503.568  218.874 490.502  227.264 478  c 
-232 470.980  243.825 471.943  251 474.559  c 
-253.319 475.404  255.441 476.951  257.830 477.574  c 
-260.389 478.242  262.564 476.885  265 476.386  c 
-268 475.744  271.836 475.774  275 476.329  c 
-285.342 478  293.640 486  301 493  c 
-304.368 496  307.971 498.835  310 503  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-223 746 m
-217 744 l
-216.802 736.944  210.234 732.879  205 728.899  c 
-195 721.399  184.941 715.588  174 709.895  c 
-169 707.365  164.367 704.228  159 703  c 
-161.855 708.218  167.844 710.662  173 713.247  c 
-183.332 718.426  199.267 724.361  205 735  c 
-189 727.192 l
-163 711.833 l
-151 707 l
-168 717.945 l
-182 726.576 l
-194 737 l
-190.469 735  185.969 730.765  183 735  c 
-148 716 l
-166 728.345 l
-177 738.241 l
-193 754 l
-175.499 747.268  161.451 729.534  142 727  c 
-145.729 731.751  150.760 733.189  156 735.809  c 
-166.248 740.933  181.524 747.530  187 758  c 
-176 756 l
-178 761 l
-163.454 754.944  149 743.409  133 742  c 
-137.227 746.918  143.333 747.679  149 750.323  c 
-158 754.556  167 759.200  176 763.923  c 
-182.370 767.326  189.449 770.336  191 778  c 
-155 758 l
-154 759 l
-154 761 l
-182 776.561 l
-193 786 l
-176 776.800 l
-147 761 l
-129 756 l
-129 758 l
-143 763 l
-143.346 770.695  157.695 775.375  164 778  c 
-164 779 l
-148 772 l
-147 775 l
-120 765 l
-122.219 772  135.636 774.865  142 777.612  c 
-154 782.810  166.459 787.398  178 793.695  c 
-184.644 797.320  191.186 801  196 807  c 
-190.562 805.433  186 802.275  181 799.890  c 
-168.888 794.200  155.780 788.544  143 784.587  c 
-137.552 782.900  127.777 777.884  124 784  c 
-140.366 784.340  157.232 793.346  172 799.719  c 
-177.413 802  185 803.899  187 810  c 
-163 800.525 l
-153 798.326 l
-133 793 l
-146 799.586 l
-170 807.953 l
-181 815 l
-138 801 l
-137 808 l
-183 827 l
-183 828 l
-127 815 l
-136 819.745 l
-150 824 l
-150 825 l
-122 822 l
-125.390 828.168  135.662 827.444  142 827.911  c 
-146.554 828.247  150 827.823  151 833  c 
-181 836.616 l
-198 840 l
-188 833 l
-192.886 829.825  197.851 834  203 835  c 
-202 818 l
-207 821 l
-208 820 l
-200 805 l
-214 812 l
-215 801 l
-208 789 l
-216.189 788.641  217.858 796.728  224 800  c 
-217 784 l
-218 783 l
-225 787 l
-224 775 l
-228 773 l
-235 779 l
-228 760 l
-235.281 763.697  244 776  246 784  c 
-218.321 803.551  214.661 844.222  218 875  c 
-213 876 l
-212 873 l
-196.289 880.436  179.860 886.886  163 891  c 
-156.930 892.654  145.272 893.399  142 899  c 
-160 898.625  178.228 889.711  195 884  c 
-192.718 886.613  180.697 890.670  184 894  c 
-177.988 901.255  166.562 906  158 909.713  c 
-153.611 911.606  149.437 912.549  146 916  c 
-153.904 917  162.266 911.565  169 907.920  c 
-185.893 898.777  201.589 887.915  218 878  c 
-218.971 889.674 l
-209 897.194 l
-177 911.355 l
-163 919 l
-178 914.745 l
-205.981 905.586 l
-212.545 898.904 l
-222 893 l
-233.518 926 l
-255 960 l
-255 961 l
-244 973 l
-248 974 l
-245 980  237.970 987.868  232 991  c 
-229.745 992.393  227 992  224.830 993.269  c 
-219.918 995.972  216.717 999.894  211 1001  c 
-223 987.282 l
-243 965 l
-237.376 967.623  234 972.536  229.830 976.830  c 
-223.844 982.817  216.922 987.890  211 994  c 
-208.780 996.474  202.549 1004.855  210 1005.311  c 
-212 1005.426  214.185 1004.474  216 1004  c 
-216 1005 l
-208 1013 l
-216 1010.889  222.920 1003.590  229 998  c 
-234.450 993  240.236 988.977  245.961 984.447  c 
-249.823 981.390  255 976.430  251 972  c 
-256 963 l
-275 978.331 l
-291 989.759 l
-304 999.929 l
-321 1006.192 l
-341 1011.870 l
-349.486 1016 l
-351 1031 l
-350.561 1051 l
-347 1069 l
-351.676 1064.801  352.946 1058  353.866 1052  c 
-355.876 1038.709  354.772 1026  353 1013  c 
-374 1013 l
-379.626 1037 l
-384 1066 l
-390.810 1063.173  390.699 1056.579  389.536 1050  c 
-388.815 1045.921  388 1040.745  386 1037  c 
-384.829 1034.882  382.904 1033.223  381.853 1030.911  c 
-379.368 1025.449  377.648 1018.776  376 1013  c 
-379.570 1013  384.592 1012  387.786 1014  c 
-395 1018.336  394.939 1033.671  395 1041  c 
-394 1041 l
-392.906 1036.472  393 1032.260  388 1031  c 
-390.222 1036.933  390.479 1043.700  390.910 1050  c 
-391.353 1056.455  390.629 1061.906  398 1064  c 
-399 1051 l
-400 1051 l
-402.169 1063 l
-406.235 1060.876 l
-408 1050 l
-410 1050 l
-410 1053.307  409.732 1056.679  409.863 1059.976  c 
-409.907 1061  409.887 1063  411.350 1063.369  c 
-414.954 1064  417.751 1054.401  418.602 1052  c 
-420.645 1046.233  420.917 1037.871  418.451 1032  c 
-417.560 1030  415.715 1028.695  414.633 1026.741  c 
-412.716 1023.278  411.561 1020  409 1017  c 
-411 1034 l
-406.184 1032.591  406.384 1025.331  405 1021  c 
-403 1021 l
-404 1045 l
-403 1045 l
-399 1042 l
-393 1013 l
-418 1012 l
-420.711 1029 l
-422 1056 l
-428.904 1051.984  429.514 1038.954  427 1032  c 
-426 1028.880  424 1026.191  423.174 1023  c 
-421.998 1019  421.241 1014.970  420 1011  c 
-429 1011 l
-433.485 1026 l
-433 1045 l
-434 1046 l
-446.960 1044.799 l
-453 1038 l
-458 1040 l
-458 1015 l
-454 1011 l
-450 1011 l
-450 1010 l
-455 1008.520  459.827 1009.935  465 1009.996  c 
-479.562 1010.169  498.629 1013  511 1021.363  c 
-516.823 1025.245  521.870 1029.886  523 1037  c 
-512.506 1034  500.597 1032.462  490 1035.634  c 
-486.405 1036.710  483.321 1038.958  480 1040.630  c 
-471.886 1044.716  464.404 1049.258  457 1054.559  c 
-452.737 1057.610  448.845 1060.990  444 1063  c 
-420.277 1073.566  393.554 1077.217  368 1077.340  c 
-363.947 1077.360  360 1078.919  356 1078.921  c 
-344.223 1078.927  331.807 1079.973  320 1078.830  c 
-310 1077.872  300.530 1074.999  291 1072.454  c 
-285.727 1071  280.236 1070.339  275 1068.791  c 
-260.223 1064.423  246.659 1058  233 1051  c 
-220.975 1045  208.905 1039.234  198 1031  c 
-189.305 1024.622  182.582 1016.847  175 1009.170  c 
-166.247 1000.197  156.809 991.341  149.570 981  c 
-143 971.674  137.924 961  132.742 951  c 
-127.663 941  122.410 930.638  119 920  c 
-116.444 911.869  115.490 903.295  113.572 895  c 
-112.402 889.942  110.371 885  109.464 880  c 
-106.519 863.347  106.225 846.802  106.961 830  c 
-108 806  110 781.220  119.862 759  c 
-126.450 744  135.855 731  143.833 717  c 
-147.330 710.798  151.503 700.279  158.171 696.827  c 
-160.547 695.597  162.857 696.917  165 698  c 
-169 700  172.976 702.510  177 704.691  c 
-189.939 711.707  204.460 719.852  214.271 731  c 
-218.401 735.714  221.654 739.810  223 746  c 
-f
-901 1050 m
-904 1045 l
-911.217 1047  917.414 1050.610  924 1054  c 
-927 1055.827  929.759 1057.208  932 1054  c 
-940.985 1056.616 l
-950 1056.283 l
-969 1063 l
-959 1050 l
-987 1066 l
-965 1048 l
-974.633 1052.557  985.548 1064  997 1062  c 
-993 1059 l
-993 1058 l
-1007 1059 l
-1007 1058 l
-1000 1056 l
-1000 1055 l
-1017 1056.826 l
-1034 1057 l
-1032.754 1052.340  1030.815 1050.542  1026 1050  c 
-1026 1049 l
-1033.796 1045.686  1037 1045.172  1045 1049  c 
-1046 1045 l
-1043 1044 l
-1048 1038 l
-1043 1038 l
-1043 1036 l
-1052 1036.701 l
-1059 1035.313 l
-1069 1037 l
-1065.774 1031.459  1055.805 1030.239  1050 1028  c 
-1050 1027 l
-1075 1031 l
-1072.650 1026.725  1068.596 1026.366  1064 1026  c 
-1064 1025 l
-1072 1025 l
-1068.747 1019.683  1058.778 1020.192  1053 1019  c 
-1053 1018 l
-1057.816 1018  1063.997 1020.628  1067 1016  c 
-1083 1018 l
-1083 1016 l
-1080 1014 l
-1083 1013 l
-1082 1009 l
-1084 1005 l
-1087 1004 l
-1087 1002 l
-1084 1001 l
-1084 999 l
-1087 998 l
-1087 996 l
-1075 992 l
-1075 991 l
-1094 993 l
-1090 989 l
-1093 981 l
-1085 977 l
-1095 975 l
-1095 973 l
-1082.901 969.862  1067.453 965.867  1059 956  c 
-1077 963.829 l
-1090 968 l
-1091 965 l
-1065 955 l
-1065 954 l
-1075.323 954  1085.790 955.360  1096 956.778  c 
-1100.184 957.359  1105.359 958.464  1107 954  c 
-1094 952 l
-1094 950 l
-1107 947 l
-1107 945 l
-1101 944 l
-1101 943 l
-1117 940 l
-1092 937.830 l
-1083.170 936.420 l
-1076 933 l
-1076 932 l
-1109 934.701 l
-1120 932 l
-1109.999 930.960 l
-1098 930 l
-1099 925 l
-1104.738 924.754  1114.690 925.252  1118 920  c 
-1111.808 921  1104.461 923.304  1100 918  c 
-1108 914.259 l
-1118 912 l
-1118 911 l
-1106 910.996 l
-1090 909.714 l
-1049 898 l
-1048 899 l
-1048 901 l
-1077 910 l
-1077 911 l
-1062.299 910.697  1046.745 904.192  1034 897  c 
-1029 894.388  1023.878 892  1021 887  c 
-1029.361 889.829  1037.490 893.455  1046 895.845  c 
-1060.835 900  1077.625 901.968  1093 902  c 
-1101.232 902  1110.377 906.957  1117 900  c 
-1099 898 l
-1081 897.911 l
-1050 893.332 l
-1020 884 l
-1019 874 l
-1033 878 l
-1032 882 l
-1038.221 883.482  1044.675 883.499  1051 884.286  c 
-1059 885.283  1066.863 886.745  1075 885.892  c 
-1078.512 885.524  1081.516 883.603  1085 883  c 
-1098 881.359  1113 879.830  1125 874  c 
-1111 874 l
-1111 873 l
-1115 872 l
-1114 868 l
-1117 864 l
-1105 867 l
-1105 866 l
-1112.450 862  1118.845 860  1123 852  c 
-1112.996 859.767 l
-1103 859.858 l
-1081 864 l
-1081 863 l
-1086.202 861.229  1090.828 857.284  1096 855.893  c 
-1098.257 855.285  1100.696 855.692  1103 855.292  c 
-1110.389 854  1121.276 849.789  1125 843  c 
-1105 852 l
-1105 851 l
-1107.382 849.684  1111.236 847.705  1112.333 845  c 
-1113.370 842.447  1112.820 839.000  1110 839  c 
-1116 826 l
-1112.756 829  1111 833.383  1107.790 836.561  c 
-1101.253 842.997  1091.892 847  1083 849  c 
-1083 848 l
-1090.834 844.174  1104.860 839.298  1107 830  c 
-1095 835 l
-1107 822.951 l
-1120 812 l
-1109 818.869 l
-1097 824 l
-1086 829 l
-1086 828 l
-1089 821 l
-1097.421 815  1110.421 810.738  1115 801  c 
-1092 814 l
-1089 810.325  1081.280 816.261  1077 817  c 
-1089 808.714 l
-1112 793 l
-1100 798.572 l
-1084 806 l
-1085.678 799 l
-1097.946 787.985 l
-1107 772 l
-1110.982 776.929  1111.865 783.176  1113.940 789  c 
-1119.644 805  1122.817 820.201  1125 837  c 
-1125.487 839.722  1126.564 842.269  1126.871 845  c 
-1127.568 851.206  1127 857.758  1127 864  c 
-1127 876.403  1126.950 888.653  1126 901  c 
-1122.492 952.605  1110.631 1011  1066.985 1044.826  c 
-1058.347 1051.503  1047.846 1055.835  1038 1060.374  c 
-1030.688 1063.746  1023.621 1067.958  1016 1070.616  c 
-1004.566 1074.605  992.924 1074.703  981 1075  c 
-976.976 1075  973 1076  969 1075.826  c 
-958.660 1074.962  948.846 1071  939 1068  c 
-930.707 1065.569  922.951 1062.883  915 1059.424  c 
-909.334 1056.959  904.516 1055.316  901 1050  c 
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-372 1071 m
-371 1065 l
-366.703 1062  368.397 1055.560  369 1051  c 
-370.665 1038.444  369.437 1028  366 1016  c 
-370 1015 l
-373.700 1030 l
-374 1046 l
-377 1046 l
-377 1054.225  378.601 1064.905  372 1071  c 
-f
-338 1069 m
-336.980 1063  340.756 1057.579  342.430 1052  c 
-345 1043.169  345.679 1034  344 1025  c 
-345 1024 l
-347 1024 l
-350.890 1034.387  348.377 1046.739  344.999 1057  c 
-343.442 1061.731  342.366 1066.236  338 1069  c 
-f
-359 1069 m
-360 1034 l
-364.701 1035.560  363.998 1039.633  364 1044  c 
-364 1052.293  363.515 1060.839  362 1069  c 
-359 1069 l
-f
-318 1068 m
-317 1067 l
-325.691 1048 l
-329 1036 l
-331 1036 l
-332.925 1043.621  328.776 1052.254  325.398 1059  c 
-323.493 1062.805  321.820 1066  318 1068  c 
-f
-330 1068 m
-329 1067 l
-333.318 1050.846  337.691 1036.694  333 1020  c 
-337 1019 l
-340 1031.660  340 1042.434  336.576 1055  c 
-335.211 1059.910  334.739 1065.412  330 1068  c 
-f
-311 1067 m
-321.613 1044 l
-324 1021 l
-329.409 1022.582  328 1029.480  327.412 1034  c 
-326.168 1042.463  324 1049.296  320.241 1057  c 
-317.945 1061.592  316.310 1065.745  311 1067  c 
-f
-278 1062 m
-282 1047.762  282.998 1031.756  283 1017  c 
-282 1017 l
-281.706 1031.224  279.822 1045.854  266 1053  c 
-265 1052 l
-275 1026 l
-274 1026 l
-267 1034.299 l
-255 1052 l
-263 1031 l
-243 1048 l
-244 1043 l
-240 1044 l
-239 1043 l
-246 1033.985 l
-251 1020 l
-230 1036 l
-229.923 1031  234.481 1029  238 1026.242  c 
-244.651 1020.744  250 1014.347  255.925 1008  c 
-259.357 1004.243  261.616 1000.811  267 1002  c 
-265 1008 l
-266 1008 l
-268 1002.752  270.459 990.896  277 991  c 
-277 1008 l
-278 1008 l
-280 995 l
-287 998.514  286.645 1005.951  286.709 1013  c 
-286.860 1029.623  285.704 1046.794  282 1063  c 
-278 1062 l
-f
-304 1062 m
-310 1046.182  312.632 1026.483  308 1010  c 
-311 1009 l
-317 1020.552  314.270 1037.712  311.576 1050  c 
-310.507 1054.876  310.451 1062.977  304 1062  c 
-f
-290 1022 m
-294.533 1023.594  293.988 1027.762  294 1032  c 
-295 1032 l
-295 1019 l
-299.990 1016.248  298.624 1011.945  298 1007  c 
-304.943 1008.968  305.488 1014.675  306 1021  c 
-307 1029.969  307.645 1039  305.236 1048  c 
-303.835 1053  301 1059.878  295 1059  c 
-300 1047 l
-296 1045 l
-295 1049.394  293.863 1055  290.930 1058.663  c 
-288.869 1061  286.206 1059.898  285.720 1056.941  c 
-285 1052.814  286.990 1048  287.739 1044  c 
-289 1036.625  290 1029.501  290 1022  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-990.667 1057.667 m
-991.333 1057.667 l
-990.667 1057.667 l
-f
-988 1057 m
-988.347 1056.306  989 1054.855  989 1057  c 
-988 1057 l
-f
-1014 1053 m
-991 1045.536 l
-967.289 1029.624 l
-958.436 1017 l
-952 1007 l
-957 1025.686  971.554 1038.844  988 1048  c 
-988 1049 l
-974.718 1047.840  963.761 1039.882  955.326 1029.985  c 
-950.812 1024.690  948.334 1017.392  942 1014  c 
-944.862 1021 l
-945 1029 l
-954 1047 l
-930 1033.867 l
-917 1031.900 l
-883 1019 l
-893 1025.192 l
-914 1034 l
-914 1036 l
-908.656 1036.209  905.855 1032.532  901.170 1030.583  c 
-896.970 1028.835  892.326 1028.881  888 1027.819  c 
-884.395 1026.933  881.214 1024.623  878 1022.864  c 
-873.457 1020.378  866.490 1015  862 1019  c 
-847 1015 l
-865 1026 l
-847 1021.184 l
-827 1020 l
-830.211 1025.497  836.521 1023.479  842 1024.464  c 
-851.410 1026  862.557 1029.552  871 1034  c 
-869 1039 l
-856.681 1035.436  843 1029.926  830 1032.325  c 
-821.556 1033.882  814.475 1039.541  806 1041  c 
-815.443 1008.668  853.801 1005.979  882 1007.911  c 
-913.708 1010  944.914 1004.416  972 987.424  c 
-980.771 981.922  990.183 975.721  996 967  c 
-998 967 l
-1012.306 986.973  1033.764 1006  1058 1013  c 
-1058 1014 l
-1039.367 1013.188  1021.478 1003  1008 990.826  c 
-1003 986.262  998.760 980.821  994 976  c 
-993.492 983.911  999 988.255  1003.664 994  c 
-1006.831 997.952  1009.505 1002.600  1012 1007  c 
-996.286 1000.722 l
-982 987 l
-1004 1016 l
-999.644 1014.719  996 1011.310  992 1014  c 
-1001.217 1018.308  1008.553 1025.277  1015 1033  c 
-1002.199 1031.874  995.376 1019.749  988.819 1010  c 
-987.197 1007.749  984.839 1006  983 1003.871  c 
-979.668 999.817  977 995.342  973 992  c 
-972.395 999.671  971.889 1006.579  974.714 1014  c 
-980.231 1028.487  996.778 1037.806  1010 1044  c 
-1010 1045 l
-995.945 1042  979.446 1035.439  972.402 1022  c 
-968.731 1014.996  970 1004.779  965 999  c 
-965 1017.859  973.566 1033.179  990 1042.601  c 
-997.855 1047  1006.903 1048.415  1015 1052  c 
-1014 1053 l
-f
-989.667 1049.667 m
-990.333 1049.667 l
-989.667 1049.667 l
-f
-946 1024 m
-960 1037 l
-958 1040 l
-958 1041 l
-963 1047 l
-952.920 1047.317  948.578 1031.911  946 1024  c 
-f
-292.333 1043.333 m
-292.833 1042 l
-292.333 1043.333 l
-f
-244 1043 m
-244.347 1042.306  245 1040.855  245 1043  c 
-244 1043 l
-f
-1019 1039 m
-1030 1043 l
-1019 1039 l
-f
-934 1041 m
-934.347 1040.306  935 1038.855  935 1041  c 
-934 1041 l
-f
-293 1040 m
-293 1035 l
-294 1035 l
-293 1040 l
-f
-975 1001 m
-976 1001 l
-979.476 1007  984 1012.611  988.919 1017.714  c 
-993.513 1022.590  998.768 1026.975  999 1034  c 
-1013 1039 l
-1008 1040.344  1002 1036.457  998 1033.934  c 
-985.535 1026.201  975 1016.358  975 1001  c 
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-466 1037 m
-464 1018 l
-468 1017 l
-468 1037 l
-466 1037 l
-f
-896 1012 m
-913 1019 l
-944 1033 l
-943 1037 l
-936.916 1034  931.219 1030.534  925 1027.873  c 
-919.380 1025.468  913.510 1023.951  908 1021.244  c 
-903.328 1018.948  897.654 1017.290  896 1012  c 
-f
-475 1034 m
-476.903 1023 l
-477 1012 l
-483 1017.388  482.502 1030  475 1034  c 
-f
-212 1032 m
-211.891 1024.706  220.943 1021.467  226 1017.482  c 
-235.974 1009.623  244.393 999.757  251 989  c 
-253 989 l
-254 990 l
-251.940 998.672  247 1002.903  241 1009  c 
-232.333 1017.788  223 1026.327  212 1032  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-444 1031 m
-442.624 1025.290  442.609 1019.183  437 1016  c 
-439 1025 l
-432 1010 l
-444.566 1009.604 l
-446.955 1015 l
-444 1031 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-489 1031 m
-490 1020 l
-493.340 1023.564  494.449 1029.192  489 1031  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-870 1027 m
-876 1029 l
-870 1027 l
-f
-1021.667 1029.667 m
-1022.333 1029.667 l
-1021.667 1029.667 l
-f
-1020 1023 m
-1020 1022 l
-1028.766 1023.628  1035.573 1023.582  1043 1029  c 
-1035.811 1030.699  1026.619 1025.553  1020 1023  c 
-f
-257 1029 m
-261 1024 l
-257 1029 l
-f
-1019 1029 m
-1019.347 1028.306  1020 1026.855  1020 1029  c 
-1019 1029 l
-f
-275 1025 m
-276 1017 l
-277 1017 l
-275 1025 l
-f
-1053.667 1023.667 m
-1054.333 1023.667 l
-1053.667 1023.667 l
-f
-1050.667 1022.667 m
-1051.333 1022.667 l
-1050.667 1022.667 l
-f
-451.333 1021.333 m
-451.484 1020.579  451.667 1020.403  451.667 1021.333  c 
-451.333 1021.333 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-914 1011 m
-920 1011.602  935 1014.788  935 1022  c 
-928.776 1019.895  916 1017.716  914 1011  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-1046.667 1021.667 m
-1047.333 1021.667 l
-1046.667 1021.667 l
-f
-1029 1014 m
-1044 1020 l
-1038.891 1021  1032.312 1017.793  1029 1014  c 
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-210 1017 m
-210 1016 l
-221.576 1008.957 l
-235 997 l
-235.639 1001.522  233 1003.845  229.995 1006.999  c 
-224.706 1012.362  218 1019.197  210 1017  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-1049.667 1017.667 m
-1050.333 1017.667 l
-1049.667 1017.667 l
-f
-1045 1016.500 m
-1044.721 1015.311  1045 1014.777  1046.333 1016  c 
-1046.927 1016.593  1045.333 1016.944  1045 1016.500  c 
-f
-1063.667 1015.667 m
-1064.333 1015.667 l
-1063.667 1015.667 l
-f
-1015 1010.333 m
-1014.683 1009.304  1014.883 1009  1015.667 1010  c 
-1015 1010.333 l
-f
-1016 1002 m
-1008 995 l
-1016 1002 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-194 1001 m
-213 982 l
-206.996 986.263  198.680 992.872  191 991  c 
-191 989 l
-214 975.914 l
-223.961 972 l
-237 960 l
-237.833 965.894  232 970.826  227.961 974.576  c 
-218.312 983.342  207.761 999.199  194 1001  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-999 963 m
-1011.174 939 l
-1017 929 l
-1017 935 l
-1013.776 939.506  1017.912 944  1020.756 948  c 
-1027.928 957.757  1038.513 963.962  1045 974  c 
-1036 975.201  1026.534 966.796  1020 961.550  c 
-1017.719 959.715  1015.471 956.953  1012.714 955.832  c 
-1010.350 954.871  1007.444 955.761  1005 956  c 
-1021 973.463 l
-1043 990 l
-1043 991 l
-1034 989 l
-1035 993 l
-1020.439 986.875  1011.178 972.440  999 963  c 
-f
-1042 986 m
-1042 985 l
-1046 986 l
-1042 986 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-191 984 m
-192.656 979.237  197.949 978.797  202 976.471  c 
-209 972.389  217 966.590  222.961 960.907  c 
-226.519 957.486  228.722 952.921  234 953  c 
-230 961.395  223.316 966.489  216 971.884  c 
-208.235 977.610  200.925 983  191 984  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-1082 982 m
-1082 981 l
-1086 982 l
-1082 982 l
-f
-1050 980 m
-1050.347 979.306  1051 977.855  1051 980  c 
-1050 980 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-180 978 m
-181.991 971.632  190.619 969.669  196 966.572  c 
-204.900 961.449  212.925 954.496  219.910 947  c 
-224.725 941.833  228.914 934.989  236 933  c 
-223.996 949 l
-194 972.309 l
-180 978 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-1011 959 m
-1038 977 l
-1028 974.602 l
-1011 959 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-173 967 m
-173 965 l
-211 941.711 l
-230 924 l
-225.549 941  205.581 950.582  192 959.308  c 
-186.521 962.828  179.754 968.305  173 967  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-1066 967 m
-1052 960.386  1036.253 953  1027 940  c 
-1040 946.640 l
-1049.651 951.649 l
-1055 957.985 l
-1067 966 l
-1066 967 l
-f
-1033 958 m
-1033 957 l
-1050 965 l
-1044.188 967  1037.606 961  1033 958  c 
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-160 959 m
-159 958 l
-171 950.671 l
-193 942.177 l
-210.700 928.826 l
-222 916 l
-225.802 924  217.661 929.780  212 934.826  c 
-197.200 948  178.566 953.654  160 959  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-352 809 m
-362 799 l
-356 813 l
-363 806 l
-364 806 l
-359 814 l
-368 811 l
-366 817 l
-379 803 l
-371 822 l
-380.532 812 l
-387 803 l
-373 828 l
-374 829 l
-376 829 l
-385 822 l
-382 832 l
-391.471 825.701 l
-398 815 l
-399 815 l
-392 833 l
-399 830 l
-392 847 l
-397 845 l
-401 848 l
-407.742 832 l
-414 823 l
-406.305 842 l
-400 856 l
-415 833 l
-416 833 l
-406 854 l
-410 855 l
-411.973 848.808  415.928 839.549  423 839  c 
-409 865 l
-423 852.985 l
-431 841 l
-430 851.585  424.808 866.801  415 872  c 
-415 874 l
-424.793 873.582  429.666 858.908  432.333 851  c 
-433.468 847.632  434 844.173  437 842  c 
-429 864 l
-423 877 l
-430.225 871.363  432.394 864  435.873 856  c 
-437.751 851.626  440 847.729  441 843  c 
-442 843 l
-432.961 872 l
-428 883 l
-436.447 878.710  437 868.261  442 861  c 
-443.512 868.826  435.842 878.424  432 885  c 
-440.799 876 l
-451 849 l
-452 849 l
-450.800 863.689  444.909 876.410  436 888  c 
-443.281 887.682  446.703 877.590  450 872  c 
-451 872 l
-441 891 l
-442 892 l
-451 885.510  453.682 874.693  458 865  c 
-459 865 l
-451.370 885 l
-445 896 l
-454.954 891.319  459.753 876.519  464 867  c 
-465 867 l
-461.601 882 l
-454 900 l
-470 876 l
-458 903 l
-463.938 901.571  466 894.901  469 890  c 
-477.470 889.610  473.840 875  479 870  c 
-476.762 885 l
-475.171 891.902 l
-479 895 l
-475 914 l
-483 910 l
-487 901 l
-491 902 l
-490.487 909  485.652 914.737  479 917  c 
-479 919 l
-486.373 919.772  487.993 913.327  493.286 909.674  c 
-496 907.697  499.942 906.863  503 905  c 
-492 930 l
-496 931 l
-497.424 926  500 921.682  502 917  c 
-505.515 909.419  506.724 901.933  516 901  c 
-510 922 l
-524 900 l
-519 930 l
-529.993 925.303  531.478 910.497  537 901  c 
-538 901 l
-532.481 918.961 l
-529 929 l
-542.242 910 l
-550 898 l
-551 898 l
-539 926 l
-554 908 l
-548 925 l
-552 925 l
-548 936 l
-554 934.525  553.464 929  555.850 924.259  c 
-557.194 921.564  559.703 919.705  561 916.982  c 
-564.773 909.794  567.416 901.638  570 894  c 
-571 894 l
-571.532 902 l
-562 927 l
-563 928 l
-565 928 l
-570 916 l
-571 916 l
-569 934 l
-571 934 l
-575 926 l
-570 939 l
-575.865 938.736  577.177 933  578 928  c 
-579.596 919.426  578.766 906.436  587 901  c 
-585 915 l
-588 915 l
-587 938 l
-589.431 934.662  590 930.601  592.367 927.299  c 
-594 924.899  596.837 923.978  597.687 920.942  c 
-599.779 913.468  599.545 901.544  607 897  c 
-606.932 901  601.667 913.219  607 914  c 
-606 925 l
-610 925 l
-610 921.642  610.814 918.355  610.961 915  c 
-611.352 906  610.327 895.614  616 888  c 
-618.205 895.460  614 906.247  620 912  c 
-621 896 l
-624.787 898.766  623 901.981  622 906  c 
-628.232 905  630.649 901.605  633 896  c 
-634 896 l
-634 899 l
-641.180 895  642 882.415  643 875  c 
-645.689 881.408  645 895.633  641.429 901.701  c 
-640.267 903.632  638 904.663  636.579 906.209  c 
-632.380 910.331  628.717 914.575  624.169 918.373  c 
-605.762 933.745  582.906 944.827  559 948.561  c 
-553 949.497  547 948.630  541 948.710  c 
-535.691 948.781  530.298 949.606  525 949.406  c 
-513.199 948.961  502.928 945.570  492 941.530  c 
-482.182 937.900  472.832 934.725  464 928.921  c 
-456.505 923.997  449.933 917.952  443 912.310  c 
-431.185 902.696  419.254 892.614  409.300 881  c 
-401 871.499  394.428 860.780  386.600 851  c 
-378.700 841  370.170 831.802  362.196 822  c 
-358.704 817.708  354.348 814  352 809  c 
-f
-1020 893 m
-1031 902 l
-1022 898 l
-1025.483 905  1035 910.338  1042 914  c 
-1042 915 l
-1033 914 l
-1051 923.944 l
-1063 929 l
-1063 930 l
-1047.573 931.621  1036.235 919.257  1022 916  c 
-1033 924.247 l
-1058 935 l
-1058.253 940.545  1063.514 941.224  1068 943  c 
-1068 944 l
-1052.408 940.976  1034.996 933.999  1024 922  c 
-1023 922 l
-1021 924 l
-1021 925 l
-1059 947 l
-1046 945.712 l
-1026 933 l
-1018.553 923.985 l
-1018.961 915 l
-1020 893 l
-f
-719 942 m
-720 915 l
-721 915 l
-723.882 923.512  723.882 933.488  721 942  c 
-719 942 l
-f
-726 942 m
-728 905 l
-729 905 l
-732.953 917.641  732.362 929.299  729 942  c 
-726 942 l
-f
-732 942 m
-732 941 l
-738 939 l
-732 942 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-155 941 m
-171 931.230 l
-212 906 l
-212.954 912.612  204.825 915.822  200 918.997  c 
-191.631 924.504  182.813 929.558  174 934.308  c 
-167.738 937.682  162.257 940.845  155 941  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-706 939 m
-705 933 l
-708 933 l
-708 939 l
-706 939 l
-f
-1065 938 m
-1065 937 l
-1070 938 l
-1065 938 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-179 937 m
-179 935 l
-203 922.644 l
-220 913 l
-212 921.629 l
-192 933.753 l
-179 937 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-1061.667 936.667 m
-1062.333 936.667 l
-1061.667 936.667 l
-f
-744 936 m
-745 926 l
-750 926 l
-750 917 l
-752 917 l
-752 930 l
-754 930 l
-761 912 l
-765.606 914.983  766 924.428  762 928.387  c 
-760.547 929.867  758.425 929.818  756.572 930.541  c 
-752.317 932.200  748.319 934.442  744 936  c 
-f
-757 936 m
-762 932 l
-757 936 l
-f
-690 932 m
-687.987 927.228  686.517 921  693 920  c 
-692 932 l
-690 932 l
-f
-701 930 m
-700.871 917 l
-700 908 l
-701 908 l
-701.702 912.753  702.710 918.385  707 921  c 
-707 916 l
-711 918.652  710.906 924.439  711 929  c 
-701 930 l
-f
-1093.667 929.667 m
-1094.333 929.667 l
-1093.667 929.667 l
-f
-680 928 m
-674.461 920.734  674 909.908  674 901  c 
-675 901 l
-677.910 917 l
-680 928 l
-f
-774 927 m
-777 910 l
-778 910 l
-778 915.812  779.799 923.802  774 927  c 
-f
-714.333 925.333 m
-715 924 l
-714.333 925.333 l
-f
-1053 918 m
-1053 917 l
-1071 923 l
-1053 918 l
-f
-745 923 m
-742 904 l
-743 904 l
-744.659 909.888  747.488 917  745 923  c 
-f
-661 916 m
-661 914 l
-667 912 l
-668 913 l
-668 918 l
-672 917 l
-673 922 l
-661 916 l
-f
-697.167 921.333 m
-697.500 920.167 l
-697.167 921.333 l
-f
-769 922 m
-769 916 l
-770 916 l
-769 922 l
-f
-782 922 m
-782 909 l
-786.982 911.747  786 916.908  786 922  c 
-782 922 l
-f
-792 918 m
-795 915 l
-792 918 l
-f
-592 917 m
-593 903 l
-594 903 l
-592 917 l
-f
-1070 917 m
-1070.347 916.306  1071 914.855  1071 917  c 
-1070 917 l
-f
-799 913 m
-801 895 l
-805.567 895.392  807 893.319  808 889  c 
-812 890 l
-813 906 l
-799 913 l
-f
-1035 906 m
-1035 905 l
-1049 912 l
-1035 906 l
-f
-645 911 m
-650 903 l
-648 911 l
-645 911 l
-f
-792 910 m
-792 904 l
-793 904 l
-792 910 l
-f
-639.722 908.194 m
-639.787 907.376  640.583 906.315  640.583 907.778  c 
-640.583 908.236  639.701 908.466  639.722 908.194  c 
-f
-665 908 m
-668 905 l
-665 908 l
-f
-496 906 m
-505 890 l
-505 896  500.592 902.205  496 906  c 
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-186 904 m
-186 902 l
-192 896 l
-202.491 895.688  208.237 886.473  217 882  c 
-217 886.427  214.294 888.614  210.999 891.410  c 
-204.771 896.695  194.730 905.686  186 904  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-782.333 904.333 m
-782.833 903.167 l
-782.333 904.333 l
-f
-579 904 m
-579.347 903.306  580 901.855  580 904  c 
-579 904 l
-f
-741 903 m
-741.347 902.306  742 900.855  742 903  c 
-741 903 l
-f
-650 902 m
-651 893 l
-653 893 l
-650 902 l
-f
-713.806 901.361 m
-715.333 901 l
-713.806 901.361 l
-f
-492 901 m
-492.347 900.306  493 898.855  493 901  c 
-492 901 l
-f
-543 901 m
-548 884 l
-548.509 889.707  546.615 896.521  543 901  c 
-f
-598 901 m
-601 881 l
-602 881 l
-602 887.247  603.826 897  598 901  c 
-f
-791.333 900.333 m
-792 899 l
-791.333 900.333 l
-f
-817 900 m
-817.407 894.847  817.495 890  822 887  c 
-824 895 l
-817 900 l
-f
-657 898 m
-659 894 l
-660 895 l
-657 898 l
-f
-489 896 m
-492 888 l
-493 888 l
-489 896 l
-f
-590 896 m
-591 886 l
-592 886 l
-592 896 l
-590 896 l
-f
-790.333 894.333 m
-790.484 893.579  790.667 893.403  790.667 894.333  c 
-790.333 894.333 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-1050 890 m
-1050 888 l
-1051 887 l
-1074 891.481  1098.625 890.845  1122 889  c 
-1118.529 894.508  1108.893 894  1103 893.950  c 
-1091.932 893.680  1081 893.849  1070 893  c 
-1063.179 892.620  1056.404 892.703  1050 890  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-522 892 m
-526 877 l
-527.894 880.938  524.700 888.703  522 892  c 
-f
-584.333 891.333 m
-584.833 890.167 l
-584.333 891.333 l
-f
-826 892 m
-826 884 l
-827 884 l
-826 892 l
-f
-514.333 889.333 m
-514.484 888.579  514.667 888.403  514.667 889.333  c 
-514.333 889.333 l
-f
-636.333 888.333 m
-636.484 887.579  636.667 887.403  636.667 888.333  c 
-636.333 888.333 l
-f
-657 888 m
-657 887 l
-660 879 l
-661 879 l
-660 889 l
-657 888 l
-f
-687 888 m
-689 881 l
-690 881 l
-687 888 l
-f
-831 887 m
-830 880 l
-832.923 876.742  831.574 873.957  830.424 870  c 
-828.498 863.367  825.318 856.950  825 850  c 
-826 850 l
-833 872 l
-836 872 l
-836 862 l
-837 862 l
-837 866 l
-841 852 l
-847 863 l
-847 855 l
-848 855 l
-854 862 l
-852 842 l
-855 848 l
-858 848 l
-858 840 l
-863.300 837  860.678 832  860 827  c 
-869 829 l
-869 836 l
-870 837 l
-872 837 l
-873 832 l
-878.616 828.629  874.411 822.936  873 818  c 
-876.598 820  880.275 827.755  879 832  c 
-878.186 835.758  874.832 838.930  872.746 842  c 
-864.935 853.496  856.605 864.918  846.961 875  c 
-842.268 879.906  837.590 884.896  831 887  c 
-f
-665 886 m
-665.390 872.530  671.417 860.637  675.406 848  c 
-676.644 844  676.727 839.957  677.760 836  c 
-680.827 824.247  688.294 811.496  700 807  c 
-700.296 813.426  707.252 811.588  712 813.244  c 
-718.843 815.630  724 819.293  727 826  c 
-708 831.791 l
-696.742 838 l
-693 850 l
-692 850 l
-692 844  692.817 838.734  693.914 833  c 
-694.406 830.434  694.332 827.586  696.353 825.653  c 
-701.469 820.760  710 823.452  716 825  c 
-710.185 813.366  696 820.772  689.619 827.576  c 
-686.393 831  683.191 835.265  682.275 840  c 
-681.634 843.313  682.297 846.712  681.363 850  c 
-679.818 855.436  675.949 859.856  673.749 865  c 
-670.943 871.562  669.385 880.455  665 886  c 
-f
-669 886 m
-680 860 l
-686.624 853.752 l
-691 864 l
-690 865 l
-687 864 l
-684.933 870  681.423 880.511  675.869 884.183  c 
-673.877 885.500  671.290 885.619  669 886  c 
-f
-487 885 m
-488 880.496  488 874.714  493 873  c 
-487 885 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-136 878 m
-136 876 l
-152 876.290 l
-175 875 l
-175 874 l
-157 872 l
-157 870 l
-166 869 l
-165 865 l
-178 867 l
-177 863 l
-169.973 862.528  163 862.263  156 861.982  c 
-152.511 861.843  150 861.480  149 858  c 
-189 859.833 l
-201.791 860.603 l
-209 866 l
-205.858 872.664  199.584 874.213  193 876.315  c 
-185.457 878.723  176.853 878.513  169 879  c 
-158 879.890  146.669 881.374  136 878  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-633 879 m
-633.347 878.306  634 876.855  634 879  c 
-633 879 l
-f
-695 879 m
-693 854 l
-694 854 l
-696.855 861  699.648 872.196  695 879  c 
-f
-1091.667 878.667 m
-1092.333 878.667 l
-1091.667 878.667 l
-f
-700 878 m
-701 859 l
-707.550 862.827  704 871.698  704 878  c 
-700 878 l
-f
-1095.667 877.667 m
-1097.333 877.667 l
-1095.667 877.667 l
-f
-567.333 876.333 m
-567.484 875.579  567.667 875.403  567.667 876.333  c 
-567.333 876.333 l
-f
-724 877 m
-724.347 876.306  725 874.855  725 877  c 
-724 877 l
-f
-1099 877 m
-1099 876 l
-1105 875 l
-1099 877 l
-f
-981 788 m
-993 780 l
-996 788 l
-1002 788 l
-996 792 l
-998.869 796.980  1001.604 795.557  1006 793  c 
-1004 799 l
-1009 799 l
-1005 803 l
-1005 804 l
-1010 806 l
-1009 810 l
-1014 814 l
-1031 813 l
-1031 814 l
-1028 818 l
-1032 818 l
-1032 819 l
-1021 821 l
-1030 822 l
-1030 826 l
-1018 830 l
-1018 832 l
-1026 833 l
-1029 837 l
-1028 840 l
-1041 841 l
-1041 842 l
-1033 844 l
-1033 847 l
-1036 851 l
-1055 849 l
-1055 850 l
-1044 856 l
-1052.911 856.313 l
-1061 859 l
-1090 853 l
-1090 854 l
-1058 866 l
-1059 869 l
-1055.413 869.960  1051.679 871.797  1048 872  c 
-1043.243 872.632  1038.686 870.607  1034 870.762  c 
-1028.937 870.933  1025.938 874  1021.318 869.525  c 
-1017.335 865.575  1018 856.275  1016.999 851  c 
-1014.701 839.248  1011 828.500  1005.204 818  c 
-1001 810.676  994.628 804  988.911 798  c 
-985.850 794.750  982.326 792.353  981 788  c 
-f
-709 872 m
-706 854 l
-715.999 855.177 l
-725 860 l
-721.754 866.283  715.602 870  709 872  c 
-f
-451.333 870.333 m
-451.484 869.579  451.667 869.403  451.667 870.333  c 
-451.333 870.333 l
-f
-486 871 m
-486.347 870.306  487 868.855  487 871  c 
-486 871 l
-f
-487.333 868.333 m
-487.484 867.579  487.667 867.403  487.667 868.333  c 
-487.333 868.333 l
-f
-757 869 m
-760 866 l
-757 869 l
-f
-180 868 m
-180 867 l
-186 867 l
-180 868 l
-f
-741.167 867.333 m
-741.500 866.167 l
-741.167 867.333 l
-f
-732 865 m
-731.652 856.897  730.585 848.288  724.787 842  c 
-722.506 839.673  719.524 838  717 836  c 
-723.430 832.906  728.614 834.803  735 837  c 
-737.232 837.854  739.823 838.227  741.721 839.738  c 
-746.210 843.313  745.401 848.821  740 850  c 
-740 857 l
-736 855 l
-732 865 l
-f
-1097 865 m
-1097.347 864.306  1098 862.855  1098 865  c 
-1097 865 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-122 849 m
-164 850 l
-203 852 l
-201.564 860.933  194 858.280  187 857.599  c 
-183.754 857.289  180 857.345  177 856.455  c 
-174.596 855.774  172.515 854.487  170 854  c 
-164 853.342  157.910 854  152 853.985  c 
-148.305 853.895  144.695 853  141 853  c 
-134.979 852.867  125.669 854.821  122 849  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-786.333 855.333 m
-786.484 854.579  786.667 854.403  786.667 855.333  c 
-786.333 855.333 l
-f
-796 854.333 m
-795.683 853.304  795.883 853  796.667 854  c 
-796 854.333 l
-f
-662 853 m
-655.257 841.902  661 825  665.605 814  c 
-667.363 809.715  669.734 805.494  673.289 802.419  c 
-676.567 799.584  680.945 799  685 798  c 
-676.927 807 l
-668.635 824 l
-664.296 842 l
-662 853 l
-f
-1092 853 m
-1092 852 l
-1102 848 l
-1102 849 l
-1092 853 l
-f
-617 852 m
-613 849 l
-613 848 l
-617 848 l
-618.336 843.455  621.624 844.990  624 848  c 
-617 852 l
-f
-652 852 m
-648 848 l
-648 834.577  652.194 818.798  663 810  c 
-656 835 l
-653.302 844 l
-654 852 l
-652 852 l
-f
-702 851 m
-702.750 842.744  710.761 836.639  718.699 841.938  c 
-721.563 843.850  722.961 846.871  724 850  c 
-713 846.368 l
-702 851 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-156 841 m
-124 841 l
-124 839 l
-129.550 837.359  135.289 838.374  141 837.830  c 
-163.438 835.695  185.791 840.178  208 843  c 
-207 847 l
-198 846 l
-198 849 l
-187.380 848.971  176.572 846.893  166 845.831  c 
-161.903 845.419  156.914 845.528  156 841  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-593 848 m
-593.347 847.306  594 845.855  594 848  c 
-593 848 l
-f
-1103 848 m
-1103 847 l
-1108 844 l
-1103 848 l
-f
-757 847 m
-757 843 l
-760 847 l
-757 847 l
-f
-1039.667 846.667 m
-1041.333 846.667 l
-1039.667 846.667 l
-f
-1043 846 m
-1043 845 l
-1056 842 l
-1043 846 l
-f
-397 844 m
-404 828 l
-405 828 l
-397 844 l
-f
-554 844 m
-554.347 843.306  555 841.855  555 844  c 
-554 844 l
-f
-442 842 m
-442.347 841.306  443 839.855  443 842  c 
-442 842 l
-f
-474 841 m
-474.347 840.306  475 838.855  475 841  c 
-474 841 l
-f
-775 823 m
-783.320 825.859  790.264 831.432  793 840  c 
-780.990 831 l
-775 823 l
-f
-439 837 m
-439.347 836.306  440 834.855  440 837  c 
-439 837 l
-f
-712.722 835.194 m
-712.787 834.376  713.583 833.315  713.583 834.778  c 
-713.583 835.237  712.701 835.466  712.722 835.194  c 
-f
-763 835.333 m
-763.833 834.167 l
-763 835.333 l
-f
-440.333 834.333 m
-440.484 833.579  440.667 833.403  440.667 834.333  c 
-440.333 834.333 l
-f
-472 834 m
-472 833 l
-476 832 l
-472 834 l
-f
-492.333 833.333 m
-492.833 832.167 l
-492.333 833.333 l
-f
-735 825 m
-741 823 l
-747 834 l
-741.845 832.778  737.415 829.755  735 825  c 
-f
-856 833.333 m
-855.683 832.304  855.883 832  856.667 833  c 
-856 833.333 l
-f
-477 833 m
-478 827 l
-479 827 l
-477 833 l
-f
-170 832 m
-170.347 831.306  171 829.855  171 832  c 
-170 832 l
-f
-441 832 m
-443 825 l
-444 825 l
-441 832 l
-f
-450 832 m
-451 826 l
-457 826 l
-457.248 822.530  457.449 820  461 819  c 
-459 825  457 831.451  450 832  c 
-f
-164.667 830.667 m
-166.333 830.667 l
-164.667 830.667 l
-f
-487.333 829.333 m
-487.484 828.579  487.667 828.403  487.667 829.333  c 
-487.333 829.333 l
-f
-881 829 m
-880 821 l
-884 820 l
-881 811 l
-884 815 l
-886 815 l
-884 805 l
-892 809 l
-876 790 l
-883.542 792.922  889.572 799.795  893 807  c 
-895 807 l
-906.323 793.873 l
-906 787 l
-912 792 l
-899 760 l
-900 759 l
-902 759 l
-908.881 770 l
-915 794 l
-892.289 816 l
-881 829 l
-f
-730 828 m
-730 823 l
-733 824 l
-730 828 l
-f
-749 827.333 m
-748.806 826.849  748.535 826.202  749.333 827  c 
-749 827.333 l
-f
-1081 826 m
-1081 825 l
-1085 824 l
-1085 825 l
-1081 826 l
-f
-746 824 m
-746.347 823.306  747 821.855  747 824  c 
-746 824 l
-f
-174 819 m
-154 810 l
-154 809 l
-159.382 810.246  172.347 813.176  174 819  c 
-f
-475 817 m
-474 813 l
-477 817 l
-475 817 l
-f
-878.333 816.333 m
-878.484 815.579  878.667 815.403  878.667 816.333  c 
-878.333 816.333 l
-f
-457 810 m
-457 809 l
-461 810 l
-457 810 l
-f
-715 800 m
-722 800.762  727 805.398  731 811  c 
-715 800 l
-f
-450 807 m
-454 809 l
-450 807 l
-f
-151.667 808.667 m
-152.333 808.667 l
-151.667 808.667 l
-f
-438 809 m
-437 806 l
-441 806 l
-438 809 l
-f
-702 806 m
-702 805 l
-712 809 l
-702 806 l
-f
-350 808 m
-342 802 l
-342 801 l
-345 799.602  346.962 799.469  348 803  c 
-358 790 l
-359 790 l
-350 808 l
-f
-420 808 m
-420 804.806  419.597 802.729  423 802  c 
-420 808 l
-f
-856 805.333 m
-855.806 804.849  855.535 804.202  856.333 805  c 
-856 805.333 l
-f
-432.667 804.667 m
-433.333 804.667 l
-432.667 804.667 l
-f
-430 804 m
-430.347 803.306  431 801.855  431 804  c 
-430 804 l
-f
-397 803 m
-398 796 l
-399 796 l
-397 803 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-693 801 m
-693 799 l
-701.202 793.550  701.430 787.615  704 779  c 
-706 779 l
-707.987 787.368  704.258 803  693 801  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-203 801 m
-200 799 l
-200 798 l
-203 801 l
-f
-710 800 m
-711.999 786 l
-712 764 l
-721.422 769.365  716 781.520  717 790  c 
-719 790 l
-721.740 779.410  721.499 771.961  717 762  c 
-725.894 768.823  728 781.930  720.467 790.891  c 
-717.316 794.592  712.979 795.972  710 800  c 
-f
-870 800 m
-867 796 l
-870 800 l
-f
-1066 800 m
-1066 799 l
-1079.781 790.564  1090.353 779.785  1099 766  c 
-1095 765 l
-1081 784 l
-1079 784 l
-1078 783 l
-1098 756 l
-1100 756 l
-1105 772 l
-1097.975 772  1095.791 779.185  1091.621 783.711  c 
-1085.367 790.498  1074.980 797.695  1066 800  c 
-f
-339 799 m
-343 792 l
-339 799 l
-f
-391 799 m
-390 789 l
-391 788 l
-394 789 l
-391 799 l
-f
-382 797 m
-381 781 l
-385.674 784  385.302 792.947  382 797  c 
-f
-896 797 m
-888 787 l
-891.526 789.213  896 792.560  896 797  c 
-f
-334 796 m
-339.302 785 l
-346 772 l
-347 772 l
-345.756 780.300  340.476 790.634  334 796  c 
-f
-203 795 m
-203.347 794.306  204 792.855  204 795  c 
-203 795 l
-f
-1069 793 m
-1078 786 l
-1069 793 l
-f
-1008.667 791.500 m
-1009 790.770  1009.599 790  1009.500 791.500  c 
-1008.667 791.500 l
-f
-1042 792 m
-1042.347 791.306  1043 789.855  1043 792  c 
-1042 792 l
-f
-1044 791 m
-1044 790 l
-1057 784 l
-1057 785 l
-1044 791 l
-f
-198.167 789.500 m
-197.721 788.311  198 787.777  199.333 789  c 
-199.927 789.593  198.333 789.944  198.167 789.500  c 
-f
-374 790 m
-373 789 l
-375 785 l
-376 785 l
-374 790 l
-f
-919 789 m
-919.470 785.635  921.261 782.430  921 779  c 
-920.372 768  912 761.344  908 752  c 
-906.667 748.384  908.330 746.231  911 744  c 
-919.453 760 l
-925 785 l
-926 785 l
-928 780 l
-938.698 778.702 l
-942 774.254 l
-946.400 768.871 l
-947 750 l
-944.606 730 l
-932.221 709 l
-936 698 l
-946.292 710.422  947.461 726.835  950 742  c 
-952 742 l
-953 737 l
-954 737 l
-949 783 l
-919 789 l
-f
-1043 788 m
-1049 773.807  1062.775 763.454  1072.370 751.829  c 
-1076.863 746.386  1079.175 740.342  1082 734  c 
-1079 733 l
-1074.809 743.203  1069.168 752.541  1060 759  c 
-1075 729 l
-1060 749 l
-1067 727 l
-1058 746 l
-1057 746 l
-1063 715 l
-1062 715 l
-1056.533 737 l
-1037.920 764 l
-1026 777 l
-1028.828 772.477  1037.636 765.458  1035 760  c 
-1035 759 l
-1038 754.589  1045.769 747.489  1043 742  c 
-1058 712 l
-1052.943 714.628  1051.201 720.260  1048.397 725  c 
-1042.198 735.477  1036 749.790  1026 757  c 
-1036.661 739.728  1050.970 722.707  1047 701  c 
-1060 709 l
-1086 735 l
-1086 736 l
-1080.749 741.529  1079.763 750.644  1075.211 757  c 
-1070.236 763.948  1058.792 770  1058 779  c 
-1043 788 l
-f
-204 787 m
-196 779 l
-197 779 l
-204 787 l
-f
-255 772 m
-255 765 l
-260 767 l
-265 755 l
-271.939 751.174  268.683 737  270 730  c 
-271 730 l
-272 752 l
-278 752 l
-279 746 l
-283 743.711  282.984 740.421  283 736  c 
-284 736 l
-286 761 l
-294.209 756.637  295.269 745.344  296 737  c 
-297.529 719.546  299 702.359  296 685  c 
-294.985 678.493  295 672.464  291 667  c 
-291 675 l
-286.967 677.615  288 682.614  288 687  c 
-284 686 l
-281 729 l
-280 729 l
-274 686 l
-271 687 l
-265.680 675.560  265 662.247  262.600 650  c 
-261.531 644.683  261 637.789  256 635  c 
-259 652 l
-258 652 l
-253 644 l
-260.536 670 l
-266 699 l
-265 699 l
-260.771 684 l
-246.424 655 l
-236 640 l
-237.788 650  245.503 658.921  249.891 668  c 
-257 682.736  261.951 698.802  264 715  c 
-263 715 l
-260.290 708  254.603 695.818  247 694  c 
-254 706 l
-249 702.173  240.625 693.190  248 688  c 
-230.935 655 l
-224.447 642.275 l
-229 638.735 l
-242 634.235 l
-273 628.170 l
-295 627 l
-304.404 675.996 l
-311.562 688 l
-316.983 703 l
-315.258 715 l
-314 728 l
-313 728 l
-312 708 l
-306.518 711.202  308 718.396  308 724  c 
-304 724 l
-305 709 l
-299.871 711.996  301.263 717.765  300.576 723  c 
-299.432 731.706  298.883 740.416  296.760 749  c 
-295.818 752.807  293.865 756.185  293 760  c 
-302.626 754.999  301.711 739.293  304 730  c 
-305 730 l
-302 762 l
-309.891 757.859  308.703 745.558  311 738  c 
-312 738 l
-311.535 749 l
-309 763 l
-312 761 l
-312.900 764  313.816 764.938  317 765  c 
-316 768 l
-320 769 l
-323 758 l
-324 758 l
-322 775 l
-324 775 l
-327 767 l
-328 767 l
-324.549 780.675 l
-327 787 l
-319.461 786.588  313.248 781  307 777  c 
-299.355 772.402  289.928 768  281 766.529  c 
-271.512 764.817  263.671 769.823  255 772  c 
-f
-976 786 m
-976.347 785.306  977 783.855  977 786  c 
-976 786 l
-f
-972 785 m
-975 781 l
-972 785 l
-f
-1058 784 m
-1058 783 l
-1063 780 l
-1058 784 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-621 777 m
-636 780 l
-636 782 l
-630.813 783  623.803 781.814  621 777  c 
-f
-632 773 m
-652 780 l
-652 782 l
-651 783 l
-632 773 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-952 783 m
-953 777 l
-954 777 l
-952 783 l
-f
-961 776 m
-964 778 l
-971 780 l
-969 782.587  963.601 784.921  961 781.401  c 
-960 779.884  960.746 777.641  961 776  c 
-f
-957.333 780.333 m
-957.833 779.167 l
-957.333 780.333 l
-f
-376.500 779.500 m
-377.667 779 l
-376.500 779.500 l
-f
-248 779 m
-244.429 773.579  240.654 768  236.535 763  c 
-231.827 757.255  227.190 753.841  227 746  c 
-235.736 752.171  241.527 762.427  248.709 770.286  c 
-251.960 773.842  253.297 777.371  248 779  c 
-f
-360.333 778.333 m
-361 777 l
-360.333 778.333 l
-f
-1066 779 m
-1079.999 766.961 l
-1096 750 l
-1097 751 l
-1090.203 763.719  1080.322 775.279  1066 779  c 
-f
-207 778 m
-206 772 l
-208.597 773.852  208.798 775.404  207 778  c 
-f
-369.333 775.333 m
-369.833 774.167 l
-369.333 775.333 l
-f
-937 775 m
-937 769.751  938.476 765  938.892 760  c 
-939 756.642  938.423 753.320  938 750  c 
-936.860 739.404  934.875 724.965  926 718  c 
-928 714 l
-929 714 l
-937 727  941 741.575  941 757  c 
-941 763.220  940.846 769.838  937 775  c 
-f
-1063 775 m
-1065.640 769.338  1070.752 765.643  1074.815 761  c 
-1080.340 754.686  1085 745.408  1086 737  c 
-1088.626 739  1092.342 742.241  1092.256 746  c 
-1092.170 749.761  1088.265 753.429  1085.914 756  c 
-1078.991 763.571  1072.441 770.586  1063 775  c 
-f
-360.333 773.333 m
-360.484 772.579  360.667 772.403  360.667 773.333  c 
-360.333 773.333 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-637 768 m
-645 768 l
-643 765 l
-651 768 l
-646 768 l
-646 769 l
-651 770 l
-651 772 l
-645.783 773  640 772.599  637 768  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-913 771 m
-903 754 l
-909.273 757  913 764.467  915 771  c 
-913 771 l
-f
-365.333 769.333 m
-365.484 768.579  365.667 768.403  365.667 769.333  c 
-365.333 769.333 l
-f
-1008 770 m
-1017 755 l
-1018 755 l
-1008 770 l
-f
-1017 768 m
-1020 765 l
-1017 768 l
-f
-360.500 766.333 m
-361.333 765.167 l
-360.500 766.333 l
-f
-355 766 m
-355 763  354.946 761.654  358 761  c 
-355 766 l
-f
-491 766 m
-491.347 765.306  492 763.855  492 766  c 
-491 766 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-658.167 762.333 m
-659.333 761.500 l
-658.167 762.333 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-250 762 m
-248 753 l
-252 762 l
-250 762 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-662 755 m
-662 753 l
-670 754 l
-670 756 l
-662 755 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-924 721 m
-925 721 l
-932 742 l
-931 742 l
-923 727 l
-919.634 736.524  923.603 745.540  925 755  c 
-917.400 748.995 l
-913 740 l
-924 721 l
-f
-206 754 m
-203 750 l
-206 754 l
-f
-260 754 m
-257 746 l
-258 746 l
-260 754 l
-f
-243 753 m
-242 746 l
-243 746 l
-243 753 l
-f
-485 753 m
-482 749 l
-485 753 l
-f
-973 751 m
-974 745 l
-975 745 l
-973 751 l
-f
-251 749.333 m
-250.806 748.849  250.535 748.202  251.333 749  c 
-251 749.333 l
-f
-1020 750 m
-1031.309 728 l
-1037.867 716 l
-1041 696 l
-1045.780 698.777  1043.441 703.292  1043 708  c 
-1042.726 712.846  1043.238 718.322  1041.856 723  c 
-1039.997 729.297  1035.817 735  1033 741  c 
-1032 741 l
-1035 731 l
-1028.875 736.265  1028.854 748.559  1020 750  c 
-f
-964 749 m
-964 726 l
-966 726 l
-966 749 l
-964 749 l
-f
-958 748 m
-958 740 l
-960 741 l
-961 731 l
-962 731 l
-962 743 l
-959 743 l
-958 748 l
-f
-1015 748 m
-1016 740.782  1019.202 733.973  1021.279 727  c 
-1023.352 720  1024.467 713  1025.590 706  c 
-1026.569 699.784  1028.507 693.183  1024 688  c 
-1023.326 704.791  1021.931 722.363  1015 738  c 
-1010 728 l
-1009 739 l
-1008 739 l
-1008 723 l
-1006 723 l
-1005.807 728.885  1003.790 730.416  998 730  c 
-998.715 724.337  997.445 720.437  997 714.961  c 
-996.284 704.178  996.979 694  990 685  c 
-993.561 700 l
-995 723 l
-990 725.890  990.588 731.978  989 737  c 
-988 737 l
-987 730 l
-986 730 l
-984 738 l
-983 738 l
-985.722 716.464  985.855 695.179  981 674  c 
-1001.390 676.577  1022.752 682.412  1040 694  c 
-1032.444 716 l
-1024.259 732 l
-1015 748 l
-f
-162 693 m
-177 674.830 l
-213 647 l
-214 647 l
-224.816 658.777  233.852 673.233  240 688  c 
-229.421 678 l
-219.666 666 l
-210 656 l
-224.290 676.170 l
-239.781 697.857 l
-250 709 l
-247.332 706.972  243.826 701.514  241 705  c 
-230.251 692 l
-217.800 677.911 l
-202 663 l
-211.271 675 l
-230.790 698 l
-240 715 l
-233.883 712.826  230.821 706.724  226.711 702  c 
-220.896 695.317  214.266 689.256  208 683  c 
-203.716 678.723  199.415 673  193 673  c 
-193 675 l
-209 688 l
-230.662 712 l
-242 731 l
-233 724 l
-233 728 l
-229.433 725.670  230.327 721.351  227.732 718  c 
-224.350 713.634  219.863 710  216.171 706  c 
-208.363 697.325  199.820 683.310  188 680  c 
-200.961 693.286 l
-212 707 l
-202 700.827  193.914 689.304  182 687  c 
-197 699.375 l
-224 724 l
-210 714 l
-182 695.258 l
-168 690 l
-171.317 695.829  180.410 697.615  186 701  c 
-197.791 708.342  208 717.261  219 725.642  c 
-221.791 727.785  225 727.873  227.961 729.674  c 
-233.249 733  236.315 739.245  238 745  c 
-234.524 743.788  228.989 743  226.852 739.849  c 
-225.270 737.430  225.678 734.508  223.727 732.174  c 
-220.363 728  215 725  211 721.804  c 
-196.433 710.306  178.727 700.958  162 693  c 
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-661 742 m
-661 741 l
-674 744 l
-661 742 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-251 743 m
-246 734 l
-249.564 735.853  252 738.854  251 743  c 
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-549 720 m
-550 719 l
-563 726.880 l
-595.170 736.670 l
-614 737 l
-612.581 735.224  610.610 733.301  610.621 730.848  c 
-610.645 725.654  618.714 721.840  623 722  c 
-624 721 l
-623 715 l
-629.328 716.319  629.170 720.365  629 726  c 
-618 732 l
-620 740 l
-614.926 741.923  609.373 741  604 740.996  c 
-597.243 740.915  591.413 738.956  585 737  c 
-572.634 733.683  557.692 730.242  549 720  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-479 741 m
-477 738 l
-479 741 l
-f
-208 737 m
-212 740 l
-208 737 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-675 737 m
-670 732 l
-675 737 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-957 737 m
-957.347 736.306  958 734.855  958 737  c 
-957 737 l
-f
-329.333 733.333 m
-329.484 732.579  329.667 732.403  329.667 733.333  c 
-329.333 733.333 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-668 728 m
-668 727 l
-681 733 l
-668 728 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-291 732 m
-291 727 l
-292 727 l
-291 732 l
-f
-257 729 m
-255 724 l
-256 724 l
-257 729 l
-f
-994 729 m
-995 725 l
-996 725 l
-994 729 l
-f
-960.333 726.333 m
-960.833 725.167 l
-960.333 726.333 l
-f
-318 726 m
-319 718 l
-320 718 l
-318 726 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-670 720 m
-675 718.952  680 720.513  681 726  c 
-670 720 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-265 723.333 m
-265.833 722.167 l
-265 723.333 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-1008 723 m
-1008.982 710 l
-1006 688 l
-1013.185 692.197  1011 705.768  1011 713  c 
-1018 690 l
-1019 690 l
-1022 700.680  1015.777 714.240  1010 723  c 
-1008 723 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-266 718.972 m
-265.671 718.200  265.883 716.944  266.583 718.222  c 
-266.773 718.568  266.174 719.289  266 718.972  c 
-f
-286 720 m
-287 709 l
-288 709 l
-288 720 l
-286 720 l
-f
-968 720 m
-966 715 l
-965 715 l
-964 718 l
-963 718 l
-960.245 707.907  954.960 691.867  945 687  c 
-950 695 l
-941 690 l
-947 699 l
-945.629 698.205  944.203 697.512  943 696.437  c 
-937 691  940.747 686.531  944.406 681  c 
-945.905 678.733  947 675.544  949.390 674  c 
-953.395 671.475  961.420 673  966 673  c 
-969.337 673  975.406 671.845  977.911 674.603  c 
-979.802 676.685  980.241 680.348  980.739 683  c 
-981.935 689.362  982 695.552  982 702  c 
-981 702 l
-976 690 l
-979 710 l
-975 709 l
-974 712 l
-973 712 l
-970.885 703  967 690  960 684  c 
-964 695 l
-963 695 l
-959 691 l
-966 710 l
-968 720 l
-f
-952 718 m
-950 712 l
-951 712 l
-952 718 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-1000 718 m
-999.830 699 l
-997 683 l
-1001.361 690 l
-1003 710 l
-1000 718 l
-f
-674 712 m
-678.200 712.381  680.946 713.184  683 717  c 
-674 712 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-247 716 m
-245 711 l
-247 716 l
-f
-254 716 m
-254.347 715.306  255 713.855  255 716  c 
-254 716 l
-f
-292 716 m
-292 696 l
-293 696 l
-292 716 l
-f
-970.333 714.333 m
-970.484 713.579  970.667 713.403  970.667 714.333  c 
-970.333 714.333 l
-f
-253 714 m
-253.347 713.306  254 711.855  254 714  c 
-253 714 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-679 710 m
-679 709 l
-688 712 l
-679 710 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-949 711 m
-949.347 710.306  950 708.855  950 711  c 
-949 711 l
-f
-969 711 m
-968 707 l
-969 707 l
-969 711 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-552 710 m
-543 690 l
-551 692 l
-546.417 684  542.272 678.679  543 669  c 
-548 669 l
-550.367 659  562.449 648.323  573 649  c 
-567.478 654.958  554 659.658  553 668.961  c 
-552.627 672.702  557.456 675.181  560 677  c 
-568 682.823  576.203 686.733  586 689  c 
-583.661 686.533  581.377 684  579.970 681  c 
-575 669.925  582.180 659.540  594 658.189  c 
-608.630 656.517  623 668  621.945 683  c 
-621.584 687.826  618.553 691  616 695  c 
-629.961 692.823 l
-639 687 l
-632 701.999 l
-627.621 707.933 l
-609 706.184 l
-594 706.707 l
-563 698 l
-558 699 l
-554 710 l
-552 710 l
-f
-686 696 m
-687 701 l
-692 705 l
-686.411 703.984  683.446 701.640  686 696  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-967 705 m
-965 699 l
-966 699 l
-967 705 l
-f
-287 704 m
-287 698 l
-288 698 l
-287 704 l
-f
-758 694 m
-768 681 l
-770.578 686.898  774.225 691.979  780 695  c 
-780 697 l
-772 698.895  765 698  758 694  c 
-f
-964.333 697.333 m
-964.484 696.579  964.667 696.403  964.667 697.333  c 
-964.333 697.333 l
-f
-586 690 m
-586.347 689.306  587 687.855  587 690  c 
-586 690 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-689 690 m
-685 678 l
-689.995 680.671  692.408 684.348  691 690  c 
-689 690 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-598 685 m
-598.205 683.770  598.288 682.212  598.681 681  c 
-602.255 670  613.235 687.351  602 686.562  c 
-600.548 686.458  599.285 685.615  598 685  c 
-f
-787 681 m
-792 681 l
-792 687 l
-788.186 686.339  787.430 684.741  787 681  c 
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-632 676 m
-631.852 658 l
-626 649 l
-638.880 651.622  635.196 666.511  635 676  c 
-632 676 l
-f
-274 671 m
-273.961 654 l
-274 643 l
-276 643 l
-277 671 l
-274 671 l
-f
-562 667 m
-565.218 651  586.791 647.591  600 645.729  c 
-606.629 644.795  615.308 644.684  620 650  c 
-614.867 650.869  609.258 649.941  604 650  c 
-590.548 650  571.266 653.573  565 667  c 
-562 667 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-228 659 m
-224.482 654.635  218.865 649.808  219 644  c 
-228 659 l
-f
-810 653 m
-810.347 652.306  811 650.855  811 653  c 
-810 653 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-649 652 m
-636 631 l
-642.607 634  650.828 644.540  651 652  c 
-649 652 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-787 650 m
-801.971 623 l
-823.677 578 l
-829 565 l
-830 565 l
-830 583.235  828 600.411  823 618  c 
-820.417 627.471  816 636.312  814 646  c 
-799 644.499 l
-787 650 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-481 632 m
-475.514 619 l
-470 606 l
-474 608 l
-475.946 599 l
-482 578 l
-484 578 l
-481.260 595 l
-481 606 l
-482 613 l
-479.692 620 l
-483 632 l
-481 632 l
-f
-488 581 m
-483 568 l
-488.872 568.950  493.674 576.661  488 581  c 
-f
-651 496 m
-647.593 506  639.642 514.919  639 526  c 
-638.851 531.235  640.785 536.289  642.862 541  c 
-647.824 552.254  656 563  668 567.452  c 
-677 570.736  686.489 570  696 569.996  c 
-715.329 569.766  734 556.815  747.961 544.421  c 
-751.218 541.501  753.648 537.673  757 534.904  c 
-759.257 533  762.307 532.824  764.789 531.326  c 
-769 528.691  772 524.769  777 523  c 
-779.667 522  782.458 523  784.961 521.981  c 
-789.384 520  792.232 515.256  796.170 512.623  c 
-799.624 510.315  804.965 508.870  809 508  c 
-806.569 513.209  802.387 515.750  798 519.220  c 
-789.377 526  781.381 532.233  772 537.830  c 
-768.704 539.797  766.382 543  763 544.861  c 
-758.533 547.312  753.360 547.774  749 550.609  c 
-729.288 563.425  708 580  683 576.711  c 
-676 575.804  668.265 573  662 570  c 
-646.638 562.701  632.416 543.829  634.200 526  c 
-634.748 520.525  637.941 515.796  640.339 511  c 
-643 505.633  645.493 498.861  651 496  c 
-f
-498 570 m
-491 557 l
-492 556 l
-495.532 559.240  500.471 565.178  498 570  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-415 558.333 m
-415.500 557.167 l
-415 558.333 l
-f
-419 558 m
-401 544 l
-407.190 543  409.782 547.694  414 551.275  c 
-416.603 553.268  419.780 554.565  419 558  c 
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-657 512 m
-657.966 516.618  659.802 520.618  661.468 525  c 
-664.908 534  669 544.230  680.999 541.463  c 
-685.819 540.344  688.797 536.266  693 534  c 
-693.675 542.592  683.520 547.270  676 547.892  c 
-663.764 548.904  652 541.236  649.939 529  c 
-648.782 522.626  649.417 513.237  657 512  c 
-f
-384 538 m
-390 543 l
-386.418 542.432  385 541.492  384 538  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-395 540 m
-389 533 l
-395 540 l
-f
-385 531 m
-385.347 530.306  386 528.855  386 531  c 
-385 531 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-724 464 m
-728.944 467  728.935 474.645  728.996 480  c 
-729 490  726.840 498.998  722.243 508  c 
-719.983 512.426  717.335 517.255  712.961 519.914  c 
-706.397 523.905  694.453 523.572  688 519.272  c 
-679.941 513.875  681.623 504.759  689 499.699  c 
-694.245 496  701.709 494.411  707.999 495  c 
-710.527 495.389  714.537 496.625  714 499.951  c 
-713.454 504.486  705.399 507.314  702.870 511  c 
-701.434 513  700 516.442  703.268 517.736  c 
-709.366 520.259  714.918 512.281  717.421 507.996  c 
-722.606 499  727.582 487.561  726.776 477  c 
-726.442 472.612  724.590 468.381  724 464  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-345 518 m
-338.292 521.822  329 517.731  323 514.380  c 
-320.378 512.947  316.620 511  315.792 507.921  c 
-314.532 503  320.566 498.275  325 499.647  c 
-328.572 500.753  330.933 504.339  333.285 507  c 
-336.863 511  340.706 514.729  345 518  c 
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-727 511 m
-733.452 497 l
-738 477 l
-740 477 l
-741 482 l
-744 482 l
-748.572 467 l
-752 453 l
-753 453 l
-751.622 467 l
-741 498 l
-737 497 l
-735.688 503  732.785 508.277  727 511  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-292 497 m
-297.802 497.785  302.881 499  305 505  c 
-299.645 504  294.665 501.870  292 497  c 
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-551 488 m
-558.277 492.532  563.993 498.783  573 499  c 
-573 501 l
-565.181 501  548.460 499.505  551 488  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-266 482 m
-276 481.207  285.313 482.341  292 491  c 
-281.915 493.981  270.449 492.479  266 482  c 
-f
-412 480 m
-407.205 472.885  400.629 462.670  410 456  c 
-411.635 455  413.218 454.571  415 454  c 
-412 466 l
-412 480 l
-f
-883 468 m
-879 465 l
-879 464 l
-883 468 l
-f
-876 463 m
-876.347 462.306  877 460.855  877 463  c 
-876 463 l
-f
-872 459.333 m
-871.806 458.849  871.535 458.202  872.333 459  c 
-872 459.333 l
-f
-869 458 m
-861 452 l
-861 451 l
-865 450.905  869.236 453.478  869 458  c 
-f
-850 442 m
-850.347 441.306  851 439.855  851 442  c 
-850 442 l
-f
-829 439 m
-825 434 l
-829 439 l
-f
-433 436 m
-428.250 427.888  419.208 419.674  426.394 410  c 
-427.395 408.670  428.684 407.443  430 406.430  c 
-431.790 405  433.812 404  436 403.724  c 
-439.572 403  443.386 403.926  447 404  c 
-434.380 422 l
-435 436 l
-433 436 l
-f
-456 377 m
-457 377 l
-465.171 380  479 372.370  481.307 364  c 
-482 360.909  480.922 357.916  480 355  c 
-482.185 355.968  484 357  485.989 358.465  c 
-487.544 359.585  489 360.694  490.347 362.209  c 
-498.519 372.478  482.793 376.834  477.289 382  c 
-473 386  468 394.196  461.911 395.319  c 
-456 396.388  450.760 388.267  451.607 383  c 
-452 380.346  454 378.731  456 377  c 
-f
-483 354 m
-483.347 353.306  484 351.855  484 354  c 
-483 354 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-636 308 m
-641 314 l
-636 308 l
-f
-708 309 m
-711.363 306.703  715 307  719 307  c 
-726.567 306.997  732.307 307  739 311  c 
-728 309.210 l
-708 309 l
-f
-658 305 m
-657 304 l
-663 297 l
-657.551 296  653.551 293.476  652 288  c 
-661 294.333 l
-670 298 l
-658 305 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-720 291 m
-720.347 290.306  721 288.855  721 291  c 
-720 291 l
-f
-732 282 m
-736 285 l
-732 282 l
-f
-770 278 m
-766 273 l
-765 273 l
-762 276 l
-766 261 l
-767 261 l
-770 278 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-576 231 m
-575 231 l
-571.816 239.269  571 248  572.184 257  c 
-572.675 261  573.911 264.826  574 269  c 
-573 269 l
-569.736 258.966  565.780 246.588  568.789 236  c 
-571.319 227  578.842 221.431  584.960 215  c 
-592.331 207.253  598.986 198.364  605.665 190  c 
-611.244 183  621.805 173.530  622.405 164  c 
-622.923 155.791  612 150.254  609 143  c 
-619 151.996 l
-629 162 l
-624.485 164.938  626.184 173.920  624.844 179  c 
-622.299 188.653  617.237 197  610 204  c 
-617.790 190 l
-624 170 l
-623 170 l
-617.813 181.868  608.221 192.782  600.349 203  c 
-596.444 208  591 213.383  590.217 220  c 
-589.229 227  591 237.666  594.239 244  c 
-595.940 247.505  598.478 250.399  600 254  c 
-588.611 248.434  588 230  588 219  c 
-587 219 l
-584.809 224  581.214 228.661  579.633 234  c 
-576.552 244.409  579.560 255.595  584.374 265  c 
-586.347 268.854  589.242 272  591 276  c 
-575.626 268.826  572.427 245.842  576 231  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-735 272 m
-727 271 l
-722.742 262.919  719 250.773  727 244  c 
-729.904 260 l
-735 272 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-627 156 m
-622.994 148.947  617 143.215  613.327 136  c 
-609.836 129.305  608.693 119.402  610.394 112  c 
-612 104.841  621 97.409  628 95.823  c 
-631.892 94.936  635.563 94.551  638 98  c 
-628.347 96.407  616.561 102.446  612.893 112  c 
-611.425 115.826  611.725 121  612.300 125  c 
-613.569 133.801  619 140.737  625 147  c 
-623 137  625 126.877  632.379 119.468  c 
-635.582 116.218  640 113.975  644 111.749  c 
-647.719 109.650  652.523 109.348  655.791 106.567  c 
-659.483 103.425  661.758 98.558  665 95  c 
-672.670 86.919  683.591 78.940  694 75  c 
-692.364 79.582  686.869 81.559  683 84.194  c 
-675.862 89  669 94  663.669 101  c 
-656.809 109.720  654 118.968  655.170 130  c 
-655.791 136.419  657.866 142.533  658 149  c 
-657 149 l
-652.560 137.230  652.444 124.308  654 112  c 
-647.557 116.262  640.566 122  638.559 130  c 
-636.875 136.580  640 146  642.985 152  c 
-645.193 156.612  651.944 162.608  650.796 168  c 
-649.867 172.370  646.861 179.486  643.772 182.700  c 
-640 186.549  635 188.997  631 192.465  c 
-628 194.943  626 198  623.551 200.830  c 
-615.788 209.606  607 219.251  609.468 232  c 
-610.334 236.631  612.469 241.303  615.390 244.996  c 
-617.896 248  621 250.427  623 254  c 
-616.738 252.736  613.362 248.186  610 243  c 
-608.263 240.193  606.249 237.262  605.414 234  c 
-601.189 217.499  614.187 203.229  624.714 192  c 
-628 188.491  632.255 185.332  634.772 181  c 
-638 175.180  635 171.692  633.556 166  c 
-632.272 161  632.679 157.340  627 156  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-576 231 m
-576.347 230.306  577 228.855  577 231  c 
-576 231 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-442 227 m
-446 219.880  467.994 209.723  454 201  c 
-454 200 l
-461.285 200.563  462.206 206.962  459.442 212.996  c 
-456.382 219.677  448.870 224.964  442 227  c 
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-737 216 m
-721 192 l
-729.658 197.634  738 205.220  739 216  c 
-737 216 l
-f
-*U
-0.000 0.000 0.000 1.000 k
-*u
-425 187 m
-426.318 180.470  431.183 175.927  438 177  c 
-438 178 l
-425 187 l
-f
-*U
-0.000 0.000 0.000 0.000 k
-*u
-634 187 m
-638.707 176 l
-636 162 l
-642.417 165  647.923 172.962  643.258 179.907  c 
-641 183  637.319 185  634 187  c 
-f
-672 115 m
-670.584 132.959  670.392 151  684 164.910  c 
-687.917 168.756  692.447 172.621  697 175.580  c 
-700.365 177.767  703.420 178.824  706 182  c 
-686.292 177.319  672.474 162.767  666.358 144  c 
-662.896 133.376  662 122  672 115  c 
-f
-698 174 m
-692.282 169.391  685.986 165  681.634 159  c 
-674.925 149.727  673.951 139.977  673.999 129  c 
-674 124.854  673.270 119.901  674.938 116  c 
-677 110.990  681.600 106.972  686 104  c 
-681.585 120.182  679 136.933  686 153  c 
-689 160  696.472 166.694  698 174  c 
-f
-646 169 m
-636.179 157.816 l
-635 138 l
-636 138 l
-643.248 157 l
-646 169 l
-f
-643 116 m
-635 130 l
-633 154 l
-627.469 151.336  626.254 146.751  626 140.910  c 
-625.685 130  632.375 119  643 116  c 
-f
-695 135 m
-695.347 134.306  696 132.855  696 135  c 
-695 135 l
-f
-*U
-%%Trailer
-%%EOF

Index: Press-use/3-image/beastie.eps
===================================================================
RCS file: Press-use/3-image/beastie.eps
diff -N Press-use/3-image/beastie.eps
--- Press-use/3-image/beastie.eps       1 Mar 2004 14:50:26 -0000       1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,1507 +0,0 @@
-%!PS-Adobe-2.0 EPSF-2.0
-%%Title: beastie.eps
-%%Creator: fig2dev Version 3.2.3 Patchlevel 
-%%CreationDate: Sat Mar  3 15:57:53 2001
-%%For: $FreeBSD: src/share/examples/BSD_daemon/beastie.eps,v 1.2.2.1 
2001/03/04 09:19:23 phk Exp $
-%%BoundingBox: 0 0 384 417
-%%Magnification: 1.0000
-%%EndComments
-/$F2psDict 200 dict def
-$F2psDict begin
-
-% This controls the linethickness.  I think large posters look better if
-% you use a value of 2.  Small daemons looks better with a value of 1.
-/linethickness 1 def
-
-% If you want to fiddle the colors:
-% col0  below is black (the lines)
-% col3  below is cyan (the shoelaces)
-% col7  below is white (eyes, shoes)
-% col13 below is green (the shooes)
-% col20 below is red (the daemon)
-% col31 below is gold (the pitchfork)
-
-% This sets round ends on the lines, this looks better than sharp edges
-% but I have not found a way to convince xfig to do this.
-1 setlinecap
-
-$F2psDict /mtrx matrix put
-/col-1 {0 setgray} bind def
-/col0 {0.000 0.000 0.000 srgb} bind def
-/col1 {0.000 0.000 1.000 srgb} bind def
-/col2 {0.000 1.000 0.000 srgb} bind def
-/col3 {0.000 1.000 1.000 srgb} bind def
-/col4 {1.000 0.000 0.000 srgb} bind def
-/col5 {1.000 0.000 1.000 srgb} bind def
-/col6 {1.000 1.000 0.000 srgb} bind def
-/col7 {1.000 1.000 1.000 srgb} bind def
-/col8 {0.000 0.000 0.560 srgb} bind def
-/col9 {0.000 0.000 0.690 srgb} bind def
-/col10 {0.000 0.000 0.820 srgb} bind def
-/col11 {0.530 0.810 1.000 srgb} bind def
-/col12 {0.000 0.560 0.000 srgb} bind def
-/col13 {0.000 0.690 0.000 srgb} bind def
-/col14 {0.000 0.820 0.000 srgb} bind def
-/col15 {0.000 0.560 0.560 srgb} bind def
-/col16 {0.000 0.690 0.690 srgb} bind def
-/col17 {0.000 0.820 0.820 srgb} bind def
-/col18 {0.560 0.000 0.000 srgb} bind def
-/col19 {0.690 0.000 0.000 srgb} bind def
-/col20 {0.820 0.000 0.000 srgb} bind def
-/col21 {0.560 0.000 0.560 srgb} bind def
-/col22 {0.690 0.000 0.690 srgb} bind def
-/col23 {0.820 0.000 0.820 srgb} bind def
-/col24 {0.500 0.190 0.000 srgb} bind def
-/col25 {0.630 0.250 0.000 srgb} bind def
-/col26 {0.750 0.380 0.000 srgb} bind def
-/col27 {1.000 0.500 0.500 srgb} bind def
-/col28 {1.000 0.630 0.630 srgb} bind def
-/col29 {1.000 0.750 0.750 srgb} bind def
-/col30 {1.000 0.880 0.880 srgb} bind def
-/col31 {1.000 0.840 0.000 srgb} bind def
-
-end
-save
-newpath 0 417 moveto 0 0 lineto 384 0 lineto 384 417 lineto closepath clip 
newpath
--51.0 455.0 translate
-1 -1 scale
-
-/cp {closepath} bind def
-/ef {eofill} bind def
-/gr {grestore} bind def
-/gs {gsave} bind def
-/sa {save} bind def
-/rs {restore} bind def
-/l {lineto} bind def
-/m {moveto} bind def
-/rm {rmoveto} bind def
-/n {newpath} bind def
-/s {stroke} bind def
-/sh {show} bind def
-/slc {setlinecap} bind def
-/slj {setlinejoin} bind def
-/slw {linethickness mul setlinewidth} bind def
-/srgb {setrgbcolor} bind def
-/rot {rotate} bind def
-/sc {scale} bind def
-/sd {setdash} bind def
-/ff {findfont} bind def
-/sf {setfont} bind def
-/scf {scalefont} bind def
-/sw {stringwidth} bind def
-/tr {translate} bind def
-/tnt {dup dup currentrgbcolor
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add
-  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
-  bind def
-/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
-  4 -2 roll mul srgb} bind def
- /DrawEllipse {
-       /endangle exch def
-       /startangle exch def
-       /yrad exch def
-       /xrad exch def
-       /y exch def
-       /x exch def
-       /savematrix mtrx currentmatrix def
-       x y tr xrad yrad sc 0 0 1 startangle endangle arc
-       closepath
-       savematrix setmatrix
-       } def
-
-/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
-/$F2psEnd {$F2psEnteredState restore end} def
-
-$F2psBegin
-%%Page: 1 1
-10 setmiterlimit
- 0.06000 0.06000 sc
-% Polyline
-30.000 slw
-n 2174 2967 m 2179 2956 l 2183 2946 l 2189 2935 l 2195 2923 l 2202 2911 l
- 2210 2898 l 2219 2886 l 2227 2873 l 2236 2861 l 2246 2848 l
- 2254 2839 l 2262 2829 l 2270 2818 l 2280 2807 l 2289 2795 l
- 2299 2783 l 2309 2770 l 2319 2756 l 2329 2743 l 2338 2730 l
- 2347 2718 l 2355 2705 l 2362 2693 l 2369 2681 l 2374 2669 l
- 2380 2657 l 2385 2644 l 2390 2631 l 2394 2617 l 2399 2603 l
- 2403 2588 l 2406 2573 l 2410 2558 l 2414 2543 l 2417 2528 l
- 2420 2513 l 2423 2498 l 2427 2484 l 2430 2469 l 2434 2453 l
- 2439 2436 l 2443 2419 l 2448 2401 l 2452 2383 l 2457 2365 l
- 2461 2347 l 2466 2329 l 2470 2313 l 2473 2297 l 2476 2282 l
- 2479 2269 l 2481 2256 l 2483 2240 l 2485 2224 l 2485 2209 l
- 2485 2194 l 2485 2180 l 2483 2167 l 2482 2155 l 2480 2143 l
- 2478 2132 l 2476 2122 l 2474 2113 l 2472 2104 l 2470 2094 l
- 2468 2083 l 2466 2071 l 2463 2059 l 2461 2046 l 2458 2032 l
- 2456 2019 l 2453 2005 l 2450 1990 l 2448 1975 l 2445 1962 l
- 2442 1947 l 2439 1932 l 2437 1916 l 2433 1898 l 2430 1880 l
- 2427 1862 l 2424 1844 l 2421 1826 l 2419 1808 l 2416 1791 l
- 2414 1775 l 2412 1760 l 2411 1746 l 2409 1730 l 2408 1715 l
- 2407 1699 l 2406 1684 l 2406 1668 l 2407 1653 l 2408 1638 l
- 2409 1624 l 2410 1610 l 2412 1597 l 2415 1584 l 2418 1571 l
- 2421 1559 l 2424 1545 l 2428 1532 l 2432 1517 l 2437 1503 l
- 2442 1489 l 2446 1475 l 2451 1462 l 2455 1450 l 2459 1439 l
- 2463 1429 l 2466 1420 l 2469 1411 l 2472 1403 l 2475 1395 l
- 2479 1386 l 2483 1378 l 2489 1369 l 2495 1359 l 2502 1349 l
- 2511 1338 l 2521 1325 l 2529 1316 l 2537 1306 l 2546 1295 l
- 2556 1283 l 2568 1270 l 2580 1255 l 2593 1241 l 2607 1225 l
- 2621 1209 l 2636 1193 l 2651 1178 l 2665 1162 l 2680 1147 l
- 2694 1132 l 2709 1117 l 2723 1103 l 2735 1091 l 2748 1078 l
- 2762 1066 l 2775 1053 l 2789 1041 l 2804 1028 l 2819 1015 l
- 2834 1002 l 2849 989 l 2864 976 l 2879 964 l 2894 951 l
- 2909 940 l 2924 929 l 2938 918 l 2951 908 l 2964 898 l
- 2978 889 l 2992 878 l 3008 868 l 3023 857 l 3039 847 l
- 3055 836 l 3071 826 l 3088 815 l 3104 805 l 3121 795 l
- 3136 786 l 3152 777 l 3167 768 l 3181 760 l 3194 753 l
- 3207 746 l 3219 740 l 3234 731 l 3250 724 l 3265 716 l
- 3281 709 l 3296 703 l 3311 697 l 3325 692 l 3339 688 l
- 3351 685 l 3363 683 l 3374 682 l 3384 682 l 3393 683 l
- 3402 684 l 3412 687 l 3420 690 l 3429 694 l 3436 698 l
- 3443 703 l 3448 709 l 3453 715 l 3456 720 l 3457 726 l
- 3458 732 l 3457 738 l 3455 745 l 3450 753 l 3444 761 l
- 3437 770 l 3429 779 l 3419 788 l 3410 797 l 3400 805 l
- 3391 815 l 3382 822 l 3374 831 l 3365 840 l 3355 850 l
- 3345 860 l 3335 871 l 3325 882 l 3315 893 l 3305 904 l
- 3296 915 l 3287 925 l 3278 936 l 3269 946 l 3260 957 l
- 3251 969 l 3242 981 l 3232 993 l 3223 1005 l 3214 1017 l
- 3205 1029 l 3197 1040 l 3189 1050 l 3182 1060 l 3176 1069 l
- 3168 1080 l 3161 1090 l 3154 1100 l 3148 1110 l 3141 1120 l
- 3136 1130 l 3131 1139 l 3126 1148 l 3123 1156 l 3120 1164 l
- 3116 1174 l 3113 1185 l 3111 1196 l 3109 1209 l 3108 1221 l
- 3107 1233 l 3106 1245 l 3106 1257 l 3106 1268 l 3107 1281 l
- 3107 1294 l 3109 1308 l 3110 1321 l 3112 1334 l 3114 1345 l
- 3117 1356 l 3120 1365 l 3124 1375 l 3128 1383 l 3133 1392 l
- 3139 1399 l 3145 1405 l 3152 1410 l 3159 1414 l 3166 1416 l
- 3175 1418 l 3185 1419 l 3196 1418 l 3208 1416 l 3221 1414 l
- 3234 1410 l 3248 1405 l 3258 1401 l 3268 1397 l 3280 1392 l
- 3292 1387 l 3305 1381 l 3319 1375 l 3334 1368 l 3348 1362 l
- 3363 1356 l 3378 1350 l 3392 1344 l 3407 1339 l 3419 1334 l
- 3432 1329 l 3446 1325 l 3461 1320 l 3476 1316 l 3492 1311 l
- 3509 1307 l 3525 1303 l 3542 1299 l 3559 1296 l 3575 1292 l
- 3591 1289 l 3607 1287 l 3622 1285 l 3638 1282 l 3654 1280 l
- 3671 1279 l 3688 1277 l 3707 1275 l 3726 1274 l 3745 1273 l
- 3764 1272 l 3784 1272 l 3803 1271 l 3822 1271 l 3840 1272 l
- 3858 1272 l 3875 1273 l 3890 1273 l 3906 1274 l 3923 1275 l
- 3940 1277 l 3958 1278 l 3976 1281 l 3996 1283 l 4016 1286 l
- 4036 1289 l 4057 1293 l 4078 1297 l 4099 1301 l 4120 1306 l
- 4141 1311 l 4162 1317 l 4183 1323 l 4201 1328 l 4219 1333 l
- 4238 1339 l 4257 1345 l 4278 1352 l 4299 1359 l 4320 1366 l
- 4342 1374 l 4364 1383 l 4386 1391 l 4408 1400 l 4430 1409 l
- 4451 1417 l 4472 1426 l 4491 1435 l 4510 1443 l 4528 1452 l
- 4545 1460 l 4561 1468 l 4576 1476 l 4596 1487 l 4616 1499 l
- 4634 1511 l 4652 1523 l 4669 1535 l 4686 1547 l 4701 1560 l
- 4715 1572 l 4728 1583 l 4740 1594 l 4751 1604 l 4760 1614 l
- 4769 1623 l 4777 1631 l 4787 1642 l 4797 1653 l 4807 1663 l
- 4817 1672 l 4827 1681 l 4836 1689 l 4846 1696 l 4855 1701 l
- 4864 1705 l 4874 1709 l 4882 1711 l 4891 1712 l 4902 1713 l
- 4913 1713 l 4925 1712 l 4938 1710 l 4952 1708 l 4966 1705 l
- 4981 1701 l 4996 1697 l 5011 1692 l 5026 1686 l 5040 1681 l
- 5055 1675 l 5070 1668 l 5086 1661 l 5103 1653 l 5120 1644 l
- 5136 1636 l 5153 1627 l 5169 1618 l 5184 1609 l 5198 1601 l
- 5210 1593 l 5221 1585 l 5231 1578 l 5241 1570 l 5250 1562 l
- 5258 1553 l 5264 1545 l 5270 1536 l 5274 1526 l 5278 1516 l
- 5280 1505 l 5282 1494 l 5283 1483 l 5284 1471 l 5284 1459 l
- 5285 1447 l 5285 1434 l 5284 1420 l 5284 1405 l 5283 1388 l
- 5282 1371 l 5281 1353 l 5279 1335 l 5277 1316 l 5274 1298 l
- 5271 1280 l 5267 1263 l 5263 1246 l 5259 1230 l 5254 1214 l
- 5248 1198 l 5241 1181 l 5234 1165 l 5227 1148 l 5219 1131 l
- 5210 1115 l 5202 1098 l 5193 1083 l 5185 1069 l 5178 1055 l
- 5170 1043 l 5164 1031 l 5158 1021 l 5150 1007 l 5143 993 l
- 5136 981 l 5131 969 l 5126 957 l 5123 947 l 5121 938 l
- 5120 929 l 5121 922 l 5122 916 l 5125 910 l 5129 905 l
- 5135 899 l 5141 894 l 5149 890 l 5158 886 l 5167 883 l
- 5177 880 l 5187 879 l 5197 878 l 5208 877 l 5219 877 l
- 5232 878 l 5245 880 l 5259 883 l 5273 887 l 5287 891 l
- 5300 896 l 5314 902 l 5326 908 l 5335 913 l 5345 918 l
- 5354 925 l 5365 932 l 5375 940 l 5386 949 l 5398 958 l
- 5410 969 l 5422 980 l 5434 992 l 5446 1004 l 5458 1016 l
- 5470 1030 l 5482 1044 l 5492 1055 l 5502 1067 l 5513 1080 l
- 5524 1093 l 5536 1108 l 5548 1123 l 5560 1139 l 5573 1155 l
- 5585 1172 l 5598 1189 l 5610 1206 l 5622 1223 l 5633 1240 l
- 5644 1256 l 5654 1272 l 5663 1287 l 5673 1302 l 5681 1317 l
- 5690 1333 l 5699 1349 l 5707 1365 l 5715 1382 l 5723 1399 l
- 5730 1416 l 5737 1434 l 5744 1451 l 5750 1468 l 5756 1485 l
- 5762 1502 l 5767 1518 l 5771 1534 l 5776 1549 l 5780 1563 l
- 5783 1578 l 5787 1592 l 5790 1607 l 5794 1622 l 5797 1637 l
- 5800 1653 l 5804 1670 l 5806 1687 l 5809 1704 l 5811 1721 l
- 5813 1738 l 5815 1754 l 5816 1771 l 5817 1786 l 5817 1802 l
- 5817 1817 l 5816 1832 l 5815 1847 l 5814 1862 l 5812 1877 l
- 5810 1893 l 5807 1910 l 5803 1928 l 5799 1945 l 5794 1964 l
- 5788 1982 l 5782 2000 l 5775 2019 l 5768 2037 l 5760 2055 l
- 5752 2072 l 5744 2089 l 5735 2107 l 5726 2122 l 5717 2138 l
- 5707 2155 l 5697 2172 l 5686 2190 l 5674 2208 l 5661 2227 l
- 5647 2245 l 5634 2264 l 5619 2283 l 5605 2302 l 5590 2320 l
- 5576 2338 l 5561 2355 l 5547 2371 l 5532 2387 l 5518 2402 l
- 5504 2417 l 5490 2431 l 5475 2445 l 5460 2458 l 5445 2472 l
- 5429 2486 l 5412 2500 l 5396 2514 l 5379 2527 l 5362 2540 l
- 5346 2553 l 5330 2566 l 5314 2577 l 5299 2589 l 5284 2599 l
- 5270 2609 l 5257 2618 l 5245 2627 l 5233 2636 l 5216 2648 l
- 5199 2659 l 5183 2671 l 5168 2681 l 5153 2692 l 5139 2701 l
- 5126 2710 l 5115 2718 l 5105 2724 l 5097 2730 l 5090 2734 l
- 5085 2737 l 5081 2739 l 5078 2741 l 5075 2743 l 5073 2744 l
- 5072 2746 l 5071 2747 l 5070 2750 l 5070 2753 l 5070 2756 l
- 5071 2761 l 5071 2766 l 5072 2772 l 5073 2780 l 5073 2789 l
- 5074 2798 l 5074 2809 l 5074 2821 l 5074 2834 l 5074 2849 l
- 5074 2865 l 5073 2883 l 5073 2901 l 5072 2921 l 5070 2940 l
- 5069 2960 l 5067 2979 l 5066 2999 l 5064 3018 l 5061 3036 l
- 5059 3055 l 5056 3073 l 5053 3092 l 5050 3111 l 5046 3130 l
- 5042 3150 l 5037 3170 l 5032 3190 l 5026 3211 l 5021 3231 l
- 5015 3251 l 5008 3270 l 5002 3289 l 4996 3307 l 4989 3324 l
- 4982 3340 l 4976 3356 l 4968 3372 l 4961 3387 l 4953 3403 l
- 4944 3419 l 4935 3436 l 4925 3452 l 4915 3469 l 4904 3486 l
- 4893 3503 l 4882 3519 l 4870 3535 l 4859 3550 l 4847 3565 l
- 4835 3580 l 4823 3594 l 4812 3608 l 4799 3622 l 4786 3636 l
- 4773 3650 l 4759 3665 l 4744 3680 l 4730 3695 l 4714 3710 l
- 4699 3726 l 4684 3741 l 4670 3756 l 4656 3770 l 4643 3783 l
- 4630 3796 l 4619 3808 l 4608 3819 l 4599 3830 l 4587 3843 l
- 4576 3856 l 4565 3869 l 4556 3882 l 4547 3895 l 4539 3907 l
- 4532 3919 l 4526 3930 l 4521 3941 l 4517 3951 l 4513 3961 l
- 4510 3970 l 4506 3981 l 4503 3992 l 4501 4004 l 4498 4016 l
- 4496 4029 l 4494 4042 l 4493 4054 l 4493 4066 l 4493 4078 l
- 4493 4089 l 4493 4100 l 4494 4112 l 4496 4124 l 4498 4137 l
- 4501 4150 l 4504 4164 l 4507 4177 l 4511 4189 l 4515 4200 l
- 4520 4212 l 4525 4223 l 4530 4234 l 4537 4246 l 4543 4259 l
- 4551 4272 l 4558 4284 l 4565 4297 l 4572 4309 l 4579 4320 l
- 4585 4331 l 4591 4343 l 4597 4354 l 4603 4367 l 4609 4380 l
- 4615 4394 l 4621 4408 l 4626 4422 l 4631 4436 l 4636 4450 l
- 4640 4464 l 4643 4474 l 4646 4485 l 4649 4496 l 4652 4508 l
- 4654 4521 l 4657 4534 l 4660 4549 l 4663 4563 l 4665 4579 l
- 4667 4594 l 4669 4610 l 4671 4625 l 4673 4641 l 4675 4658 l
- 4676 4672 l 4677 4688 l 4678 4704 l 4679 4721 l 4680 4739 l
- 4681 4757 l 4682 4776 l 4682 4795 l 4683 4814 l 4683 4832 l
- 4683 4851 l 4684 4868 l 4684 4884 l 4683 4900 l 4683 4915 l
- 4683 4929 l 4682 4946 l 4682 4963 l 4681 4980 l 4679 4996 l
- 4678 5012 l 4676 5028 l 4674 5043 l 4671 5056 l 4669 5069 l
- 4666 5081 l 4663 5092 l 4661 5103 l 4657 5115 l 4652 5128 l
- 4648 5141 l 4643 5154 l 4638 5168 l 4633 5181 l 4628 5194 l
- 4624 5206 l 4621 5218 l 4618 5229 l 4616 5238 l 4615 5247 l
- 4614 5257 l 4613 5268 l 4613 5280 l 4614 5292 l 4616 5305 l
- 4618 5319 l 4620 5334 l 4624 5349 l 4628 5365 l 4632 5382 l
- 4636 5395 l 4640 5410 l 4645 5425 l 4650 5442 l 4656 5460 l
- 4663 5479 l 4670 5498 l 4677 5519 l 4685 5540 l 4693 5560 l
- 4702 5581 l 4710 5602 l 4719 5621 l 4728 5641 l 4737 5660 l
- 4746 5678 l 4754 5694 l 4762 5711 l 4771 5727 l 4780 5744 l
- 4790 5762 l 4801 5779 l 4812 5797 l 4823 5814 l 4834 5832 l
- 4846 5849 l 4859 5866 l 4871 5883 l 4883 5899 l 4895 5914 l
- 4908 5929 l 4920 5943 l 4932 5957 l 4944 5970 l 4957 5983 l
- 4970 5996 l 4984 6009 l 4998 6021 l 5013 6034 l 5028 6048 l
- 5044 6061 l 5061 6074 l 5078 6087 l 5095 6099 l 5113 6112 l
- 5130 6124 l 5147 6135 l 5164 6146 l 5181 6156 l 5198 6167 l
- 5214 6176 l 5230 6186 l 5247 6195 l 5264 6204 l 5281 6213 l
- 5299 6222 l 5318 6232 l 5337 6241 l 5357 6250 l 5378 6260 l
- 5399 6269 l 5420 6278 l 5441 6287 l 5462 6295 l 5483 6303 l
- 5503 6311 l 5523 6318 l 5543 6325 l 5563 6332 l 5582 6338 l
- 5600 6344 l 5618 6350 l 5637 6355 l 5656 6361 l 5676 6366 l
- 5697 6372 l 5718 6377 l 5740 6383 l 5762 6389 l 5785 6394 l
- 5807 6400 l 5830 6405 l 5853 6410 l 5875 6416 l 5898 6421 l
- 5919 6425 l 5941 6430 l 5962 6435 l 5983 6439 l 6004 6444 l
- 6025 6448 l 6046 6453 l 6068 6457 l 6090 6462 l 6113 6467 l
- 6136 6472 l 6160 6477 l 6185 6482 l 6209 6487 l 6233 6492 l
- 6258 6497 l 6282 6502 l 6305 6507 l 6328 6512 l 6350 6517 l
- 6371 6522 l 6391 6526 l 6411 6531 l 6430 6535 l 6448 6539 l
- 6470 6544 l 6491 6549 l 6513 6555 l 6535 6560 l 6556 6565 l
- 6578 6571 l 6599 6576 l 6620 6582 l 6640 6587 l 6659 6593 l
- 6678 6598 l 6695 6603 l 6712 6608 l 6727 6613 l 6742 6618 l
- 6756 6622 l 6772 6627 l 6788 6632 l 6803 6638 l 6819 6643 l
- 6835 6649 l 6851 6655 l 6867 6662 l 6882 6668 l 6897 6674 l
- 6912 6681 l 6925 6687 l 6938 6694 l 6951 6700 l 6963 6707 l
- 6975 6713 l 6987 6721 l 7000 6728 l 7012 6736 l 7025 6745 l
- 7038 6754 l 7051 6763 l 7063 6773 l 7075 6783 l 7086 6792 l
- 7096 6802 l 7106 6811 l 7115 6820 l 7123 6829 l 7132 6840 l
- 7140 6851 l 7148 6863 l 7156 6875 l 7163 6888 l 7170 6901 l
- 7176 6914 l 7181 6927 l 7186 6940 l 7189 6951 l 7193 6963 l
- 7196 6974 l 7198 6987 l 7200 7000 l 7202 7014 l 7203 7029 l
- 7202 7043 l 7201 7058 l 7198 7072 l 7194 7086 l 7189 7099 l
- 7183 7111 l 7177 7122 l 7170 7132 l 7162 7144 l 7153 7155 l
- 7143 7167 l 7132 7179 l 7120 7190 l 7108 7201 l 7097 7211 l
- 7085 7221 l 7074 7230 l 7063 7238 l 7054 7245 l 7044 7252 l
- 7034 7258 l 7023 7265 l 7012 7271 l 6999 7277 l 6986 7284 l
- 6973 7290 l 6958 7295 l 6943 7301 l 6928 7306 l 6912 7311 l
- 6895 7316 l 6878 7321 l 6862 7325 l 6844 7330 l 6826 7334 l
- 6806 7339 l 6786 7343 l 6764 7348 l 6742 7352 l 6720 7357 l
- 6699 7361 l 6677 7366 l 6657 7370 l 6638 7373 l 6620 7377 l
- 6604 7380 l 6589 7383 l 6576 7385 l 6560 7388 l 6546 7391 l
- 6534 7393 l 6524 7396 l 6515 7398 l 6507 7400 l 6502 7403 l
- 6498 7405 l 6495 7408 l 6493 7411 l 6493 7414 l 6493 7417 l
- 6494 7425 l 6496 7436 l 6499 7448 l 6502 7460 l 6504 7471 l
- 6504 7480 l 6502 7484 l 6500 7487 l 6497 7491 l 6491 7493 l
- 6484 7495 l 6475 7497 l 6464 7499 l 6450 7500 l 6435 7500 l
- 6418 7501 l 6408 7501 l 6396 7502 l 6384 7502 l 6370 7502 l
- 6355 7502 l 6338 7503 l 6321 7503 l 6302 7503 l 6282 7504 l
- 6262 7504 l 6241 7505 l 6219 7505 l 6198 7505 l 6176 7506 l
- 6154 7506 l 6131 7507 l 6109 7507 l 6087 7508 l 6066 7509 l
- 6044 7509 l 6022 7510 l 5999 7511 l 5975 7511 l 5951 7512 l
- 5925 7513 l 5900 7514 l 5873 7515 l 5847 7516 l 5821 7517 l
- 5795 7518 l 5770 7519 l 5745 7520 l 5722 7521 l 5699 7522 l
- 5677 7523 l 5656 7524 l 5636 7525 l 5617 7526 l 5594 7527 l
- 5571 7528 l 5549 7530 l 5528 7531 l 5506 7532 l 5485 7533 l
- 5465 7535 l 5446 7536 l 5428 7537 l 5410 7538 l 5394 7539 l
- 5380 7539 l 5367 7540 l 5355 7540 l 5344 7541 l 5334 7541 l
- 5320 7541 l 5307 7541 l 5296 7540 l 5286 7539 l 5277 7538 l
- 5270 7536 l 5266 7534 l 5262 7532 l 5261 7530 l 5260 7527 l
- 5260 7525 l 5262 7522 l 5265 7518 l 5270 7514 l 5277 7508 l
- 5286 7502 l 5298 7494 l 5313 7485 l 5330 7474 l 5350 7462 l
- 5373 7449 l 5399 7435 l 5414 7426 l 5431 7417 l 5449 7407 l
- 5468 7396 l 5488 7385 l 5510 7373 l 5533 7361 l 5556 7348 l
- 5581 7334 l 5606 7321 l 5632 7306 l 5657 7292 l 5683 7278 l
- 5708 7264 l 5733 7251 l 5758 7237 l 5781 7224 l 5804 7212 l
- 5825 7200 l 5846 7189 l 5865 7178 l 5884 7168 l 5908 7154 l
- 5932 7141 l 5954 7128 l 5975 7116 l 5996 7104 l 6016 7092 l
- 6035 7081 l 6052 7071 l 6069 7061 l 6084 7052 l 6098 7043 l
- 6111 7035 l 6122 7028 l 6133 7021 l 6142 7015 l 6151 7010 l
- 6163 7001 l 6175 6993 l 6187 6985 l 6197 6977 l 6207 6971 l
- 6217 6965 l 6225 6961 l 6232 6958 l 6238 6956 l 6244 6956 l
- 6249 6956 l 6254 6957 l 6259 6960 l 6264 6964 l 6269 6968 l
- 6274 6974 l 6279 6980 l 6284 6986 l 6288 6992 l 6293 6999 l
- 6298 7007 l 6304 7016 l 6310 7026 l 6316 7036 l 6322 7046 l
- 6328 7057 l 6333 7066 l 6338 7076 l 6342 7085 l 6346 7095 l
- 6351 7105 l 6355 7115 l 6359 7125 l 6363 7134 l 6367 7142 l
- 6370 7150 l 6373 7156 l 6377 7162 l 6381 7167 l 6386 7172 l
- 6392 7177 l 6399 7182 l 6406 7185 l 6415 7188 l 6424 7190 l
- 6435 7191 l 6444 7191 l 6455 7191 l 6467 7190 l 6481 7189 l
- 6495 7187 l 6510 7185 l 6526 7183 l 6542 7180 l 6557 7177 l
- 6572 7173 l 6586 7170 l 6599 7167 l 6613 7163 l 6626 7159 l
- 6639 7155 l 6653 7151 l 6667 7146 l 6680 7141 l 6694 7136 l
- 6706 7131 l 6719 7126 l 6730 7121 l 6741 7116 l 6752 7111 l
- 6764 7104 l 6776 7098 l 6789 7090 l 6801 7083 l 6813 7075 l
- 6825 7066 l 6835 7058 l 6844 7050 l 6851 7043 l 6857 7036 l
- 6861 7030 l 6864 7024 l 6867 7017 l 6869 7010 l 6870 7004 l
- 6870 6996 l 6869 6989 l 6867 6982 l 6865 6975 l 6862 6968 l
- 6858 6961 l 6853 6954 l 6848 6947 l 6842 6939 l 6835 6931 l
- 6826 6923 l 6817 6914 l 6807 6905 l 6796 6896 l 6784 6888 l
- 6773 6879 l 6761 6871 l 6748 6864 l 6736 6857 l 6726 6852 l
- 6716 6847 l 6705 6842 l 6694 6837 l 6681 6831 l 6667 6826 l
- 6652 6821 l 6636 6816 l 6620 6811 l 6602 6806 l 6584 6801 l
- 6565 6797 l 6546 6792 l 6526 6788 l 6506 6784 l 6485 6780 l
- 6467 6777 l 6448 6774 l 6428 6770 l 6407 6767 l 6384 6764 l
- 6361 6760 l 6337 6757 l 6312 6753 l 6286 6749 l 6259 6746 l
- 6232 6742 l 6206 6738 l 6179 6735 l 6153 6731 l 6127 6728 l
- 6102 6724 l 6078 6721 l 6054 6717 l 6031 6714 l 6009 6711 l
- 5986 6707 l 5964 6704 l 5942 6700 l 5920 6696 l 5897 6693 l
- 5874 6689 l 5851 6685 l 5828 6681 l 5805 6676 l 5783 6672 l
- 5760 6668 l 5738 6664 l 5717 6660 l 5696 6655 l 5676 6651 l
- 5657 6647 l 5639 6644 l 5622 6640 l 5605 6636 l 5588 6633 l
- 5568 6628 l 5547 6623 l 5527 6619 l 5507 6614 l 5486 6609 l
- 5465 6603 l 5444 6598 l 5423 6593 l 5402 6587 l 5382 6582 l
- 5363 6577 l 5344 6571 l 5326 6566 l 5309 6561 l 5292 6557 l
- 5276 6552 l 5260 6547 l 5243 6542 l 5227 6537 l 5210 6531 l
- 5192 6526 l 5175 6520 l 5157 6514 l 5140 6508 l 5122 6502 l
- 5105 6496 l 5089 6491 l 5073 6485 l 5058 6480 l 5044 6475 l
- 5030 6470 l 5017 6465 l 5003 6460 l 4988 6454 l 4974 6449 l
- 4959 6443 l 4944 6437 l 4929 6431 l 4915 6425 l 4900 6419 l
- 4887 6413 l 4873 6407 l 4861 6401 l 4849 6395 l 4838 6389 l
- 4827 6383 l 4814 6375 l 4801 6368 l 4788 6360 l 4775 6351 l
- 4762 6342 l 4748 6333 l 4735 6324 l 4722 6315 l 4710 6306 l
- 4698 6298 l 4687 6290 l 4676 6283 l 4666 6275 l 4655 6268 l
- 4644 6260 l 4633 6252 l 4621 6244 l 4610 6236 l 4598 6227 l
- 4587 6219 l 4577 6211 l 4566 6203 l 4557 6195 l 4547 6187 l
- 4536 6177 l 4525 6167 l 4513 6156 l 4501 6145 l 4490 6133 l
- 4478 6123 l 4467 6113 l 4457 6105 l 4448 6098 l 4440 6093 l
- 4433 6089 l 4427 6086 l 4419 6085 l 4410 6084 l 4400 6086 l
- 4388 6088 l 4373 6092 l 4356 6097 l 4337 6104 l 4316 6113 l
- 4292 6122 l 4265 6133 l 4250 6139 l 4234 6146 l 4217 6153 l
- 4198 6160 l 4179 6167 l 4158 6175 l 4136 6183 l 4112 6191 l
- 4088 6199 l 4062 6207 l 4036 6215 l 4009 6223 l 3982 6230 l
- 3954 6237 l 3926 6243 l 3897 6248 l 3869 6253 l 3841 6257 l
- 3814 6261 l 3787 6263 l 3760 6265 l 3733 6265 l 3707 6265 l
- 3681 6264 l 3655 6261 l 3629 6258 l 3603 6254 l 3577 6248 l
- 3550 6242 l 3523 6235 l 3496 6227 l 3469 6218 l 3441 6208 l
- 3414 6198 l 3387 6187 l 3361 6176 l 3335 6165 l 3310 6153 l
- 3286 6141 l 3263 6130 l 3242 6118 l 3221 6107 l 3201 6096 l
- 3183 6085 l 3166 6075 l 3151 6066 l 3136 6057 l 3123 6048 l
- 3102 6035 l 3083 6022 l 3067 6011 l 3052 6000 l 3039 5990 l
- 3028 5980 l 3019 5971 l 3010 5963 l 3003 5955 l 2997 5947 l
- 2992 5939 l 2987 5932 l 2982 5924 l 2977 5916 l 2972 5907 l
- 2966 5897 l 2959 5886 l 2952 5874 l 2944 5862 l 2936 5849 l
- 2927 5835 l 2918 5821 l 2910 5807 l 2902 5793 l 2894 5780 l
- 2886 5767 l 2879 5755 l 2873 5744 l 2865 5730 l 2858 5717 l
- 2852 5704 l 2845 5690 l 2839 5676 l 2834 5663 l 2828 5649 l
- 2824 5636 l 2820 5624 l 2816 5612 l 2813 5600 l 2811 5589 l
- 2809 5578 l 2807 5566 l 2805 5554 l 2804 5541 l 2803 5528 l
- 2802 5515 l 2801 5502 l 2801 5489 l 2801 5477 l 2801 5465 l
- 2802 5454 l 2802 5444 l 2803 5431 l 2805 5418 l 2806 5406 l
- 2808 5392 l 2810 5379 l 2813 5366 l 2816 5354 l 2819 5343 l
- 2822 5332 l 2825 5322 l 2830 5309 l 2835 5297 l 2840 5284 l
- 2846 5271 l 2852 5259 l 2857 5248 l 2862 5239 l 2866 5231 l
- 2870 5221 l 2874 5212 l 2876 5205 l 2877 5197 l 2878 5191 l
- 2877 5186 l 2875 5181 l 2872 5175 l 2867 5168 l 2862 5161 l
- 2855 5154 l 2848 5146 l 2841 5139 l 2834 5131 l 2826 5122 l
- 2817 5113 l 2809 5103 l 2802 5093 l 2795 5083 l 2789 5074 l
- 2785 5064 l 2781 5054 l 2778 5043 l 2775 5032 l 2774 5022 l
- 2773 5012 l 2773 5003 l 2774 4995 l 2774 4988 l 2776 4981 l
- 2777 4974 l 2778 4968 l 2778 4962 l 2777 4957 l 2775 4953 l
- 2772 4951 l 2766 4948 l 2756 4945 l 2745 4944 l 2732 4942 l
- 2720 4941 l 2709 4940 l 2700 4938 l 2691 4936 l 2682 4933 l
- 2675 4929 l 2668 4925 l 2663 4921 l 2658 4916 l 2652 4910 l
- 2647 4904 l 2641 4898 l 2635 4892 l 2628 4888 l 2624 4885 l
- 2620 4882 l 2614 4878 l 2607 4873 l 2599 4866 l 2589 4857 l
- 2578 4846 l 2565 4832 l 2551 4816 l 2536 4796 l 2526 4784 l
- 2516 4770 l 2505 4755 l 2493 4739 l 2481 4722 l 2469 4703 l
- 2456 4683 l 2443 4663 l 2431 4643 l 2418 4622 l 2407 4601 l
- 2396 4580 l 2386 4561 l 2377 4542 l 2369 4524 l 2363 4507 l
- 2358 4491 l 2354 4476 l 2352 4463 l 2351 4451 l 2351 4439 l
- 2352 4428 l 2354 4417 l 2357 4407 l 2361 4397 l 2366 4388 l
- 2372 4379 l 2379 4370 l 2387 4362 l 2395 4355 l 2404 4348 l
- 2414 4342 l 2424 4337 l 2434 4331 l 2445 4327 l 2455 4323 l
- 2466 4319 l 2477 4315 l 2492 4311 l 2507 4307 l 2522 4304 l
- 2539 4301 l 2556 4298 l 2574 4295 l 2592 4292 l 2611 4290 l
- 2630 4288 l 2649 4287 l 2668 4285 l 2686 4284 l 2703 4284 l
- 2720 4283 l 2736 4283 l 2752 4283 l 2769 4284 l 2787 4284 l
- 2805 4285 l 2823 4286 l 2841 4287 l 2860 4289 l 2878 4291 l
- 2895 4292 l 2912 4294 l 2928 4296 l 2943 4298 l 2957 4300 l
- 2970 4302 l 2983 4304 l 2999 4306 l 3015 4308 l 3030 4311 l
- 3046 4312 l 3061 4314 l 3075 4314 l 3088 4314 l 3099 4313 l
- 3110 4311 l 3119 4308 l 3128 4304 l 3137 4299 l 3146 4292 l
- 3155 4285 l 3163 4276 l 3170 4267 l 3177 4257 l 3183 4248 l
- 3188 4238 l 3193 4229 l 3196 4219 l 3200 4209 l 3203 4199 l
- 3205 4188 l 3207 4177 l 3208 4166 l 3208 4155 l 3208 4145 l
- 3208 4135 l 3207 4126 l 3205 4114 l 3201 4102 l 3197 4090 l
- 3192 4078 l 3186 4066 l 3179 4056 l 3172 4046 l 3165 4039 l
- 3157 4031 l 3147 4025 l 3137 4019 l 3126 4013 l 3114 4007 l
- 3102 4002 l 3091 3997 l 3081 3992 l 3072 3988 l 3063 3984 l
- 3053 3979 l 3043 3974 l 3033 3969 l 3023 3963 l 3013 3957 l
- 3003 3950 l 2993 3944 l 2984 3938 l 2975 3931 l 2965 3923 l
- 2955 3915 l 2943 3906 l 2932 3897 l 2920 3888 l 2908 3879 l
- 2896 3870 l 2885 3861 l 2873 3853 l 2863 3846 l 2853 3840 l
- 2842 3833 l 2831 3826 l 2819 3818 l 2807 3811 l 2795 3804 l
- 2783 3797 l 2771 3790 l 2761 3784 l 2751 3777 l 2741 3772 l
- 2730 3764 l 2719 3757 l 2707 3750 l 2696 3743 l 2684 3735 l
- 2672 3728 l 2660 3721 l 2649 3715 l 2638 3710 l 2627 3705 l
- 2618 3701 l 2608 3697 l 2597 3693 l 2586 3689 l 2574 3685 l
- 2562 3681 l 2550 3677 l 2537 3672 l 2525 3668 l 2513 3663 l
- 2501 3659 l 2490 3654 l 2478 3649 l 2466 3643 l 2454 3636 l
- 2441 3629 l 2428 3621 l 2414 3613 l 2401 3604 l 2388 3595 l
- 2375 3585 l 2363 3576 l 2352 3567 l 2342 3557 l 2331 3547 l
- 2321 3537 l 2311 3526 l 2300 3514 l 2290 3502 l 2280 3490 l
- 2270 3477 l 2261 3465 l 2252 3454 l 2244 3443 l 2237 3433 l
- 2231 3424 l 2223 3413 l 2216 3402 l 2209 3391 l 2202 3380 l
- 2195 3368 l 2189 3357 l 2184 3346 l 2178 3335 l 2174 3325 l
- 2170 3314 l 2166 3303 l 2162 3291 l 2158 3278 l 2154 3265 l
- 2151 3251 l 2148 3237 l 2145 3223 l 2142 3211 l 2141 3199 l
- 2139 3188 l 2138 3177 l 2137 3166 l 2136 3156 l 2136 3145 l
- 2136 3133 l 2136 3122 l 2137 3112 l 2138 3101 l 2140 3092 l
- 2141 3082 l 2143 3072 l 2145 3061 l 2148 3049 l 2151 3037 l
- 2154 3025 l 2158 3012 l 2162 3000 l 2166 2988 l 2170 2977 l
-
- cp gs col20 1.00 shd ef gr gs col0 s gr 
-% Polyline
-n 2420 6449 m 2432 6448 l 2444 6448 l 2457 6447 l 2471 6446 l 2484 6446 l
- 2498 6445 l 2511 6445 l 2524 6445 l 2536 6445 l 2548 6445 l
- 2560 6444 l 2572 6444 l 2584 6444 l 2597 6444 l 2610 6444 l
- 2623 6444 l 2635 6444 l 2647 6444 l 2658 6444 l 2669 6444 l
- 2679 6443 l 2689 6443 l 2700 6443 l 2711 6442 l 2722 6441 l
- 2733 6440 l 2743 6439 l 2752 6437 l 2761 6435 l 2770 6433 l
- 2780 6429 l 2790 6424 l 2801 6419 l 2812 6413 l 2822 6407 l
- 2833 6401 l 2843 6396 l 2854 6391 l 2864 6386 l 2875 6382 l
- 2887 6377 l 2900 6372 l 2913 6368 l 2925 6364 l 2936 6360 l
- 2947 6356 l 2957 6352 l 2967 6348 l 2977 6344 l 2987 6339 l
- 2997 6335 l 3006 6330 l 3013 6326 l 3021 6323 l 3029 6318 l
- 3037 6312 l 3045 6306 l 3051 6300 l 3056 6292 l 3060 6285 l
- 3061 6278 l 3062 6270 l 3062 6261 l 3062 6251 l 3061 6241 l
- 3059 6232 l 3057 6223 l 3055 6215 l 3052 6207 l 3049 6198 l
- 3046 6190 l 3042 6181 l 3038 6173 l 3034 6164 l 3030 6156 l
- 3027 6148 l 3023 6139 l 3019 6129 l 3015 6119 l 3011 6108 l
- 3008 6096 l 3004 6086 l 3001 6075 l 2999 6066 l 2995 6054 l
- 2992 6041 l 2990 6029 l 2989 6018 l 2989 6009 l 2990 6003 l
- 2991 6000 l 2992 5998 l 2995 5996 l 2997 5994 l 3001 5994 l
- 3004 5993 l 3008 5994 l 3012 5995 l 3017 5996 l 3021 5998 l
- 3029 6001 l 3037 6006 l 3047 6012 l 3057 6018 l 3065 6025 l
- 3073 6031 l 3080 6038 l 3088 6044 l 3095 6051 l 3103 6057 l
- 3110 6062 l 3118 6065 l 3126 6066 l 3136 6066 l 3147 6065 l
- 3158 6064 l 3169 6062 l 3180 6061 l 3188 6060 l 3197 6059 l
- 3206 6059 l 3215 6059 l 3224 6059 l 3233 6059 l 3241 6060 l
- 3249 6060 l 3258 6060 l 3268 6061 l 3279 6062 l 3289 6064 l
- 3297 6066 l 3305 6068 l 3312 6071 l 3320 6075 l 3327 6081 l
- 3335 6087 l 3342 6093 l 3348 6100 l 3355 6106 l 3362 6114 l
- 3370 6122 l 3378 6129 l 3387 6134 l 3395 6138 l 3404 6140 l
- 3413 6140 l 3424 6140 l 3434 6138 l 3443 6137 l 3452 6136 l
- 3460 6135 l 3468 6134 l 3477 6135 l 3484 6137 l 3491 6139 l
- 3496 6143 l 3501 6148 l 3505 6154 l 3510 6162 l 3514 6171 l
- 3517 6180 l 3520 6189 l 3522 6196 l 3524 6204 l 3526 6212 l
- 3528 6221 l 3530 6229 l 3532 6238 l 3533 6245 l 3534 6253 l
- 3535 6262 l 3536 6271 l 3538 6279 l 3539 6285 l 3541 6288 l
- 3543 6288 l 3545 6285 l 3548 6279 l 3552 6270 l 3556 6259 l
- 3560 6247 l 3564 6236 l 3567 6227 l 3571 6218 l 3574 6208 l
- 3578 6198 l 3582 6188 l 3586 6178 l 3590 6169 l 3594 6161 l
- 3598 6152 l 3602 6143 l 3607 6134 l 3612 6126 l 3617 6117 l
- 3623 6109 l 3628 6103 l 3634 6097 l 3639 6091 l 3646 6086 l
- 3653 6081 l 3661 6076 l 3670 6072 l 3678 6069 l 3686 6066 l
- 3694 6064 l 3701 6062 l 3710 6060 l 3719 6059 l 3728 6058 l
- 3737 6057 l 3746 6057 l 3755 6057 l 3763 6058 l 3770 6058 l
- 3778 6059 l 3787 6061 l 3795 6063 l 3804 6065 l 3812 6068 l
- 3820 6070 l 3828 6074 l 3835 6077 l 3843 6081 l 3851 6086 l
- 3860 6091 l 3869 6096 l 3877 6102 l 3885 6107 l 3893 6112 l
- 3900 6117 l 3908 6123 l 3916 6129 l 3924 6135 l 3931 6141 l
- 3938 6147 l 3944 6153 l 3950 6159 l 3956 6166 l 3962 6173 l
- 3967 6179 l 3971 6184 l 3974 6188 l 3977 6189 l 3979 6187 l
- 3981 6182 l 3983 6175 l 3986 6168 l 3989 6161 l 3992 6157 l
- 3995 6154 l 3999 6151 l 4004 6148 l 4010 6146 l 4016 6144 l
- 4023 6142 l 4030 6141 l 4038 6140 l 4046 6139 l 4056 6139 l
- 4067 6138 l 4078 6138 l 4089 6138 l 4099 6137 l 4110 6137 l
- 4120 6137 l 4131 6136 l 4142 6135 l 4154 6134 l 4166 6133 l
- 4177 6132 l 4188 6130 l 4198 6128 l 4208 6126 l 4218 6123 l
- 4229 6120 l 4240 6117 l 4251 6113 l 4261 6110 l 4271 6107 l
- 4280 6104 l 4288 6101 l 4296 6098 l 4305 6095 l 4314 6091 l
- 4323 6088 l 4332 6085 l 4340 6081 l 4348 6078 l 4356 6074 l
- 4365 6071 l 4374 6067 l 4383 6064 l 4392 6062 l 4401 6062 l
- 4409 6063 l 4416 6066 l 4423 6070 l 4429 6077 l 4436 6086 l
- 4443 6097 l 4450 6109 l 4456 6122 l 4462 6134 l 4468 6147 l
- 4473 6157 l 4478 6168 l 4483 6180 l 4489 6192 l 4495 6205 l
- 4501 6218 l 4507 6231 l 4513 6243 l 4518 6255 l 4524 6267 l
- 4528 6277 l 4533 6287 l 4537 6298 l 4542 6310 l 4548 6321 l
- 4553 6334 l 4558 6346 l 4563 6358 l 4567 6370 l 4572 6381 l
- 4576 6392 l 4580 6403 l 4584 6414 l 4588 6425 l 4592 6437 l
- 4596 6449 l 4600 6461 l 4604 6474 l 4608 6486 l 4611 6498 l
- 4615 6510 l 4618 6521 l 4622 6531 l 4625 6542 l 4629 6553 l
- 4633 6565 l 4637 6578 l 4641 6590 l 4645 6602 l 4649 6614 l
- 4653 6625 l 4657 6635 l 4660 6644 l 4663 6653 l 4665 6660 l
- 4667 6668 l 4669 6675 l 4670 6682 l 4670 6690 l 4669 6698 l
- 4667 6705 l 4663 6713 l 4659 6720 l 4653 6728 l 4647 6734 l
- 4641 6740 l 4633 6747 l 4625 6755 l 4614 6763 l 4602 6771 l
- 4589 6781 l 4574 6790 l 4558 6800 l 4540 6810 l 4522 6820 l
- 4503 6831 l 4482 6841 l 4461 6852 l 4447 6858 l 4431 6866 l
- 4415 6873 l 4398 6880 l 4380 6888 l 4361 6896 l 4341 6905 l
- 4320 6913 l 4299 6922 l 4276 6931 l 4253 6940 l 4230 6949 l
- 4206 6957 l 4183 6966 l 4159 6974 l 4136 6982 l 4112 6990 l
- 4089 6997 l 4067 7004 l 4045 7011 l 4022 7018 l 4001 7024 l
- 3979 7030 l 3956 7036 l 3934 7042 l 3910 7047 l 3887 7053 l
- 3862 7058 l 3837 7063 l 3812 7068 l 3786 7073 l 3759 7078 l
- 3732 7083 l 3705 7087 l 3679 7091 l 3652 7095 l 3625 7098 l
- 3599 7102 l 3573 7105 l 3547 7107 l 3522 7110 l 3497 7112 l
- 3473 7114 l 3448 7116 l 3425 7118 l 3402 7119 l 3378 7120 l
- 3354 7121 l 3330 7122 l 3305 7123 l 3279 7124 l 3253 7125 l
- 3226 7125 l 3199 7125 l 3172 7126 l 3146 7126 l 3119 7125 l
- 3092 7125 l 3066 7125 l 3041 7124 l 3016 7123 l 2992 7123 l
- 2969 7122 l 2947 7121 l 2925 7119 l 2904 7118 l 2884 7117 l
- 2865 7115 l 2839 7113 l 2814 7110 l 2790 7107 l 2765 7104 l
- 2741 7101 l 2717 7097 l 2693 7092 l 2669 7087 l 2646 7082 l
- 2624 7077 l 2603 7071 l 2582 7065 l 2563 7058 l 2545 7051 l
- 2527 7044 l 2511 7037 l 2496 7030 l 2481 7022 l 2467 7014 l
- 2453 7005 l 2438 6996 l 2424 6986 l 2410 6975 l 2396 6964 l
- 2382 6952 l 2368 6939 l 2354 6926 l 2340 6913 l 2326 6899 l
- 2313 6885 l 2300 6872 l 2288 6858 l 2276 6844 l 2264 6831 l
- 2252 6817 l 2241 6804 l 2228 6788 l 2215 6772 l 2202 6755 l
- 2188 6738 l 2175 6721 l 2162 6703 l 2149 6685 l 2137 6667 l
- 2127 6650 l 2117 6633 l 2109 6617 l 2102 6602 l 2098 6588 l
- 2094 6575 l 2093 6564 l 2094 6553 l 2096 6542 l 2101 6532 l
- 2108 6523 l 2118 6514 l 2129 6506 l 2142 6499 l 2157 6493 l
- 2173 6487 l 2189 6482 l 2205 6478 l 2221 6475 l 2236 6472 l
- 2251 6470 l 2265 6468 l 2280 6465 l 2295 6463 l 2310 6461 l
- 2324 6459 l 2338 6457 l 2352 6456 l 2365 6454 l 2377 6453 l
- 2389 6452 l 2400 6451 l 2410 6450 l
- cp gs col13 1.00 shd ef gr gs col0 s gr 
-% Polyline
-n 2452 4170 m 2451 4170 l 2448 4167 l 2439 4160 l 2424 4149 l 2405 4135 l
- 2384 4118 l 2362 4102 l 2341 4086 l 2322 4071 l 2305 4059 l
- 2290 4047 l 2277 4037 l 2265 4028 l 2254 4020 l 2242 4010 l
- 2230 4000 l 2218 3991 l 2206 3981 l 2195 3972 l 2184 3963 l
- 2174 3954 l 2164 3946 l 2155 3939 l 2147 3932 l 2140 3926 l
- 2134 3920 l 2125 3912 l 2117 3905 l 2110 3897 l 2103 3891 l
- 2098 3884 l 2093 3879 l 2090 3874 l 2088 3869 l 2087 3863 l
- 2087 3858 l 2089 3852 l 2091 3846 l 2095 3840 l 2098 3834 l
- 2102 3829 l 2107 3822 l 2112 3815 l 2117 3807 l 2122 3798 l
- 2126 3790 l 2129 3784 l 2132 3776 l 2135 3768 l 2137 3760 l
- 2140 3751 l 2142 3743 l 2144 3735 l 2146 3728 l 2147 3719 l
- 2149 3710 l 2150 3700 l 2151 3689 l 2152 3679 l 2152 3669 l
- 2152 3660 l 2152 3651 l 2152 3641 l 2151 3630 l 2151 3619 l
- 2150 3609 l 2149 3598 l 2148 3589 l 2147 3579 l 2145 3570 l
- 2143 3559 l 2140 3549 l 2138 3538 l 2135 3528 l 2132 3518 l
- 2129 3508 l 2126 3499 l 2123 3489 l 2119 3478 l 2114 3466 l
- 2109 3455 l 2104 3444 l 2098 3434 l 2091 3424 l 2086 3416 l
- 2079 3408 l 2072 3400 l 2064 3392 l 2056 3384 l 2048 3376 l
- 2040 3369 l 2032 3363 l 2025 3358 l 2018 3353 l 2010 3348 l
- 2002 3344 l 1994 3340 l 1988 3337 l 1982 3333 l 1979 3329 l
- 1978 3326 l 1978 3321 l 1981 3316 l 1985 3310 l 1990 3302 l
- 1996 3294 l 2001 3286 l 2005 3277 l 2006 3269 l 2005 3262 l
- 2002 3255 l 1995 3248 l 1985 3241 l 1974 3234 l 1961 3227 l
- 1948 3221 l 1935 3216 l 1923 3211 l 1912 3207 l 1901 3202 l
- 1891 3198 l 1880 3194 l 1870 3190 l 1860 3185 l 1851 3182 l
- 1843 3178 l 1835 3174 l 1826 3170 l 1817 3165 l 1807 3160 l
- 1797 3154 l 1787 3149 l 1777 3144 l 1767 3140 l 1759 3136 l
- 1750 3132 l 1741 3127 l 1730 3123 l 1720 3118 l 1709 3113 l
- 1698 3109 l 1687 3104 l 1677 3099 l 1667 3095 l 1655 3089 l
- 1642 3083 l 1629 3077 l 1616 3072 l 1605 3067 l 1597 3065 l
- 1590 3064 l 1586 3065 l 1585 3068 l 1585 3073 l 1588 3080 l
- 1593 3089 l 1599 3098 l 1605 3108 l 1612 3118 l 1619 3127 l
- 1625 3135 l 1632 3144 l 1639 3153 l 1646 3162 l 1652 3171 l
- 1659 3180 l 1665 3189 l 1671 3198 l 1676 3207 l 1682 3217 l
- 1688 3228 l 1694 3240 l 1700 3251 l 1706 3262 l 1711 3272 l
- 1716 3282 l 1721 3291 l 1725 3300 l 1730 3309 l 1735 3319 l
- 1740 3329 l 1744 3340 l 1748 3350 l 1752 3360 l 1756 3372 l
- 1760 3384 l 1764 3397 l 1768 3410 l 1773 3422 l 1778 3433 l
- 1782 3441 l 1787 3447 l 1791 3450 l 1795 3451 l 1800 3451 l
- 1805 3451 l 1810 3449 l 1816 3446 l 1821 3442 l 1826 3438 l
- 1831 3434 l 1836 3430 l 1845 3423 l 1854 3416 l 1863 3410 l
- 1873 3405 l 1882 3402 l 1891 3402 l 1897 3403 l 1903 3406 l
- 1910 3411 l 1917 3416 l 1924 3423 l 1931 3430 l 1938 3437 l
- 1944 3445 l 1951 3452 l 1958 3461 l 1965 3470 l 1972 3479 l
- 1979 3489 l 1986 3498 l 1991 3507 l 1996 3516 l 2000 3525 l
- 2004 3534 l 2008 3544 l 2011 3554 l 2013 3564 l 2015 3574 l
- 2017 3582 l 2018 3590 l 2020 3599 l 2021 3608 l 2021 3618 l
- 2021 3627 l 2021 3636 l 2020 3644 l 2018 3653 l 2016 3662 l
- 2013 3672 l 2009 3681 l 2005 3690 l 2000 3698 l 1994 3704 l
- 1987 3711 l 1979 3718 l 1971 3724 l 1963 3730 l 1957 3735 l
- 1950 3740 l 1944 3745 l 1937 3749 l 1931 3753 l 1924 3755 l
- 1918 3756 l 1912 3754 l 1905 3751 l 1897 3747 l 1889 3742 l
- 1881 3736 l 1874 3730 l 1868 3725 l 1861 3719 l 1853 3713 l
- 1846 3707 l 1839 3701 l 1833 3696 l 1826 3691 l 1819 3686 l
- 1812 3680 l 1804 3674 l 1796 3668 l 1789 3663 l 1784 3659 l
- 1778 3654 l 1771 3649 l 1764 3643 l 1757 3637 l 1749 3632 l
- 1742 3627 l 1735 3622 l 1728 3616 l 1721 3611 l 1713 3605 l
- 1706 3598 l 1700 3592 l 1695 3585 l 1692 3578 l 1691 3571 l
- 1691 3564 l 1693 3556 l 1697 3548 l 1702 3539 l 1707 3530 l
- 1712 3522 l 1717 3515 l 1721 3509 l 1722 3507 l 1723 3505 l
- 1724 3502 l 1725 3500 l 1726 3498 l 1726 3496 l 1726 3494 l
- 1726 3493 l 1726 3491 l 1725 3489 l 1724 3487 l 1722 3486 l
- 1720 3485 l 1718 3483 l 1716 3482 l 1713 3481 l 1709 3480 l
- 1706 3479 l 1702 3478 l 1697 3477 l 1689 3476 l 1679 3475 l
- 1668 3473 l 1654 3471 l 1639 3469 l 1623 3466 l 1605 3462 l
- 1587 3457 l 1568 3452 l 1550 3446 l 1531 3439 l 1512 3431 l
- 1495 3423 l 1477 3414 l 1459 3405 l 1440 3394 l 1421 3384 l
- 1402 3373 l 1383 3362 l 1365 3352 l 1349 3343 l 1334 3336 l
- 1321 3329 l 1310 3325 l 1301 3322 l 1294 3321 l 1288 3322 l
- 1285 3325 l 1283 3330 l 1283 3337 l 1285 3346 l 1288 3356 l
- 1292 3368 l 1297 3380 l 1304 3394 l 1310 3407 l 1317 3421 l
- 1324 3435 l 1332 3448 l 1339 3462 l 1346 3477 l 1354 3492 l
- 1362 3507 l 1370 3523 l 1378 3538 l 1386 3554 l 1393 3569 l
- 1400 3583 l 1406 3597 l 1411 3609 l 1416 3620 l 1420 3631 l
- 1426 3645 l 1430 3660 l 1434 3674 l 1438 3687 l 1441 3699 l
- 1443 3709 l 1446 3718 l 1448 3725 l 1450 3732 l 1452 3737 l
- 1455 3743 l 1458 3747 l 1461 3751 l 1464 3754 l 1467 3755 l
- 1470 3756 l 1475 3756 l 1480 3754 l 1486 3750 l 1493 3746 l
- 1500 3740 l 1507 3733 l 1513 3728 l 1519 3722 l 1526 3715 l
- 1533 3709 l 1541 3703 l 1548 3699 l 1555 3695 l 1562 3694 l
- 1568 3693 l 1575 3695 l 1582 3697 l 1590 3702 l 1598 3707 l
- 1606 3713 l 1614 3719 l 1622 3726 l 1630 3733 l 1639 3740 l
- 1649 3748 l 1660 3757 l 1670 3766 l 1680 3774 l 1689 3782 l
- 1698 3789 l 1706 3795 l 1714 3802 l 1721 3810 l 1729 3817 l
- 1736 3825 l 1743 3833 l 1748 3840 l 1754 3848 l 1758 3856 l
- 1762 3865 l 1766 3874 l 1769 3885 l 1771 3895 l 1772 3904 l
- 1772 3913 l 1770 3921 l 1767 3929 l 1762 3936 l 1756 3944 l
- 1747 3952 l 1736 3959 l 1724 3966 l 1711 3973 l 1696 3980 l
- 1687 3984 l 1677 3988 l 1666 3992 l 1654 3996 l 1641 4000 l
- 1628 4004 l 1613 4008 l 1598 4011 l 1582 4014 l 1566 4016 l
- 1551 4017 l 1535 4018 l 1519 4018 l 1503 4018 l 1487 4017 l
- 1470 4015 l 1453 4012 l 1435 4008 l 1416 4004 l 1398 4000 l
- 1380 3995 l 1362 3989 l 1346 3984 l 1331 3978 l 1318 3972 l
- 1306 3967 l 1297 3962 l 1289 3957 l 1284 3953 l 1280 3950 l
- 1277 3946 l 1274 3943 l 1272 3940 l 1271 3936 l 1270 3933 l
- 1270 3930 l 1270 3927 l 1271 3923 l 1273 3920 l 1274 3917 l
- 1277 3914 l 1279 3911 l 1282 3909 l 1285 3906 l 1288 3904 l
- 1291 3901 l 1294 3899 l 1297 3897 l 1305 3892 l 1313 3886 l
- 1321 3881 l 1329 3875 l 1336 3869 l 1343 3863 l 1348 3857 l
- 1352 3852 l 1354 3848 l 1355 3843 l 1356 3839 l 1356 3834 l
- 1356 3829 l 1354 3824 l 1351 3819 l 1348 3814 l 1343 3809 l
- 1338 3805 l 1331 3801 l 1323 3797 l 1314 3794 l 1304 3790 l
- 1292 3786 l 1278 3782 l 1263 3777 l 1247 3772 l 1229 3767 l
- 1212 3761 l 1194 3755 l 1176 3748 l 1159 3740 l 1141 3732 l
- 1126 3724 l 1111 3716 l 1095 3706 l 1079 3696 l 1062 3686 l
- 1046 3675 l 1029 3664 l 1014 3654 l 998 3644 l 984 3635 l
- 972 3627 l 960 3620 l 950 3614 l 941 3610 l 936 3608 l
- 932 3607 l 928 3606 l 924 3605 l 921 3605 l 917 3605 l
- 914 3605 l 912 3606 l 909 3607 l 907 3608 l 905 3610 l
- 903 3612 l 902 3615 l 901 3618 l 900 3621 l 900 3624 l
- 899 3628 l 899 3632 l 900 3636 l 900 3641 l 901 3645 l
- 902 3650 l 903 3655 l 905 3660 l 906 3665 l 908 3671 l
- 912 3681 l 916 3692 l 921 3705 l 928 3718 l 935 3733 l
- 943 3748 l 951 3764 l 961 3781 l 970 3797 l 980 3814 l
- 991 3830 l 1001 3846 l 1012 3862 l 1022 3878 l 1032 3891 l
- 1042 3905 l 1053 3919 l 1064 3934 l 1076 3948 l 1089 3963 l
- 1101 3978 l 1115 3993 l 1128 4008 l 1141 4022 l 1154 4035 l
- 1167 4047 l 1180 4059 l 1192 4069 l 1204 4079 l 1216 4088 l
- 1229 4098 l 1242 4107 l 1256 4115 l 1271 4123 l 1285 4131 l
- 1301 4138 l 1316 4144 l 1331 4150 l 1347 4155 l 1362 4159 l
- 1376 4163 l 1391 4167 l 1405 4170 l 1419 4173 l 1432 4175 l
- 1447 4177 l 1462 4180 l 1477 4182 l 1493 4184 l 1510 4185 l
- 1526 4186 l 1542 4187 l 1558 4188 l 1574 4188 l 1589 4188 l
- 1603 4187 l 1616 4186 l 1629 4185 l 1643 4183 l 1658 4180 l
- 1672 4177 l 1687 4173 l 1702 4168 l 1716 4163 l 1730 4158 l
- 1744 4152 l 1757 4146 l 1769 4141 l 1781 4135 l 1792 4130 l
- 1805 4124 l 1818 4117 l 1831 4110 l 1845 4103 l 1858 4096 l
- 1871 4089 l 1882 4082 l 1893 4076 l 1902 4071 l 1909 4066 l
- 1916 4062 l 1923 4057 l 1929 4053 l 1935 4050 l 1941 4047 l
- 1947 4046 l 1952 4045 l 1958 4045 l 1964 4046 l 1971 4049 l
- 1978 4052 l 1987 4057 l 1996 4064 l 2007 4071 l 2019 4080 l
- 2031 4089 l 2043 4099 l 2055 4109 l 2067 4120 l 2079 4130 l
- 2089 4139 l 2100 4148 l 2111 4158 l 2122 4168 l 2134 4178 l
- 2146 4189 l 2158 4199 l 2170 4210 l 2181 4220 l 2192 4229 l
- 2202 4238 l 2212 4246 l 2222 4254 l 2232 4262 l 2242 4271 l
- 2254 4280 l 2267 4290 l 2281 4300 l 2296 4312 l 2309 4322 l
- 2321 4331 l 2328 4336 l 2331 4339 l
- 2332 4339 l gs col31 1.00 shd ef gr gs col0 s gr 
-% Polyline
-n 2876 5202 m 2877 5203 l 2880 5207 l 2887 5217 l 2897 5231 l 2908 5246 l
- 2919 5259 l 2928 5271 l 2936 5281 l 2943 5289 l 2949 5296 l
- 2957 5304 l 2965 5312 l 2974 5320 l 2983 5327 l 2993 5334 l
- 3002 5341 l 3011 5347 l 3020 5352 l 3029 5358 l 3039 5364 l
- 3050 5370 l 3062 5377 l 3073 5383 l 3084 5389 l 3094 5393 l
- 3104 5398 l 3113 5401 l 3122 5405 l 3132 5408 l 3141 5411 l
- 3151 5413 l 3159 5415 l 3168 5417 l 3175 5419 l 3183 5421 l
- 3191 5423 l 3199 5424 l 3208 5426 l 3217 5428 l 3226 5430 l
- 3234 5431 l 3242 5432 l 3250 5433 l 3259 5434 l 3268 5435 l
- 3277 5436 l 3286 5436 l 3294 5436 l 3302 5437 l 3309 5437 l
- 3317 5437 l 3325 5436 l 3335 5436 l 3345 5435 l 3351 5434 l
-
- 3352 5434 l gs col0 s gr 
-% Polyline
-n 3161 5427 m 3162 5427 l 3166 5430 l 3176 5436 l 3192 5446 l 3211 5457 l
- 3231 5469 l 3249 5480 l 3266 5489 l 3280 5497 l 3293 5504 l
- 3303 5509 l 3314 5514 l 3325 5519 l 3336 5524 l 3347 5528 l
- 3359 5532 l 3370 5535 l 3381 5538 l 3392 5540 l 3402 5543 l
- 3412 5544 l 3422 5546 l 3432 5548 l 3442 5550 l 3454 5551 l
- 3466 5553 l 3478 5554 l 3491 5556 l 3503 5556 l 3514 5557 l
- 3525 5557 l 3536 5557 l 3546 5556 l 3556 5555 l 3566 5553 l
- 3577 5551 l 3588 5549 l 3599 5546 l 3610 5543 l 3620 5540 l
- 3630 5537 l 3640 5534 l 3650 5531 l 3661 5528 l 3672 5525 l
- 3683 5521 l 3695 5518 l 3707 5514 l 3719 5511 l 3731 5507 l
- 3741 5504 l 3752 5501 l 3762 5497 l 3773 5494 l 3784 5490 l
- 3796 5487 l 3808 5483 l 3820 5479 l 3833 5476 l 3845 5473 l
- 3856 5470 l 3868 5468 l 3879 5465 l 3892 5463 l 3905 5461 l
- 3919 5459 l 3934 5457 l 3949 5455 l 3963 5453 l 3977 5452 l
- 3990 5450 l 4002 5449 l 4015 5448 l 4027 5446 l 4041 5444 l
- 4055 5442 l 4069 5440 l 4083 5438 l 4097 5435 l 4111 5431 l
- 4125 5428 l 4138 5424 l 4149 5420 l 4160 5416 l 4173 5412 l
- 4186 5407 l 4199 5401 l 4213 5396 l 4226 5390 l 4239 5384 l
- 4252 5378 l 4265 5373 l 4276 5367 l 4288 5362 l 4301 5356 l
- 4314 5350 l 4328 5344 l 4342 5338 l 4356 5332 l 4370 5326 l
- 4383 5320 l 4395 5315 l 4407 5310 l 4418 5305 l 4429 5300 l
- 4441 5296 l 4452 5291 l 4464 5286 l 4476 5280 l 4487 5275 l
- 4498 5270 l 4508 5265 l 4517 5260 l 4525 5256 l 4535 5249 l
- 4545 5242 l 4554 5235 l 4564 5227 l 4573 5218 l 4582 5209 l
- 4590 5200 l 4597 5191 l 4603 5183 l 4609 5174 l 4616 5164 l
- 4624 5152 l 4633 5137 l 4643 5122 l 4651 5108 l 4658 5098 l
- 4661 5094 l
- 4661 5093 l gs col0 s gr 
-% Polyline
-n 2640 4897 m 2643 4902 l 2647 4907 l 2652 4912 l 2656 4917 l 2661 4921 l
- 2666 4925 l 2672 4928 l 2678 4931 l 2685 4934 l 2692 4936 l
- 2699 4938 l 2706 4939 l 2713 4940 l 2721 4941 l 2729 4942 l
- 2736 4943 l 2743 4944 l 2750 4944 l 2756 4945 l 2763 4946 l
- 2770 4947 l 2776 4947 l 2781 4948 l 2786 4947 l 2792 4947 l
- 2798 4946 l 2805 4945 l 2813 4943 l 2821 4942 l 2828 4940 l
- 2836 4939 l 2844 4937 l 2854 4935 l 2864 4933 l 2873 4930 l
- 2881 4928 l 2889 4925 l 2899 4921 l 2908 4916 l 2918 4911 l
- 2926 4905 l 2934 4899 l 2940 4894 l 2946 4889 l 2952 4883 l
- 2958 4876 l 2964 4870 l 2969 4863 l 2974 4856 l 2980 4849 l
- 2986 4841 l 2992 4832 l 2999 4822 l 3005 4813 l 3012 4805 l
- 3018 4796 l 3024 4787 l 3031 4778 l 3038 4770 l 3044 4762 l
- 3050 4756 l 3055 4751 l 3059 4745 l 3064 4740 l 3068 4736 l
- 3071 4731 l 3074 4727 l 3076 4722 l 3077 4715 l 3077 4708 l
- 3077 4701 l 3076 4695 l 3075 4689 l 3073 4682 l 3071 4674 l
- 3069 4667 l 3066 4661 l 3064 4656 l 3062 4650 l 3059 4644 l
- 3056 4639 l 3054 4633 l 3051 4628 l 3048 4623 l 3044 4617 l
- 3041 4611 l 3037 4605 l 3033 4599 l 3029 4593 l 3028 4591 l
- 3026 4589 l 3024 4587 l 3022 4585 l 3020 4583 l 3017 4582 l
- 3013 4581 l 3008 4581 l 3003 4582 l 2997 4584 l 2991 4586 l
- 2983 4589 l 2975 4593 l 2966 4598 l 2956 4605 l 2945 4612 l
- 2934 4619 l 2923 4627 l 2910 4637 l 2896 4647 l 2881 4658 l
- 2866 4670 l 2850 4683 l 2833 4697 l 2816 4710 l 2800 4724 l
- 2783 4738 l 2767 4751 l 2752 4764 l 2738 4776 l 2725 4788 l
- 2713 4799 l 2702 4809 l 2692 4818 l 2679 4830 l 2668 4841 l
- 2659 4851 l 2651 4860 l 2646 4868 l 2641 4875 l 2639 4880 l
- 2637 4885 l 2637 4889 l 2637 4892 l 2638 4895 l
- cp gs col20 1.00 shd ef gr gs col0 s gr 
-% Polyline
-n 2891 5190 m 2893 5191 l 2902 5194 l 2915 5198 l 2928 5203 l 2938 5206 l
- 2947 5209 l 2955 5212 l 2964 5215 l 2974 5218 l 2983 5221 l
- 2992 5224 l 3001 5226 l 3009 5228 l 3018 5230 l 3028 5231 l
- 3037 5232 l 3046 5234 l 3054 5235 l 3062 5235 l 3070 5236 l
- 3078 5237 l 3086 5237 l 3094 5238 l 3101 5238 l 3108 5239 l
- 3115 5239 l 3123 5239 l 3131 5239 l 3139 5239 l 3145 5239 l
- 3153 5239 l 3161 5239 l 3169 5239 l 3176 5239 l 3180 5238 l
- 3182 5238 l 3183 5238 l 3184 5238 l 3185 5237 l 3186 5237 l
- 3186 5236 l 3187 5236 l
- 3187 5235 l gs col0 s gr 
-% Polyline
-n 2468 6609 m 2462 6602 l 2456 6595 l 2448 6588 l 2440 6581 l 2432 6573 l
- 2423 6566 l 2415 6559 l 2408 6553 l 2400 6547 l 2391 6540 l
- 2382 6534 l 2373 6527 l 2363 6521 l 2353 6515 l 2344 6510 l
- 2335 6506 l 2325 6501 l 2314 6497 l 2303 6494 l 2290 6490 l
- 2278 6487 l 2265 6484 l 2253 6482 l 2242 6480 l 2232 6479 l
- 2222 6478 l 2212 6476 l 2201 6476 l 2190 6475 l 2178 6474 l
- 2167 6474 l 2155 6474 l 2144 6473 l 2134 6474 l 2122 6474 l
- 2111 6474 l 2098 6475 l 2085 6475 l 2071 6476 l 2058 6477 l
- 2044 6479 l 2031 6480 l 2018 6482 l 2006 6484 l 1996 6485 l
- 1985 6487 l 1974 6489 l 1963 6491 l 1951 6493 l 1938 6496 l
- 1926 6499 l 1913 6502 l 1900 6505 l 1887 6508 l 1875 6511 l
- 1862 6515 l 1851 6517 l 1839 6521 l 1826 6524 l 1813 6527 l
- 1799 6531 l 1785 6535 l 1770 6540 l 1755 6544 l 1740 6549 l
- 1726 6553 l 1711 6558 l 1697 6563 l 1684 6567 l 1671 6572 l
- 1656 6578 l 1640 6584 l 1624 6590 l 1608 6596 l 1592 6603 l
- 1575 6611 l 1560 6618 l 1545 6625 l 1531 6631 l 1519 6637 l
- 1508 6643 l 1498 6649 l 1484 6657 l 1472 6665 l 1461 6673 l
- 1450 6682 l 1442 6690 l 1435 6697 l 1429 6704 l 1424 6710 l
- 1418 6718 l 1413 6727 l 1409 6737 l 1406 6747 l 1404 6757 l
- 1403 6767 l 1403 6775 l 1403 6783 l 1404 6793 l 1406 6803 l
- 1408 6813 l 1410 6824 l 1412 6833 l 1415 6843 l 1418 6852 l
- 1421 6861 l 1425 6871 l 1430 6881 l 1435 6891 l 1441 6901 l
- 1446 6910 l 1453 6918 l 1459 6925 l 1467 6933 l 1476 6941 l
- 1486 6949 l 1496 6956 l 1507 6963 l 1518 6969 l 1529 6975 l
- 1538 6979 l 1548 6984 l 1558 6988 l 1570 6992 l 1582 6996 l
- 1594 7000 l 1606 7004 l 1618 7007 l 1630 7010 l 1642 7013 l
- 1654 7015 l 1667 7017 l 1680 7019 l 1695 7021 l 1710 7022 l
- 1726 7024 l 1741 7025 l 1756 7026 l 1770 7027 l 1785 7028 l
- 1796 7028 l 1809 7029 l 1822 7029 l 1835 7030 l 1849 7030 l
- 1863 7030 l 1877 7031 l 1891 7031 l 1904 7031 l 1916 7032 l
- 1928 7032 l 1939 7033 l 1952 7033 l 1965 7033 l 1979 7034 l
- 1992 7034 l 2006 7035 l 2020 7035 l 2032 7036 l 2044 7036 l
- 2056 7037 l 2067 7037 l 2077 7037 l 2088 7037 l 2099 7038 l
- 2111 7038 l 2123 7038 l 2136 7038 l 2148 7038 l 2160 7038 l
- 2172 7038 l 2183 7038 l 2191 7038 l 2200 7038 l 2209 7037 l
- 2219 7036 l 2229 7035 l 2240 7033 l 2251 7029 l 2262 7025 l
- 2273 7020 l 2284 7013 l 2295 7006 l 2306 6997 l 2317 6987 l
- 2328 6976 l 2337 6964 l 2347 6951 l 2357 6937 l 2367 6922 l
- 2377 6905 l 2388 6887 l 2398 6868 l 2408 6849 l 2418 6830 l
- 2428 6811 l 2437 6793 l 2445 6775 l 2452 6759 l 2458 6743 l
- 2464 6729 l 2469 6717 l 2474 6701 l 2478 6687 l 2481 6674 l
- 2483 6663 l 2483 6653 l 2483 6643 l 2482 6635 l 2480 6628 l
- 2478 6622 l 2475 6617 l 2472 6613 l
- cp gs col7 1.00 shd ef gr gs col0 s gr 
-% Polyline
-n 4102 4658 m 4100 4659 l 4092 4665 l 4080 4673 l 4068 4681 l 4059 4686 l
- 4051 4690 l 4044 4693 l 4036 4696 l 4027 4698 l 4018 4700 l
- 4009 4701 l 4001 4702 l 3994 4703 l 3986 4703 l 3978 4704 l
- 3969 4704 l 3960 4705 l 3952 4705 l 3944 4705 l 3936 4706 l
- 3927 4706 l 3917 4706 l 3907 4706 l 3897 4705 l 3888 4704 l
- 3880 4703 l 3871 4701 l 3861 4699 l 3850 4696 l 3839 4693 l
- 3829 4690 l 3819 4686 l 3811 4683 l 3802 4680 l 3793 4676 l
- 3783 4672 l 3773 4668 l 3764 4663 l 3755 4658 l 3746 4654 l
- 3737 4648 l 3728 4642 l 3719 4636 l 3709 4629 l 3699 4622 l
- 3690 4615 l 3682 4609 l 3674 4603 l 3667 4597 l 3659 4591 l
- 3651 4585 l 3643 4579 l 3635 4573 l 3627 4567 l 3619 4562 l
- 3611 4557 l 3603 4552 l 3594 4547 l 3585 4541 l 3575 4536 l
- 3564 4530 l 3554 4525 l 3544 4521 l 3535 4516 l 3525 4512 l
- 3515 4507 l 3504 4503 l 3492 4499 l 3480 4494 l 3468 4490 l
- 3456 4487 l 3445 4484 l 3435 4481 l 3425 4479 l 3414 4477 l
- 3403 4475 l 3391 4473 l 3379 4471 l 3367 4469 l 3356 4468 l
- 3345 4466 l 3335 4465 l 3325 4464 l 3314 4464 l 3303 4463 l
- 3292 4462 l 3281 4462 l 3270 4462 l 3259 4462 l 3248 4462 l
- 3238 4463 l 3229 4463 l 3217 4465 l 3204 4466 l 3192 4468 l
- 3179 4471 l 3167 4474 l 3156 4476 l 3146 4479 l 3137 4482 l
- 3129 4485 l 3122 4489 l 3114 4493 l 3106 4497 l 3099 4502 l
- 3091 4506 l 3083 4511 l 3075 4517 l 3068 4521 l 3060 4526 l
- 3050 4532 l 3039 4539 l 3025 4547 l 3010 4556 l 2996 4565 l
- 2986 4571 l 2982 4574 l
- 2981 4574 l gs col0 s gr 
-% Polyline
-n 2940 2986 m 2939 2985 l 2932 2981 l 2920 2973 l 2905 2963 l 2891 2954 l
- 2879 2947 l 2869 2941 l 2859 2937 l 2849 2933 l 2839 2930 l
- 2827 2927 l 2816 2924 l 2804 2922 l 2792 2920 l 2781 2919 l
- 2770 2918 l 2760 2918 l 2748 2917 l 2736 2918 l 2724 2918 l
- 2712 2919 l 2700 2921 l 2689 2923 l 2679 2925 l 2669 2928 l
- 2659 2932 l 2648 2936 l 2637 2941 l 2627 2946 l 2617 2952 l
- 2608 2957 l 2601 2963 l 2593 2969 l 2586 2976 l 2579 2983 l
- 2572 2991 l 2566 2999 l 2560 3008 l 2556 3016 l 2552 3024 l
- 2548 3033 l 2545 3042 l 2542 3053 l 2540 3063 l 2538 3074 l
- 2536 3085 l 2535 3095 l 2534 3105 l 2534 3114 l 2534 3124 l
- 2534 3135 l 2534 3145 l 2536 3156 l 2537 3166 l 2540 3175 l
- 2542 3184 l 2546 3193 l 2550 3202 l 2555 3212 l 2560 3222 l
- 2567 3231 l 2573 3240 l 2579 3248 l 2586 3255 l 2592 3262 l
- 2599 3268 l 2607 3275 l 2616 3281 l 2624 3288 l 2632 3293 l
- 2640 3298 l 2648 3303 l 2656 3307 l 2664 3311 l 2673 3315 l
- 2683 3319 l 2693 3323 l 2702 3326 l 2712 3329 l 2721 3331 l
- 2730 3333 l 2740 3335 l 2750 3336 l 2762 3338 l 2773 3339 l
- 2783 3340 l 2794 3340 l 2803 3341 l 2812 3341 l 2822 3341 l
- 2832 3342 l 2842 3342 l 2852 3341 l 2862 3341 l 2871 3341 l
- 2880 3340 l 2889 3339 l 2898 3339 l 2907 3337 l 2917 3336 l
- 2926 3335 l 2935 3334 l 2944 3332 l 2951 3331 l 2961 3329 l
- 2970 3328 l 2980 3326 l 2989 3324 l 2997 3323 l 3005 3323 l
- 3012 3322 l 3019 3322 l 3026 3323 l 3033 3324 l 3040 3326 l
- 3047 3329 l 3053 3332 l 3061 3336 l 3070 3340 l 3079 3344 l
- 3088 3348 l 3097 3350 l 3107 3352 l 3117 3353 l 3129 3352 l
- 3140 3352 l 3150 3351 l 3159 3349 l 3167 3348 l 3175 3346 l
- 3182 3343 l 3188 3340 l 3193 3336 l 3197 3331 l 3200 3325 l
- 3203 3317 l 3205 3308 l 3206 3298 l 3206 3287 l 3206 3278 l
- 3205 3268 l 3204 3257 l 3201 3246 l 3198 3235 l 3195 3225 l
- 3191 3217 l 3187 3210 l 3181 3203 l 3173 3195 l 3164 3187 l
- 3158 3182 l
- 3157 3181 l gs col0 s gr 
-% Polyline
-n 3309 2031 m 3318 2017 l 3328 2004 l 3338 1992 l 3349 1979 l 3360 1967 l
- 3371 1955 l 3382 1943 l 3394 1932 l 3405 1922 l 3417 1913 l
- 3428 1904 l 3440 1895 l 3452 1886 l 3466 1878 l 3480 1869 l
- 3495 1861 l 3511 1853 l 3528 1845 l 3544 1839 l 3561 1834 l
- 3577 1830 l 3592 1828 l 3607 1828 l 3621 1829 l 3632 1831 l
- 3644 1835 l 3656 1839 l 3668 1845 l 3679 1853 l 3691 1861 l
- 3702 1871 l 3713 1882 l 3723 1893 l 3733 1904 l 3741 1916 l
- 3749 1928 l 3756 1940 l 3762 1952 l 3767 1965 l 3772 1978 l
- 3777 1991 l 3781 2006 l 3785 2021 l 3788 2037 l 3791 2054 l
- 3793 2071 l 3795 2088 l 3797 2106 l 3798 2123 l 3798 2140 l
- 3799 2157 l 3799 2174 l 3799 2189 l 3799 2205 l 3798 2222 l
- 3798 2239 l 3797 2258 l 3796 2277 l 3795 2296 l 3793 2316 l
- 3792 2336 l 3790 2356 l 3787 2376 l 3785 2395 l 3783 2414 l
- 3780 2433 l 3777 2451 l 3774 2469 l 3770 2486 l 3767 2504 l
- 3763 2522 l 3758 2541 l 3753 2560 l 3748 2580 l 3743 2599 l
- 3737 2619 l 3731 2638 l 3724 2657 l 3718 2676 l 3711 2693 l
- 3705 2710 l 3698 2726 l 3692 2741 l 3685 2756 l 3677 2773 l
- 3669 2789 l 3661 2805 l 3651 2821 l 3641 2837 l 3631 2853 l
- 3620 2869 l 3609 2884 l 3597 2899 l 3586 2912 l 3574 2925 l
- 3562 2936 l 3551 2947 l 3539 2957 l 3527 2967 l 3514 2976 l
- 3500 2985 l 3486 2993 l 3471 3001 l 3455 3009 l 3439 3016 l
- 3422 3022 l 3405 3027 l 3389 3031 l 3373 3034 l 3358 3036 l
- 3343 3037 l 3328 3038 l 3313 3037 l 3298 3036 l 3283 3033 l
- 3267 3030 l 3251 3025 l 3235 3019 l 3219 3013 l 3204 3005 l
- 3189 2997 l 3175 2988 l 3162 2979 l 3150 2969 l 3139 2958 l
- 3129 2948 l 3120 2936 l 3111 2924 l 3103 2911 l 3095 2896 l
- 3087 2881 l 3080 2865 l 3074 2849 l 3068 2832 l 3063 2816 l
- 3059 2799 l 3055 2784 l 3052 2768 l 3049 2754 l 3047 2740 l
- 3045 2726 l 3044 2712 l 3043 2697 l 3042 2683 l 3042 2667 l
- 3042 2652 l 3043 2636 l 3044 2620 l 3046 2604 l 3048 2588 l
- 3051 2572 l 3055 2557 l 3058 2542 l 3062 2526 l 3066 2512 l
- 3071 2498 l 3076 2483 l 3081 2467 l 3088 2451 l 3094 2433 l
- 3101 2416 l 3109 2398 l 3116 2379 l 3124 2361 l 3132 2344 l
- 3140 2326 l 3148 2309 l 3156 2293 l 3164 2277 l 3172 2262 l
- 3180 2247 l 3188 2231 l 3196 2216 l 3204 2200 l 3213 2184 l
- 3222 2168 l 3232 2152 l 3241 2136 l 3250 2120 l 3260 2105 l
- 3269 2091 l 3277 2077 l 3286 2065 l 3294 2053 l 3301 2041 l
-
- cp gs col7 1.00 shd ef gr gs col0 s gr 
-% Polyline
-45.000 slw
-n 2498 3459 m 2499 3459 l 2505 3459 l 2517 3459 l 2532 3460 l 2545 3461 l
- 2555 3461 l 2563 3462 l 2571 3464 l 2579 3467 l 2587 3471 l
- 2595 3476 l 2603 3481 l 2610 3488 l 2617 3495 l 2623 3501 l
- 2629 3507 l 2636 3514 l 2643 3522 l 2651 3530 l 2658 3538 l
- 2665 3546 l 2672 3553 l 2679 3560 l 2686 3568 l 2693 3576 l
- 2701 3584 l 2708 3592 l 2716 3599 l 2723 3606 l 2730 3613 l
- 2737 3620 l 2744 3627 l 2752 3634 l 2761 3642 l 2769 3649 l
- 2777 3657 l 2785 3664 l 2792 3672 l 2799 3679 l 2807 3687 l
- 2815 3695 l 2824 3704 l 2833 3713 l 2841 3722 l 2850 3730 l
- 2859 3737 l 2866 3743 l 2874 3749 l 2883 3756 l 2892 3762 l
- 2902 3769 l 2911 3775 l 2921 3781 l 2931 3787 l 2940 3793 l
- 2950 3798 l 2959 3803 l 2969 3809 l 2979 3814 l 2990 3820 l
- 3001 3826 l 3012 3831 l 3024 3836 l 3035 3841 l 3045 3845 l
- 3056 3849 l 3066 3853 l 3077 3856 l 3089 3859 l 3101 3862 l
- 3114 3865 l 3127 3868 l 3141 3870 l 3154 3872 l 3166 3874 l
- 3179 3876 l 3189 3877 l 3201 3878 l 3212 3879 l 3225 3879 l
- 3238 3880 l 3251 3880 l 3264 3881 l 3277 3881 l 3289 3881 l
- 3301 3881 l 3312 3880 l 3323 3880 l 3336 3879 l 3349 3878 l
- 3362 3876 l 3376 3875 l 3390 3872 l 3404 3870 l 3417 3867 l
- 3430 3864 l 3442 3860 l 3454 3857 l 3466 3852 l 3478 3848 l
- 3491 3843 l 3504 3837 l 3518 3831 l 3531 3825 l 3544 3818 l
- 3556 3813 l 3568 3807 l 3579 3802 l 3590 3796 l 3601 3791 l
- 3612 3785 l 3624 3780 l 3636 3774 l 3647 3768 l 3659 3762 l
- 3670 3756 l 3681 3750 l 3692 3744 l 3703 3738 l 3715 3731 l
- 3727 3724 l 3739 3717 l 3751 3709 l 3764 3701 l 3775 3693 l
- 3785 3686 l 3795 3680 l 3803 3673 l 3812 3666 l 3821 3658 l
- 3829 3650 l 3837 3643 l 3844 3637 l 3852 3631 l 3859 3626 l
- 3866 3622 l 3873 3619 l 3881 3617 l 3891 3614 l 3901 3613 l
- 3910 3612 l 3920 3611 l 3928 3610 l 3936 3610 l 3945 3610 l
- 3954 3609 l 3964 3609 l 3975 3609 l 3982 3609 l
- 3983 3609 l gs col0 s gr 
-% Polyline
-30.000 slw
-n 2870 2736 m 2876 2727 l 2882 2719 l 2888 2710 l 2895 2701 l 2901 2690 l
- 2907 2679 l 2913 2667 l 2919 2654 l 2925 2640 l 2931 2625 l
- 2935 2612 l 2940 2599 l 2945 2585 l 2950 2569 l 2956 2552 l
- 2962 2534 l 2967 2515 l 2973 2496 l 2979 2477 l 2985 2459 l
- 2991 2440 l 2996 2423 l 3001 2406 l 3006 2390 l 3011 2374 l
- 3016 2359 l 3021 2343 l 3026 2327 l 3031 2311 l 3036 2295 l
- 3041 2279 l 3046 2264 l 3051 2249 l 3056 2235 l 3061 2222 l
- 3065 2210 l 3069 2199 l 3073 2188 l 3078 2175 l 3083 2163 l
- 3088 2151 l 3092 2139 l 3097 2127 l 3102 2114 l 3107 2102 l
- 3112 2091 l 3117 2080 l 3121 2070 l 3125 2060 l 3129 2051 l
- 3133 2039 l 3138 2028 l 3142 2016 l 3147 2003 l 3152 1991 l
- 3156 1979 l 3160 1968 l 3164 1957 l 3167 1948 l 3170 1939 l
- 3173 1929 l 3176 1919 l 3179 1909 l 3180 1899 l 3181 1889 l
- 3180 1879 l 3179 1869 l 3176 1859 l 3173 1851 l 3170 1844 l
- 3166 1836 l 3161 1827 l 3155 1819 l 3149 1811 l 3141 1803 l
- 3133 1796 l 3125 1790 l 3116 1785 l 3107 1782 l 3098 1780 l
- 3088 1778 l 3077 1778 l 3066 1780 l 3053 1782 l 3040 1785 l
- 3027 1789 l 3014 1794 l 3001 1800 l 2989 1805 l 2978 1811 l
- 2967 1816 l 2958 1822 l 2947 1829 l 2936 1836 l 2926 1843 l
- 2916 1851 l 2906 1860 l 2896 1870 l 2886 1880 l 2876 1891 l
- 2866 1902 l 2856 1915 l 2848 1924 l 2840 1934 l 2831 1946 l
- 2822 1958 l 2812 1971 l 2801 1986 l 2790 2000 l 2780 2016 l
- 2769 2031 l 2758 2047 l 2748 2062 l 2738 2077 l 2729 2092 l
- 2720 2107 l 2711 2122 l 2702 2137 l 2693 2153 l 2684 2169 l
- 2675 2185 l 2666 2202 l 2658 2219 l 2650 2235 l 2642 2251 l
- 2635 2265 l 2628 2279 l 2622 2292 l 2616 2304 l 2611 2315 l
- 2605 2327 l 2600 2339 l 2595 2350 l 2591 2361 l 2586 2373 l
- 2582 2385 l 2578 2396 l 2575 2408 l 2572 2421 l 2569 2433 l
- 2566 2446 l 2564 2460 l 2562 2472 l 2560 2486 l 2558 2500 l
- 2557 2516 l 2555 2533 l 2554 2551 l 2553 2568 l 2552 2586 l
- 2551 2604 l 2551 2621 l 2552 2637 l 2552 2652 l 2553 2666 l
- 2555 2680 l 2558 2697 l 2562 2713 l 2567 2728 l 2573 2742 l
- 2579 2756 l 2586 2768 l 2593 2779 l 2600 2788 l 2607 2796 l
- 2614 2803 l 2622 2810 l 2630 2817 l 2639 2824 l 2648 2829 l
- 2658 2834 l 2667 2838 l 2677 2841 l 2686 2843 l 2696 2845 l
- 2708 2845 l 2720 2845 l 2733 2844 l 2747 2841 l 2760 2838 l
- 2772 2832 l 2783 2826 l 2792 2820 l 2802 2813 l 2811 2804 l
- 2821 2795 l 2830 2785 l 2839 2774 l 2848 2764 l 2856 2754 l
- 2863 2744 l
- cp gs col7 1.00 shd ef gr gs col0 s gr 
-% Polyline
-n 3489 1649 m 3490 1649 l 3494 1646 l 3504 1640 l 3520 1632 l 3539 1622 l
- 3559 1611 l 3578 1601 l 3596 1593 l 3612 1586 l 3626 1581 l
- 3639 1577 l 3652 1573 l 3665 1571 l 3678 1569 l 3692 1568 l
- 3706 1568 l 3721 1568 l 3736 1569 l 3751 1571 l 3766 1573 l
- 3780 1576 l 3793 1580 l 3805 1584 l 3817 1588 l 3829 1593 l
- 3840 1599 l 3852 1605 l 3863 1612 l 3875 1621 l 3886 1630 l
- 3897 1640 l 3907 1650 l 3917 1661 l 3925 1672 l 3933 1684 l
- 3940 1696 l 3946 1707 l 3952 1719 l 3957 1733 l 3962 1748 l
- 3968 1765 l 3974 1785 l 3980 1807 l 3986 1830 l 3992 1852 l
- 3998 1873 l 4002 1888 l 4004 1897 l 4005 1901 l
- 4005 1902 l gs col0 s gr 
-% Polyline
-n 3278 1680 m 3278 1679 l 3277 1674 l 3274 1664 l 3270 1650 l 3265 1634 l
- 3260 1620 l 3256 1607 l 3251 1598 l 3246 1589 l 3241 1583 l
- 3234 1576 l 3227 1571 l 3219 1566 l 3209 1561 l 3199 1557 l
- 3188 1553 l 3177 1550 l 3165 1548 l 3154 1546 l 3143 1545 l
- 3132 1544 l 3120 1543 l 3107 1543 l 3093 1544 l 3079 1545 l
- 3064 1547 l 3050 1550 l 3037 1554 l 3024 1558 l 3011 1563 l
- 3001 1569 l 2991 1575 l 2980 1582 l 2969 1590 l 2957 1599 l
- 2945 1609 l 2933 1620 l 2920 1631 l 2908 1643 l 2896 1654 l
- 2885 1666 l 2873 1678 l 2864 1688 l 2854 1697 l 2844 1708 l
- 2834 1719 l 2823 1730 l 2812 1742 l 2801 1755 l 2789 1768 l
- 2778 1782 l 2766 1795 l 2755 1809 l 2744 1823 l 2734 1836 l
- 2724 1849 l 2714 1862 l 2705 1876 l 2696 1889 l 2687 1903 l
- 2678 1917 l 2669 1932 l 2660 1948 l 2651 1964 l 2642 1980 l
- 2633 1997 l 2624 2014 l 2616 2030 l 2608 2046 l 2601 2062 l
- 2594 2077 l 2588 2092 l 2582 2106 l 2576 2119 l 2570 2134 l
- 2564 2150 l 2558 2165 l 2553 2181 l 2547 2197 l 2541 2213 l
- 2536 2229 l 2531 2244 l 2526 2260 l 2521 2274 l 2517 2288 l
- 2512 2301 l 2508 2313 l 2504 2325 l 2499 2338 l 2495 2352 l
- 2489 2366 l 2484 2380 l 2479 2394 l 2473 2409 l 2467 2423 l
- 2462 2437 l 2456 2451 l 2451 2464 l 2446 2477 l 2441 2490 l
- 2437 2503 l 2432 2517 l 2426 2532 l 2420 2549 l 2413 2568 l
- 2406 2590 l 2398 2613 l 2391 2635 l 2385 2652 l 2381 2664 l
- 2379 2669 l
- 2379 2670 l gs col0 s gr 
-% Polyline
-n 4036 5613 m 4048 5621 l 4060 5629 l 4071 5637 l 4083 5644 l 4095 5652 l
- 4106 5659 l 4117 5666 l 4128 5673 l 4138 5679 l 4147 5685 l
- 4157 5691 l 4165 5696 l 4176 5703 l 4187 5710 l 4198 5717 l
- 4210 5724 l 4221 5732 l 4233 5739 l 4245 5747 l 4255 5754 l
- 4265 5760 l 4275 5767 l 4284 5773 l 4294 5779 l 4304 5785 l
- 4314 5792 l 4323 5798 l 4333 5805 l 4342 5810 l 4350 5816 l
- 4357 5820 l 4363 5824 l 4373 5831 l 4382 5836 l 4391 5841 l
- 4399 5845 l 4406 5848 l 4412 5850 l 4419 5851 l 4426 5851 l
- 4433 5851 l 4440 5850 l 4446 5848 l 4451 5846 l 4457 5844 l
- 4462 5840 l 4467 5837 l 4471 5834 l 4475 5830 l 4479 5826 l
- 4482 5821 l 4486 5816 l 4490 5811 l 4493 5806 l 4497 5801 l
- 4501 5796 l 4506 5790 l 4509 5785 l 4512 5780 l 4516 5774 l
- 4519 5767 l 4521 5760 l 4523 5753 l 4524 5747 l 4524 5740 l
- 4524 5734 l 4523 5727 l 4522 5719 l 4521 5713 l 4520 5707 l
- 4518 5702 l 4515 5697 l 4512 5691 l 4508 5686 l 4504 5682 l
- 4499 5677 l 4494 5673 l 4489 5668 l 4482 5663 l 4475 5658 l
- 4468 5653 l 4461 5648 l 4454 5643 l 4446 5638 l 4437 5632 l
- 4427 5626 l 4417 5620 l 4408 5614 l 4400 5609 l 4391 5604 l
- 4382 5598 l 4371 5591 l 4361 5584 l 4351 5578 l 4341 5571 l
- 4332 5565 l 4322 5559 l 4313 5553 l 4303 5546 l 4292 5540 l
- 4283 5534 l 4274 5528 l 4266 5523 l 4258 5519 l 4252 5515 l
- 4245 5511 l 4238 5507 l 4231 5503 l 4224 5499 l 4217 5495 l
- 4210 5491 l 4203 5486 l 4195 5480 l 4186 5474 l 4177 5468 l
- 4167 5460 l 4158 5453 l 4149 5447 l 4142 5442 l 4136 5437 l
- 4131 5434 l 4127 5431 l 4124 5429 l 4120 5428 l 4116 5428 l
- 4112 5428 l 4106 5428 l 4100 5429 l 4093 5430 l 4085 5431 l
- 4076 5433 l 4066 5434 l 4054 5436 l 4042 5438 l 4029 5440 l
- 4017 5441 l 4005 5443 l 3993 5445 l 3981 5447 l 3969 5449 l
- 3957 5450 l 3944 5452 l 3932 5455 l 3920 5457 l 3910 5459 l
- 3900 5460 l 3892 5462 l 3885 5464 l 3882 5465 l 3880 5465 l
- 3878 5466 l 3876 5467 l 3874 5468 l 3872 5468 l 3871 5469 l
- 3869 5470 l 3868 5471 l 3867 5472 l 3867 5474 l 3866 5475 l
- 3866 5476 l 3866 5478 l 3866 5479 l 3867 5481 l 3868 5483 l
- 3869 5485 l 3870 5487 l 3872 5489 l 3874 5491 l 3876 5493 l
- 3878 5496 l 3881 5498 l 3884 5501 l 3887 5504 l 3894 5510 l
- 3904 5517 l 3914 5526 l 3926 5535 l 3939 5545 l 3954 5555 l
- 3968 5566 l 3983 5576 l 3997 5586 l 4011 5596 l 4024 5605 l
-
- cp gs col31 1.00 shd ef gr gs col0 s gr 
-7.500 slw
-% Rotated Ellipse
-gs
-3291 2663 tr
--345.998 rot
-n 0 0 179 279 0 360 DrawEllipse 345.998 rot
-gs 0.00 setgray ef gr gs col0 s gr
-gr
-
-% Polyline
-30.000 slw
-n 2303 4762 m 2309 4770 l 2316 4777 l 2323 4784 l 2330 4792 l 2337 4799 l
- 2344 4805 l 2350 4811 l 2356 4816 l 2364 4823 l 2372 4830 l
- 2381 4837 l 2390 4843 l 2399 4848 l 2408 4852 l 2415 4854 l
- 2423 4857 l 2432 4859 l 2441 4861 l 2451 4863 l 2461 4864 l
- 2471 4866 l 2480 4867 l 2489 4867 l 2500 4868 l 2510 4869 l
- 2522 4869 l 2533 4869 l 2543 4869 l 2554 4869 l 2563 4868 l
- 2572 4867 l 2582 4866 l 2592 4865 l 2602 4863 l 2613 4861 l
- 2623 4859 l 2633 4857 l 2642 4855 l 2651 4853 l 2661 4850 l
- 2672 4848 l 2682 4845 l 2693 4842 l 2703 4839 l 2712 4836 l
- 2720 4833 l 2728 4831 l 2736 4827 l 2744 4824 l 2751 4820 l
- 2759 4816 l 2766 4812 l 2773 4807 l 2779 4802 l 2785 4797 l
- 2792 4791 l 2799 4784 l 2807 4777 l 2815 4769 l 2823 4760 l
- 2830 4752 l 2838 4744 l 2844 4737 l 2851 4730 l 2858 4723 l
- 2865 4715 l 2873 4706 l 2880 4698 l 2888 4690 l 2895 4682 l
- 2901 4674 l 2908 4667 l 2915 4658 l 2923 4649 l 2931 4640 l
- 2939 4630 l 2947 4621 l 2953 4612 l 2960 4604 l 2965 4597 l
- 2970 4589 l 2975 4582 l 2979 4574 l 2984 4566 l 2987 4558 l
- 2990 4551 l 2993 4544 l 2994 4537 l 2996 4530 l 2996 4522 l
- 2997 4514 l 2997 4506 l 2997 4497 l 2996 4488 l 2996 4480 l
- 2995 4472 l 2994 4464 l 2993 4455 l 2991 4446 l 2989 4437 l
- 2987 4427 l 2984 4418 l 2981 4410 l 2977 4403 l 2972 4395 l
- 2967 4388 l 2961 4381 l 2954 4373 l 2947 4367 l 2939 4360 l
- 2932 4354 l 2926 4349 l 2919 4344 l 2912 4340 l 2904 4335 l
- 2896 4330 l 2888 4326 l 2881 4322 l 2873 4318 l 2866 4315 l
- 2859 4311 l 2851 4308 l 2843 4305 l 2834 4302 l 2825 4300 l
- 2817 4297 l 2809 4295 l 2801 4294 l 2793 4293 l 2785 4292 l
- 2776 4291 l 2767 4291 l 2758 4291 l 2750 4291 l 2742 4292 l
- 2734 4293 l 2724 4294 l 2714 4296 l 2704 4298 l 2693 4302 l
- 2684 4305 l 2676 4309 l 2672 4312 l 2667 4315 l 2661 4320 l
- 2654 4326 l 2645 4333 l 2635 4342 l 2623 4353 l 2609 4366 l
- 2593 4380 l 2575 4397 l 2564 4407 l 2552 4418 l 2538 4430 l
- 2524 4443 l 2509 4457 l 2493 4472 l 2477 4487 l 2460 4503 l
- 2443 4519 l 2426 4535 l 2410 4552 l 2394 4567 l 2380 4582 l
- 2366 4597 l 2353 4610 l 2342 4623 l 2331 4635 l 2322 4646 l
- 2314 4658 l 2306 4668 l 2300 4679 l 2295 4688 l 2291 4698 l
- 2288 4706 l 2287 4714 l 2286 4722 l 2286 4729 l 2287 4735 l
- 2289 4741 l 2291 4746 l 2294 4750 l 2297 4755 l 2300 4759 l
-
- cp gs col20 1.00 shd ef gr gs col0 s gr 
-7.500 slw
-% Rotated Ellipse
-gs
-2748 2543 tr
--345.998 rot
-n 0 0 130 238 0 360 DrawEllipse 345.998 rot
-gs 0.00 setgray ef gr gs col0 s gr
-gr
-
-% Rotated Ellipse
-gs
-2738 2495 tr
--350.003 rot
-n 0 0 55 105 0 360 DrawEllipse 350.003 rot
-gs col7 1.00 shd ef gr gs col0 s gr
-gr
-
-% Polyline
-30.000 slw
-n 2288 6848 m 2292 6837 l 2298 6827 l 2305 6815 l 2313 6804 l 2322 6793 l
- 2332 6783 l 2342 6773 l 2351 6764 l 2360 6757 l 2369 6750 l
- 2378 6743 l 2386 6738 l 2395 6732 l 2403 6726 l 2413 6721 l
- 2422 6716 l 2430 6711 l 2439 6707 l 2448 6703 l 2456 6699 l
- 2465 6694 l 2474 6689 l 2484 6684 l 2495 6679 l 2506 6674 l
- 2518 6668 l 2529 6663 l 2540 6658 l 2550 6653 l 2560 6649 l
- 2570 6645 l 2580 6641 l 2591 6637 l 2602 6633 l 2614 6629 l
- 2626 6626 l 2637 6622 l 2648 6619 l 2659 6616 l 2670 6614 l
- 2681 6611 l 2692 6608 l 2705 6606 l 2718 6603 l 2731 6601 l
- 2744 6598 l 2757 6596 l 2770 6594 l 2782 6592 l 2794 6591 l
- 2805 6589 l 2817 6588 l 2829 6586 l 2842 6585 l 2855 6584 l
- 2868 6583 l 2880 6583 l 2892 6582 l 2903 6582 l 2914 6582 l
- 2925 6581 l 2936 6582 l 2948 6582 l 2960 6582 l 2972 6583 l
- 2985 6584 l 2997 6585 l 3008 6586 l 3020 6587 l 3031 6589 l
- 3041 6590 l 3053 6592 l 3065 6594 l 3077 6597 l 3090 6599 l
- 3102 6602 l 3114 6605 l 3126 6607 l 3136 6610 l 3146 6613 l
- 3158 6617 l 3170 6620 l 3182 6625 l 3195 6629 l 3207 6634 l
- 3218 6639 l 3228 6644 l 3238 6650 l 3248 6655 l 3258 6661 l
- 3268 6668 l 3279 6676 l 3290 6684 l 3300 6692 l 3309 6700 l
- 3318 6709 l 3325 6715 l 3332 6722 l 3339 6730 l 3346 6738 l
- 3353 6746 l 3360 6755 l 3367 6763 l 3373 6772 l 3378 6780 l
- 3383 6788 l 3389 6797 l 3394 6808 l 3399 6820 l 3404 6832 l
- 3409 6844 l 3413 6856 l 3416 6868 l 3420 6879 l 3422 6888 l
- 3424 6898 l 3426 6908 l 3428 6919 l 3430 6930 l 3432 6940 l
- 3433 6951 l 3435 6960 l 3436 6970 l 3437 6978 l 3437 6983 l
- 3437 6988 l 3437 6993 l 3436 6998 l 3435 7004 l 3433 7009 l
- 3431 7014 l 3427 7020 l 3422 7025 l 3417 7030 l 3410 7036 l
- 3402 7041 l 3393 7046 l 3382 7050 l 3371 7055 l 3358 7060 l
- 3346 7064 l 3333 7068 l 3319 7072 l 3303 7076 l 3287 7080 l
- 3268 7084 l 3248 7088 l 3227 7091 l 3205 7095 l 3182 7098 l
- 3157 7101 l 3133 7104 l 3107 7106 l 3081 7108 l 3056 7109 l
- 3030 7109 l 3004 7110 l 2978 7109 l 2952 7108 l 2926 7107 l
- 2902 7105 l 2877 7102 l 2852 7099 l 2826 7096 l 2800 7092 l
- 2773 7088 l 2746 7083 l 2718 7077 l 2690 7071 l 2662 7065 l
- 2634 7059 l 2607 7052 l 2581 7045 l 2556 7038 l 2531 7031 l
- 2508 7024 l 2486 7017 l 2466 7010 l 2447 7003 l 2429 6996 l
- 2413 6990 l 2398 6983 l 2381 6976 l 2366 6968 l 2352 6960 l
- 2339 6952 l 2328 6944 l 2318 6936 l 2309 6928 l 2302 6920 l
- 2296 6912 l 2291 6904 l 2288 6896 l 2285 6888 l 2284 6881 l
- 2283 6874 l 2283 6867 l 2284 6861 l 2286 6854 l
- cp gs col7 1.00 shd ef gr gs col0 s gr 
-% Polyline
-n 2232 4239 m 2224 4242 l 2216 4247 l 2207 4251 l 2198 4256 l 2190 4261 l
- 2183 4267 l 2176 4272 l 2169 4278 l 2162 4286 l 2154 4294 l
- 2147 4303 l 2140 4313 l 2135 4320 l 2130 4329 l 2125 4338 l
- 2119 4349 l 2114 4359 l 2110 4369 l 2106 4379 l 2104 4387 l
- 2101 4396 l 2099 4405 l 2098 4414 l 2097 4423 l 2096 4432 l
- 2096 4441 l 2096 4449 l 2095 4458 l 2095 4466 l 2095 4475 l
- 2095 4484 l 2095 4495 l 2095 4505 l 2096 4514 l 2096 4523 l
- 2098 4532 l 2099 4540 l 2102 4548 l 2105 4557 l 2109 4566 l
- 2114 4575 l 2119 4583 l 2125 4591 l 2131 4599 l 2138 4606 l
- 2147 4614 l 2156 4622 l 2166 4630 l 2176 4638 l 2186 4645 l
- 2196 4651 l 2204 4656 l 2213 4661 l 2222 4665 l 2231 4668 l
- 2240 4671 l 2250 4674 l 2260 4676 l 2269 4677 l 2279 4679 l
- 2289 4680 l 2300 4681 l 2312 4683 l 2325 4684 l 2338 4685 l
- 2351 4686 l 2362 4686 l 2373 4687 l 2384 4688 l 2395 4688 l
- 2407 4688 l 2418 4688 l 2430 4688 l 2442 4686 l 2452 4685 l
- 2463 4683 l 2472 4680 l 2481 4677 l 2490 4674 l 2500 4670 l
- 2510 4665 l 2521 4660 l 2530 4655 l 2540 4650 l 2548 4644 l
- 2557 4639 l 2567 4632 l 2577 4624 l 2587 4616 l 2597 4607 l
- 2606 4598 l 2614 4589 l 2620 4581 l 2626 4573 l 2631 4565 l
- 2635 4558 l 2639 4550 l 2642 4541 l 2645 4533 l 2647 4526 l
- 2648 4519 l 2650 4512 l 2651 4504 l 2653 4494 l 2654 4484 l
- 2654 4473 l 2654 4462 l 2653 4451 l 2651 4442 l 2649 4432 l
- 2647 4421 l 2644 4410 l 2641 4398 l 2637 4387 l 2633 4377 l
- 2630 4368 l 2626 4359 l 2621 4351 l 2616 4342 l 2610 4334 l
- 2604 4326 l 2597 4319 l 2591 4312 l 2584 4306 l 2577 4301 l
- 2571 4296 l 2563 4291 l 2554 4286 l 2544 4281 l 2533 4276 l
- 2521 4271 l 2509 4266 l 2496 4262 l 2483 4257 l 2471 4254 l
- 2458 4250 l 2444 4247 l 2429 4244 l 2413 4240 l 2397 4237 l
- 2381 4234 l 2365 4232 l 2351 4230 l 2337 4228 l 2325 4227 l
- 2314 4226 l 2299 4225 l 2286 4225 l 2274 4226 l 2263 4228 l
- 2253 4230 l 2245 4233 l 2238 4236 l
- cp gs col20 1.00 shd ef gr gs col0 s gr 
-7.500 slw
-% Rotated Ellipse
-gs
-3260 2603 tr
--350.003 rot
-n 0 0 55 105 0 360 DrawEllipse 350.003 rot
-gs col7 1.00 shd ef gr gs col0 s gr
-gr
-
-% Polyline
-30.000 slw
-n 2246 4048 m 2247 4040 l 2248 4030 l 2251 4020 l 2254 4009 l 2259 3999 l
- 2263 3989 l 2268 3983 l 2272 3976 l 2278 3969 l 2284 3963 l
- 2291 3957 l 2298 3951 l 2304 3946 l 2311 3941 l 2317 3937 l
- 2324 3932 l 2331 3928 l 2339 3924 l 2346 3920 l 2354 3916 l
- 2362 3913 l 2369 3911 l 2377 3908 l 2385 3906 l 2394 3903 l
- 2404 3901 l 2413 3899 l 2423 3898 l 2431 3896 l 2440 3896 l
- 2448 3895 l 2456 3894 l 2465 3894 l 2474 3893 l 2483 3893 l
- 2492 3893 l 2499 3893 l 2507 3892 l 2517 3892 l 2527 3892 l
- 2538 3891 l 2548 3891 l 2558 3891 l 2567 3891 l 2576 3891 l
- 2585 3892 l 2594 3893 l 2604 3895 l 2612 3897 l 2620 3899 l
- 2628 3901 l 2637 3905 l 2646 3909 l 2655 3913 l 2665 3919 l
- 2674 3925 l 2681 3929 l 2688 3935 l 2697 3941 l 2705 3948 l
- 2713 3955 l 2721 3962 l 2727 3969 l 2733 3975 l 2738 3981 l
- 2743 3988 l 2747 3996 l 2751 4003 l 2754 4011 l 2757 4019 l
- 2759 4026 l 2761 4033 l 2763 4040 l 2765 4048 l 2767 4057 l
- 2768 4066 l 2770 4076 l 2771 4085 l 2772 4095 l 2772 4105 l
- 2773 4115 l 2773 4125 l 2772 4137 l 2771 4149 l 2770 4161 l
- 2768 4173 l 2765 4184 l 2762 4193 l 2758 4202 l 2754 4211 l
- 2748 4220 l 2741 4228 l 2733 4236 l 2725 4243 l 2717 4250 l
- 2708 4255 l 2701 4259 l 2693 4263 l 2684 4267 l 2674 4270 l
- 2664 4274 l 2654 4277 l 2643 4280 l 2633 4282 l 2622 4284 l
- 2612 4286 l 2602 4287 l 2591 4288 l 2579 4289 l 2566 4290 l
- 2553 4291 l 2540 4292 l 2527 4292 l 2515 4292 l 2503 4292 l
- 2492 4292 l 2481 4291 l 2470 4291 l 2458 4290 l 2447 4289 l
- 2435 4287 l 2423 4285 l 2412 4283 l 2402 4281 l 2392 4278 l
- 2383 4275 l 2373 4270 l 2362 4265 l 2351 4259 l 2341 4251 l
- 2331 4243 l 2322 4235 l 2314 4227 l 2306 4219 l 2299 4211 l
- 2292 4202 l 2286 4192 l 2279 4182 l 2273 4172 l 2268 4162 l
- 2264 4153 l 2261 4145 l 2257 4135 l 2254 4125 l 2252 4115 l
- 2251 4106 l 2250 4098 l 2249 4091 l 2248 4085 l 2247 4078 l
- 2246 4071 l 2246 4063 l 2246 4056 l
- cp gs col20 1.00 shd ef gr gs col0 s gr 
-% Polyline
-n 1481 6669 m 1482 6670 l 1487 6673 l 1499 6680 l 1516 6690 l 1534 6700 l
- 1551 6710 l 1567 6719 l 1580 6726 l 1593 6732 l 1605 6737 l
- 1615 6741 l 1626 6745 l 1637 6749 l 1649 6752 l 1661 6756 l
- 1674 6759 l 1687 6762 l 1700 6765 l 1713 6767 l 1725 6770 l
- 1737 6771 l 1749 6773 l 1762 6775 l 1774 6776 l 1788 6778 l
- 1802 6779 l 1817 6780 l 1833 6781 l 1848 6782 l 1864 6783 l
- 1879 6783 l 1894 6784 l 1908 6784 l 1922 6784 l 1934 6784 l
- 1946 6784 l 1959 6784 l 1973 6784 l 1987 6784 l 2002 6783 l
- 2017 6783 l 2032 6783 l 2047 6782 l 2062 6782 l 2077 6781 l
- 2092 6780 l 2107 6780 l 2121 6779 l 2138 6779 l 2156 6778 l
- 2175 6777 l 2194 6776 l 2213 6776 l 2232 6775 l 2250 6774 l
- 2267 6773 l 2282 6773 l 2295 6772 l 2306 6772 l 2315 6771 l
- 2317 6771 l 2319 6771 l 2321 6771 l 2323 6771 l 2325 6771 l
- 2326 6771 l 2328 6771 l 2329 6771 l 2330 6771 l 2331 6771 l
- 2332 6770 l 2333 6770 l 2334 6770 l 2335 6770 l 2334 6771 l
- 2333 6771 l 2332 6771 l 2331 6771 l 2330 6771 l 2329 6771 l
- 2328 6771 l
- 2327 6771 l gs col0 s gr 
-% Polyline
-n 3533 6267 m 3533 6268 l 3534 6275 l 3535 6289 l 3536 6305 l 3537 6320 l
- 3538 6331 l 3538 6341 l 3538 6349 l 3536 6359 l 3535 6368 l
- 3532 6377 l 3529 6385 l 3525 6392 l 3522 6398 l 3517 6404 l
- 3512 6410 l 3506 6417 l 3500 6423 l 3493 6428 l 3486 6433 l
- 3480 6436 l 3474 6440 l 3466 6443 l 3458 6447 l 3448 6450 l
- 3439 6453 l 3429 6456 l 3419 6459 l 3410 6461 l 3400 6463 l
- 3390 6466 l 3377 6469 l 3364 6472 l 3350 6476 l 3335 6480 l
- 3319 6485 l 3304 6489 l 3287 6495 l 3275 6499 l 3261 6504 l
- 3246 6509 l 3229 6516 l 3210 6523 l 3188 6531 l 3164 6541 l
- 3139 6551 l 3114 6560 l 3091 6569 l 3075 6576 l 3064 6580 l
- 3060 6582 l
- 3059 6582 l gs col0 s gr 
-% Polyline
-n 3983 6181 m 3983 6182 l 3983 6186 l 3984 6196 l 3986 6211 l 3987 6230 l
- 3989 6250 l 3991 6268 l 3992 6284 l 3993 6299 l 3994 6311 l
- 3995 6322 l 3996 6333 l 3997 6345 l 3997 6357 l 3998 6369 l
- 3998 6380 l 3998 6392 l 3998 6403 l 3998 6413 l 3997 6423 l
- 3997 6431 l 3996 6439 l 3994 6448 l 3991 6457 l 3988 6465 l
- 3984 6474 l 3979 6481 l 3974 6488 l 3968 6494 l 3962 6499 l
- 3955 6503 l 3947 6507 l 3937 6511 l 3927 6516 l 3915 6520 l
- 3903 6523 l 3892 6527 l 3880 6531 l 3869 6533 l 3859 6537 l
- 3847 6540 l 3834 6544 l 3821 6547 l 3807 6551 l 3793 6555 l
- 3779 6558 l 3766 6561 l 3753 6564 l 3742 6566 l 3730 6569 l
- 3718 6571 l 3704 6573 l 3690 6576 l 3675 6579 l 3660 6583 l
- 3645 6586 l 3629 6590 l 3614 6595 l 3598 6599 l 3582 6604 l
- 3570 6609 l 3557 6613 l 3543 6618 l 3528 6624 l 3511 6631 l
- 3493 6639 l 3472 6648 l 3449 6658 l 3426 6668 l 3403 6679 l
- 3381 6688 l 3363 6696 l 3350 6702 l 3343 6705 l
- 3339 6707 l gs col0 s gr 
-% Polyline
-n 2263 6883 m 2260 6890 l 2258 6899 l 2256 6908 l 2254 6916 l 2254 6925 l
- 2253 6933 l 2253 6942 l 2252 6951 l 2252 6962 l 2252 6972 l
- 2253 6982 l 2253 6991 l 2254 7000 l 2254 7009 l 2256 7018 l
- 2257 7027 l 2259 7036 l 2262 7044 l 2264 7049 l 2267 7055 l
- 2271 7062 l 2277 7069 l 2284 7076 l 2292 7084 l 2301 7091 l
- 2312 7099 l 2320 7104 l 2330 7109 l 2340 7115 l 2352 7122 l
- 2364 7128 l 2378 7135 l 2392 7142 l 2406 7148 l 2420 7155 l
- 2433 7160 l 2446 7166 l 2459 7171 l 2472 7175 l 2485 7179 l
- 2498 7184 l 2512 7188 l 2527 7192 l 2542 7195 l 2558 7199 l
- 2574 7202 l 2590 7205 l 2606 7208 l 2623 7210 l 2639 7212 l
- 2654 7214 l 2669 7215 l 2686 7217 l 2703 7219 l 2721 7220 l
- 2741 7222 l 2760 7223 l 2780 7225 l 2799 7226 l 2818 7227 l
- 2837 7229 l 2854 7230 l 2871 7231 l 2887 7232 l 2903 7232 l
- 2919 7233 l 2935 7234 l 2951 7235 l 2968 7236 l 2985 7237 l
- 3002 7237 l 3020 7238 l 3037 7239 l 3054 7240 l 3071 7240 l
- 3088 7241 l 3104 7242 l 3121 7243 l 3135 7243 l 3151 7244 l
- 3166 7244 l 3183 7245 l 3201 7246 l 3219 7246 l 3237 7247 l
- 3256 7247 l 3274 7248 l 3293 7248 l 3311 7249 l 3328 7249 l
- 3345 7249 l 3361 7249 l 3377 7249 l 3392 7249 l 3408 7249 l
- 3425 7248 l 3442 7248 l 3459 7247 l 3476 7246 l 3494 7245 l
- 3512 7244 l 3530 7242 l 3548 7241 l 3566 7239 l 3583 7238 l
- 3600 7236 l 3617 7234 l 3634 7232 l 3649 7230 l 3664 7228 l
- 3680 7226 l 3697 7224 l 3715 7222 l 3733 7220 l 3752 7217 l
- 3771 7215 l 3789 7212 l 3807 7209 l 3825 7207 l 3842 7204 l
- 3859 7202 l 3874 7199 l 3889 7197 l 3903 7195 l 3918 7192 l
- 3933 7189 l 3948 7186 l 3963 7183 l 3978 7180 l 3993 7177 l
- 4007 7174 l 4021 7171 l 4035 7167 l 4049 7164 l 4061 7160 l
- 4074 7157 l 4085 7153 l 4097 7150 l 4109 7146 l 4121 7143 l
- 4133 7138 l 4146 7134 l 4160 7129 l 4174 7124 l 4188 7119 l
- 4203 7114 l 4217 7108 l 4232 7103 l 4246 7097 l 4260 7092 l
- 4273 7086 l 4287 7081 l 4300 7075 l 4314 7070 l 4329 7063 l
- 4344 7057 l 4359 7050 l 4375 7044 l 4391 7037 l 4407 7030 l
- 4423 7023 l 4437 7017 l 4452 7010 l 4465 7004 l 4478 6999 l
- 4490 6994 l 4503 6988 l 4516 6982 l 4529 6976 l 4542 6970 l
- 4555 6964 l 4567 6959 l 4578 6954 l 4589 6949 l 4598 6944 l
- 4607 6940 l 4615 6937 l 4622 6934 l 4634 6928 l 4644 6922 l
- 4654 6917 l 4662 6912 l 4668 6907 l 4673 6902 l 4677 6897 l
- 4682 6890 l 4686 6883 l 4689 6876 l 4692 6869 l 4694 6862 l
- 4695 6856 l 4696 6849 l 4696 6842 l 4697 6835 l 4696 6828 l
- 4696 6822 l 4695 6816 l 4695 6809 l 4694 6802 l 4693 6795 l
- 4693 6788 l 4692 6782 l 4692 6775 l 4691 6768 l 4691 6760 l
- 4690 6751 l 4690 6743 l 4689 6734 l 4688 6729 l 4688 6723 l
- 4686 6717 l 4684 6712 l 4682 6706 l 4679 6701 l 4675 6698 l
- 4671 6695 l 4666 6693 l 4660 6693 l 4653 6693 l 4645 6695 l
- 4635 6699 l 4624 6703 l 4612 6709 l 4598 6715 l 4584 6722 l
- 4570 6730 l 4556 6737 l 4542 6745 l 4529 6751 l 4516 6758 l
- 4502 6765 l 4487 6772 l 4471 6779 l 4455 6787 l 4439 6794 l
- 4424 6802 l 4408 6808 l 4394 6815 l 4380 6821 l 4368 6826 l
- 4355 6831 l 4342 6836 l 4329 6841 l 4316 6846 l 4303 6851 l
- 4289 6856 l 4276 6860 l 4262 6864 l 4250 6869 l 4237 6873 l
- 4225 6876 l 4213 6880 l 4202 6883 l 4191 6886 l 4179 6890 l
- 4167 6893 l 4154 6897 l 4140 6901 l 4126 6905 l 4111 6908 l
- 4096 6912 l 4081 6916 l 4067 6919 l 4052 6923 l 4038 6926 l
- 4023 6930 l 4008 6933 l 3992 6936 l 3976 6939 l 3959 6943 l
- 3941 6946 l 3922 6950 l 3903 6953 l 3884 6957 l 3865 6960 l
- 3846 6963 l 3829 6965 l 3812 6968 l 3795 6970 l 3780 6973 l
- 3764 6974 l 3748 6976 l 3732 6978 l 3716 6980 l 3700 6982 l
- 3683 6983 l 3666 6985 l 3649 6986 l 3633 6987 l 3617 6988 l
- 3601 6989 l 3587 6990 l 3572 6991 l 3558 6992 l 3544 6993 l
- 3529 6994 l 3514 6994 l 3498 6995 l 3481 6996 l 3463 6997 l
- 3445 6997 l 3426 6998 l 3407 6999 l 3388 7000 l 3369 7000 l
- 3350 7001 l 3331 7001 l 3312 7002 l 3296 7002 l 3280 7003 l
- 3263 7003 l 3245 7004 l 3226 7004 l 3207 7005 l 3187 7005 l
- 3167 7006 l 3146 7006 l 3125 7006 l 3104 7006 l 3084 7007 l
- 3064 7007 l 3044 7007 l 3025 7007 l 3007 7007 l 2989 7007 l
- 2972 7007 l 2953 7006 l 2934 7006 l 2915 7005 l 2895 7005 l
- 2875 7004 l 2856 7003 l 2836 7002 l 2817 7001 l 2798 7000 l
- 2780 6999 l 2763 6997 l 2746 6996 l 2731 6995 l 2717 6993 l
- 2703 6992 l 2691 6991 l 2674 6988 l 2658 6986 l 2643 6984 l
- 2628 6982 l 2613 6979 l 2598 6976 l 2584 6973 l 2571 6970 l
- 2559 6967 l 2548 6965 l 2538 6962 l 2528 6959 l 2517 6956 l
- 2505 6952 l 2493 6948 l 2482 6944 l 2470 6940 l 2459 6936 l
- 2449 6932 l 2439 6928 l 2431 6924 l 2424 6920 l 2415 6915 l
- 2406 6910 l 2398 6904 l 2390 6899 l 2382 6893 l 2375 6888 l
- 2369 6883 l 2364 6878 l 2356 6872 l 2348 6866 l 2340 6860 l
- 2332 6855 l 2325 6850 l 2320 6846 l 2316 6843 l 2312 6840 l
- 2308 6838 l 2305 6836 l 2301 6835 l 2298 6835 l 2295 6836 l
- 2292 6838 l 2287 6842 l 2282 6848 l 2276 6856 l 2271 6865 l
- 2267 6874 l
- cp gs col7 1.00 shd ef gr gs col0 s gr 
-% Polyline
-n 3095 6246 m 3096 6246 l 3100 6246 l 3109 6246 l 3123 6247 l 3141 6248 l
- 3159 6248 l 3177 6249 l 3193 6251 l 3207 6252 l 3220 6253 l
- 3232 6255 l 3244 6257 l 3256 6260 l 3269 6263 l 3283 6266 l
- 3299 6271 l 3317 6276 l 3337 6282 l 3358 6289 l 3378 6295 l
- 3394 6301 l 3405 6304 l 3409 6306 l
- 3410 6306 l gs col3 s gr 
-% Polyline
-n 3599 6276 m 3600 6276 l 3605 6277 l 3616 6278 l 3633 6279 l 3654 6281 l
- 3676 6283 l 3697 6285 l 3717 6287 l 3734 6289 l 3749 6291 l
- 3763 6293 l 3777 6295 l 3791 6297 l 3805 6300 l 3821 6302 l
- 3838 6306 l 3858 6309 l 3879 6314 l 3902 6318 l 3924 6323 l
- 3942 6326 l 3953 6329 l 3958 6330 l
- 3959 6330 l gs col3 s gr 
-% Polyline
-15.000 slw
-n 4281 6302 m 4288 6296 l 4297 6291 l 4305 6287 l 4314 6283 l 4322 6281 l
- 4330 6280 l 4337 6279 l 4344 6279 l 4352 6280 l 4359 6282 l
- 4366 6284 l 4373 6287 l 4380 6290 l 4387 6294 l 4394 6300 l
- 4401 6306 l 4408 6312 l 4414 6319 l 4420 6326 l 4426 6334 l
- 4432 6343 l 4437 6353 l 4441 6363 l 4444 6373 l 4445 6380 l
- 4446 6388 l 4447 6397 l 4447 6407 l 4446 6417 l 4445 6426 l
- 4444 6435 l 4443 6444 l 4441 6452 l 4439 6461 l 4436 6470 l
- 4433 6479 l 4430 6489 l 4426 6497 l 4422 6505 l 4418 6513 l
- 4413 6519 l 4408 6526 l 4401 6533 l 4395 6540 l 4387 6546 l
- 4380 6551 l 4373 6554 l 4366 6558 l 4357 6560 l 4346 6562 l
- 4336 6562 l 4325 6561 l 4315 6559 l 4306 6557 l 4297 6554 l
- 4288 6550 l 4279 6545 l 4271 6541 l 4263 6536 l 4257 6531 l
- 4250 6526 l 4245 6521 l 4239 6516 l 4234 6510 l 4230 6504 l
- 4227 6499 l 4224 6492 l 4221 6486 l 4219 6478 l 4218 6470 l
- 4217 6462 l 4217 6454 l 4216 6446 l 4217 6437 l 4217 6428 l
- 4218 6418 l 4220 6409 l 4221 6402 l 4223 6394 l 4224 6386 l
- 4227 6378 l 4230 6370 l 4234 6361 l 4238 6354 l 4242 6347 l
- 4246 6341 l 4251 6333 l 4257 6326 l 4263 6319 l 4269 6312 l
- 4275 6306 l
- cp gs col7 1.00 shd ef gr gs col0 s gr 
-% Polyline
-30.000 slw
-n 3248 6546 m 3249 6546 l 3254 6546 l 3265 6547 l 3280 6548 l 3296 6550 l
- 3312 6552 l 3326 6553 l 3338 6555 l 3349 6557 l 3359 6560 l
- 3369 6562 l 3380 6566 l 3392 6570 l 3406 6576 l 3422 6582 l
- 3438 6589 l 3453 6596 l 3464 6600 l 3469 6603 l
- 3470 6603 l gs col3 s gr 
-% Polyline
-n 3440 6504 m 3441 6504 l 3445 6504 l 3456 6504 l 3470 6504 l 3485 6504 l
- 3500 6505 l 3513 6505 l 3525 6506 l 3535 6507 l 3545 6508 l
- 3555 6510 l 3565 6512 l 3577 6515 l 3590 6518 l 3606 6523 l
- 3622 6528 l 3637 6532 l 3647 6535 l 3652 6537 l
- 3653 6537 l gs col3 s gr 
-% Polyline
-n 3560 6402 m 3561 6402 l 3566 6403 l 3578 6404 l 3597 6405 l 3620 6407 l
- 3644 6409 l 3666 6411 l 3686 6413 l 3704 6415 l 3720 6417 l
- 3734 6419 l 3747 6421 l 3760 6423 l 3774 6425 l 3787 6428 l
- 3803 6431 l 3819 6434 l 3838 6439 l 3857 6443 l 3875 6447 l
- 3890 6451 l 3899 6453 l 3903 6454 l
- 3904 6454 l gs col3 s gr 
-% Polyline
-n 2861 6429 m 2863 6429 l 2866 6430 l 2872 6431 l 2881 6432 l 2887 6433 l
- 2894 6434 l 2902 6435 l 2912 6437 l 2923 6439 l 2935 6442 l
- 2947 6444 l 2959 6447 l 2971 6450 l 2983 6454 l 2993 6457 l
- 3004 6460 l 3016 6464 l 3029 6469 l 3044 6474 l 3060 6480 l
- 3078 6487 l 3095 6493 l 3109 6499 l 3117 6502 l 3121 6504 l
-
- 3122 6504 l gs col3 s gr 
-% Polyline
-n 2594 6492 m 2595 6492 l 2600 6492 l 2611 6493 l 2628 6493 l 2649 6494 l
- 2671 6495 l 2692 6497 l 2712 6498 l 2729 6499 l 2745 6501 l
- 2759 6502 l 2774 6504 l 2786 6506 l 2799 6508 l 2813 6511 l
- 2828 6514 l 2845 6517 l 2864 6521 l 2884 6526 l 2906 6531 l
- 2927 6536 l 2945 6540 l 2959 6543 l 2968 6545 l 2971 6546 l
-
- 2972 6546 l gs col3 s gr 
-% Polyline
-n 3023 6360 m 3024 6360 l 3028 6361 l 3037 6362 l 3052 6365 l 3070 6368 l
- 3089 6371 l 3107 6374 l 3123 6377 l 3138 6380 l 3151 6383 l
- 3163 6385 l 3175 6388 l 3187 6391 l 3200 6395 l 3213 6399 l
- 3228 6403 l 3246 6409 l 3265 6415 l 3285 6421 l 3304 6428 l
- 3320 6433 l 3330 6436 l 3334 6438 l
- 3335 6438 l gs col3 s gr 
-$F2psEnd
-rs

Index: Press-use/3-image/button-design.ps
===================================================================
RCS file: Press-use/3-image/button-design.ps
diff -N Press-use/3-image/button-design.ps
--- Press-use/3-image/button-design.ps  1 Mar 2004 14:50:26 -0000       1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,25 +0,0 @@
-%PDF-1.2
-%Ç쏢
-3 0 obj
-<< /Type /Pages /Kids [
-] /Count 0
->>
-endobj
-1 0 obj
-<</Type /Catalog /Pages 3 0 R
->>
-endobj
-2 0 obj
-<</Producer(GNU Ghostscript 7.05)>>endobj
-xref
-0 4
-0000000000 65535 f 
-0000000068 00000 n 
-0000000116 00000 n 
-0000000015 00000 n 
-trailer
-<< /Size 4 /Root 1 0 R /Info 2 0 R
->>
-startxref
-166
-%%EOF

Index: Press-use/3-image/penguin.eps
===================================================================
RCS file: Press-use/3-image/penguin.eps
diff -N Press-use/3-image/penguin.eps
--- Press-use/3-image/penguin.eps       1 Mar 2004 14:50:26 -0000       1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,9265 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%For: Simon Budig,,,
-%%CreationDate: Thu 19 Sep 2002 02:10:07 AM CEST
-%%Title: penguin.eps
-%%Creator: Sketch 0.6.13
-%%Pages: 1
-%%BoundingBox: -1 -1 312 369
-%%Extensions: CMYK
-%%DocumentSuppliedResources: (atend)
-%%EndComments
-
-%%BeginProlog
-%%BeginResource: procset Linux-Sketch-Procset 1.0 2
-/SketchDict 100 dict def
-SketchDict begin
-/bd { bind def } bind def
-/x { exch } bd
-/xd { exch def } bd
-/PI 3.14159265358979323846264338327 def
-/radgrad { 180 mul PI div } bd
-/skstartmatrix matrix currentmatrix def
-/tmpmat matrix def
-/ISOLatin1Encoding dup where
-{ pop pop }
-{  [/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand
-/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period
-/slash /zero /one /two /three /four /five /six /seven /eight /nine /colon
-/semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J
-/K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
-/bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i
-/j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright
-/asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve
-/dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek
-/caron /space /exclamdown /cent /sterling /currency /yen /brokenbar /section
-/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen
-/registered /macron /degree /plusminus /twosuperior /threesuperior /acute /mu
-/paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright
-/onequarter /onehalf /threequarters /questiondown /Agrave /Aacute /Acircumflex
-/Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex
-/Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth /Ntilde /Ograve
-/Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute
-/Ucircumflex /Udieresis /Yacute /Thorn /germandbls /agrave /aacute
-/acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute
-/ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth /ntilde
-/ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave
-/uacute /ucircumflex /udieresis /yacute /thorn /ydieresis] def
-}
-ifelse
-/arct dup where
-{pop pop}
-{
-/arct {arcto pop pop pop pop} bd
-}
-ifelse
-/size 0 def
-/fontname 0 def
-/newfont 0 def
-/sf {
-/size xd
-/fontname xd
-fontname findfont
-dup /Encoding get StandardEncoding eq
-{
-dup
-length dict /newfont xd
-{
-1 index
-/FID ne
-{ newfont 3 1 roll put }
-{ pop pop }
-ifelse
-} forall
-newfont /Encoding ISOLatin1Encoding put
-fontname newfont definefont
-}
-if
-size scalefont setfont
-} bd
-/pusht {matrix currentmatrix} bd
-/popt {setmatrix} bd
-/pushc {gsave} bd
-/popc {grestore} bd
-/rgb {setrgbcolor} bd
-/w { setlinewidth } bd
-/j { setlinejoin } bd
-/J { setlinecap } bd
-/d { setdash } bd
-/F { eofill } bd
-/f { closepath F } bd
-/S {
-pusht
-skstartmatrix setmatrix stroke 
-popt
-} bd
-/s { closepath S } bd
-/m { moveto } bd
-/l { lineto } bd
-/c { curveto } bd
-/txt {
-/tmpmat tmpmat currentmatrix def
-dup type /arraytype eq {concat} {translate} ifelse
-0 0 m
-tmpmat
-} bd
-/T {txt x show popt} bd
-/P {txt x true charpath popt} bd
-/TP {txt x dup show 0 0 m true charpath popt} bd
-/C {newpath 0 360 arc} bd
-/R {
-2 copy m
-x 2 index l
-x 2 index x l
-l
-closepath
-} bd
-/ellipse { 
-dup type /arraytype eq
-{
-pusht x concat
-0 0 1.0 C 
-popt
-}      
-{
-pusht 5 1 roll
-4 -1 roll concat
-newpath
-dup 2 eq {
-0 0 m 
-} if 
-3 1 roll
-radgrad x
-radgrad x
-0 0 1   5 -2 roll
-arc
-0 ne { closepath } if
-popt
-}
-ifelse
-} bd
-/radius1 0 def
-/radius2 0 def
-/factor 0 def
-/rect {
-dup type /arraytype eq
-{
-pusht x concat
-0 0 m  1 0 l  1 1 l  0 1 l  closepath
-popt
-}
-{
-/radius2 xd
-/radius1 xd
-pusht x concat
-radius1 radius2 div  1  scale
-0 radius2 m
-0 1  radius2 1  radius2  arct
-radius2 radius1 div
-dup 1  1 index 0  radius2  arct
-0  0 0  radius2  arct
-0 0  0 1  radius2 arct
-closepath
-popt
-}
-ifelse
-} bd
-/buf 0 def
-/width 0 def
-/height 0 def
-/skcimg {
-/tmpmat tmpmat currentmatrix def
-{ concat } if
-/height xd
-/width xd
-/buf width 3 mul string def
-width height scale
-width height 8
-[width  0   0   height neg       0  height]
-{ currentfile buf readhexstring pop } bind
-false 3 colorimage
-tmpmat setmatrix
-} bd
-/skgimg {
-/tmpmat tmpmat currentmatrix def
-{ concat } if
-/height xd
-/width xd
-/buf width string def
-width height scale
-width height 8
-[width  0   0   height neg       0  height]
-{ currentfile buf readhexstring pop } bind
-image
-tmpmat setmatrix
-} bd
-/rclip {
-4 2 roll m
-dup 0 x rlineto
-x 0 rlineto
-neg 0 x rlineto
-closepath
-clip
-} bd
-/skeps {
-10 dict begin
-/sk_state save def
-concat
-3 index neg 3 index neg translate
-rclip
-0 setgray 0 setlinecap 1 setlinewidth 0 setlinejoin
-10 setmiterlimit [ ] 0 setdash
-newpath
-/sk_dict_count countdictstack def
-/sk_count count 1 sub def
-userdict begin
-/showpage { } def
-/languagelevel where
-{
-pop
-languagelevel 1 ne
-{
-false setstrokeadjust
-false setoverprint
-} if
-} if
-} bd 
-/skepsend {
-count sk_count sub { pop } repeat
-countdictstack sk_dict_count sub { end } repeat
-sk_state restore
-end
-} bd
-/gradidx 0 def
-/gradient { 
-3 mul array
-/gradidx 0 def
-} bd
-/$ {
-3 index gradidx       5 -1 roll put 
-2 index gradidx 1 add 4 -1 roll put 
-1 index gradidx 2 add 3 -1 roll put 
-/gradidx gradidx 3 add def
-} bd
-/! { 
-3 
-{
-dup dup gradidx dup 3 1 roll 3 sub get put
-/gradidx gradidx 1 add def
-}
-repeat
-} bd
-/gradcolor {
-3 mul dup 2 add 1 exch % idx  1  idx+2
-{
-1 index exch   % array array i
-get            % array component
-exch           % component array
-}
-for
-4 1 roll
-} bd
-/x0 0 def /y0 0 def /x1 0 def /y1 0 def
-/left 0 def /right 0 def /top 0 def /bottom 0 def
-/numcolors 0 def
-/axial {
-/y1 xd /x1 xd /y0 xd /x0 xd
-dup length 3 idiv /numcolors xd
-pusht exch  % ctm array
-x0 x1 ne y0 y1 ne or
-{
-x0 y0 translate
-[x1 x0 sub  y1 y0 sub  dup neg    2 index    0     0] concat
-clippath flattenpath pathbbox
-/top xd /right xd /bottom xd /left xd
-newpath
-0 gradcolor rgb clippath f
-0 1 numcolors 1 sub
-{
-dup numcolors div
-3 1 roll
-gradcolor rgb
-exch
-bottom right top R f
-}
-for
-}
-if 
-pop
-popt
-} bd
-/r0 0 def /r1 0 def /dr 0 def
-/radial        {
-/r1 xd /r0 xd /y0 xd /x0 xd
-/dr r1 r0 sub def
-dup length 3 idiv /numcolors xd
-pusht exch  % ctm array
-r0 r1 ne
-{
-x0 y0 translate
-clippath flattenpath pathbbox
-/top xd /right xd /bottom xd /left xd
-newpath
-dr 0 gt {numcolors 1 sub}{0} ifelse gradcolor rgb
-clippath f
-dr 0 gt {numcolors 1 sub -1 0} { 0 1 numcolors 1 sub} ifelse
-{
-dup numcolors div dr mul r0 add
-3 1 roll
-gradcolor rgb
-exch
-0 0 3 -1 roll C f
-}
-for
-}
-if 
-pop
-popt
-} bd
-/max {
-2 copy lt {exch} if pop
-} bd
-/conical {
-pusht 5 1 roll
-3 1 roll /y0 xd /x0 xd
-x0 y0 translate
-radgrad rotate
-dup length 3 idiv /numcolors xd
-clippath flattenpath pathbbox newpath
-4 { abs 4 1 roll} repeat
-3 { max } repeat
-2 mul
-dup scale
-0 gradcolor rgb
-0 0 1 0 360 arc f
-1 1 numcolors 1 sub
-{
-dup numcolors div 180 mul
-3 1 roll
-gradcolor rgb
-exch
-0 0 moveto
-0 0 1  4 -1 roll  dup neg  arc
-closepath f
-}
-for
-pop
-popt
-} bd
-/XStep 0 def /YStep 0 def /imagedata 0 def /components 0 def
-/tileimage2 {
-exch 4 2 roll
-/height xd
-/width xd
-mark
-/components 2 index
-/PatternType 1
-/PaintType 1
-/TilingType 1
-/BBox [0 0 width height]
-/XStep width
-/YStep height
-/PaintProc {
-begin
-XStep YStep 8
-matrix
-imagedata
-false
-components
-colorimage
-end
-}
-counttomark 2 div cvi dup dict begin
-{ def } repeat
-pop currentdict end
-dup
-/imagedata
-4 -1 roll
-width height mul mul string
-currentfile exch readhexstring pop
-put
-exch
-makepattern
-setpattern
-clippath
-eofill
-} bd
-/tileimage1 {
-concat
-/components xd
-/height xd
-/width xd
-/imagedata
-currentfile
-width height mul components mul string
-readhexstring pop
-def
-clippath flattenpath pathbbox
-/top xd /right xd /bottom xd /left xd
-left width div floor width mul
-bottom height div floor height mul
-translate
-top bottom sub height div ceiling cvi
-{
-gsave
-right left sub width div ceiling cvi
-{
-width height 8 matrix
-components 1 eq
-{
-{ imagedata }
-image
-}
-{
-imagedata
-false components
-colorimage
-}
-ifelse
-width 0 translate
-}
-repeat
-grestore
-0 height translate
-}
-repeat
-} bd
-/makepattern where
-{
-pop
-/tileimage /tileimage2 load def
-}
-{
-/tileimage /tileimage1 load def
-}
-ifelse
-end
-%%EndResource
-%%EndProlog
-
-%%BeginSetup
-
-10.433 setmiterlimit
-%%EndSetup
-
-%%Page: 1 1
-SketchDict begin
-newpath
-281.079 121.501 m
-276.327 101.917 252.207 61.0211 239.391 43.0211 c
-226.575 24.9491 228.159 8.67713 204.471 15.0131 c
-180.855 21.3491 174.231 20.1971 149.823 18.7571 c
-125.559 17.3171 130.815 19.4771 115.623 12.6371 c
-100.503 5.79713 49.7429 95.5811 45.6389 112.285 c
-41.6069 128.989 39.6629 126.973 50.1749 145.045 c
-60.6869 163.117 62.1989 180.973 76.0949 202.861 c
-89.9909 224.821 106.047 235.981 104.895 252.757 c
-100.359 315.037 96.7589 346.141 124.407 360.541 c
-150.759 374.221 172.791 366.085 181.503 361.405 c
-185.247 359.389 192.879 355.501 198.567 348.661 c
-204.255 341.965 209.367 331.813 212.247 318.997 c
-218.151 293.293 209.799 301.789 216.495 272.341 c
-223.119 242.965 236.583 228.565 252.999 205.309 c
-269.415 182.053 286.551 143.677 281.079 121.501 c
-closepath
-0 0 0 rgb
-F
-newpath
-126.063 273.061 m
-130.383 274.789 130.527 274.645 133.407 280.909 c
-135.711 285.733 136.863 288.181 136.791 295.525 c
-136.791 302.725 134.559 305.173 131.175 309.853 c
-127.935 314.317 122.751 314.533 119.511 313.957 c
-117.639 313.669 115.191 311.293 113.535 307.765 c
-112.455 305.389 111.591 302.365 111.519 299.197 c
-111.303 290.701 112.023 287.461 113.967 281.701 c
-116.271 274.933 121.887 271.405 126.063 273.061 c
-closepath
-0.4 0.4 0.4 rgb
-F
-newpath
-126.063 273.088 m
-130.355 274.805 130.498 274.661 133.36 280.885 c
-135.649 285.678 136.794 288.11 136.722 295.407 c
-136.722 302.561 134.47 305.143 131.142 309.643 c
-127.848 313.987 122.87 314.261 119.654 313.705 c
-117.737 313.422 115.396 310.976 113.713 307.578 c
-112.552 305.267 111.653 302.241 111.582 299.059 c
-111.37 290.62 112.114 287.392 114.045 281.672 c
-116.331 274.948 121.914 271.442 126.063 273.088 c
-closepath
-0.43 0.43 0.43 rgb
-F
-newpath
-126.064 273.114 m
-130.328 274.82 130.47 274.678 133.313 280.861 c
-135.587 285.623 136.724 288.04 136.653 295.289 c
-136.653 302.396 134.381 305.114 131.11 309.432 c
-127.761 313.657 122.989 313.99 119.797 313.452 c
-117.836 313.174 115.601 310.66 113.891 307.39 c
-112.65 305.145 111.715 302.116 111.644 298.92 c
-111.437 290.54 112.204 287.323 114.123 281.643 c
-116.391 274.962 121.941 271.48 126.064 273.114 c
-closepath
-0.46 0.46 0.46 rgb
-F
-newpath
-126.064 273.141 m
-130.3 274.836 130.441 274.694 133.266 280.837 c
-135.525 285.568 136.655 287.969 136.584 295.171 c
-136.584 302.232 134.292 305.084 131.077 309.222 c
-127.674 313.327 123.107 313.718 119.939 313.2 c
-117.934 312.927 115.806 310.343 114.069 307.203 c
-112.747 305.023 111.777 301.992 111.707 298.782 c
-111.504 290.459 112.295 287.254 114.201 281.614 c
-116.451 274.977 121.968 271.517 126.064 273.141 c
-closepath
-0.49 0.49 0.49 rgb
-F
-newpath
-126.064 273.168 m
-130.273 274.851 130.413 274.711 133.219 280.814 c
-135.463 285.513 136.586 287.898 136.516 295.053 c
-136.516 302.068 134.203 305.055 131.044 309.012 c
-127.587 312.997 123.226 313.446 120.082 312.948 c
-118.033 312.68 116.011 310.026 114.248 307.015 c
-112.844 304.901 111.839 301.867 111.769 298.643 c
-111.571 290.379 112.386 287.184 114.28 281.585 c
-116.512 274.992 121.995 271.554 126.064 273.168 c
-closepath
-0.52 0.52 0.52 rgb
-F
-newpath
-126.064 273.195 m
-130.245 274.867 130.384 274.727 133.172 280.79 c
-135.402 285.458 136.517 287.828 136.447 294.935 c
-136.447 301.903 134.114 305.025 131.012 308.802 c
-127.499 312.667 123.345 313.174 120.225 312.695 c
-118.131 312.432 116.216 309.71 114.426 306.828 c
-112.941 304.78 111.901 301.743 111.832 298.505 c
-111.638 290.298 112.476 287.115 114.358 281.556 c
-116.572 275.006 122.022 271.592 126.064 273.195 c
-closepath
-0.55 0.55 0.55 rgb
-F
-newpath
-126.064 273.221 m
-130.217 274.883 130.356 274.744 133.125 280.766 c
-135.34 285.404 136.447 287.757 136.378 294.817 c
-136.378 301.739 134.025 304.996 130.979 308.591 c
-127.412 312.337 123.464 312.902 120.368 312.443 c
-118.229 312.185 116.422 309.393 114.604 306.641 c
-113.039 304.658 111.963 301.619 111.894 298.366 c
-111.705 290.217 112.567 287.046 114.436 281.527 c
-116.632 275.021 122.05 271.629 126.064 273.221 c
-closepath
-0.58 0.58 0.58 rgb
-F
-newpath
-126.065 273.248 m
-130.19 274.898 130.327 274.76 133.078 280.742 c
-135.278 285.349 136.378 287.686 136.309 294.699 c
-136.309 301.575 133.936 304.966 130.946 308.381 c
-127.325 312.007 123.583 312.631 120.511 312.191 c
-118.328 311.938 116.627 309.076 114.782 306.453 c
-113.136 304.536 112.025 301.494 111.957 298.228 c
-111.772 290.137 112.658 286.977 114.514 281.498 c
-116.692 275.036 122.077 271.666 126.065 273.248 c
-closepath
-0.61 0.61 0.61 rgb
-F
-newpath
-126.065 273.275 m
-130.162 274.914 130.299 274.777 133.031 280.718 c
-135.216 285.294 136.309 287.616 136.24 294.581 c
-136.24 301.41 133.847 304.937 130.913 308.171 c
-127.238 311.677 123.701 312.359 120.653 311.938 c
-118.426 311.69 116.832 308.759 114.96 306.266 c
-113.233 304.414 112.087 301.37 112.019 298.089 c
-111.839 290.056 112.748 286.908 114.592 281.469 c
-116.752 275.05 122.104 271.704 126.065 273.275 c
-closepath
-0.64 0.64 0.64 rgb
-F
-newpath
-126.065 273.301 m
-130.135 274.929 130.27 274.793 132.984 280.694 c
-135.154 285.239 136.239 287.545 136.171 294.463 c
-136.171 301.246 133.758 304.907 130.881 307.961 c
-127.151 311.347 123.82 312.087 120.796 311.686 c
-118.525 311.443 117.037 308.443 115.138 306.078 c
-113.331 304.292 112.149 301.245 112.082 297.951 c
-111.906 289.976 112.839 286.839 114.67 281.44 c
-116.812 275.065 122.131 271.741 126.065 273.301 c
-closepath
-0.67 0.67 0.67 rgb
-F
-newpath
-126.066 273.328 m
-130.107 274.945 130.242 274.81 132.936 280.671 c
-135.092 285.184 136.17 287.474 136.103 294.345 c
-136.103 301.081 133.669 304.878 130.848 307.75 c
-127.064 311.017 123.939 311.815 120.939 311.434 c
-118.623 311.195 117.242 308.126 115.316 305.891 c
-113.428 304.17 112.212 301.121 112.145 297.812 c
-111.973 289.895 112.93 286.77 114.749 281.411 c
-116.872 275.08 122.158 271.779 126.066 273.328 c
-closepath
-0.7 0.7 0.7 rgb
-F
-newpath
-126.066 273.355 m
-130.079 274.961 130.214 274.827 132.889 280.647 c
-135.03 285.129 136.101 287.404 136.034 294.228 c
-136.034 300.917 133.58 304.848 130.815 307.54 c
-126.977 310.688 124.058 311.544 121.082 311.181 c
-118.721 310.948 117.447 307.809 115.495 305.704 c
-113.525 304.048 112.274 300.997 112.207 297.674 c
-112.041 289.814 113.02 286.7 114.827 281.383 c
-116.933 275.094 122.185 271.816 126.066 273.355 c
-closepath
-0.73 0.73 0.73 rgb
-F
-newpath
-126.066 273.381 m
-130.052 274.976 130.185 274.843 132.842 280.623 c
-134.968 285.074 136.031 287.333 135.965 294.11 c
-135.965 300.753 133.491 304.818 130.783 307.33 c
-126.89 310.358 124.177 311.272 121.225 310.929 c
-118.82 310.701 117.652 307.493 115.673 305.516 c
-113.623 303.926 112.336 300.872 112.27 297.536 c
-112.108 289.734 113.111 286.631 114.905 281.354 c
-116.993 275.109 122.212 271.853 126.066 273.381 c
-closepath
-0.76 0.76 0.76 rgb
-F
-newpath
-126.066 273.408 m
-130.024 274.992 130.156 274.859 132.795 280.599 c
-134.906 285.019 135.962 287.263 135.896 293.992 c
-135.896 300.588 133.402 304.789 130.75 307.12 c
-126.803 310.028 124.295 311 121.367 310.676 c
-118.918 310.453 117.857 307.176 115.851 305.329 c
-113.72 303.804 112.398 300.748 112.332 297.397 c
-112.175 289.653 113.201 286.562 114.983 281.325 c
-117.053 275.123 122.239 271.891 126.066 273.408 c
-closepath
-0.79 0.79 0.79 rgb
-F
-newpath
-126.066 273.435 m
-129.997 275.007 130.128 274.876 132.748 280.575 c
-134.844 284.964 135.893 287.192 135.827 293.874 c
-135.827 300.424 133.313 304.759 130.717 306.91 c
-126.716 309.698 124.414 310.728 121.51 310.424 c
-119.017 310.206 118.062 306.859 116.029 305.141 c
-113.817 303.682 112.46 300.623 112.395 297.259 c
-112.242 289.573 113.292 286.493 115.061 281.296 c
-117.113 275.138 122.266 271.928 126.066 273.435 c
-closepath
-0.82 0.82 0.82 rgb
-F
-newpath
-126.067 273.461 m
-129.969 275.023 130.1 274.893 132.701 280.551 c
-134.783 284.91 135.824 287.121 135.758 293.756 c
-135.758 300.26 133.224 304.73 130.684 306.699 c
-126.629 309.368 124.533 310.457 121.653 310.172 c
-119.115 309.959 118.268 306.543 116.207 304.954 c
-113.915 303.56 112.522 300.499 112.457 297.12 c
-112.309 289.492 113.383 286.424 115.139 281.267 c
-117.173 275.153 122.294 271.965 126.067 273.461 c
-closepath
-0.85 0.85 0.85 rgb
-F
-newpath
-126.067 273.488 m
-129.941 275.039 130.071 274.909 132.654 280.527 c
-134.721 284.855 135.754 287.051 135.689 293.638 c
-135.689 300.095 133.135 304.7 130.652 306.489 c
-126.541 309.038 124.652 310.185 121.796 309.919 c
-119.213 309.711 118.473 306.226 116.385 304.767 c
-114.012 303.439 112.584 300.375 112.52 296.982 c
-112.376 289.411 113.473 286.355 115.217 281.238 c
-117.233 275.167 122.321 272.003 126.067 273.488 c
-closepath
-0.88 0.88 0.88 rgb
-F
-newpath
-126.067 273.515 m
-129.914 275.054 130.042 274.926 132.607 280.504 c
-134.659 284.8 135.685 286.98 135.621 293.52 c
-135.621 299.931 133.046 304.671 130.619 306.279 c
-126.454 308.708 124.771 309.913 121.939 309.667 c
-119.312 309.464 118.678 305.909 116.564 304.579 c
-114.109 303.317 112.646 300.25 112.582 296.843 c
-112.443 289.331 113.564 286.285 115.296 281.209 c
-117.294 275.182 122.348 272.04 126.067 273.515 c
-closepath
-0.91 0.91 0.91 rgb
-F
-newpath
-126.068 273.542 m
-129.886 275.07 130.014 274.942 132.56 280.48 c
-134.597 284.745 135.616 286.909 135.552 293.402 c
-135.552 299.767 132.957 304.641 130.586 306.069 c
-126.367 308.378 124.889 309.641 122.081 309.415 c
-119.41 309.217 118.883 305.592 116.742 304.392 c
-114.206 303.195 112.708 300.126 112.645 296.705 c
-112.51 289.25 113.655 286.216 115.374 281.18 c
-117.354 275.197 122.375 272.077 126.068 273.542 c
-closepath
-0.94 0.94 0.94 rgb
-F
-newpath
-126.068 273.568 m
-129.859 275.085 129.986 274.958 132.513 280.456 c
-134.535 284.69 135.546 286.839 135.483 293.284 c
-135.483 299.602 132.868 304.612 130.554 305.858 c
-126.28 308.048 125.008 309.37 122.224 309.162 c
-119.509 308.969 119.088 305.276 116.92 304.204 c
-114.304 303.073 112.77 300.001 112.707 296.566 c
-112.577 289.17 113.745 286.147 115.452 281.151 c
-117.414 275.211 122.402 272.115 126.068 273.568 c
-closepath
-0.97 0.97 0.97 rgb
-F
-newpath
-126.068 273.595 m
-129.831 275.101 129.957 274.975 132.466 280.432 c
-134.473 284.635 135.477 286.768 135.414 293.166 c
-135.414 299.438 132.779 304.582 130.521 305.648 c
-126.193 307.718 125.127 309.098 122.367 308.91 c
-119.607 308.722 119.293 304.959 117.098 304.017 c
-114.401 302.951 112.832 299.877 112.77 296.428 c
-112.644 289.089 113.836 286.078 115.53 281.122 c
-117.474 275.226 122.429 272.152 126.068 273.595 c
-closepath
-1 1 1 rgb
-F
-newpath
-122.031 302.365 m
-124.191 302.365 126.927 300.925 128.223 298.981 c
-129.591 297.037 130.599 294.301 130.599 291.205 c
-130.599 286.597 130.095 281.485 127.359 279.901 c
-126.495 279.397 124.623 278.965 123.543 278.965 c
-121.095 278.965 120.879 280.549 118.575 282.925 c
-117.783 283.789 115.407 287.965 115.407 291.421 c
-115.407 293.581 114.903 296.677 116.775 299.413 c
-118.071 301.429 119.727 302.365 122.031 302.365 c
-closepath
-0 0 0 rgb
-F
-newpath
-121.455 298.502 m
-122.299 299.807 125.677 299.192 126.905 296.506 c
-128.134 293.819 127.903 287.984 127.059 287.677 c
-124.833 286.986 125.523 290.211 123.604 293.128 c
-121.685 295.891 120.61 297.196 121.455 298.502 c
-closepath
-F
-newpath
-121.509 298.447 m
-122.342 299.735 125.678 299.128 126.89 296.476 c
-128.103 293.823 127.875 288.062 127.042 287.759 c
-124.844 287.077 125.526 290.261 123.631 293.141 c
-121.736 295.869 120.675 297.158 121.509 298.447 c
-closepath
-0.03 0.03 0.03 rgb
-F
-newpath
-121.563 298.392 m
-122.386 299.664 125.678 299.064 126.875 296.446 c
-128.073 293.828 127.848 288.14 127.025 287.841 c
-124.855 287.168 125.528 290.311 123.658 293.154 c
-121.787 295.847 120.74 297.119 121.563 298.392 c
-closepath
-0.06 0.06 0.06 rgb
-F
-newpath
-121.617 298.337 m
-122.429 299.592 125.678 299.001 126.86 296.417 c
-128.042 293.832 127.82 288.219 127.008 287.923 c
-124.867 287.259 125.531 290.361 123.684 293.167 c
-121.838 295.825 120.804 297.081 121.617 298.337 c
-closepath
-0.09 0.09 0.09 rgb
-F
-newpath
-121.671 298.282 m
-122.472 299.52 125.679 298.937 126.845 296.387 c
-128.011 293.836 127.792 288.297 126.991 288.005 c
-124.878 287.349 125.533 290.411 123.711 293.18 c
-121.889 295.803 120.869 297.042 121.671 298.282 c
-closepath
-0.12 0.12 0.12 rgb
-F
-newpath
-121.725 298.227 m
-122.516 299.449 125.68 298.873 126.83 296.357 c
-127.981 293.84 127.764 288.375 126.974 288.087 c
-124.889 287.44 125.535 290.461 123.738 293.193 c
-121.94 295.781 120.934 297.004 121.725 298.227 c
-closepath
-0.15 0.15 0.15 rgb
-F
-newpath
-121.779 298.171 m
-122.559 299.377 125.68 298.809 126.815 296.327 c
-127.95 293.844 127.737 288.453 126.957 288.17 c
-124.9 287.531 125.538 290.511 123.765 293.206 c
-121.992 295.759 120.998 296.965 121.779 298.171 c
-closepath
-0.18 0.18 0.18 rgb
-F
-newpath
-121.833 298.116 m
-122.602 299.305 125.68 298.745 126.8 296.297 c
-127.919 293.849 127.709 288.531 126.94 288.252 c
-124.911 287.622 125.541 290.561 123.792 293.219 c
-122.043 295.737 121.063 296.927 121.833 298.116 c
-closepath
-0.21 0.21 0.21 rgb
-F
-newpath
-121.887 298.061 m
-122.645 299.234 125.681 298.682 126.785 296.268 c
-127.889 293.853 127.681 288.61 126.923 288.334 c
-124.923 287.713 125.543 290.611 123.818 293.232 c
-122.094 295.715 121.128 296.888 121.887 298.061 c
-closepath
-0.24 0.24 0.24 rgb
-F
-newpath
-121.941 298.006 m
-122.689 299.162 125.682 298.618 126.77 296.238 c
-127.858 293.857 127.654 288.688 126.906 288.416 c
-124.934 287.804 125.546 290.661 123.845 293.245 c
-122.145 295.693 121.193 296.85 121.941 298.006 c
-closepath
-0.27 0.27 0.27 rgb
-F
-newpath
-121.995 297.951 m
-122.732 299.091 125.682 298.554 126.755 296.208 c
-127.827 293.862 127.626 288.766 126.889 288.498 c
-124.945 287.895 125.548 290.711 123.872 293.258 c
-122.196 295.671 121.257 296.811 121.995 297.951 c
-closepath
-0.3 0.3 0.3 rgb
-F
-newpath
-122.049 297.896 m
-122.775 299.019 125.683 298.49 126.739 296.178 c
-127.797 293.866 127.598 288.844 126.872 288.58 c
-124.956 287.985 125.55 290.761 123.899 293.271 c
-122.247 295.649 121.322 296.772 122.049 297.896 c
-closepath
-0.33 0.33 0.33 rgb
-F
-newpath
-122.103 297.841 m
-122.819 298.947 125.683 298.426 126.724 296.148 c
-127.766 293.87 127.571 288.922 126.855 288.662 c
-124.967 288.076 125.553 290.811 123.926 293.284 c
-122.298 295.627 121.387 296.734 122.103 297.841 c
-closepath
-0.36 0.36 0.36 rgb
-F
-newpath
-122.157 297.786 m
-122.862 298.876 125.684 298.363 126.709 296.119 c
-127.736 293.874 127.543 289.001 126.838 288.744 c
-124.979 288.167 125.555 290.861 123.952 293.297 c
-122.349 295.605 121.452 296.695 122.157 297.786 c
-closepath
-0.39 0.39 0.39 rgb
-F
-newpath
-122.211 297.731 m
-122.905 298.804 125.684 298.299 126.694 296.089 c
-127.705 293.878 127.515 289.079 126.821 288.826 c
-124.99 288.258 125.558 290.911 123.979 293.31 c
-122.4 295.583 121.517 296.657 122.211 297.731 c
-closepath
-0.42 0.42 0.42 rgb
-F
-newpath
-122.265 297.676 m
-122.949 298.732 125.684 298.235 126.679 296.059 c
-127.674 293.883 127.488 289.157 126.804 288.909 c
-125.001 288.349 125.561 290.961 124.006 293.323 c
-122.451 295.561 121.581 296.618 122.265 297.676 c
-closepath
-0.45 0.45 0.45 rgb
-F
-newpath
-122.319 297.62 m
-122.992 298.661 125.685 298.171 126.664 296.029 c
-127.644 293.887 127.46 289.235 126.787 288.991 c
-125.012 288.44 125.563 291.011 124.033 293.336 c
-122.503 295.539 121.646 296.58 122.319 297.62 c
-closepath
-0.48 0.48 0.48 rgb
-F
-newpath
-122.373 297.565 m
-123.035 298.589 125.685 298.107 126.649 295.999 c
-127.613 293.891 127.432 289.313 126.77 289.073 c
-125.023 288.53 125.565 291.061 124.06 293.349 c
-122.554 295.517 121.711 296.542 122.373 297.565 c
-closepath
-0.51 0.51 0.51 rgb
-F
-newpath
-122.427 297.51 m
-123.078 298.517 125.686 298.044 126.634 295.97 c
-127.582 293.896 127.404 289.392 126.753 289.155 c
-125.035 288.621 125.568 291.111 124.086 293.362 c
-122.605 295.495 121.775 296.503 122.427 297.51 c
-closepath
-0.54 0.54 0.54 rgb
-F
-newpath
-122.481 297.455 m
-123.122 298.446 125.686 297.98 126.619 295.94 c
-127.552 293.9 127.377 289.47 126.736 289.237 c
-125.046 288.712 125.57 291.161 124.113 293.375 c
-122.656 295.473 121.84 296.465 122.481 297.455 c
-closepath
-0.57 0.57 0.57 rgb
-F
-newpath
-122.535 297.4 m
-123.165 298.374 125.687 297.916 126.604 295.91 c
-127.521 293.904 127.349 289.548 126.719 289.319 c
-125.057 288.803 125.573 291.211 124.14 293.388 c
-122.707 295.451 121.905 296.426 122.535 297.4 c
-closepath
-0.6 0.6 0.6 rgb
-F
-newpath
-170.703 272.125 m
-181.503 273.277 185.319 277.453 187.263 284.725 c
-188.991 291.205 189.063 298.405 184.239 306.829 c
-179.703 314.893 177.111 316.189 170.559 316.693 c
-160.479 317.557 155.727 310.501 153.495 305.461 c
-151.119 299.989 151.623 300.781 151.767 293.869 c
-151.911 286.597 154.143 283.573 156.663 279.037 c
-159.183 274.573 169.479 272.053 170.703 272.125 c
-closepath
-0.4 0.4 0.4 rgb
-F
-newpath
-170.708 272.166 m
-181.467 273.298 185.326 277.52 187.223 284.735 c
-188.924 291.261 188.914 298.409 184.127 306.635 c
-179.693 314.432 177.033 315.747 170.559 316.247 c
-160.51 317.108 155.89 310.333 153.64 305.373 c
-151.326 300.099 151.747 300.688 151.896 293.859 c
-152.05 286.587 154.213 283.595 156.73 279.058 c
-159.25 274.583 169.484 272.094 170.708 272.166 c
-closepath
-0.43 0.43 0.43 rgb
-F
-newpath
-170.713 272.208 m
-181.431 273.318 185.333 277.587 187.182 284.746 c
-188.857 291.316 188.765 298.413 184.015 306.441 c
-179.684 313.971 176.955 315.305 170.559 315.801 c
-160.542 316.658 156.053 310.166 153.785 305.285 c
-151.533 300.21 151.872 300.595 152.026 293.848 c
-152.19 286.577 154.283 283.617 156.798 279.078 c
-159.318 274.594 169.49 272.134 170.713 272.208 c
-closepath
-0.46 0.46 0.46 rgb
-F
-newpath
-170.718 272.249 m
-181.394 273.339 185.34 277.655 187.142 284.756 c
-188.79 291.372 188.616 298.416 183.903 306.248 c
-179.674 313.511 176.878 314.863 170.559 315.355 c
-160.573 316.209 156.216 309.998 153.93 305.197 c
-151.74 300.32 151.996 300.501 152.155 293.838 c
-152.329 286.567 154.353 283.64 156.865 279.099 c
-159.385 274.604 169.495 272.174 170.718 272.249 c
-closepath
-0.49 0.49 0.49 rgb
-F
-newpath
-170.724 272.291 m
-181.358 273.36 185.347 277.722 187.101 284.766 c
-188.723 291.427 188.468 298.42 183.791 306.054 c
-179.665 313.05 176.8 314.421 170.559 314.908 c
-160.604 315.76 156.379 309.831 154.075 305.109 c
-151.948 300.43 152.12 300.408 152.285 293.828 c
-152.468 286.557 154.424 283.662 156.932 279.12 c
-159.452 274.614 169.5 272.215 170.724 272.291 c
-closepath
-0.52 0.52 0.52 rgb
-F
-newpath
-170.729 272.332 m
-181.322 273.38 185.354 277.789 187.061 284.777 c
-188.656 291.483 188.319 298.424 183.679 305.86 c
-179.655 312.589 176.722 313.978 170.559 314.462 c
-160.635 315.311 156.543 309.663 154.22 305.021 c
-152.155 300.541 152.245 300.315 152.414 293.817 c
-152.608 286.547 154.494 283.684 156.999 279.141 c
-159.52 274.625 169.505 272.255 170.729 272.332 c
-closepath
-0.55 0.55 0.55 rgb
-F
-newpath
-170.734 272.374 m
-181.286 273.401 185.361 277.856 187.02 284.787 c
-188.589 291.538 188.17 298.427 183.567 305.666 c
-179.645 312.128 176.645 313.536 170.559 314.016 c
-160.667 314.861 156.706 309.495 154.365 304.933 c
-152.362 300.651 152.369 300.222 152.544 293.807 c
-152.747 286.537 154.564 283.707 157.067 279.161 c
-159.587 274.635 169.51 272.296 170.734 272.374 c
-closepath
-0.58 0.58 0.58 rgb
-F
-newpath
-170.739 272.415 m
-181.249 273.422 185.368 277.923 186.98 284.797 c
-188.522 291.594 188.021 298.431 183.455 305.472 c
-179.636 311.667 176.567 313.094 170.559 313.57 c
-160.698 314.412 156.869 309.328 154.51 304.845 c
-152.569 300.761 152.493 300.129 152.673 293.797 c
-152.886 286.527 154.634 283.729 157.134 279.182 c
-159.654 274.645 169.516 272.337 170.739 272.415 c
-closepath
-0.61 0.61 0.61 rgb
-F
-newpath
-170.744 272.457 m
-181.213 273.443 185.375 277.991 186.939 284.808 c
-188.455 291.649 187.872 298.435 183.343 305.279 c
-179.626 311.207 176.489 312.652 170.559 313.124 c
-160.729 313.963 157.032 309.16 154.655 304.757 c
-152.776 300.871 152.617 300.035 152.803 293.786 c
-153.026 286.517 154.704 283.751 157.201 279.203 c
-159.721 274.656 169.521 272.377 170.744 272.457 c
-closepath
-0.64 0.64 0.64 rgb
-F
-newpath
-170.749 272.498 m
-181.177 273.463 185.382 278.058 186.899 284.818 c
-188.388 291.705 187.723 298.439 183.231 305.085 c
-179.617 310.746 176.411 312.21 170.559 312.678 c
-160.76 313.513 157.195 308.993 154.8 304.669 c
-152.983 300.982 152.742 299.942 152.932 293.776 c
-153.165 286.507 154.774 283.773 157.269 279.223 c
-159.789 274.666 169.526 272.418 170.749 272.498 c
-closepath
-0.67 0.67 0.67 rgb
-F
-newpath
-170.755 272.539 m
-181.141 273.484 185.389 278.125 186.858 284.828 c
-188.321 291.76 187.574 298.443 183.12 304.891 c
-179.607 310.285 176.333 311.768 170.559 312.232 c
-160.792 313.064 157.358 308.825 154.945 304.581 c
-153.19 301.092 152.866 299.849 153.061 293.766 c
-153.305 286.497 154.845 283.796 157.336 279.244 c
-159.856 274.677 169.531 272.458 170.755 272.539 c
-closepath
-0.7 0.7 0.7 rgb
-F
-newpath
-170.76 272.581 m
-181.104 273.505 185.397 278.192 186.818 284.839 c
-188.254 291.816 187.426 298.446 183.008 304.697 c
-179.597 309.824 176.256 311.326 170.559 311.785 c
-160.823 312.615 157.521 308.657 155.09 304.492 c
-153.398 301.202 152.99 299.756 153.191 293.755 c
-153.444 286.487 154.915 283.818 157.403 279.265 c
-159.923 274.687 169.537 272.499 170.76 272.581 c
-closepath
-0.73 0.73 0.73 rgb
-F
-newpath
-170.765 272.622 m
-181.068 273.525 185.404 278.259 186.778 284.849 c
-188.187 291.872 187.277 298.45 182.896 304.503 c
-179.588 309.363 176.178 310.884 170.559 311.339 c
-160.854 312.165 157.684 308.49 155.235 304.404 c
-153.605 301.313 153.115 299.663 153.32 293.745 c
-153.583 286.477 154.985 283.84 157.471 279.285 c
-159.991 274.697 169.542 272.539 170.765 272.622 c
-closepath
-0.76 0.76 0.76 rgb
-F
-newpath
-170.77 272.664 m
-181.032 273.546 185.411 278.327 186.737 284.86 c
-188.12 291.927 187.128 298.454 182.784 304.31 c
-179.578 308.903 176.1 310.442 170.559 310.893 c
-160.885 311.716 157.847 308.322 155.38 304.316 c
-153.812 301.423 153.239 299.569 153.45 293.734 c
-153.723 286.467 155.055 283.862 157.538 279.306 c
-160.058 274.708 169.547 272.579 170.77 272.664 c
-closepath
-0.79 0.79 0.79 rgb
-F
-newpath
-170.775 272.705 m
-180.995 273.567 185.418 278.394 186.697 284.87 c
-188.053 291.983 186.979 298.458 182.672 304.116 c
-179.569 308.442 176.022 310 170.559 310.447 c
-160.917 311.267 158.01 308.155 155.525 304.228 c
-154.019 301.533 153.363 299.476 153.579 293.724 c
-153.862 286.457 155.125 283.884 157.605 279.327 c
-160.125 274.718 169.553 272.62 170.775 272.705 c
-closepath
-0.82 0.82 0.82 rgb
-F
-newpath
-170.78 272.747 m
-180.959 273.588 185.425 278.461 186.656 284.88 c
-187.986 292.038 186.83 298.461 182.56 303.922 c
-179.559 307.981 175.945 309.557 170.559 310.001 c
-160.948 310.818 158.173 307.987 155.67 304.14 c
-154.226 301.643 153.487 299.383 153.709 293.714 c
-154.001 286.447 155.195 283.907 157.673 279.347 c
-160.193 274.728 169.558 272.661 170.78 272.747 c
-closepath
-0.85 0.85 0.85 rgb
-F
-newpath
-170.785 272.788 m
-180.923 273.608 185.432 278.528 186.616 284.891 c
-187.919 292.094 186.681 298.465 182.448 303.728 c
-179.549 307.52 175.867 309.115 170.559 309.555 c
-160.979 310.368 158.337 307.819 155.815 304.052 c
-154.433 301.754 153.612 299.29 153.838 293.703 c
-154.141 286.437 155.265 283.929 157.74 279.368 c
-160.26 274.739 169.563 272.701 170.785 272.788 c
-closepath
-0.88 0.88 0.88 rgb
-F
-newpath
-170.791 272.83 m
-180.887 273.629 185.439 278.595 186.575 284.901 c
-187.852 292.149 186.533 298.469 182.336 303.534 c
-179.54 307.059 175.789 308.673 170.559 309.108 c
-161.01 309.919 158.5 307.652 155.96 303.964 c
-154.641 301.864 153.736 299.197 153.968 293.693 c
-154.28 286.427 155.336 283.951 157.807 279.389 c
-160.327 274.749 169.568 272.742 170.791 272.83 c
-closepath
-0.91 0.91 0.91 rgb
-F
-newpath
-170.796 272.871 m
-180.85 273.65 185.446 278.663 186.535 284.911 c
-187.785 292.205 186.384 298.473 182.224 303.341 c
-179.53 306.599 175.712 308.231 170.559 308.662 c
-161.042 309.47 158.663 307.484 156.105 303.876 c
-154.848 301.974 153.86 299.103 154.097 293.683 c
-154.419 286.417 155.406 283.974 157.874 279.41 c
-160.394 274.759 169.574 272.782 170.796 272.871 c
-closepath
-0.94 0.94 0.94 rgb
-F
-newpath
-170.801 272.913 m
-180.814 273.67 185.453 278.73 186.494 284.922 c
-187.718 292.26 186.235 298.476 182.112 303.147 c
-179.521 306.138 175.634 307.789 170.559 308.216 c
-161.073 309.02 158.826 307.317 156.25 303.788 c
-155.055 302.085 153.985 299.01 154.227 293.672 c
-154.559 286.407 155.476 283.996 157.942 279.43 c
-160.462 274.77 169.579 272.823 170.801 272.913 c
-closepath
-0.97 0.97 0.97 rgb
-F
-newpath
-170.806 272.954 m
-180.778 273.691 185.46 278.797 186.454 284.932 c
-187.651 292.316 186.086 298.48 182 302.953 c
-179.511 305.677 175.556 307.347 170.559 307.77 c
-161.104 308.571 158.989 307.149 156.395 303.7 c
-155.262 302.195 154.109 298.917 154.356 293.662 c
-154.698 286.397 155.546 284.018 158.009 279.451 c
-160.529 274.78 169.584 272.863 170.806 272.954 c
-closepath
-1 1 1 rgb
-F
-newpath
-169.839 302.653 m
-175.239 302.653 178.407 297.829 179.487 291.637 c
-179.919 288.829 179.271 285.589 177.543 283.357 c
-175.599 280.765 172.143 279.181 169.335 279.181 c
-166.671 279.181 163.647 278.749 162.063 280.909 c
-160.479 283.141 160.119 288.109 160.119 291.637 c
-160.119 295.597 161.271 298.405 163.287 300.637 c
-164.799 302.293 167.535 302.653 169.839 302.653 c
-closepath
-0 0 0 rgb
-F
-newpath
-170.184 300.431 m
-171.164 301.084 172.796 300.431 174.673 298.309 c
-176.712 296.024 177.61 294.229 175.162 292.924 c
-173.285 291.944 172.714 294.882 171.572 296.106 c
-169.777 298.064 168.226 299.125 170.184 300.431 c
-closepath
-F
-newpath
-170.224 300.372 m
-171.184 301.021 172.797 300.372 174.646 298.282 c
-176.655 296.031 177.511 294.262 175.128 292.977 c
-173.29 292 172.725 294.906 171.603 296.111 c
-169.834 298.038 168.306 299.077 170.224 300.372 c
-closepath
-0.03 0.03 0.03 rgb
-F
-newpath
-170.264 300.314 m
-171.203 300.959 172.798 300.314 174.62 298.255 c
-176.598 296.037 177.412 294.296 175.094 293.03 c
-173.296 292.056 172.736 294.929 171.633 296.117 c
-169.892 298.011 168.387 299.029 170.264 300.314 c
-closepath
-0.06 0.06 0.06 rgb
-F
-newpath
-170.304 300.255 m
-171.223 300.896 172.799 300.255 174.593 298.228 c
-176.541 296.044 177.313 294.329 175.06 293.082 c
-173.301 292.111 172.747 294.953 171.664 296.122 c
-169.949 297.985 168.467 298.981 170.304 300.255 c
-closepath
-0.09 0.09 0.09 rgb
-F
-newpath
-170.344 300.196 m
-171.242 300.834 172.8 300.196 174.566 298.2 c
-176.484 296.051 177.214 294.363 175.026 293.135 c
-173.306 292.167 172.758 294.977 171.695 296.128 c
-170.006 297.958 168.548 298.934 170.344 300.196 c
-closepath
-0.12 0.12 0.12 rgb
-F
-newpath
-170.383 300.138 m
-171.262 300.771 172.801 300.138 174.539 298.173 c
-176.427 296.058 177.115 294.396 174.992 293.188 c
-173.312 292.223 172.769 295 171.726 296.133 c
-170.064 297.932 168.628 298.886 170.383 300.138 c
-closepath
-0.15 0.15 0.15 rgb
-F
-newpath
-170.423 300.079 m
-171.282 300.708 172.803 300.079 174.512 298.146 c
-176.37 296.064 177.016 294.429 174.958 293.241 c
-173.317 292.279 172.78 295.024 171.757 296.139 c
-170.121 297.906 168.708 298.838 170.423 300.079 c
-closepath
-0.18 0.18 0.18 rgb
-F
-newpath
-170.463 300.02 m
-171.301 300.646 172.804 300.02 174.486 298.119 c
-176.313 296.071 176.917 294.463 174.924 293.293 c
-173.322 292.335 172.791 295.048 171.787 296.145 c
-170.178 297.879 168.789 298.79 170.463 300.02 c
-closepath
-0.21 0.21 0.21 rgb
-F
-newpath
-170.503 299.962 m
-171.321 300.583 172.805 299.962 174.459 298.092 c
-176.256 296.078 176.818 294.496 174.89 293.346 c
-173.328 292.39 172.802 295.072 171.818 296.15 c
-170.236 297.853 168.869 298.742 170.503 299.962 c
-closepath
-0.24 0.24 0.24 rgb
-F
-newpath
-170.543 299.903 m
-171.34 300.521 172.806 299.903 174.432 298.065 c
-176.199 296.085 176.719 294.53 174.856 293.399 c
-173.333 292.446 172.813 295.095 171.849 296.155 c
-170.293 297.826 168.95 298.694 170.543 299.903 c
-closepath
-0.27 0.27 0.27 rgb
-F
-newpath
-170.583 299.844 m
-171.36 300.458 172.807 299.844 174.406 298.037 c
-176.142 296.091 176.62 294.563 174.822 293.452 c
-173.339 292.502 172.824 295.119 171.88 296.161 c
-170.35 297.8 169.03 298.646 170.583 299.844 c
-closepath
-0.3 0.3 0.3 rgb
-F
-newpath
-170.623 299.786 m
-171.38 300.395 172.808 299.786 174.379 298.01 c
-176.085 296.098 176.521 294.596 174.788 293.504 c
-173.344 292.558 172.834 295.143 171.91 296.167 c
-170.408 297.774 169.11 298.599 170.623 299.786 c
-closepath
-0.33 0.33 0.33 rgb
-F
-newpath
-170.663 299.727 m
-171.399 300.333 172.809 299.727 174.352 297.983 c
-176.028 296.105 176.422 294.63 174.754 293.557 c
-173.349 292.614 172.845 295.166 171.941 296.172 c
-170.465 297.747 169.191 298.551 170.663 299.727 c
-closepath
-0.36 0.36 0.36 rgb
-F
-newpath
-170.703 299.669 m
-171.419 300.27 172.81 299.669 174.325 297.956 c
-175.971 296.112 176.323 294.663 174.72 293.61 c
-173.355 292.669 172.856 295.19 171.972 296.177 c
-170.523 297.721 169.271 298.503 170.703 299.669 c
-closepath
-0.39 0.39 0.39 rgb
-F
-newpath
-170.743 299.61 m
-171.438 300.208 172.811 299.61 174.299 297.929 c
-175.914 296.118 176.224 294.697 174.686 293.663 c
-173.36 292.725 172.867 295.214 172.003 296.183 c
-170.58 297.694 169.352 298.455 170.743 299.61 c
-closepath
-0.42 0.42 0.42 rgb
-F
-newpath
-170.783 299.551 m
-171.458 300.145 172.812 299.551 174.272 297.902 c
-175.857 296.125 176.125 294.73 174.652 293.715 c
-173.365 292.781 172.878 295.237 172.033 296.189 c
-170.637 297.668 169.432 298.407 170.783 299.551 c
-closepath
-0.45 0.45 0.45 rgb
-F
-newpath
-170.822 299.493 m
-171.478 300.082 172.814 299.493 174.245 297.875 c
-175.8 296.132 176.026 294.763 174.618 293.768 c
-173.371 292.837 172.889 295.261 172.064 296.194 c
-170.695 297.642 169.512 298.359 170.822 299.493 c
-closepath
-0.48 0.48 0.48 rgb
-F
-newpath
-170.862 299.434 m
-171.497 300.02 172.815 299.434 174.218 297.847 c
-175.743 296.139 175.927 294.797 174.584 293.821 c
-173.376 292.893 172.9 295.285 172.095 296.199 c
-170.752 297.615 169.593 298.312 170.862 299.434 c
-closepath
-0.51 0.51 0.51 rgb
-F
-newpath
-170.902 299.375 m
-171.517 299.957 172.816 299.375 174.191 297.82 c
-175.686 296.146 175.828 294.83 174.55 293.874 c
-173.381 292.948 172.911 295.309 172.126 296.205 c
-170.809 297.589 169.673 298.264 170.902 299.375 c
-closepath
-0.54 0.54 0.54 rgb
-F
-newpath
-170.942 299.317 m
-171.536 299.895 172.817 299.317 174.165 297.793 c
-175.629 296.152 175.729 294.864 174.516 293.926 c
-173.387 293.004 172.922 295.332 172.156 296.211 c
-170.867 297.562 169.754 298.216 170.942 299.317 c
-closepath
-0.57 0.57 0.57 rgb
-F
-newpath
-170.982 299.258 m
-171.556 299.832 172.818 299.258 174.138 297.766 c
-175.572 296.159 175.63 294.897 174.482 293.979 c
-173.392 293.06 172.933 295.356 172.187 296.216 c
-170.924 297.536 169.834 298.168 170.982 299.258 c
-closepath
-0.6 0.6 0.6 rgb
-F
-newpath
-137.583 238.861 m
-128.223 238.501 113.391 264.709 113.031 253.837 c
-112.743 244.621 113.247 244.765 113.247 235.837 c
-113.247 229.861 110.511 229.429 104.607 220.429 c
-101.583 215.677 99.2069 210.565 97.3349 205.381 c
-96.1829 202.285 95.1029 199.045 94.2389 195.877 c
-93.8789 194.293 93.2309 192.637 92.8709 191.053 c
-89.9189 180.181 79.4069 166.789 76.9589 155.917 c
-74.5109 145.117 71.6309 138.205 71.9909 123.733 c
-72.3509 109.261 72.4949 113.437 76.8869 109.837 c
-81.2069 106.237 85.6709 102.853 92.5109 96.8051 c
-99.7109 90.5411 114.687 79.5971 116.703 76.2131 c
-118.863 72.7571 118.791 64.9811 117.495 62.4611 c
-116.199 60.0131 104.895 58.6451 104.967 58.6451 c
-104.895 58.6451 114.831 44.9651 116.775 43.0211 c
-118.647 41.1491 126.711 32.1491 159.543 38.2691 c
-178.047 41.7251 192.375 52.0931 202.743 62.1011 c
-216.135 75.1331 209.367 78.8771 211.095 85.4291 c
-213.615 94.8611 221.823 98.3891 223.695 109.045 c
-223.911 110.557 224.415 111.709 225.783 113.941 c
-227.871 117.109 227.367 123.373 227.367 129.133 c
-227.367 144.109 225.639 159.373 222.183 170.605 c
-219.015 181.117 213.975 188.461 209.655 197.965 c
-201.015 216.901 201.447 225.397 193.743 237.493 c
-184.959 251.461 189.279 260.749 177.615 260.173 c
-163.071 259.381 151.335 239.437 137.583 238.861 c
-closepath
-0.4 0.4 0.4 rgb
-F
-newpath
-137.566 237.776 m
-128.285 237.423 113.82 263.288 113.324 252.956 c
-113.008 244.2 113.424 244.278 113.354 235.709 c
-113.203 229.839 110.401 229.071 104.628 220.227 c
-101.615 215.464 99.354 210.415 97.6352 205.35 c
-96.6668 202.097 96.075 198.928 95.2052 195.824 c
-94.7897 194.183 93.7083 192.638 93.0197 190.783 c
-89.7671 180.003 79.476 166.601 77.0594 155.905 c
-74.5937 145.095 71.6897 138.21 72.0982 123.765 c
-72.4647 109.764 72.493 113.588 76.8719 109.947 c
-81.1545 106.331 85.7105 102.878 92.5341 96.8457 c
-99.7172 90.5973 114.771 79.6297 116.777 76.2573 c
-118.927 72.8131 118.908 64.9391 117.621 62.4331 c
-116.337 59.9955 105.041 58.5593 105.113 58.5593 c
-105.041 58.5593 114.929 44.9925 116.87 43.0512 c
-118.74 41.1818 126.771 32.2431 159.548 38.3477 c
-178.072 41.8025 192.671 52.1003 202.626 62.2032 c
-215.415 74.9652 208.733 78.9772 210.452 85.4958 c
-212.965 94.9114 221.729 98.4555 223.595 109.097 c
-223.811 110.603 224.349 111.75 225.708 113.972 c
-227.804 117.174 227.269 123.419 227.29 129.157 c
-227.356 144.183 225.585 159.391 222.13 170.59 c
-218.96 181.074 213.927 188.408 209.616 197.895 c
-200.991 216.802 201.395 225.311 193.684 237.369 c
-185.097 250.982 189.082 259.953 177.672 259.36 c
-163.295 258.534 151.295 238.344 137.566 237.776 c
-closepath
-0.43 0.43 0.43 rgb
-F
-newpath
-137.548 236.691 m
-128.347 236.346 114.249 261.866 113.617 252.074 c
-113.273 243.78 113.601 243.79 113.461 235.58 c
-113.16 229.816 110.291 228.713 104.648 220.025 c
-101.647 215.251 99.5011 210.265 97.9354 205.319 c
-97.1507 201.91 97.0471 198.812 96.1714 195.771 c
-95.7004 194.073 94.1857 192.638 93.1684 190.512 c
-89.6152 179.824 79.5452 166.413 77.1599 155.893 c
-74.6766 145.073 71.7484 138.215 72.2055 123.797 c
-72.5785 110.268 72.491 113.739 76.857 110.058 c
-81.1021 106.425 85.75 102.904 92.5573 96.8863 c
-99.7236 90.6534 114.855 79.6623 116.851 76.3016 c
-118.991 72.869 119.025 64.8972 117.746 62.4051 c
-116.475 59.9778 105.188 58.4735 105.259 58.4735 c
-105.188 58.4735 115.027 45.02 116.965 43.0813 c
-118.832 41.2144 126.832 32.3371 159.553 38.4263 c
-178.098 41.8799 192.968 52.1075 202.509 62.3052 c
-214.695 74.7973 208.099 79.0773 209.809 85.5624 c
-212.315 94.9616 221.635 98.522 223.495 109.149 c
-223.71 110.65 224.283 111.791 225.633 114.003 c
-227.736 117.24 227.171 123.466 227.213 129.182 c
-227.346 144.257 225.532 159.409 222.078 170.575 c
-218.905 181.031 213.878 188.355 209.577 197.826 c
-200.968 216.703 201.343 225.225 193.625 237.245 c
-185.236 250.503 188.886 259.156 177.73 258.547 c
-163.52 257.687 151.256 237.251 137.548 236.691 c
-closepath
-0.46 0.46 0.46 rgb
-F
-newpath
-137.531 235.606 m
-128.409 235.268 114.678 260.445 113.909 251.193 c
-113.538 243.359 113.778 243.303 113.568 235.452 c
-113.116 229.794 110.181 228.356 104.669 219.823 c
-101.678 215.038 99.6482 210.115 98.2357 205.289 c
-97.6346 201.722 98.0192 198.695 97.1377 195.718 c
-96.6112 193.962 94.6631 192.639 93.3172 190.242 c
-89.4634 179.646 79.6143 166.225 77.2604 155.88 c
-74.7594 145.051 71.8072 138.22 72.3127 123.828 c
-72.6923 110.771 72.489 113.89 76.842 110.168 c
-81.0497 106.52 85.7896 102.929 92.5805 96.9269 c
-99.7299 90.7096 114.939 79.6949 116.925 76.3458 c
-119.056 72.925 119.142 64.8552 117.872 62.3771 c
-116.613 59.9602 105.334 58.3877 105.406 58.3877 c
-105.334 58.3877 115.124 45.0474 117.06 43.1114 c
-118.924 41.2471 126.892 32.4311 159.558 38.5049 c
-178.123 41.9573 193.264 52.1147 202.392 62.4072 c
-213.975 74.6295 207.466 79.1775 209.166 85.6291 c
-211.665 95.0119 221.541 98.5884 223.395 109.201 c
-223.61 110.696 224.217 111.833 225.558 114.035 c
-227.669 117.305 227.073 123.512 227.136 129.206 c
-227.335 144.331 225.478 159.427 222.025 170.561 c
-218.849 180.988 213.83 188.301 209.538 197.756 c
-200.944 216.604 201.29 225.138 193.565 237.122 c
-185.374 250.024 188.689 258.36 177.787 257.734 c
-163.744 256.84 151.216 236.159 137.531 235.606 c
-closepath
-0.49 0.49 0.49 rgb
-F
-newpath
-137.513 234.521 m
-128.471 234.191 115.106 259.023 114.202 250.311 c
-113.804 242.939 113.955 242.816 113.675 235.323 c
-113.072 229.772 110.071 227.998 104.69 219.621 c
-101.71 214.825 99.7953 209.965 98.5359 205.258 c
-98.1185 201.534 98.9913 198.578 98.1039 195.666 c
-97.5219 193.852 95.1405 192.64 93.466 189.972 c
-89.3116 179.467 79.6835 166.036 77.3609 155.868 c
-74.8422 145.029 71.8659 138.225 72.42 123.86 c
-72.8061 111.274 72.4871 114.041 76.827 110.278 c
-80.9974 106.614 85.8291 102.954 92.6037 96.9675 c
-99.7363 90.7658 115.023 79.7276 117 76.39 c
-119.12 72.981 119.258 64.8133 117.997 62.3491 c
-116.75 59.9425 105.48 58.3019 105.552 58.3019 c
-105.48 58.3019 115.222 45.0749 117.155 43.1415 c
-119.017 41.2797 126.953 32.525 159.563 38.5835 c
-178.148 42.0347 193.56 52.1219 202.275 62.5093 c
-213.255 74.4616 206.832 79.2776 208.522 85.6957 c
-211.015 95.0621 221.447 98.6549 223.295 109.253 c
-223.509 110.742 224.151 111.874 225.483 114.066 c
-227.602 117.37 226.974 123.558 227.058 129.231 c
-227.325 144.405 225.424 159.445 221.973 170.546 c
-218.794 180.944 213.782 188.248 209.499 197.686 c
-200.921 216.505 201.238 225.052 193.506 236.998 c
-185.513 249.545 188.492 257.564 177.845 256.921 c
-163.968 255.993 151.176 235.066 137.513 234.521 c
-closepath
-0.52 0.52 0.52 rgb
-F
-newpath
-137.496 233.436 m
-128.533 233.113 115.535 257.602 114.495 249.43 c
-114.069 242.518 114.132 242.328 113.782 235.195 c
-113.029 229.75 109.961 227.64 104.711 219.419 c
-101.742 214.612 99.9424 209.815 98.8362 205.227 c
-98.6024 201.347 99.9634 198.462 99.0702 195.613 c
-98.4327 193.742 95.6179 192.64 93.6147 189.701 c
-89.1597 179.289 79.7526 165.848 77.4613 155.856 c
-74.925 145.007 71.9247 138.23 72.5273 123.892 c
-72.9199 111.778 72.4851 114.191 76.8121 110.389 c
-80.945 106.708 85.8687 102.98 92.6269 97.0081 c
-99.7426 90.8219 115.106 79.7602 117.074 76.4343 c
-119.184 73.037 119.375 64.7713 118.123 62.3212 c
-116.888 59.9249 105.627 58.2161 105.698 58.2161 c
-105.627 58.2161 115.32 45.1023 117.25 43.1715 c
-119.11 41.3124 127.013 32.619 159.568 38.6621 c
-178.173 42.1121 193.857 52.1291 202.158 62.6114 c
-212.535 74.2937 206.198 79.3777 207.879 85.7624 c
-210.365 95.1124 221.353 98.7213 223.195 109.304 c
-223.409 110.788 224.085 111.915 225.408 114.097 c
-227.534 117.436 226.876 123.604 226.981 129.255 c
-227.314 144.479 225.37 159.464 221.92 170.531 c
-218.739 180.901 213.734 188.195 209.46 197.617 c
-200.897 216.406 201.186 224.966 193.447 236.874 c
-185.651 249.066 188.296 256.767 177.902 256.108 c
-164.193 255.146 151.137 233.973 137.496 233.436 c
-closepath
-0.55 0.55 0.55 rgb
-F
-newpath
-137.479 232.351 m
-128.594 232.036 115.964 256.18 114.787 248.549 c
-114.334 242.097 114.309 241.841 113.888 235.066 c
-112.985 229.727 109.851 227.282 104.731 219.217 c
-101.774 214.399 100.09 209.665 99.1364 205.196 c
-99.0863 201.159 100.936 198.345 100.036 195.56 c
-99.3434 193.632 96.0953 192.641 93.7635 189.431 c
-89.0079 179.11 79.8217 165.66 77.5618 155.844 c
-75.0079 144.985 71.9834 138.235 72.6346 123.924 c
-73.0337 112.281 72.4832 114.342 76.7971 110.499 c
-80.8926 106.802 85.9083 103.005 92.6501 97.0487 c
-99.749 90.8781 115.19 79.7928 117.148 76.4785 c
-119.248 73.0929 119.492 64.7294 118.249 62.2932 c
-117.026 59.9072 105.773 58.1303 105.845 58.1303 c
-105.773 58.1303 115.418 45.1297 117.345 43.2016 c
-119.202 41.345 127.074 32.713 159.574 38.7407 c
-178.199 42.1894 194.153 52.1362 202.041 62.7134 c
-211.815 74.1258 205.564 79.4778 207.236 85.8291 c
-209.714 95.1627 221.259 98.7878 223.094 109.356 c
-223.309 110.835 224.018 111.956 225.333 114.128 c
-227.467 117.501 226.778 123.651 226.904 129.279 c
-227.303 144.553 225.316 159.482 221.868 170.516 c
-218.684 180.858 213.685 188.142 209.422 197.547 c
-200.873 216.306 201.134 224.88 193.388 236.751 c
-185.789 248.587 188.099 255.971 177.959 255.295 c
-164.417 254.299 151.097 232.88 137.479 232.351 c
-closepath
-0.58 0.58 0.58 rgb
-F
-newpath
-137.461 231.266 m
-128.656 230.958 116.393 254.759 115.08 247.667 c
-114.599 241.677 114.486 241.354 113.995 234.938 c
-112.941 229.705 109.741 226.924 104.752 219.015 c
-101.806 214.186 100.237 209.515 99.4367 205.165 c
-99.5702 200.971 101.908 198.228 101.003 195.507 c
-100.254 193.522 96.5727 192.642 93.9123 189.161 c
-88.8561 178.932 79.8909 165.472 77.6623 155.832 c
-75.0907 144.963 72.0421 138.24 72.7419 123.956 c
-73.1475 112.784 72.4812 114.493 76.7822 110.609 c
-80.8402 106.897 85.9478 103.03 92.6733 97.0893 c
-99.7553 90.9343 115.274 79.8254 117.222 76.5227 c
-119.312 73.1489 119.609 64.6875 118.374 62.2652 c
-117.164 59.8896 105.919 58.0445 105.991 58.0445 c
-105.919 58.0445 115.515 45.1572 117.44 43.2317 c
-119.295 41.3777 127.134 32.807 159.579 38.8193 c
-178.224 42.2668 194.449 52.1434 201.924 62.8154 c
-211.095 73.9579 204.93 79.5779 206.593 85.8957 c
-209.064 95.2129 221.165 98.8542 222.994 109.408 c
-223.208 110.881 223.952 111.998 225.258 114.159 c
-227.4 117.566 226.68 123.697 226.827 129.304 c
-227.293 144.627 225.263 159.5 221.815 170.501 c
-218.629 180.815 213.637 188.089 209.383 197.477 c
-200.85 216.207 201.082 224.794 193.329 236.627 c
-185.928 248.108 187.902 255.175 178.017 254.482 c
-164.641 253.452 151.057 231.787 137.461 231.266 c
-closepath
-0.61 0.61 0.61 rgb
-F
-newpath
-137.444 230.181 m
-128.718 229.881 116.822 253.337 115.373 246.786 c
-114.864 241.256 114.663 240.866 114.102 234.809 c
-112.898 229.683 109.631 226.567 104.773 218.813 c
-101.837 213.973 100.384 209.365 99.7369 205.135 c
-100.054 200.784 102.88 198.111 101.969 195.454 c
-101.165 193.411 97.0501 192.642 94.061 188.89 c
-88.7042 178.753 79.96 165.284 77.7628 155.819 c
-75.1735 144.941 72.1009 138.245 72.8491 123.987 c
-73.2613 113.287 72.4793 114.644 76.7672 110.72 c
-80.7878 106.991 85.9874 103.056 92.6965 97.1299 c
-99.7617 90.9905 115.358 79.858 117.296 76.567 c
-119.377 73.2049 119.726 64.6455 118.5 62.2372 c
-117.302 59.8719 106.066 57.9587 106.137 57.9587 c
-106.066 57.9587 115.613 45.1846 117.535 43.2618 c
-119.387 41.4103 127.195 32.901 159.584 38.8979 c
-178.249 42.3442 194.746 52.1506 201.807 62.9175 c
-210.375 73.7901 204.297 79.6781 205.95 85.9624 c
-208.414 95.2632 221.071 98.9207 222.894 109.46 c
-223.108 110.927 223.886 112.039 225.183 114.191 c
-227.332 117.632 226.582 123.743 226.75 129.328 c
-227.282 144.701 225.209 159.518 221.763 170.487 c
-218.573 180.772 213.589 188.035 209.344 197.407 c
-200.826 216.108 201.029 224.707 193.269 236.503 c
-186.066 247.629 187.706 254.379 178.074 253.669 c
-164.866 252.605 151.017 230.695 137.444 230.181 c
-closepath
-0.64 0.64 0.64 rgb
-F
-newpath
-137.426 229.096 m
-128.78 228.803 117.251 251.916 115.666 245.904 c
-115.129 240.836 114.84 240.379 114.209 234.681 c
-112.854 229.661 109.521 226.209 104.793 218.611 c
-101.869 213.76 100.531 209.215 100.037 205.104 c
-100.538 200.596 103.852 197.995 102.935 195.401 c
-102.076 193.301 97.5275 192.643 94.2098 188.62 c
-88.5524 178.575 80.0292 165.096 77.8633 155.807 c
-75.2564 144.919 72.1596 138.25 72.9564 124.019 c
-73.3751 113.791 72.4773 114.795 76.7522 110.83 c
-80.7354 107.085 86.0269 103.081 92.7197 97.1705 c
-99.7681 91.0466 115.442 79.8906 117.37 76.6112 c
-119.441 73.2608 119.843 64.6036 118.625 62.2092 c
-117.44 59.8543 106.212 57.8729 106.283 57.8729 c
-106.212 57.8729 115.711 45.2121 117.63 43.2919 c
-119.479 41.443 127.255 32.995 159.589 38.9765 c
-178.275 42.4216 195.042 52.1578 201.69 63.0196 c
-209.655 73.6222 203.663 79.7782 205.307 86.029 c
-207.764 95.3134 220.977 98.9871 222.794 109.512 c
-223.007 110.974 223.82 112.08 225.108 114.222 c
-227.265 117.697 226.484 123.79 226.673 129.353 c
-227.272 144.775 225.155 159.536 221.71 170.472 c
-218.518 180.729 213.54 187.982 209.305 197.338 c
-200.803 216.009 200.977 224.621 193.21 236.379 c
-186.205 247.15 187.509 253.582 178.132 252.856 c
-165.09 251.758 150.978 229.602 137.426 229.096 c
-closepath
-0.67 0.67 0.67 rgb
-F
-newpath
-137.409 228.011 m
-128.842 227.725 117.68 250.494 115.958 245.023 c
-115.395 240.415 115.017 239.892 114.316 234.553 c
-112.811 229.638 109.411 225.851 104.814 218.41 c
-101.901 213.548 100.678 209.065 100.337 205.073 c
-101.022 200.409 104.824 197.878 103.901 195.349 c
-102.986 193.191 98.005 192.643 94.3586 188.349 c
-88.4006 178.396 80.0983 164.908 77.9638 155.795 c
-75.3392 144.897 72.2184 138.255 73.0637 124.051 c
-73.4889 114.294 72.4754 114.946 76.7373 110.94 c
-80.6831 107.18 86.0665 103.106 92.743 97.211 c
-99.7744 91.1028 115.526 79.9232 117.445 76.6554 c
-119.505 73.3168 119.96 64.5616 118.751 62.1812 c
-117.577 59.8366 106.358 57.787 106.43 57.787 c
-106.358 57.787 115.809 45.2395 117.726 43.322 c
-119.572 41.4757 127.315 33.089 159.594 39.0552 c
-178.3 42.499 195.339 52.165 201.573 63.1216 c
-208.934 73.4543 203.029 79.8783 204.663 86.0957 c
-207.114 95.3637 220.883 99.0536 222.694 109.564 c
-222.907 111.02 223.754 112.121 225.034 114.253 c
-227.198 117.762 226.385 123.836 226.596 129.377 c
-227.261 144.849 225.102 159.554 221.658 170.457 c
-218.463 180.686 213.492 187.929 209.266 197.268 c
-200.779 215.91 200.925 224.535 193.151 236.255 c
-186.343 246.671 187.312 252.786 178.189 252.043 c
-165.314 250.911 150.938 228.509 137.409 228.011 c
-closepath
-0.7 0.7 0.7 rgb
-F
-newpath
-137.392 226.926 m
-128.904 226.648 118.108 249.073 116.251 244.142 c
-115.66 239.994 115.193 239.404 114.423 234.424 c
-112.767 229.616 109.302 225.493 104.835 218.208 c
-101.933 213.335 100.825 208.916 100.638 205.042 c
-101.506 200.221 105.796 197.761 104.868 195.296 c
-103.897 193.081 98.4824 192.644 94.5073 188.079 c
-88.2487 178.218 80.1674 164.719 78.0643 155.783 c
-75.422 144.876 72.2772 138.26 73.171 124.083 c
-73.6027 114.797 72.4734 115.097 76.7223 111.051 c
-80.6307 107.274 86.1061 103.132 92.7662 97.2516 c
-99.7807 91.159 115.61 79.9559 117.519 76.6997 c
-119.569 73.3728 120.076 64.5197 118.877 62.1532 c
-117.715 59.819 106.505 57.7012 106.576 57.7012 c
-106.505 57.7012 115.906 45.2669 117.821 43.3521 c
-119.665 41.5083 127.376 33.1829 159.599 39.1338 c
-178.325 42.5764 195.635 52.1722 201.456 63.2236 c
-208.214 73.2864 202.395 79.9784 204.02 86.1624 c
-206.464 95.414 220.788 99.12 222.594 109.616 c
-222.807 111.066 223.688 112.163 224.959 114.284 c
-227.13 117.828 226.287 123.882 226.518 129.401 c
-227.25 144.923 225.048 159.572 221.605 170.442 c
-218.408 180.642 213.444 187.876 209.227 197.198 c
-200.755 215.811 200.873 224.449 193.092 236.132 c
-186.481 246.192 187.116 251.99 178.246 251.229 c
-165.539 250.065 150.898 227.416 137.392 226.926 c
-closepath
-0.73 0.73 0.73 rgb
-F
-newpath
-137.374 225.841 m
-128.966 225.57 118.537 247.651 116.544 243.26 c
-115.925 239.574 115.37 238.917 114.53 234.296 c
-112.723 229.594 109.192 225.135 104.855 218.006 c
-101.965 213.122 100.972 208.766 100.938 205.011 c
-101.99 200.033 106.768 197.645 105.834 195.243 c
-104.808 192.971 98.9598 192.645 94.6561 187.809 c
-88.0969 178.04 80.2366 164.531 78.1648 155.771 c
-75.5049 144.854 72.3359 138.265 73.2783 124.115 c
-73.7165 115.301 72.4714 115.248 76.7073 111.161 c
-80.5783 107.368 86.1456 103.157 92.7894 97.2922 c
-99.7871 91.2151 115.694 79.9885 117.593 76.7439 c
-119.633 73.4287 120.193 64.4777 119.002 62.1252 c
-117.853 59.8014 106.651 57.6154 106.722 57.6154 c
-106.651 57.6154 116.004 45.2944 117.916 43.3822 c
-119.757 41.541 127.436 33.2769 159.604 39.2124 c
-178.351 42.6538 195.931 52.1794 201.339 63.3257 c
-207.494 73.1185 201.761 80.0785 203.377 86.229 c
-205.814 95.4642 220.694 99.1864 222.494 109.668 c
-222.706 111.113 223.622 112.204 224.884 114.315 c
-227.063 117.893 226.189 123.929 226.441 129.426 c
-227.24 144.997 224.994 159.59 221.552 170.427 c
-218.353 180.599 213.395 187.823 209.188 197.129 c
-200.732 215.712 200.821 224.363 193.033 236.008 c
-186.62 245.713 186.919 251.193 178.304 250.416 c
-165.763 249.218 150.859 226.323 137.374 225.841 c
-closepath
-0.76 0.76 0.76 rgb
-F
-newpath
-137.357 224.756 m
-129.028 224.493 118.966 246.23 116.837 242.379 c
-116.19 239.153 115.547 238.429 114.637 234.167 c
-112.68 229.572 109.082 224.778 104.876 217.804 c
-101.996 212.909 101.119 208.616 101.238 204.981 c
-102.474 199.846 107.74 197.528 106.8 195.19 c
-105.719 192.86 99.4372 192.645 94.8048 187.538 c
-87.945 177.861 80.3057 164.343 78.2653 155.758 c
-75.5877 144.832 72.3947 138.27 73.3855 124.146 c
-73.8303 115.804 72.4695 115.399 76.6924 111.272 c
-80.5259 107.462 86.1852 103.183 92.8126 97.3328 c
-99.7934 91.2713 115.778 80.0211 117.667 76.7882 c
-119.698 73.4847 120.31 64.4357 119.128 62.0972 c
-117.991 59.7837 106.798 57.5296 106.868 57.5296 c
-106.798 57.5296 116.102 45.3218 118.011 43.4123 c
-119.85 41.5736 127.497 33.3709 159.609 39.291 c
-178.376 42.7312 196.228 52.1866 201.222 63.4277 c
-206.774 72.9507 201.128 80.1787 202.734 86.2957 c
-205.164 95.5145 220.6 99.2529 222.394 109.72 c
-222.606 111.159 223.556 112.245 224.809 114.347 c
-226.995 117.959 226.091 123.975 226.364 129.45 c
-227.229 145.071 224.94 159.608 221.5 170.413 c
-218.297 180.556 213.347 187.769 209.149 197.059 c
-200.708 215.613 200.768 224.276 192.973 235.884 c
-186.758 245.234 186.723 250.397 178.361 249.603 c
-165.988 248.371 150.819 225.231 137.357 224.756 c
-closepath
-0.79 0.79 0.79 rgb
-F
-newpath
-137.339 223.671 m
-129.09 223.415 119.395 244.808 117.13 241.497 c
-116.455 238.733 115.724 237.942 114.744 234.039 c
-112.636 229.549 108.972 224.42 104.897 217.602 c
-102.028 212.696 101.266 208.466 101.538 204.95 c
-102.958 199.658 108.712 197.411 107.766 195.137 c
-106.629 192.75 99.9146 192.646 94.9536 187.268 c
-87.7932 177.683 80.3749 164.155 78.3658 155.746 c
-75.6705 144.81 72.4534 138.275 73.4928 124.178 c
-73.9441 116.307 72.4675 115.55 76.6774 111.382 c
-80.4735 107.557 86.2247 103.208 92.8358 97.3734 c
-99.7998 91.3275 115.862 80.0537 117.741 76.8324 c
-119.762 73.5407 120.427 64.3938 119.253 62.0692 c
-118.129 59.7661 106.944 57.4438 107.014 57.4438 c
-106.944 57.4438 116.2 45.3493 118.106 43.4424 c
-119.942 41.6063 127.557 33.4649 159.614 39.3696 c
-178.401 42.8086 196.524 52.1938 201.105 63.5298 c
-206.054 72.7828 200.494 80.2788 202.091 86.3623 c
-204.514 95.5647 220.506 99.3193 222.294 109.772 c
-222.505 111.205 223.49 112.286 224.734 114.378 c
-226.928 118.024 225.993 124.021 226.287 129.475 c
-227.219 145.145 224.887 159.626 221.447 170.398 c
-218.242 180.513 213.299 187.716 209.11 196.989 c
-200.685 215.514 200.716 224.19 192.914 235.76 c
-186.897 244.755 186.526 249.601 178.419 248.79 c
-166.212 247.524 150.779 224.138 137.339 223.671 c
-closepath
-0.82 0.82 0.82 rgb
-F
-newpath
-137.322 222.586 m
-129.152 222.338 119.824 243.387 117.422 240.616 c
-116.72 238.312 115.901 237.455 114.851 233.91 c
-112.592 229.527 108.862 224.062 104.918 217.4 c
-102.06 212.483 101.413 208.316 101.839 204.919 c
-103.441 199.47 109.684 197.294 108.733 195.084 c
-107.54 192.64 100.392 192.647 95.1024 186.998 c
-87.6414 177.504 80.444 163.967 78.4662 155.734 c
-75.7534 144.788 72.5121 138.28 73.6001 124.21 c
-74.0579 116.811 72.4656 115.701 76.6624 111.492 c
-80.4211 107.651 86.2643 103.233 92.859 97.414 c
-99.8062 91.3837 115.945 80.0863 117.815 76.8766 c
-119.826 73.5966 120.544 64.3519 119.379 62.0412 c
-118.267 59.7484 107.09 57.358 107.161 57.358 c
-107.09 57.358 116.297 45.3767 118.201 43.4725 c
-120.035 41.6389 127.618 33.5589 159.62 39.4482 c
-178.426 42.8859 196.82 52.201 200.988 63.6318 c
-205.334 72.6149 199.86 80.3789 201.448 86.429 c
-203.864 95.615 220.412 99.3858 222.193 109.824 c
-222.405 111.252 223.423 112.328 224.659 114.409 c
-226.861 118.089 225.895 124.068 226.21 129.499 c
-227.208 145.219 224.833 159.645 221.395 170.383 c
-218.187 180.47 213.251 187.663 209.072 196.919 c
-200.661 215.415 200.664 224.104 192.855 235.637 c
-187.035 244.276 186.329 248.805 178.476 247.977 c
-166.436 246.677 150.74 223.045 137.322 222.586 c
-closepath
-0.85 0.85 0.85 rgb
-F
-newpath
-137.305 221.501 m
-129.213 221.26 120.253 241.965 117.715 239.735 c
-116.985 237.891 116.078 236.967 114.957 233.782 c
-112.549 229.505 108.752 223.704 104.938 217.198 c
-102.092 212.27 101.561 208.166 102.139 204.888 c
-103.925 199.283 110.657 197.178 109.699 195.031 c
-108.451 192.53 100.869 192.647 95.2511 186.727 c
-87.4895 177.326 80.5131 163.779 78.5667 155.722 c
-75.8362 144.766 72.5709 138.285 73.7074 124.242 c
-74.1717 117.314 72.4636 115.851 76.6475 111.603 c
-80.3687 107.745 86.3039 103.259 92.8822 97.4546 c
-99.8125 91.4398 116.029 80.1189 117.889 76.9209 c
-119.89 73.6526 120.661 64.3099 119.505 62.0133 c
-118.405 59.7308 107.237 57.2722 107.307 57.2722 c
-107.237 57.2722 116.395 45.4041 118.296 43.5025 c
-120.127 41.6716 127.678 33.6529 159.625 39.5268 c
-178.452 42.9633 197.117 52.2081 200.871 63.7339 c
-204.614 72.447 199.226 80.479 200.805 86.4957 c
-203.213 95.6653 220.318 99.4522 222.093 109.875 c
-222.305 111.298 223.357 112.369 224.584 114.44 c
-226.793 118.155 225.797 124.114 226.133 129.523 c
-227.197 145.293 224.779 159.663 221.342 170.368 c
-218.132 180.427 213.202 187.61 209.033 196.85 c
-200.637 215.315 200.612 224.018 192.796 235.513 c
-187.173 243.797 186.133 248.008 178.533 247.164 c
-166.661 245.83 150.7 221.952 137.305 221.501 c
-closepath
-0.88 0.88 0.88 rgb
-F
-newpath
-137.287 220.416 m
-129.275 220.183 120.681 240.544 118.008 238.853 c
-117.251 237.471 116.255 236.48 115.064 233.653 c
-112.505 229.483 108.642 223.346 104.959 216.996 c
-102.124 212.057 101.708 208.016 102.439 204.857 c
-104.409 199.095 111.629 197.061 110.665 194.979 c
-109.362 192.42 101.347 192.648 95.3999 186.457 c
-87.3377 177.147 80.5823 163.59 78.6672 155.71 c
-75.919 144.744 72.6296 138.29 73.8147 124.274 c
-74.2855 117.817 72.4617 116.002 76.6325 111.713 c
-80.3164 107.839 86.3434 103.284 92.9054 97.4952 c
-99.8188 91.496 116.113 80.1516 117.964 76.9651 c
-119.954 73.7086 120.777 64.2679 119.63 61.9853 c
-118.542 59.7131 107.383 57.1864 107.453 57.1864 c
-107.383 57.1864 116.493 45.4316 118.391 43.5326 c
-120.22 41.7042 127.739 33.7468 159.63 39.6054 c
-178.477 43.0407 197.413 52.2153 200.754 63.8359 c
-203.894 72.2791 198.592 80.5791 200.161 86.5623 c
-202.563 95.7155 220.224 99.5187 221.993 109.927 c
-222.204 111.344 223.291 112.41 224.509 114.471 c
-226.726 118.22 225.698 124.16 226.055 129.548 c
-227.187 145.367 224.725 159.681 221.29 170.353 c
-218.077 180.383 213.154 187.557 208.994 196.78 c
-200.614 215.216 200.56 223.932 192.737 235.389 c
-187.312 243.318 185.936 247.212 178.591 246.351 c
-166.885 244.983 150.66 220.859 137.287 220.416 c
-closepath
-0.91 0.91 0.91 rgb
-F
-newpath
-137.27 219.331 m
-129.337 219.105 121.11 239.122 118.3 237.972 c
-117.516 237.05 116.432 235.993 115.171 233.525 c
-112.461 229.46 108.532 222.989 104.98 216.794 c
-102.155 211.844 101.855 207.866 102.739 204.827 c
-104.893 198.907 112.601 196.944 111.631 194.926 c
-110.272 192.309 101.824 192.649 95.5487 186.187 c
-87.1859 176.969 80.6514 163.402 78.7677 155.697 c
-76.0018 144.722 72.6884 138.295 73.9219 124.305 c
-74.3993 118.32 72.4597 116.153 76.6175 111.823 c
-80.264 107.934 86.383 103.309 92.9286 97.5358 c
-99.8252 91.5522 116.197 80.1842 118.038 77.0093 c
-120.019 73.7646 120.894 64.226 119.756 61.9573 c
-118.68 59.6955 107.529 57.1006 107.6 57.1006 c
-107.529 57.1006 116.59 45.459 118.486 43.5627 c
-120.312 41.7369 127.799 33.8408 159.635 39.684 c
-178.502 43.1181 197.709 52.2225 200.637 63.938 c
-203.174 72.1113 197.959 80.6793 199.518 86.629 c
-201.913 95.7658 220.13 99.5851 221.893 109.979 c
-222.104 111.39 223.225 112.451 224.434 114.503 c
-226.659 118.285 225.6 124.206 225.978 129.572 c
-227.176 145.441 224.671 159.699 221.237 170.339 c
-218.021 180.34 213.106 187.503 208.955 196.71 c
-200.59 215.117 200.507 223.845 192.677 235.266 c
-187.45 242.839 185.739 246.416 178.648 245.538 c
-167.109 244.136 150.62 219.767 137.27 219.331 c
-closepath
-0.94 0.94 0.94 rgb
-F
-newpath
-137.252 218.246 m
-129.399 218.028 121.539 237.701 118.593 237.09 c
-117.781 236.63 116.609 235.505 115.278 233.396 c
-112.418 229.438 108.422 222.631 105 216.592 c
-102.187 211.631 102.002 207.716 103.04 204.796 c
-105.377 198.72 113.573 196.828 112.598 194.873 c
-111.183 192.199 102.302 192.649 95.6974 185.916 c
-87.034 176.79 80.7206 163.214 78.8682 155.685 c
-76.0847 144.7 72.7471 138.3 74.0292 124.337 c
-74.5131 118.824 72.4578 116.304 76.6026 111.934 c
-80.2116 108.028 86.4225 103.335 92.9518 97.5764 c
-99.8316 91.6083 116.281 80.2168 118.112 77.0536 c
-120.083 73.8205 121.011 64.184 119.881 61.9293 c
-118.818 59.6778 107.676 57.0148 107.746 57.0148 c
-107.676 57.0148 116.688 45.4865 118.581 43.5928 c
-120.405 41.7695 127.86 33.9348 159.64 39.7626 c
-178.528 43.1955 198.006 52.2297 200.52 64.04 c
-202.454 71.9434 197.325 80.7794 198.875 86.6956 c
-201.263 95.816 220.036 99.6516 221.793 110.031 c
-222.003 111.437 223.159 112.493 224.359 114.534 c
-226.591 118.351 225.502 124.253 225.901 129.597 c
-227.166 145.515 224.618 159.717 221.185 170.324 c
-217.966 180.297 213.057 187.45 208.916 196.641 c
-200.567 215.018 200.455 223.759 192.618 235.142 c
-187.589 242.36 185.543 245.619 178.706 244.725 c
-167.334 243.289 150.581 218.674 137.252 218.246 c
-closepath
-0.97 0.97 0.97 rgb
-F
-newpath
-137.235 217.161 m
-129.461 216.95 121.968 236.279 118.886 236.209 c
-118.046 236.209 116.786 235.018 115.385 233.268 c
-112.374 229.416 108.312 222.273 105.021 216.39 c
-102.219 211.418 102.149 207.566 103.34 204.765 c
-105.861 198.532 114.545 196.711 113.564 194.82 c
-112.094 192.089 102.779 192.65 95.8462 185.646 c
-86.8822 176.612 80.7897 163.026 78.9687 155.673 c
-76.1675 144.678 72.8059 138.305 74.1365 124.369 c
-74.6269 119.327 72.4558 116.455 76.5876 112.044 c
-80.1592 108.122 86.4621 103.36 92.975 97.617 c
-99.8379 91.6645 116.365 80.2494 118.186 77.0978 c
-120.147 73.8765 121.128 64.1421 120.007 61.9013 c
-118.956 59.6602 107.822 56.929 107.892 56.929 c
-107.822 56.929 116.786 45.5139 118.676 43.6229 c
-120.497 41.8022 127.92 34.0288 159.645 39.8412 c
-178.553 43.2729 198.302 52.2369 200.403 64.1421 c
-201.734 71.7755 196.691 80.8795 198.232 86.7623 c
-200.613 95.8663 219.942 99.718 221.693 110.083 c
-221.903 111.483 223.093 112.534 224.284 114.565 c
-226.524 118.416 225.404 124.299 225.824 129.621 c
-227.155 145.589 224.564 159.735 221.132 170.309 c
-217.911 180.254 213.009 187.397 208.877 196.571 c
-200.543 214.919 200.403 223.673 192.559 235.018 c
-187.727 241.881 185.346 244.823 178.763 243.912 c
-167.558 242.442 150.541 217.581 137.235 217.161 c
-closepath
-1 1 1 rgb
-F
-newpath
-142.551 288.253 m
-147.807 288.901 155.007 287.605 158.319 285.157 c
-161.415 282.853 163.575 281.629 166.383 280.693 c
-175.815 277.597 188.199 276.157 187.623 267.661 c
-186.975 257.509 184.023 252.973 175.599 250.309 c
-168.831 248.221 156.735 236.485 147.375 236.485 c
-143.199 236.485 137.367 236.269 133.983 237.493 c
-130.743 238.645 126.207 244.117 120.879 248.509 c
-115.551 252.829 110.583 257.437 110.439 263.485 c
-110.223 269.893 114.399 271.981 120.303 277.093 c
-123.399 279.829 129.015 284.365 132.903 286.381 c
-136.503 288.181 138.807 287.821 142.551 288.253 c
-closepath
-0.6 0.35 0 rgb
-F
-newpath
-142.661 288.16 m
-147.886 288.804 155.045 287.515 158.338 285.082 c
-161.416 282.791 163.564 281.571 166.355 280.643 c
-175.73 277.565 188.084 276.114 187.515 267.67 c
-186.874 257.58 183.846 253.089 175.474 250.447 c
-168.751 248.374 156.706 236.858 147.403 236.807 c
-143.193 236.775 137.478 236.573 134.116 237.784 c
-130.901 238.926 126.379 244.392 121.085 248.753 c
-115.794 253.045 110.825 257.527 110.768 263.518 c
-110.614 269.772 114.68 271.93 120.541 277.007 c
-123.612 279.717 129.135 284.31 133.004 286.34 c
-136.568 288.142 138.938 287.73 142.661 288.16 c
-closepath
-0.62 0.373 0 rgb
-F
-newpath
-142.77 288.066 m
-147.966 288.707 155.083 287.426 158.357 285.006 c
-161.417 282.728 163.552 281.512 166.328 280.593 c
-175.645 277.533 187.969 276.071 187.406 267.679 c
-186.772 257.651 183.669 253.205 175.349 250.584 c
-168.671 248.527 156.676 237.232 147.43 237.13 c
-143.188 237.066 137.588 236.878 134.25 238.075 c
-131.06 239.208 126.55 244.667 121.29 248.996 c
-116.036 253.26 111.068 257.618 111.098 263.551 c
-111.005 269.65 114.961 271.88 120.778 276.92 c
-123.826 279.605 129.256 284.255 133.106 286.299 c
-136.632 288.104 139.069 287.639 142.77 288.066 c
-closepath
-0.64 0.395 0 rgb
-F
-newpath
-142.88 287.973 m
-148.045 288.61 155.121 287.336 158.376 284.931 c
-161.418 282.666 163.541 281.454 166.3 280.543 c
-175.56 277.501 187.855 276.028 187.298 267.689 c
-186.671 257.721 183.493 253.321 175.224 250.722 c
-168.591 248.68 156.647 237.605 147.458 237.452 c
-143.182 237.356 137.699 237.182 134.383 238.366 c
-131.218 239.489 126.722 244.943 121.496 249.24 c
-116.279 253.476 111.31 257.708 111.427 263.585 c
-111.396 269.529 115.242 271.829 121.016 276.834 c
-124.039 279.494 129.376 284.2 133.207 286.258 c
-136.697 288.065 139.2 287.549 142.88 287.973 c
-closepath
-0.66 0.417 0 rgb
-F
-newpath
-142.989 287.88 m
-148.124 288.513 155.159 287.247 158.394 284.855 c
-161.419 282.604 163.53 281.395 166.273 280.494 c
-175.475 277.469 187.74 275.986 187.19 267.698 c
-186.57 257.792 183.316 253.437 175.098 250.86 c
-168.512 248.833 156.618 237.978 147.486 237.774 c
-143.176 237.647 137.81 237.487 134.516 238.657 c
-131.376 239.77 126.894 245.218 121.701 249.483 c
-116.521 253.691 111.553 257.798 111.756 263.618 c
-111.787 269.407 115.523 271.778 121.253 276.747 c
-124.252 279.382 129.497 284.145 133.308 286.217 c
-136.762 288.026 139.331 287.458 142.989 287.88 c
-closepath
-0.68 0.44 0 rgb
-F
-newpath
-143.099 287.786 m
-148.204 288.416 155.197 287.157 158.413 284.78 c
-161.42 282.542 163.518 281.337 166.245 280.444 c
-175.39 277.437 187.625 275.943 187.082 267.707 c
-186.468 257.863 183.139 253.553 174.973 250.997 c
-168.432 248.986 156.588 238.352 147.513 238.097 c
-143.171 237.937 137.921 237.791 134.65 238.948 c
-131.535 240.051 127.066 245.493 121.907 249.727 c
-116.764 253.907 111.795 257.889 112.086 263.651 c
-112.178 269.286 115.804 271.727 121.491 276.661 c
-124.466 279.27 129.617 284.09 133.41 286.176 c
-136.827 287.987 139.463 287.367 143.099 287.786 c
-closepath
-0.7 0.463 0 rgb
-F
-newpath
-143.208 287.693 m
-148.283 288.319 155.234 287.067 158.432 284.704 c
-161.421 282.479 163.507 281.279 166.218 280.394 c
-175.305 277.405 187.51 275.9 186.973 267.716 c
-186.367 257.934 182.962 253.669 174.848 251.135 c
-168.352 249.138 156.559 238.725 147.541 238.419 c
-143.165 238.228 138.031 238.096 134.783 239.239 c
-131.693 240.333 127.237 245.769 122.112 249.971 c
-117.006 254.123 112.038 257.979 112.415 263.684 c
-112.57 269.164 116.085 271.677 121.728 276.574 c
-124.679 279.159 129.738 284.035 133.511 286.134 c
-136.891 287.948 139.594 287.276 143.208 287.693 c
-closepath
-0.72 0.485 0 rgb
-F
-newpath
-143.318 287.6 m
-148.362 288.222 155.272 286.978 158.451 284.629 c
-161.422 282.417 163.496 281.22 166.19 280.344 c
-175.22 277.373 187.395 275.857 186.865 267.725 c
-186.266 258.005 182.786 253.785 174.723 251.273 c
-168.272 249.291 156.53 239.098 147.569 238.741 c
-143.159 238.518 138.142 238.4 134.916 239.53 c
-131.851 240.614 127.409 246.044 122.318 250.214 c
-117.249 254.338 112.28 258.069 112.744 263.718 c
-112.961 269.043 116.366 271.626 121.966 276.488 c
-124.892 279.047 129.859 283.98 133.612 286.093 c
-136.956 287.91 139.725 287.185 143.318 287.6 c
-closepath
-0.74 0.507 0 rgb
-F
-newpath
-143.427 287.507 m
-148.441 288.125 155.31 286.888 158.47 284.553 c
-161.423 282.355 163.484 281.162 166.163 280.294 c
-175.135 277.341 187.281 275.814 186.757 267.735 c
-186.164 258.075 182.609 253.901 174.598 251.411 c
-168.192 249.444 156.5 239.471 147.596 239.064 c
-143.154 238.809 138.253 238.705 135.05 239.821 c
-132.01 240.895 127.581 246.319 122.523 250.458 c
-117.491 254.554 112.523 258.159 113.073 263.751 c
-113.352 268.921 116.647 271.575 122.203 276.401 c
-125.106 278.935 129.979 283.925 133.714 286.052 c
-137.021 287.871 139.856 287.095 143.427 287.507 c
-closepath
-0.76 0.53 0 rgb
-F
-newpath
-143.537 287.413 m
-148.521 288.028 155.348 286.799 158.489 284.478 c
-161.424 282.293 163.473 281.103 166.135 280.244 c
-175.05 277.309 187.166 275.771 186.649 267.744 c
-186.063 258.146 182.432 254.017 174.473 251.548 c
-168.112 249.597 156.471 239.845 147.624 239.386 c
-143.148 239.099 138.363 239.009 135.183 240.112 c
-132.168 241.176 127.752 246.594 122.729 250.701 c
-117.734 254.769 112.765 258.25 113.403 263.784 c
-113.743 268.799 116.928 271.525 122.441 276.315 c
-125.319 278.823 130.1 283.87 133.815 286.011 c
-137.085 287.832 139.987 287.004 143.537 287.413 c
-closepath
-0.78 0.553 0 rgb
-F
-newpath
-143.646 287.32 m
-148.6 287.93 155.386 286.709 158.508 284.402 c
-161.426 282.23 163.462 281.045 166.107 280.195 c
-174.965 277.277 187.051 275.729 186.54 267.753 c
-185.962 258.217 182.255 254.133 174.348 251.686 c
-168.033 249.75 156.441 240.218 147.651 239.708 c
-143.143 239.389 138.474 239.314 135.316 240.404 c
-132.327 241.458 127.924 246.87 122.934 250.945 c
-117.977 254.985 113.007 258.34 113.732 263.818 c
-114.134 268.678 117.21 271.474 122.678 276.229 c
-125.533 278.711 130.22 283.815 133.917 285.97 c
-137.15 287.794 140.118 286.913 143.646 287.32 c
-closepath
-0.8 0.575 0 rgb
-F
-newpath
-143.756 287.227 m
-148.679 287.833 155.424 286.619 158.526 284.327 c
-161.427 282.168 163.45 280.987 166.08 280.145 c
-174.881 277.245 186.936 275.686 186.432 267.762 c
-185.86 258.288 182.079 254.249 174.222 251.824 c
-167.953 249.903 156.412 240.591 147.679 240.031 c
-143.137 239.68 138.585 239.618 135.45 240.695 c
-132.485 241.739 128.096 247.145 123.14 251.189 c
-118.219 255.201 113.25 258.43 114.061 263.851 c
-114.525 268.557 117.491 271.423 122.916 276.142 c
-125.746 278.6 130.34 283.76 134.018 285.929 c
-137.215 287.755 140.249 286.822 143.756 287.227 c
-closepath
-0.82 0.598 0 rgb
-F
-newpath
-143.866 287.133 m
-148.759 287.736 155.462 286.53 158.545 284.251 c
-161.428 282.106 163.439 280.928 166.052 280.095 c
-174.796 277.213 186.821 275.643 186.324 267.771 c
-185.759 258.359 181.902 254.365 174.097 251.961 c
-167.873 250.056 156.383 240.965 147.707 240.353 c
-143.131 239.97 138.695 239.922 135.583 240.986 c
-132.643 242.02 128.267 247.42 123.346 251.432 c
-118.462 255.416 113.492 258.521 114.391 263.884 c
-114.916 268.435 117.772 271.373 123.154 276.056 c
-125.959 278.488 130.461 283.705 134.119 285.888 c
-137.279 287.716 140.38 286.731 143.866 287.133 c
-closepath
-0.84 0.62 0 rgb
-F
-newpath
-143.975 287.04 m
-148.838 287.639 155.5 286.44 158.564 284.176 c
-161.429 282.044 163.427 280.87 166.025 280.045 c
-174.711 277.181 186.707 275.6 186.216 267.781 c
-185.657 258.429 181.725 254.481 173.972 252.099 c
-167.793 250.209 156.353 241.338 147.734 240.676 c
-143.126 240.261 138.806 240.227 135.717 241.277 c
-132.802 242.301 128.439 247.695 123.551 251.676 c
-118.704 255.632 113.735 258.611 114.72 263.917 c
-115.307 268.314 118.053 271.322 123.391 275.969 c
-126.173 278.376 130.581 283.65 134.221 285.847 c
-137.344 287.677 140.511 286.641 143.975 287.04 c
-closepath
-0.86 0.642 0 rgb
-F
-newpath
-144.085 286.947 m
-148.917 287.542 155.538 286.351 158.583 284.1 c
-161.43 281.982 163.416 280.811 165.997 279.995 c
-174.626 277.149 186.592 275.557 186.107 267.79 c
-185.556 258.5 181.549 254.597 173.847 252.237 c
-167.713 250.362 156.324 241.711 147.762 240.998 c
-143.12 240.551 138.917 240.531 135.85 241.568 c
-132.96 242.583 128.611 247.97 123.757 251.919 c
-118.947 255.847 113.977 258.701 115.049 263.951 c
-115.698 268.192 118.334 271.271 123.629 275.883 c
-126.386 278.264 130.702 283.595 134.322 285.806 c
-137.409 287.638 140.642 286.55 144.085 286.947 c
-closepath
-0.88 0.665 0 rgb
-F
-newpath
-144.194 286.853 m
-148.997 287.445 155.576 286.261 158.602 284.025 c
-161.431 281.919 163.405 280.753 165.97 279.945 c
-174.541 277.117 186.477 275.514 185.999 267.799 c
-185.455 258.571 181.372 254.713 173.722 252.375 c
-167.633 250.514 156.295 242.085 147.79 241.32 c
-143.114 240.842 139.027 240.836 135.983 241.859 c
-133.118 242.864 128.783 248.246 123.962 252.163 c
-119.189 256.063 114.22 258.792 115.379 263.984 c
-116.09 268.07 118.615 271.221 123.866 275.796 c
-126.599 278.153 130.823 283.54 134.423 285.764 c
-137.473 287.6 140.773 286.459 144.194 286.853 c
-closepath
-0.9 0.688 0 rgb
-F
-newpath
-144.304 286.76 m
-149.076 287.348 155.613 286.171 158.621 283.949 c
-161.432 281.857 163.393 280.695 165.942 279.895 c
-174.456 277.085 186.362 275.471 185.891 267.808 c
-185.353 258.642 181.195 254.829 173.597 252.512 c
-167.553 250.667 156.265 242.458 147.817 241.643 c
-143.109 241.132 139.138 241.14 136.117 242.15 c
-133.277 243.145 128.954 248.521 124.168 252.407 c
-119.432 256.279 114.462 258.882 115.708 264.017 c
-116.481 267.949 118.896 271.17 124.104 275.71 c
-126.813 278.041 130.943 283.485 134.525 285.723 c
-137.538 287.561 140.905 286.368 144.304 286.76 c
-closepath
-0.92 0.71 0 rgb
-F
-newpath
-144.413 286.667 m
-149.155 287.251 155.651 286.082 158.639 283.874 c
-161.433 281.795 163.382 280.636 165.915 279.846 c
-174.371 277.053 186.247 275.429 185.783 267.817 c
-185.252 258.713 181.018 254.945 173.471 252.65 c
-167.474 250.82 156.236 242.831 147.845 241.965 c
-143.103 241.423 139.249 241.445 136.25 242.441 c
-133.435 243.426 129.126 248.796 124.373 252.65 c
-119.674 256.494 114.705 258.972 116.037 264.05 c
-116.872 267.828 119.177 271.119 124.341 275.623 c
-127.026 277.929 131.064 283.43 134.626 285.682 c
-137.603 287.522 141.036 286.277 144.413 286.667 c
-closepath
-0.94 0.733 0 rgb
-F
-newpath
-144.523 286.574 m
-149.234 287.154 155.689 285.992 158.658 283.798 c
-161.434 281.733 163.371 280.578 165.887 279.796 c
-174.286 277.021 186.133 275.386 185.674 267.827 c
-185.151 258.783 180.842 255.061 173.346 252.788 c
-167.394 250.973 156.207 243.204 147.873 242.287 c
-143.097 241.713 139.36 241.749 136.383 242.732 c
-133.593 243.708 129.298 249.072 124.579 252.894 c
-119.917 256.71 114.947 259.062 116.366 264.083 c
-117.263 267.706 119.458 271.068 124.579 275.537 c
-127.239 277.818 131.184 283.375 134.727 285.641 c
-137.668 287.484 141.167 286.187 144.523 286.574 c
-closepath
-0.96 0.755 0 rgb
-F
-newpath
-144.632 286.48 m
-149.314 287.057 155.727 285.903 158.677 283.723 c
-161.435 281.67 163.359 280.519 165.86 279.746 c
-174.201 276.989 186.018 275.343 185.566 267.836 c
-185.049 258.854 180.665 255.177 173.221 252.925 c
-167.314 251.126 156.177 243.578 147.9 242.61 c
-143.092 242.004 139.47 242.054 136.517 243.023 c
-133.752 243.989 129.469 249.347 124.784 253.137 c
-120.159 256.925 115.19 259.153 116.696 264.117 c
-117.654 267.585 119.739 271.018 124.816 275.45 c
-127.453 277.706 131.305 283.32 134.829 285.6 c
-137.732 287.445 141.298 286.096 144.632 286.48 c
-closepath
-0.98 0.778 0 rgb
-F
-newpath
-144.742 286.387 m
-149.393 286.96 155.765 285.813 158.696 283.647 c
-161.436 281.608 163.348 280.461 165.832 279.696 c
-174.116 276.957 185.903 275.3 185.458 267.845 c
-184.948 258.925 180.488 255.293 173.096 253.063 c
-167.234 251.279 156.148 243.951 147.928 242.932 c
-143.086 242.294 139.581 242.358 136.65 243.314 c
-133.91 244.27 129.641 249.622 124.99 253.381 c
-120.402 257.141 115.432 259.243 117.025 264.15 c
-118.045 267.463 120.02 270.967 125.054 275.364 c
-127.666 277.594 131.425 283.265 134.93 285.559 c
-137.797 287.406 141.429 286.005 144.742 286.387 c
-closepath
-1 0.8 0 rgb
-F
-newpath
-145.575 283.501 m
-146.583 281.413 149.175 281.125 150.903 280.189 c
-152.559 279.253 153.495 279.037 154.143 279.397 c
-155.583 280.189 154.503 282.781 153.063 283.717 c
-151.695 284.653 144.999 284.869 145.575 283.501 c
-closepath
-F
-newpath
-145.717 283.479 m
-146.7 281.444 149.226 281.164 150.91 280.251 c
-152.525 279.339 153.437 279.128 154.068 279.479 c
-155.472 280.251 154.419 282.778 153.016 283.69 c
-151.682 284.602 145.156 284.813 145.717 283.479 c
-closepath
-0.98 0.778 0 rgb
-F
-newpath
-145.86 283.458 m
-146.817 281.476 149.277 281.202 150.918 280.314 c
-152.49 279.425 153.378 279.22 153.994 279.562 c
-155.361 280.314 154.336 282.774 152.968 283.663 c
-151.67 284.551 145.313 284.757 145.86 283.458 c
-closepath
-0.96 0.755 0 rgb
-F
-newpath
-146.002 283.436 m
-146.934 281.507 149.329 281.241 150.925 280.376 c
-152.456 279.511 153.32 279.311 153.919 279.644 c
-155.25 280.376 154.252 282.771 152.921 283.636 c
-151.657 284.501 145.47 284.7 146.002 283.436 c
-closepath
-0.94 0.733 0 rgb
-F
-newpath
-146.145 283.415 m
-147.051 281.538 149.38 281.279 150.933 280.438 c
-152.421 279.597 153.262 279.403 153.844 279.727 c
-155.138 280.438 154.168 282.768 152.874 283.609 c
-151.644 284.45 145.627 284.644 146.145 283.415 c
-closepath
-0.92 0.71 0 rgb
-F
-newpath
-146.287 283.393 m
-147.167 281.569 149.431 281.318 150.94 280.5 c
-152.387 279.683 153.204 279.495 153.77 279.809 c
-155.027 280.5 154.084 282.764 152.827 283.582 c
-151.632 284.399 145.784 284.588 146.287 283.393 c
-closepath
-0.9 0.688 0 rgb
-F
-newpath
-146.429 283.371 m
-147.284 281.601 149.482 281.357 150.948 280.563 c
-152.352 279.769 153.145 279.586 153.695 279.891 c
-154.916 280.563 154.001 282.761 152.779 283.555 c
-151.619 284.348 145.941 284.531 146.429 283.371 c
-closepath
-0.88 0.665 0 rgb
-F
-newpath
-146.572 283.35 m
-147.401 281.632 149.533 281.395 150.955 280.625 c
-152.318 279.855 153.087 279.677 153.62 279.974 c
-154.805 280.625 153.917 282.758 152.732 283.528 c
-151.606 284.297 146.098 284.475 146.572 283.35 c
-closepath
-0.86 0.642 0 rgb
-F
-newpath
-146.714 283.328 m
-147.518 281.663 149.585 281.434 150.963 280.687 c
-152.283 279.941 153.029 279.769 153.546 280.056 c
-154.694 280.687 153.833 282.754 152.685 283.501 c
-151.594 284.247 146.255 284.419 146.714 283.328 c
-closepath
-0.84 0.62 0 rgb
-F
-newpath
-146.857 283.307 m
-147.635 281.695 149.636 281.472 150.97 280.75 c
-152.249 280.027 152.971 279.861 153.471 280.139 c
-154.583 280.75 153.749 282.751 152.637 283.474 c
-151.581 284.196 146.412 284.363 146.857 283.307 c
-closepath
-0.82 0.598 0 rgb
-F
-newpath
-146.999 283.285 m
-147.752 281.726 149.687 281.511 150.978 280.812 c
-152.214 280.113 152.913 279.952 153.396 280.221 c
-154.471 280.812 153.665 282.747 152.59 283.447 c
-151.569 284.145 146.569 284.306 146.999 283.285 c
-closepath
-0.8 0.575 0 rgb
-F
-newpath
-147.141 283.263 m
-147.869 281.757 149.738 281.55 150.985 280.874 c
-152.18 280.199 152.854 280.043 153.322 280.303 c
-154.36 280.874 153.582 282.744 152.543 283.419 c
-151.556 284.094 146.726 284.25 147.141 283.263 c
-closepath
-0.78 0.553 0 rgb
-F
-newpath
-147.284 283.242 m
-147.986 281.789 149.789 281.588 150.992 280.937 c
-152.145 280.285 152.796 280.135 153.247 280.386 c
-154.249 280.937 153.498 282.741 152.495 283.392 c
-151.543 284.043 146.883 284.194 147.284 283.242 c
-closepath
-0.76 0.53 0 rgb
-F
-newpath
-147.426 283.22 m
-148.103 281.82 149.841 281.627 151 280.999 c
-152.111 280.371 152.738 280.227 153.173 280.468 c
-154.138 280.999 153.414 282.737 152.448 283.365 c
-151.531 283.993 147.04 284.138 147.426 283.22 c
-closepath
-0.74 0.507 0 rgb
-F
-newpath
-147.569 283.199 m
-148.22 281.851 149.892 281.665 151.007 281.061 c
-152.076 280.457 152.68 280.318 153.098 280.551 c
-154.027 281.061 153.331 282.734 152.401 283.338 c
-151.518 283.942 147.197 284.081 147.569 283.199 c
-closepath
-0.72 0.485 0 rgb
-F
-newpath
-147.711 283.177 m
-148.337 281.883 149.943 281.704 151.015 281.124 c
-152.042 280.543 152.621 280.409 153.023 280.633 c
-153.916 281.124 153.247 282.731 152.354 283.311 c
-151.505 283.891 147.354 284.025 147.711 283.177 c
-closepath
-0.7 0.463 0 rgb
-F
-newpath
-147.853 283.155 m
-148.453 281.914 149.994 281.743 151.022 281.186 c
-152.007 280.629 152.563 280.501 152.949 280.715 c
-153.805 281.186 153.163 282.727 152.306 283.284 c
-151.493 283.84 147.511 283.969 147.853 283.155 c
-closepath
-0.68 0.44 0 rgb
-F
-newpath
-147.996 283.134 m
-148.57 281.945 150.045 281.781 151.03 281.248 c
-151.973 280.715 152.505 280.592 152.874 280.798 c
-153.693 281.248 153.079 282.724 152.259 283.257 c
-151.48 283.789 147.668 283.913 147.996 283.134 c
-closepath
-0.66 0.417 0 rgb
-F
-newpath
-148.138 283.112 m
-148.687 281.976 150.097 281.82 151.037 281.31 c
-151.938 280.801 152.447 280.684 152.799 280.88 c
-153.582 281.31 152.995 282.721 152.212 283.23 c
-151.467 283.739 147.825 283.856 148.138 283.112 c
-closepath
-0.64 0.395 0 rgb
-F
-newpath
-148.281 283.091 m
-148.804 282.008 150.148 281.858 151.045 281.373 c
-151.904 280.887 152.388 280.776 152.725 280.963 c
-153.471 281.373 152.912 282.717 152.164 283.203 c
-151.455 283.688 147.982 283.8 148.281 283.091 c
-closepath
-0.62 0.373 0 rgb
-F
-newpath
-148.423 283.069 m
-148.921 282.039 150.199 281.897 151.052 281.435 c
-151.869 280.973 152.33 280.867 152.65 281.045 c
-153.36 281.435 152.828 282.714 152.117 283.176 c
-151.442 283.637 148.139 283.744 148.423 283.069 c
-closepath
-0.6 0.35 0 rgb
-F
-newpath
-130.468 280.821 m
-130.143 280.008 132.42 278.462 133.559 279.52 c
-134.78 280.577 136.244 281.553 136.733 281.879 c
-138.929 283.344 138.116 284.401 134.455 283.75 c
-130.793 283.099 130.793 281.635 130.468 280.821 c
-closepath
-1 0.8 0 rgb
-F
-newpath
-130.527 280.831 m
-130.209 280.037 132.434 278.527 133.546 279.56 c
-134.739 280.593 136.169 281.546 136.647 281.865 c
-138.792 283.296 137.998 284.328 134.421 283.693 c
-130.844 283.057 130.844 281.626 130.527 280.831 c
-closepath
-0.98 0.778 0 rgb
-F
-newpath
-130.585 280.842 m
-130.276 280.066 132.447 278.592 133.533 279.601 c
-134.698 280.609 136.094 281.54 136.56 281.851 c
-138.655 283.248 137.879 284.256 134.388 283.635 c
-130.895 283.014 130.895 281.618 130.585 280.842 c
-closepath
-0.96 0.755 0 rgb
-F
-newpath
-130.644 280.852 m
-130.342 280.095 132.461 278.657 133.521 279.641 c
-134.657 280.625 136.019 281.533 136.474 281.836 c
-138.518 283.2 137.761 284.183 134.354 283.578 c
-130.947 282.972 130.947 281.609 130.644 280.852 c
-closepath
-0.94 0.733 0 rgb
-F
-newpath
-130.703 280.862 m
-130.408 280.125 132.474 278.722 133.508 279.682 c
-134.616 280.641 135.944 281.527 136.388 281.822 c
-138.381 283.152 137.643 284.111 134.321 283.52 c
-130.998 282.929 130.998 281.601 130.703 280.862 c
-closepath
-0.92 0.71 0 rgb
-F
-newpath
-130.762 280.872 m
-130.475 280.154 132.488 278.786 133.495 279.722 c
-134.575 280.657 135.869 281.52 136.301 281.808 c
-138.243 283.103 137.525 284.038 134.287 283.462 c
-131.049 282.887 131.049 281.592 130.762 280.872 c
-closepath
-0.9 0.688 0 rgb
-F
-newpath
-130.821 280.883 m
-130.541 280.183 132.502 278.851 133.482 279.762 c
-134.534 280.673 135.794 281.513 136.215 281.794 c
-138.106 283.055 137.406 283.966 134.254 283.405 c
-131.1 282.844 131.1 281.584 130.821 280.883 c
-closepath
-0.88 0.665 0 rgb
-F
-newpath
-130.879 280.893 m
-130.607 280.212 132.515 278.916 133.469 279.803 c
-134.493 280.689 135.719 281.507 136.129 281.78 c
-137.969 283.007 137.288 283.893 134.22 283.348 c
-131.152 282.802 131.152 281.575 130.879 280.893 c
-closepath
-0.86 0.642 0 rgb
-F
-newpath
-130.938 280.903 m
-130.673 280.241 132.529 278.981 133.457 279.843 c
-134.452 280.705 135.644 281.5 136.043 281.765 c
-137.832 282.959 137.17 283.821 134.187 283.29 c
-131.203 282.759 131.203 281.567 130.938 280.903 c
-closepath
-0.84 0.62 0 rgb
-F
-newpath
-130.997 280.914 m
-130.74 280.27 132.542 279.046 133.444 279.884 c
-134.411 280.721 135.569 281.494 135.956 281.751 c
-137.695 282.911 137.051 283.748 134.153 283.233 c
-131.254 282.717 131.254 281.558 130.997 280.914 c
-closepath
-0.82 0.598 0 rgb
-F
-newpath
-131.056 280.924 m
-130.806 280.299 132.556 279.111 133.431 279.924 c
-134.37 280.737 135.495 281.487 135.87 281.737 c
-137.558 282.863 136.933 283.676 134.12 283.175 c
-131.305 282.674 131.305 281.549 131.056 280.924 c
-closepath
-0.8 0.575 0 rgb
-F
-newpath
-131.114 280.934 m
-130.872 280.329 132.57 279.176 133.418 279.964 c
-134.328 280.752 135.42 281.48 135.784 281.723 c
-137.421 282.815 136.815 283.603 134.086 283.117 c
-131.357 282.632 131.357 281.541 131.114 280.934 c
-closepath
-0.78 0.553 0 rgb
-F
-newpath
-131.173 280.945 m
-130.939 280.358 132.583 279.241 133.405 280.005 c
-134.287 280.768 135.345 281.474 135.697 281.709 c
-137.284 282.767 136.696 283.53 134.052 283.06 c
-131.408 282.59 131.408 281.532 131.173 280.945 c
-closepath
-0.76 0.53 0 rgb
-F
-newpath
-131.232 280.955 m
-131.005 280.387 132.597 279.306 133.393 280.045 c
-134.246 280.784 135.27 281.467 135.611 281.694 c
-137.147 282.719 136.578 283.458 134.019 283.003 c
-131.459 282.547 131.459 281.524 131.232 280.955 c
-closepath
-0.74 0.507 0 rgb
-F
-newpath
-131.29 280.965 m
-131.071 280.416 132.61 279.371 133.38 280.086 c
-134.205 280.8 135.195 281.461 135.525 281.68 c
-137.01 282.671 136.46 283.385 133.985 282.945 c
-131.51 282.505 131.51 281.515 131.29 280.965 c
-closepath
-0.72 0.485 0 rgb
-F
-newpath
-131.349 280.976 m
-131.137 280.445 132.624 279.436 133.367 280.126 c
-134.164 280.816 135.12 281.454 135.439 281.666 c
-136.872 282.622 136.341 283.313 133.952 282.888 c
-131.562 282.462 131.562 281.507 131.349 280.976 c
-closepath
-0.7 0.463 0 rgb
-F
-newpath
-131.408 280.986 m
-131.204 280.474 132.638 279.5 133.354 280.166 c
-134.123 280.832 135.045 281.447 135.352 281.652 c
-136.735 282.574 136.223 283.24 133.918 282.83 c
-131.613 282.42 131.613 281.498 131.408 280.986 c
-closepath
-0.68 0.44 0 rgb
-F
-newpath
-131.467 280.996 m
-131.27 280.504 132.651 279.565 133.341 280.207 c
-134.082 280.848 134.97 281.441 135.266 281.638 c
-136.598 282.526 136.105 283.168 133.885 282.772 c
-131.664 282.377 131.664 281.49 131.467 280.996 c
-closepath
-0.66 0.417 0 rgb
-F
-newpath
-131.526 281.006 m
-131.336 280.533 132.665 279.63 133.329 280.247 c
-134.041 280.864 134.895 281.434 135.18 281.623 c
-136.461 282.478 135.987 283.095 133.851 282.715 c
-131.715 282.335 131.715 281.481 131.526 281.006 c
-closepath
-0.64 0.395 0 rgb
-F
-newpath
-131.584 281.017 m
-131.403 280.562 132.678 279.695 133.316 280.288 c
-134 280.88 134.82 281.428 135.093 281.609 c
-136.324 282.43 135.868 283.023 133.818 282.658 c
-131.767 282.292 131.767 281.473 131.584 281.017 c
-closepath
-0.62 0.373 0 rgb
-F
-newpath
-131.643 281.027 m
-131.469 280.591 132.692 279.76 133.303 280.328 c
-133.959 280.896 134.745 281.421 135.007 281.595 c
-136.187 282.382 135.75 282.95 133.784 282.6 c
-131.818 282.25 131.818 281.464 131.643 281.027 c
-closepath
-0.6 0.35 0 rgb
-F
-newpath
-134.544 259.223 m
-134.315 256.365 140.887 263.509 141.287 264.138 c
-142.144 265.681 145.002 270.024 145.459 271.853 c
-146.316 275.053 147.86 277.396 146.888 280.768 c
-146.545 281.854 144.145 282.14 143.059 281.454 c
-139.973 279.625 140.43 277.396 140.087 275.339 c
-138.944 269.51 134.944 263.623 134.544 259.223 c
-closepath
-1 0.8 0 rgb
-F
-newpath
-134.813 259.669 m
-134.594 256.882 140.991 263.858 141.38 264.472 c
-142.213 265.978 144.993 270.216 145.436 272 c
-146.267 275.122 147.769 277.408 146.816 280.695 c
-146.48 281.753 144.14 282.028 143.082 281.358 c
-140.076 279.57 140.525 277.397 140.193 275.391 c
-139.087 269.706 135.196 263.96 134.813 259.669 c
-closepath
-1 0.801 0.01 rgb
-F
-newpath
-135.081 260.116 m
-134.872 257.4 141.095 264.207 141.473 264.806 c
-142.283 266.274 144.985 270.409 145.414 272.148 c
-146.218 275.19 147.678 277.421 146.745 280.622 c
-146.416 281.652 144.135 281.917 143.105 281.262 c
-140.178 279.515 140.619 277.399 140.299 275.443 c
-139.231 269.902 135.448 264.297 135.081 260.116 c
-closepath
-1 0.802 0.02 rgb
-F
-newpath
-135.35 260.562 m
-135.151 257.917 141.199 264.556 141.566 265.139 c
-142.352 266.57 144.976 270.601 145.391 272.295 c
-146.169 275.259 147.587 277.433 146.673 280.548 c
-146.351 281.552 144.129 281.805 143.128 281.166 c
-140.281 279.46 140.714 277.4 140.406 275.496 c
-139.374 270.098 135.7 264.635 135.35 260.562 c
-closepath
-1 0.803 0.03 rgb
-F
-newpath
-135.618 261.009 m
-135.429 258.435 141.302 264.904 141.659 265.473 c
-142.421 266.867 144.968 270.793 145.368 272.442 c
-146.121 275.328 147.496 277.446 146.601 280.475 c
-146.286 281.451 144.124 281.694 143.151 281.07 c
-140.384 279.405 140.808 277.402 140.512 275.548 c
-139.518 270.294 135.952 264.972 135.618 261.009 c
-closepath
-1 0.804 0.04 rgb
-F
-newpath
-135.887 261.455 m
-135.708 258.952 141.406 265.253 141.752 265.807 c
-142.49 267.164 144.959 270.985 145.346 272.59 c
-146.072 275.396 147.406 277.458 146.53 280.402 c
-146.221 281.35 144.119 281.582 143.174 280.974 c
-140.487 279.35 140.903 277.403 140.618 275.6 c
-139.661 270.491 136.204 265.309 135.887 261.455 c
-closepath
-1 0.805 0.05 rgb
-F
-newpath
-136.156 261.902 m
-135.987 259.47 141.51 265.602 141.845 266.141 c
-142.559 267.46 144.95 271.178 145.323 272.737 c
-146.023 275.465 147.315 277.471 146.458 280.329 c
-146.157 281.249 144.114 281.471 143.197 280.878 c
-140.589 279.296 140.998 277.404 140.725 275.652 c
-139.805 270.687 136.457 265.646 136.156 261.902 c
-closepath
-1 0.806 0.06 rgb
-F
-newpath
-136.424 262.348 m
-136.265 259.987 141.614 265.951 141.938 266.474 c
-142.629 267.757 144.942 271.37 145.3 272.884 c
-145.974 275.534 147.224 277.483 146.386 280.256 c
-146.092 281.148 144.109 281.359 143.22 280.782 c
-140.692 279.241 141.092 277.406 140.831 275.705 c
-139.948 270.883 136.709 265.983 136.424 262.348 c
-closepath
-1 0.807 0.07 rgb
-F
-newpath
-136.693 262.795 m
-136.544 260.505 141.718 266.3 142.031 266.808 c
-142.698 268.053 144.933 271.562 145.277 273.031 c
-145.925 275.602 147.133 277.496 146.315 280.182 c
-146.027 281.048 144.103 281.248 143.243 280.686 c
-140.795 279.186 141.187 277.407 140.937 275.757 c
-140.092 271.079 136.961 266.321 136.693 262.795 c
-closepath
-1 0.808 0.08 rgb
-F
-newpath
-136.961 263.241 m
-136.822 261.022 141.822 266.649 142.124 267.142 c
-142.767 268.349 144.925 271.755 145.255 273.179 c
-145.876 275.671 147.042 277.508 146.243 280.109 c
-145.963 280.947 144.098 281.136 143.266 280.59 c
-140.897 279.131 141.281 277.409 141.043 275.809 c
-140.235 271.275 137.213 266.658 136.961 263.241 c
-closepath
-1 0.809 0.09 rgb
-F
-newpath
-137.23 263.688 m
-137.101 261.54 141.926 266.997 142.216 267.475 c
-142.837 268.646 144.916 271.947 145.232 273.326 c
-145.827 275.74 146.951 277.521 146.172 280.036 c
-145.898 280.846 144.093 281.025 143.289 280.494 c
-141 279.076 141.376 277.41 141.15 275.862 c
-140.379 271.471 137.465 266.995 137.23 263.688 c
-closepath
-1 0.81 0.1 rgb
-F
-newpath
-137.499 264.134 m
-137.38 262.057 142.029 267.346 142.309 267.809 c
-142.906 268.943 144.907 272.139 145.209 273.473 c
-145.779 275.808 146.86 277.533 146.1 279.963 c
-145.833 280.745 144.088 280.913 143.311 280.398 c
-141.103 279.021 141.471 277.411 141.256 275.914 c
-140.522 271.667 137.717 267.332 137.499 264.134 c
-closepath
-1 0.811 0.11 rgb
-F
-newpath
-137.767 264.58 m
-137.658 262.575 142.133 267.695 142.402 268.143 c
-142.975 269.239 144.899 272.332 145.187 273.621 c
-145.73 275.877 146.769 277.545 146.028 279.89 c
-145.769 280.644 144.083 280.801 143.334 280.302 c
-141.205 278.966 141.565 277.413 141.362 275.966 c
-140.665 271.863 137.969 267.669 137.767 264.58 c
-closepath
-1 0.812 0.12 rgb
-F
-newpath
-138.036 265.027 m
-137.937 263.092 142.237 268.044 142.495 268.477 c
-143.044 269.535 144.89 272.524 145.164 273.768 c
-145.681 275.945 146.678 277.558 145.957 279.816 c
-145.704 280.544 144.077 280.69 143.357 280.206 c
-141.308 278.911 141.66 277.414 141.468 276.018 c
-140.809 272.059 138.221 268.007 138.036 265.027 c
-closepath
-1 0.813 0.13 rgb
-F
-newpath
-138.304 265.473 m
-138.215 263.61 142.341 268.393 142.588 268.81 c
-143.114 269.832 144.882 272.716 145.141 273.915 c
-145.632 276.014 146.587 277.57 145.885 279.743 c
-145.639 280.443 144.072 280.578 143.38 280.11 c
-141.411 278.856 141.754 277.416 141.575 276.07 c
-140.952 272.255 138.473 268.344 138.304 265.473 c
-closepath
-1 0.814 0.14 rgb
-F
-newpath
-138.573 265.92 m
-138.494 264.128 142.445 268.742 142.681 269.144 c
-143.183 270.128 144.873 272.909 145.118 274.062 c
-145.583 276.083 146.497 277.583 145.813 279.67 c
-145.575 280.342 144.067 280.467 143.403 280.014 c
-141.513 278.802 141.849 277.417 141.681 276.123 c
-141.096 272.452 138.725 268.681 138.573 265.92 c
-closepath
-1 0.815 0.15 rgb
-F
-newpath
-138.842 266.366 m
-138.773 264.645 142.549 269.091 142.774 269.478 c
-143.252 270.425 144.864 273.101 145.096 274.21 c
-145.534 276.151 146.406 277.595 145.742 279.597 c
-145.51 280.241 144.062 280.355 143.426 279.918 c
-141.616 278.747 141.944 277.418 141.787 276.175 c
-141.239 272.648 138.978 269.018 138.842 266.366 c
-closepath
-1 0.816 0.16 rgb
-F
-newpath
-139.11 266.813 m
-139.051 265.163 142.652 269.439 142.867 269.812 c
-143.321 270.721 144.856 273.293 145.073 274.357 c
-145.486 276.22 146.315 277.608 145.67 279.524 c
-145.445 280.14 144.057 280.244 143.449 279.822 c
-141.719 278.692 142.038 277.42 141.893 276.227 c
-141.383 272.844 139.23 269.355 139.11 266.813 c
-closepath
-1 0.817 0.17 rgb
-F
-newpath
-139.379 267.259 m
-139.33 265.68 142.756 269.788 142.96 270.145 c
-143.391 271.018 144.847 273.485 145.05 274.504 c
-145.437 276.289 146.224 277.62 145.598 279.45 c
-145.38 280.04 144.051 280.132 143.472 279.726 c
-141.822 278.637 142.133 277.421 142 276.28 c
-141.526 273.04 139.482 269.693 139.379 267.259 c
-closepath
-1 0.818 0.18 rgb
-F
-newpath
-139.647 267.706 m
-139.608 266.198 142.86 270.137 143.053 270.479 c
-143.46 271.314 144.839 273.678 145.028 274.652 c
-145.388 276.357 146.133 277.633 145.527 279.377 c
-145.316 279.939 144.046 280.021 143.495 279.63 c
-141.924 278.582 142.227 277.423 142.106 276.332 c
-141.67 273.236 139.734 270.03 139.647 267.706 c
-closepath
-1 0.819 0.19 rgb
-F
-newpath
-139.916 268.152 m
-139.887 266.715 142.964 270.486 143.146 270.813 c
-143.529 271.611 144.83 273.87 145.005 274.799 c
-145.339 276.426 146.042 277.645 145.455 279.304 c
-145.251 279.838 144.041 279.909 143.518 279.534 c
-142.027 278.527 142.322 277.424 142.212 276.384 c
-141.813 273.432 139.986 270.367 139.916 268.152 c
-closepath
-1 0.82 0.2 rgb
-F
-newpath
-157.239 271.117 m
-154.071 267.661 151.839 264.349 150.039 262.117 c
-148.167 259.813 143.559 257.077 145.863 254.413 c
-147.807 252.037 155.799 256.357 161.991 260.965 c
-168.111 265.573 177.687 269.677 173.007 274.933 c
-170.559 277.597 164.799 277.021 162.567 275.581 c
-160.839 274.501 159.831 273.925 157.239 271.117 c
-closepath
-1 0.8 0 rgb
-F
-newpath
-157.375 270.964 m
-154.257 267.586 152.062 264.336 150.289 262.154 c
-148.448 259.906 143.914 257.209 146.158 254.62 c
-148.052 252.311 155.883 256.564 161.954 261.089 c
-167.955 265.614 177.334 269.664 172.774 274.771 c
-170.388 277.359 164.752 276.769 162.565 275.355 c
-160.873 274.293 159.9 273.685 157.375 270.964 c
-closepath
-1 0.801 0.01 rgb
-F
-newpath
-157.512 270.81 m
-154.443 267.51 152.285 264.323 150.539 262.191 c
-148.729 259.998 144.268 257.342 146.454 254.828 c
-148.297 252.584 155.967 256.77 161.917 261.213 c
-167.798 265.655 176.981 269.65 172.54 274.609 c
-170.217 277.122 164.705 276.516 162.562 275.129 c
-160.907 274.086 159.969 273.445 157.512 270.81 c
-closepath
-1 0.802 0.02 rgb
-F
-newpath
-157.648 270.657 m
-154.628 267.435 152.508 264.31 150.789 262.228 c
-149.009 260.091 144.623 257.474 146.749 255.035 c
-148.542 252.858 156.051 256.977 161.88 261.337 c
-167.642 265.697 176.628 269.637 172.307 274.447 c
-170.046 276.884 164.658 276.264 162.56 274.903 c
-160.941 273.878 160.037 273.206 157.648 270.657 c
-closepath
-1 0.803 0.03 rgb
-F
-newpath
-157.784 270.503 m
-154.814 267.36 152.732 264.297 151.039 262.265 c
-149.29 260.183 144.977 257.606 147.045 255.242 c
-148.787 253.132 156.134 257.183 161.843 261.461 c
-167.486 265.738 176.275 269.623 172.073 274.285 c
-169.874 276.647 164.611 276.012 162.557 274.677 c
-160.975 273.67 160.106 272.966 157.784 270.503 c
-closepath
-1 0.804 0.04 rgb
-F
-newpath
-157.92 270.35 m
-155 267.285 152.955 264.284 151.289 262.302 c
-149.571 260.276 145.332 257.739 147.34 255.449 c
-149.033 253.405 156.218 257.389 161.806 261.585 c
-167.329 265.779 175.922 269.61 171.84 274.123 c
-169.703 276.409 164.564 275.759 162.555 274.451 c
-161.009 273.463 160.175 272.726 157.92 270.35 c
-closepath
-1 0.805 0.05 rgb
-F
-newpath
-158.057 270.196 m
-155.186 267.21 153.178 264.27 151.539 262.339 c
-149.852 260.368 145.686 257.871 147.635 255.657 c
-149.278 253.679 156.302 257.596 161.769 261.709 c
-167.173 265.82 175.569 269.597 171.607 273.961 c
-169.532 276.171 164.517 275.507 162.552 274.225 c
-161.043 273.255 160.244 272.486 158.057 270.196 c
-closepath
-1 0.806 0.06 rgb
-F
-newpath
-158.193 270.043 m
-155.372 267.134 153.401 264.257 151.789 262.376 c
-150.132 260.461 146.04 258.003 147.931 255.864 c
-149.523 253.953 156.386 257.802 161.732 261.833 c
-167.017 265.861 175.216 269.583 171.373 273.799 c
-169.361 275.934 164.47 275.255 162.55 273.999 c
-161.077 273.047 160.313 272.246 158.193 270.043 c
-closepath
-1 0.807 0.07 rgb
-F
-newpath
-158.329 269.889 m
-155.557 267.059 153.624 264.244 152.039 262.413 c
-150.413 260.553 146.395 258.136 148.226 256.071 c
-149.768 254.226 156.47 258.009 161.695 261.957 c
-166.861 265.903 174.863 269.57 171.14 273.637 c
-169.19 275.696 164.423 275.003 162.547 273.773 c
-161.111 272.84 160.381 272.007 158.329 269.889 c
-closepath
-1 0.808 0.08 rgb
-F
-newpath
-158.465 269.736 m
-155.743 266.984 153.847 264.231 152.289 262.45 c
-150.694 260.646 146.749 258.268 148.522 256.279 c
-150.013 254.5 156.554 258.215 161.658 262.081 c
-166.704 265.944 174.51 269.556 170.906 273.475 c
-169.019 275.459 164.376 274.75 162.545 273.547 c
-161.145 272.632 160.45 271.767 158.465 269.736 c
-closepath
-1 0.809 0.09 rgb
-F
-newpath
-158.602 269.583 m
-155.929 266.909 154.07 264.218 152.539 262.487 c
-150.975 260.738 147.104 258.401 148.817 256.486 c
-150.258 254.773 156.637 258.422 161.621 262.205 c
-166.548 265.985 174.158 269.543 170.673 273.314 c
-168.848 275.221 164.329 274.498 162.543 273.32 c
-161.178 272.424 160.519 271.527 158.602 269.583 c
-closepath
-1 0.81 0.1 rgb
-F
-newpath
-158.738 269.429 m
-156.115 266.833 154.294 264.205 152.789 262.524 c
-151.255 260.831 147.459 258.533 149.112 256.693 c
-150.503 255.047 156.721 258.629 161.584 262.329 c
-166.392 266.026 173.805 269.53 170.44 273.152 c
-168.676 274.983 164.283 274.246 162.54 273.094 c
-161.212 272.217 160.588 271.287 158.738 269.429 c
-closepath
-1 0.811 0.11 rgb
-F
-newpath
-158.874 269.276 m
-156.301 266.758 154.517 264.192 153.039 262.561 c
-151.536 260.924 147.813 258.665 149.408 256.901 c
-150.748 255.321 156.805 258.835 161.547 262.453 c
-166.235 266.067 173.452 269.516 170.206 272.99 c
-168.505 274.746 164.236 273.993 162.538 272.868 c
-161.246 272.009 160.657 271.047 158.874 269.276 c
-closepath
-1 0.812 0.12 rgb
-F
-newpath
-159.01 269.122 m
-156.486 266.683 154.74 264.179 153.289 262.598 c
-151.817 261.016 148.168 258.798 149.703 257.108 c
-150.993 255.594 156.889 259.042 161.51 262.577 c
-166.079 266.109 173.099 269.503 169.973 272.828 c
-168.334 274.508 164.189 273.741 162.535 272.642 c
-161.28 271.802 160.725 270.808 159.01 269.122 c
-closepath
-1 0.813 0.13 rgb
-F
-newpath
-159.146 268.969 m
-156.672 266.608 154.963 264.166 153.539 262.635 c
-152.098 261.109 148.522 258.93 149.999 257.315 c
-151.238 255.868 156.973 259.248 161.473 262.701 c
-165.923 266.15 172.746 269.489 169.739 272.666 c
-168.163 274.271 164.142 273.489 162.533 272.416 c
-161.314 271.594 160.794 270.568 159.146 268.969 c
-closepath
-1 0.814 0.14 rgb
-F
-newpath
-159.283 268.815 m
-156.858 266.532 155.186 264.152 153.789 262.672 c
-152.378 261.201 148.876 259.062 150.294 257.522 c
-151.484 256.142 157.057 259.454 161.436 262.825 c
-165.766 266.191 172.393 269.476 169.506 272.504 c
-167.992 274.033 164.095 273.237 162.53 272.19 c
-161.348 271.386 160.863 270.328 159.283 268.815 c
-closepath
-1 0.815 0.15 rgb
-F
-newpath
-159.419 268.662 m
-157.044 266.457 155.409 264.139 154.039 262.709 c
-152.659 261.294 149.231 259.195 150.589 257.73 c
-151.729 256.415 157.141 259.661 161.399 262.949 c
-165.61 266.232 172.04 269.463 169.273 272.342 c
-167.821 273.795 164.048 272.984 162.528 271.964 c
-161.382 271.179 160.932 270.088 159.419 268.662 c
-closepath
-1 0.816 0.16 rgb
-F
-newpath
-159.555 268.508 m
-157.23 266.382 155.633 264.126 154.289 262.746 c
-152.94 261.386 149.585 259.327 150.885 257.937 c
-151.974 256.689 157.224 259.867 161.362 263.073 c
-165.454 266.273 171.687 269.449 169.039 272.18 c
-167.649 273.558 164.001 272.732 162.525 271.738 c
-161.416 270.971 161.001 269.848 159.555 268.508 c
-closepath
-1 0.817 0.17 rgb
-F
-newpath
-159.691 268.355 m
-157.415 266.307 155.856 264.113 154.539 262.783 c
-153.221 261.479 149.94 259.459 151.18 258.144 c
-152.219 256.963 157.308 260.074 161.325 263.197 c
-165.298 266.315 171.334 269.436 168.806 272.018 c
-167.478 273.32 163.954 272.48 162.523 271.512 c
-161.45 270.763 161.069 269.609 159.691 268.355 c
-closepath
-1 0.818 0.18 rgb
-F
-newpath
-159.828 268.201 m
-157.601 266.231 156.079 264.1 154.789 262.82 c
-153.501 261.571 150.294 259.592 151.476 258.352 c
-152.464 257.236 157.392 260.28 161.288 263.321 c
-165.141 266.356 170.981 269.422 168.572 271.856 c
-167.307 273.083 163.907 272.227 162.52 271.286 c
-161.484 270.556 161.138 269.369 159.828 268.201 c
-closepath
-1 0.819 0.19 rgb
-F
-newpath
-159.964 268.048 m
-157.787 266.156 156.302 264.087 155.039 262.857 c
-153.782 261.664 150.649 259.724 151.771 258.559 c
-152.709 257.51 157.476 260.487 161.251 263.445 c
-164.985 266.397 170.628 269.409 168.339 271.694 c
-167.136 272.845 163.86 271.975 162.518 271.06 c
-161.518 270.348 161.207 269.129 159.964 268.048 c
-closepath
-1 0.82 0.2 rgb
-F
-newpath
-131.103 248.149 m
-134.631 247.789 137.871 247.645 140.031 247.645 c
-145.503 247.645 152.847 249.949 160.047 253.621 c
-167.103 257.293 169.263 258.733 174.303 261.685 c
-179.127 264.565 184.815 268.237 182.655 269.317 c
-180.495 270.469 177.975 269.245 170.991 264.853 c
-164.223 260.605 160.407 258.589 152.919 255.277 c
-150.039 253.981 145.575 252.181 142.551 252.037 c
-139.671 251.893 135.783 251.965 133.551 251.965 c
-130.887 251.965 127.431 253.045 124.623 254.269 c
-124.623 254.341 131.103 248.149 131.103 248.149 c
-closepath
-1 0.8 0 rgb
-F
-newpath
-124.911 250.093 m
-120.087 252.685 113.679 256.069 112.383 261.037 c
-112.311 261.397 113.319 261.973 113.751 261.829 c
-124.911 250.093 l
-closepath
-0.7 0.5 0.1 rgb
-F
-newpath
-124.911 250.165 m
-120.015 252.757 113.751 256.141 112.527 260.893 c
-112.455 261.253 113.391 261.829 113.895 261.613 c
-117.567 257.941 116.703 258.877 124.911 250.165 c
-closepath
-0.69 0.49 0.1 rgb
-F
-newpath
-124.839 250.165 m
-119.943 252.829 113.823 256.213 112.671 260.821 c
-112.599 261.181 113.535 261.757 114.111 261.469 c
-117.567 257.941 117.135 258.445 124.839 250.165 c
-closepath
-0.67 0.47 0.09 rgb
-F
-newpath
-124.839 250.237 m
-119.871 252.829 113.895 256.285 112.743 260.677 c
-112.743 261.037 113.607 261.613 114.255 261.253 c
-117.495 257.941 117.495 258.085 124.839 250.237 c
-closepath
-0.66 0.46 0.09 rgb
-F
-newpath
-124.767 250.309 m
-119.871 252.901 113.895 256.285 112.887 260.605 c
-112.815 260.893 113.751 261.469 114.399 261.109 c
-117.495 257.941 117.855 257.725 124.767 250.309 c
-closepath
-0.64 0.44 0.08 rgb
-F
-newpath
-124.767 250.381 m
-119.799 252.973 113.967 256.357 113.031 260.461 c
-112.959 260.821 113.823 261.397 114.543 260.893 c
-117.495 257.941 118.215 257.293 124.767 250.381 c
-closepath
-0.63 0.43 0.08 rgb
-F
-newpath
-124.767 250.381 m
-119.727 253.045 114.039 256.429 113.175 260.389 c
-113.103 260.677 113.967 261.253 114.759 260.749 c
-117.495 257.941 118.647 256.933 124.767 250.381 c
-closepath
-0.61 0.41 0.07 rgb
-F
-newpath
-124.695 250.453 m
-119.655 253.117 114.111 256.501 113.319 260.245 c
-113.247 260.533 114.039 261.109 114.903 260.533 c
-117.495 257.941 119.007 256.573 124.695 250.453 c
-closepath
-0.6 0.4 0.07 rgb
-F
-newpath
-124.695 250.525 m
-119.583 253.117 114.183 256.573 113.391 260.101 c
-113.391 260.461 114.111 261.037 115.047 260.389 c
-117.423 257.941 119.367 256.141 124.695 250.525 c
-closepath
-0.59 0.39 0.07 rgb
-F
-newpath
-124.695 250.525 m
-119.511 253.189 114.255 256.645 113.535 260.029 c
-113.535 260.317 114.255 260.893 115.263 260.173 c
-117.423 257.941 119.799 255.781 124.695 250.525 c
-closepath
-0.57 0.37 0.06 rgb
-F
-newpath
-124.623 250.597 m
-119.439 253.261 114.327 256.717 113.679 259.885 c
-113.679 260.173 114.327 260.749 115.407 260.029 c
-117.423 257.941 120.159 255.421 124.623 250.597 c
-closepath
-0.56 0.36 0.06 rgb
-F
-newpath
-124.623 250.669 m
-119.439 253.333 114.327 256.717 113.823 259.813 c
-113.751 260.101 114.471 260.677 115.551 259.813 c
-117.423 258.013 120.519 254.989 124.623 250.669 c
-closepath
-0.54 0.34 0.04 rgb
-F
-newpath
-124.551 250.741 m
-119.367 253.405 114.399 256.789 113.967 259.669 c
-113.895 259.957 114.543 260.533 115.695 259.669 c
-117.423 258.013 120.879 254.629 124.551 250.741 c
-closepath
-0.53 0.33 0.04 rgb
-F
-newpath
-124.551 250.741 m
-119.295 253.477 114.471 256.861 114.111 259.597 c
-114.039 259.813 114.687 260.389 115.911 259.453 c
-117.423 258.013 121.311 254.269 124.551 250.741 c
-closepath
-0.51 0.31 0.03 rgb
-F
-newpath
-124.551 250.813 m
-119.223 253.477 114.543 256.933 114.183 259.453 c
-114.183 259.741 114.759 260.317 116.055 259.309 c
-117.351 258.013 121.671 253.837 124.551 250.813 c
-closepath
-0.5 0.3 0.03 rgb
-F
-newpath
-124.479 250.885 m
-119.151 253.549 114.615 257.005 114.327 259.309 c
-114.327 259.597 114.831 260.173 116.199 259.093 c
-117.351 258.013 122.031 253.477 124.479 250.885 c
-closepath
-0.49 0.29 0.03 rgb
-F
-newpath
-124.479 250.885 m
-119.079 253.621 114.687 257.077 114.471 259.237 c
-114.471 259.453 114.975 260.029 116.415 258.949 c
-117.351 258.013 122.463 253.117 124.479 250.885 c
-closepath
-0.47 0.27 0.02 rgb
-F
-newpath
-124.479 250.957 m
-119.007 253.693 114.759 257.149 114.615 259.093 c
-114.615 259.381 115.047 259.957 116.559 258.733 c
-117.351 258.013 122.823 252.685 124.479 250.957 c
-closepath
-0.46 0.26 0.02 rgb
-F
-newpath
-124.407 251.029 m
-119.007 253.765 114.759 257.149 114.759 259.021 c
-114.687 259.237 115.191 259.813 116.703 258.589 c
-117.351 258.013 123.183 252.325 124.407 251.029 c
-closepath
-0.44 0.24 0.01 rgb
-F
-newpath
-124.407 251.101 m
-118.935 253.765 114.831 257.221 114.831 258.877 c
-114.831 259.093 115.263 259.669 116.847 258.373 c
-117.279 258.013 123.543 251.965 124.407 251.101 c
-closepath
-0.43 0.23 0.01 rgb
-F
-newpath
-124.335 251.101 m
-118.863 253.837 114.903 257.293 114.975 258.805 c
-114.975 259.021 115.407 259.597 117.063 258.229 c
-117.279 258.013 123.975 251.533 124.335 251.101 c
-closepath
-0.41 0.21 0 rgb
-F
-newpath
-124.335 251.173 m
-118.791 253.909 114.975 257.365 115.119 258.661 c
-115.119 258.877 115.479 259.453 117.207 258.013 c
-117.279 258.013 124.335 251.173 124.335 251.173 c
-closepath
-0.4 0.2 0 rgb
-F
-newpath
-130.599 248.509 m
-130.599 248.509 126.855 249.373 125.199 249.877 c
-125.199 249.877 113.751 261.829 113.823 261.829 c
-115.479 261.181 119.583 257.293 121.383 255.709 c
-122.031 255.133 123.543 254.269 125.271 253.765 c
-125.343 253.765 130.599 248.509 130.599 248.509 c
-closepath
-0.8 0.6 0.2 rgb
-F
-newpath
-130.599 248.581 m
-130.599 248.581 126.711 249.445 125.055 250.021 c
-125.055 250.021 113.823 261.685 113.895 261.685 c
-115.551 261.037 119.655 257.149 121.455 255.637 c
-122.103 255.061 123.687 254.197 125.343 253.693 c
-125.415 253.693 130.599 248.581 130.599 248.581 c
-closepath
-0.78 0.58 0.19 rgb
-F
-newpath
-130.527 248.581 m
-130.527 248.581 126.567 249.517 124.911 250.165 c
-124.911 250.165 113.967 261.541 114.039 261.541 c
-115.623 260.893 119.727 257.077 121.527 255.565 c
-122.175 254.989 123.759 254.053 125.487 253.621 c
-125.559 253.621 130.527 248.581 130.527 248.581 c
-closepath
-0.76 0.56 0.18 rgb
-F
-newpath
-130.527 248.653 m
-130.527 248.653 126.423 249.589 124.767 250.237 c
-124.767 250.237 114.039 261.469 114.111 261.469 c
-115.695 260.749 119.799 256.933 121.527 255.493 c
-122.247 254.917 123.903 253.981 125.559 253.477 c
-125.631 253.477 130.527 248.653 130.527 248.653 c
-closepath
-0.74 0.54 0.17 rgb
-F
-newpath
-130.455 248.653 m
-130.455 248.653 126.351 249.661 124.623 250.381 c
-124.623 250.381 114.111 261.325 114.183 261.325 c
-115.767 260.605 119.871 256.789 121.599 255.349 c
-122.319 254.845 124.047 253.909 125.703 253.405 c
-125.775 253.405 130.455 248.653 130.455 248.653 c
-closepath
-0.72 0.52 0.16 rgb
-F
-newpath
-130.455 248.725 m
-130.455 248.725 126.207 249.733 124.479 250.525 c
-124.479 250.525 114.255 261.181 114.327 261.181 c
-115.839 260.461 119.943 256.645 121.671 255.277 c
-122.391 254.773 124.119 253.765 125.775 253.333 c
-125.847 253.333 130.455 248.725 130.455 248.725 c
-closepath
-0.7 0.5 0.15 rgb
-F
-newpath
-130.455 248.725 m
-130.455 248.725 126.063 249.733 124.335 250.669 c
-124.335 250.669 114.327 261.037 114.399 261.037 c
-115.911 260.317 120.015 256.573 121.743 255.205 c
-122.463 254.701 124.263 253.693 125.919 253.261 c
-125.991 253.261 130.455 248.725 130.455 248.725 c
-closepath
-0.69 0.49 0.15 rgb
-F
-newpath
-130.383 248.797 m
-130.383 248.797 125.919 249.805 124.191 250.741 c
-124.191 250.741 114.399 260.893 114.471 260.893 c
-115.983 260.173 120.087 256.429 121.815 255.133 c
-122.535 254.629 124.407 253.621 125.991 253.189 c
-126.063 253.189 130.383 248.797 130.383 248.797 c
-closepath
-0.67 0.47 0.14 rgb
-F
-newpath
-130.383 248.869 m
-130.383 248.869 125.775 249.877 124.047 250.885 c
-124.047 250.885 114.543 260.821 114.615 260.821 c
-116.055 260.029 120.159 256.285 121.815 255.061 c
-122.607 254.557 124.479 253.477 126.135 253.045 c
-126.207 253.045 130.383 248.869 130.383 248.869 c
-closepath
-0.65 0.45 0.13 rgb
-F
-newpath
-130.383 248.869 m
-130.383 248.869 125.631 249.949 123.903 251.029 c
-123.903 251.029 114.615 260.677 114.687 260.677 c
-116.127 259.885 120.231 256.213 121.887 254.989 c
-122.679 254.485 124.623 253.405 126.207 252.973 c
-126.279 252.973 130.383 248.869 130.383 248.869 c
-closepath
-0.63 0.43 0.12 rgb
-F
-newpath
-130.311 248.941 m
-130.311 248.941 125.487 250.021 123.759 251.173 c
-123.759 251.173 114.687 260.533 114.759 260.533 c
-116.199 259.741 120.303 256.069 121.959 254.917 c
-122.751 254.413 124.767 253.333 126.351 252.901 c
-126.423 252.901 130.311 248.941 130.311 248.941 c
-closepath
-0.61 0.41 0.11 rgb
-F
-newpath
-130.311 248.941 m
-130.311 248.941 125.415 250.093 123.543 251.245 c
-123.543 251.245 114.831 260.389 114.903 260.389 c
-116.343 259.525 120.375 255.925 122.031 254.773 c
-122.823 254.341 124.839 253.189 126.423 252.829 c
-126.495 252.829 130.311 248.941 130.311 248.941 c
-closepath
-0.59 0.39 0.09 rgb
-F
-newpath
-130.239 249.013 m
-130.239 249.013 125.271 250.165 123.399 251.389 c
-123.399 251.389 114.903 260.245 114.975 260.245 c
-116.415 259.381 120.447 255.781 122.103 254.701 c
-122.895 254.269 124.983 253.117 126.567 252.757 c
-126.639 252.757 130.239 249.013 130.239 249.013 c
-closepath
-0.57 0.37 0.08 rgb
-F
-newpath
-130.239 249.013 m
-130.239 249.013 125.127 250.237 123.255 251.533 c
-123.255 251.533 114.975 260.101 115.047 260.101 c
-116.487 259.237 120.519 255.709 122.175 254.629 c
-122.967 254.197 125.127 253.045 126.639 252.685 c
-126.711 252.685 130.239 249.013 130.239 249.013 c
-closepath
-0.55 0.35 0.07 rgb
-F
-newpath
-130.239 249.085 m
-130.239 249.085 124.983 250.309 123.111 251.677 c
-123.111 251.677 115.119 260.029 115.191 260.029 c
-116.559 259.093 120.591 255.565 122.175 254.557 c
-123.039 254.125 125.199 252.901 126.783 252.541 c
-126.855 252.541 130.239 249.085 130.239 249.085 c
-closepath
-0.53 0.33 0.06 rgb
-F
-newpath
-130.167 249.157 m
-130.167 249.157 124.839 250.381 122.967 251.749 c
-122.967 251.749 115.191 259.885 115.263 259.885 c
-116.631 258.949 120.663 255.421 122.247 254.485 c
-123.111 254.053 125.343 252.829 126.855 252.469 c
-126.927 252.469 130.167 249.157 130.167 249.157 c
-closepath
-0.51 0.31 0.05 rgb
-F
-newpath
-130.167 249.157 m
-130.167 249.157 124.695 250.381 122.823 251.893 c
-122.823 251.893 115.263 259.741 115.335 259.741 c
-116.703 258.805 120.735 255.349 122.319 254.413 c
-123.183 253.981 125.487 252.757 126.999 252.397 c
-127.071 252.397 130.167 249.157 130.167 249.157 c
-closepath
-0.5 0.3 0.05 rgb
-F
-newpath
-130.167 249.229 m
-130.167 249.229 124.551 250.453 122.679 252.037 c
-122.679 252.037 115.407 259.597 115.479 259.597 c
-116.775 258.661 120.807 255.205 122.391 254.341 c
-123.255 253.909 125.559 252.613 127.071 252.325 c
-127.143 252.325 130.167 249.229 130.167 249.229 c
-closepath
-0.48 0.28 0.04 rgb
-F
-newpath
-130.095 249.229 m
-130.095 249.229 124.479 250.525 122.535 252.181 c
-122.535 252.181 115.479 259.453 115.551 259.453 c
-116.847 258.517 120.879 255.061 122.463 254.197 c
-123.327 253.837 125.703 252.541 127.215 252.253 c
-127.287 252.253 130.095 249.229 130.095 249.229 c
-closepath
-0.46 0.26 0.03 rgb
-F
-newpath
-130.095 249.301 m
-130.095 249.301 124.335 250.597 122.391 252.253 c
-122.391 252.253 115.551 259.381 115.623 259.381 c
-116.919 258.373 120.951 254.917 122.463 254.125 c
-123.399 253.765 125.847 252.469 127.287 252.109 c
-127.359 252.109 130.095 249.301 130.095 249.301 c
-closepath
-0.44 0.24 0.02 rgb
-F
-newpath
-130.023 249.301 m
-130.023 249.301 124.191 250.669 122.247 252.397 c
-122.247 252.397 115.695 259.237 115.767 259.237 c
-116.991 258.229 121.023 254.845 122.535 254.053 c
-123.471 253.693 125.919 252.325 127.431 252.037 c
-127.503 252.037 130.023 249.301 130.023 249.301 c
-closepath
-0.42 0.22 0.01 rgb
-F
-newpath
-130.023 249.373 m
-130.023 249.373 124.047 250.741 122.103 252.541 c
-122.103 252.541 115.767 259.093 115.839 259.093 c
-117.063 258.085 121.095 254.701 122.607 253.981 c
-123.543 253.621 126.063 252.253 127.503 251.965 c
-127.575 251.965 130.023 249.373 130.023 249.373 c
-closepath
-0.4 0.2 0 rgb
-F
-newpath
-131.031 248.221 m
-134.559 247.861 137.871 247.717 140.031 247.717 c
-145.503 247.717 152.775 250.021 159.975 253.621 c
-166.959 257.293 169.119 258.733 174.087 261.685 c
-178.911 264.493 184.671 268.165 182.511 269.245 c
-180.351 270.397 177.903 269.101 170.919 264.781 c
-164.151 260.533 160.263 258.445 152.847 255.205 c
-149.967 253.909 145.575 252.109 142.551 251.965 c
-139.671 251.821 135.783 251.893 133.551 251.893 c
-130.887 251.893 127.503 252.973 124.695 254.197 c
-124.695 254.269 131.031 248.221 131.031 248.221 c
-closepath
-0.97 0.77 0 rgb
-F
-newpath
-130.887 248.293 m
-134.487 247.861 137.871 247.789 140.103 247.789 c
-145.503 247.789 152.703 250.093 159.831 253.693 c
-166.887 257.293 168.903 258.733 173.943 261.613 c
-178.767 264.493 184.527 268.093 182.367 269.173 c
-180.207 270.253 177.831 268.957 170.847 264.637 c
-164.079 260.461 160.119 258.301 152.847 255.133 c
-149.895 253.837 145.575 252.037 142.551 251.893 c
-139.671 251.749 135.783 251.821 133.623 251.821 c
-130.959 251.821 127.575 252.901 124.767 254.053 c
-124.767 254.125 130.887 248.293 130.887 248.293 c
-closepath
-0.94 0.74 0 rgb
-F
-newpath
-130.815 248.365 m
-134.415 247.933 137.871 247.861 140.103 247.861 c
-145.503 247.861 152.631 250.165 159.759 253.693 c
-166.743 257.293 168.759 258.733 173.727 261.613 c
-178.551 264.421 184.311 268.021 182.223 269.029 c
-180.063 270.181 177.687 268.813 170.775 264.565 c
-164.079 260.389 159.975 258.157 152.775 255.061 c
-149.895 253.765 145.575 252.037 142.551 251.821 c
-139.671 251.677 135.855 251.749 133.623 251.749 c
-130.959 251.749 127.647 252.829 124.911 253.981 c
-124.911 254.053 130.815 248.365 130.815 248.365 c
-closepath
-0.91 0.71 0 rgb
-F
-newpath
-130.743 248.365 m
-134.343 247.933 137.871 247.933 140.103 247.933 c
-145.503 247.933 152.559 250.165 159.687 253.765 c
-166.671 257.293 168.543 258.733 173.583 261.541 c
-178.335 264.349 184.167 267.877 182.079 268.957 c
-179.919 270.037 177.615 268.669 170.703 264.421 c
-164.007 260.317 159.831 258.085 152.775 254.989 c
-149.823 253.693 145.575 251.965 142.551 251.821 c
-139.671 251.605 135.855 251.677 133.623 251.677 c
-131.031 251.677 127.719 252.757 124.983 253.909 c
-124.983 253.981 130.743 248.365 130.743 248.365 c
-closepath
-0.89 0.69 0 rgb
-F
-newpath
-130.599 248.437 m
-134.271 248.005 137.871 248.005 140.103 248.005 c
-145.503 248.005 152.487 250.237 159.615 253.765 c
-166.527 257.293 168.399 258.733 173.367 261.541 c
-178.119 264.277 184.023 267.805 181.935 268.885 c
-179.775 269.965 177.543 268.525 170.631 264.349 c
-163.935 260.245 159.687 257.941 152.703 254.917 c
-149.751 253.621 145.575 251.893 142.551 251.749 c
-139.671 251.533 135.855 251.605 133.623 251.605 c
-131.031 251.605 127.791 252.685 125.055 253.837 c
-125.055 253.909 130.599 248.437 130.599 248.437 c
-closepath
-0.86 0.66 0 rgb
-F
-newpath
-130.527 248.509 m
-134.271 248.005 137.871 248.077 140.175 248.077 c
-145.575 248.077 152.415 250.309 159.471 253.837 c
-166.455 257.293 168.255 258.661 173.223 261.469 c
-177.975 264.277 183.879 267.733 181.719 268.813 c
-179.631 269.893 177.471 268.453 170.559 264.205 c
-163.863 260.173 159.543 257.797 152.703 254.773 c
-149.679 253.477 145.575 251.821 142.551 251.677 c
-139.671 251.461 135.855 251.533 133.695 251.533 c
-131.103 251.533 127.863 252.541 125.127 253.693 c
-125.127 253.765 130.527 248.509 130.527 248.509 c
-closepath
-0.83 0.63 0 rgb
-F
-newpath
-130.455 248.581 m
-134.199 248.077 137.871 248.149 140.175 248.149 c
-145.575 248.149 152.343 250.381 159.399 253.837 c
-166.311 257.293 168.039 258.661 173.007 261.469 c
-177.759 264.205 183.735 267.661 181.575 268.669 c
-179.487 269.749 177.327 268.309 170.487 264.133 c
-163.791 260.101 159.399 257.653 152.631 254.701 c
-149.679 253.405 145.575 251.821 142.551 251.605 c
-139.671 251.389 135.855 251.461 133.695 251.461 c
-131.103 251.461 127.935 252.469 125.199 253.621 c
-125.199 253.693 130.455 248.581 130.455 248.581 c
-closepath
-0.8 0.6 0 rgb
-F
-newpath
-130.311 248.653 m
-134.127 248.149 137.871 248.221 140.175 248.221 c
-145.575 248.221 152.271 250.453 159.327 253.837 c
-166.239 257.293 167.895 258.661 172.791 261.469 c
-177.543 264.133 183.519 267.589 181.431 268.597 c
-179.343 269.677 177.255 268.165 170.415 264.061 c
-163.791 260.029 159.255 257.509 152.631 254.629 c
-149.607 253.333 145.575 251.749 142.551 251.533 c
-139.671 251.317 135.927 251.389 133.695 251.389 c
-131.103 251.389 128.007 252.397 125.343 253.549 c
-125.343 253.621 130.311 248.653 130.311 248.653 c
-closepath
-0.77 0.57 0 rgb
-F
-newpath
-130.239 248.725 m
-134.055 248.149 137.871 248.293 140.247 248.293 c
-145.575 248.293 152.199 250.525 159.183 253.909 c
-166.095 257.293 167.751 258.661 172.647 261.397 c
-177.399 264.133 183.375 267.517 181.287 268.525 c
-179.199 269.605 177.183 268.021 170.343 263.917 c
-163.719 259.957 159.111 257.365 152.559 254.557 c
-149.535 253.261 145.575 251.677 142.551 251.461 c
-139.671 251.245 135.927 251.317 133.767 251.317 c
-131.175 251.317 128.079 252.325 125.415 253.405 c
-125.415 253.477 130.239 248.725 130.239 248.725 c
-closepath
-0.74 0.54 0 rgb
-F
-newpath
-130.167 248.797 m
-133.983 248.221 137.871 248.365 140.247 248.365 c
-145.575 248.365 152.127 250.597 159.111 253.909 c
-166.023 257.293 167.535 258.661 172.431 261.397 c
-177.183 264.061 183.231 267.445 181.143 268.453 c
-179.055 269.461 177.111 267.877 170.271 263.845 c
-163.647 259.885 158.967 257.221 152.559 254.485 c
-149.463 253.189 145.575 251.605 142.551 251.389 c
-139.671 251.173 135.927 251.245 133.767 251.245 c
-131.175 251.245 128.151 252.253 125.487 253.333 c
-125.487 253.405 130.167 248.797 130.167 248.797 c
-closepath
-0.71 0.51 0 rgb
-F
-newpath
-130.023 248.797 m
-133.911 248.221 137.799 248.509 140.247 248.509 c
-145.575 248.509 152.127 250.597 159.039 253.981 c
-165.879 257.293 167.391 258.661 172.287 261.325 c
-176.967 263.989 183.087 267.301 180.999 268.309 c
-178.911 269.389 176.967 267.733 170.271 263.701 c
-163.575 259.741 158.895 257.149 152.487 254.413 c
-149.463 253.117 145.647 251.605 142.623 251.389 c
-139.743 251.173 135.927 251.245 133.767 251.245 c
-131.247 251.245 128.223 252.181 125.559 253.261 c
-125.559 253.333 130.023 248.797 130.023 248.797 c
-closepath
-0.69 0.49 0 rgb
-F
-newpath
-129.951 248.869 m
-133.839 248.293 137.799 248.581 140.247 248.581 c
-145.575 248.581 152.055 250.669 158.967 253.981 c
-165.807 257.293 167.175 258.661 172.071 261.325 c
-176.751 263.917 182.943 267.229 180.855 268.237 c
-178.767 269.245 176.895 267.589 170.199 263.629 c
-163.503 259.669 158.751 257.005 152.487 254.341 c
-149.391 253.045 145.647 251.533 142.623 251.317 c
-139.743 251.101 135.927 251.173 133.767 251.173 c
-131.247 251.173 128.295 252.109 125.631 253.189 c
-125.631 253.261 129.951 248.869 129.951 248.869 c
-closepath
-0.66 0.46 0 rgb
-F
-newpath
-129.879 248.941 m
-133.767 248.293 137.799 248.653 140.319 248.653 c
-145.575 248.653 151.983 250.741 158.823 254.053 c
-165.663 257.293 167.031 258.661 171.927 261.253 c
-176.607 263.917 182.799 267.157 180.711 268.165 c
-178.623 269.173 176.823 267.445 170.127 263.485 c
-163.431 259.597 158.607 256.861 152.415 254.269 c
-149.319 252.973 145.647 251.461 142.623 251.245 c
-139.743 251.029 135.927 251.101 133.839 251.101 c
-131.319 251.101 128.367 252.037 125.703 253.045 c
-125.703 253.117 129.879 248.941 129.879 248.941 c
-closepath
-0.63 0.43 0 rgb
-F
-newpath
-129.735 249.013 m
-133.695 248.365 137.799 248.725 140.319 248.725 c
-145.575 248.725 151.911 250.813 158.751 254.053 c
-165.591 257.293 166.887 258.661 171.711 261.253 c
-176.391 263.845 182.583 267.085 180.567 268.093 c
-178.479 269.101 176.751 267.301 170.055 263.413 c
-163.431 259.525 158.463 256.717 152.415 254.197 c
-149.247 252.901 145.647 251.389 142.623 251.173 c
-139.743 250.957 135.999 251.029 133.839 251.029 c
-131.319 251.029 128.439 251.965 125.847 252.973 c
-125.847 253.045 129.735 249.013 129.735 249.013 c
-closepath
-0.6 0.4 0 rgb
-F
-newpath
-129.663 249.085 m
-133.623 248.437 137.799 248.797 140.319 248.797 c
-145.575 248.797 151.839 250.885 158.679 254.053 c
-165.447 257.293 166.671 258.661 171.495 261.253 c
-176.175 263.773 182.439 267.013 180.423 267.949 c
-178.335 268.957 176.607 267.157 169.983 263.341 c
-163.359 259.453 158.319 256.573 152.343 254.125 c
-149.247 252.829 145.647 251.389 142.623 251.101 c
-139.743 250.885 135.999 250.957 133.839 250.957 c
-131.319 250.957 128.511 251.893 125.919 252.901 c
-125.919 252.973 129.663 249.085 129.663 249.085 c
-closepath
-0.57 0.37 0 rgb
-F
-newpath
-129.591 249.157 m
-133.623 248.437 137.799 248.869 140.391 248.869 c
-145.647 248.869 151.767 250.957 158.535 254.125 c
-165.375 257.293 166.527 258.589 171.351 261.181 c
-176.031 263.773 182.295 266.941 180.207 267.877 c
-178.191 268.885 176.535 267.085 169.911 263.197 c
-163.287 259.381 158.175 256.429 152.343 253.981 c
-149.175 252.685 145.647 251.317 142.623 251.029 c
-139.743 250.813 135.999 250.885 133.911 250.885 c
-131.391 250.885 128.583 251.749 125.991 252.757 c
-125.991 252.829 129.591 249.157 129.591 249.157 c
-closepath
-0.54 0.34 0 rgb
-F
-newpath
-129.447 249.229 m
-133.551 248.509 137.799 248.941 140.391 248.941 c
-145.647 248.941 151.695 251.029 158.463 254.125 c
-165.231 257.293 166.383 258.589 171.135 261.181 c
-175.815 263.701 182.151 266.869 180.063 267.805 c
-178.047 268.813 176.463 266.941 169.839 263.125 c
-163.215 259.309 158.031 256.285 152.271 253.909 c
-149.103 252.613 145.647 251.245 142.623 250.957 c
-139.743 250.741 135.999 250.813 133.911 250.813 c
-131.391 250.813 128.655 251.677 126.063 252.685 c
-126.063 252.757 129.447 249.229 129.447 249.229 c
-closepath
-0.51 0.31 0 rgb
-F
-newpath
-129.375 249.229 m
-133.479 248.509 137.799 249.013 140.391 249.013 c
-145.647 249.013 151.623 251.029 158.391 254.197 c
-165.159 257.293 166.167 258.589 170.991 261.109 c
-175.599 263.629 182.007 266.725 179.919 267.733 c
-177.903 268.669 176.391 266.797 169.767 262.981 c
-163.143 259.237 157.887 256.213 152.271 253.837 c
-149.031 252.541 145.647 251.173 142.623 250.957 c
-139.743 250.669 135.999 250.741 133.911 250.741 c
-131.463 250.741 128.727 251.605 126.135 252.613 c
-126.135 252.685 129.375 249.229 129.375 249.229 c
-closepath
-0.49 0.29 0 rgb
-F
-newpath
-129.303 249.301 m
-133.407 248.581 137.799 249.085 140.391 249.085 c
-145.647 249.085 151.551 251.101 158.319 254.197 c
-165.015 257.293 166.023 258.589 170.775 261.109 c
-175.383 263.557 181.791 266.653 179.775 267.589 c
-177.759 268.597 176.247 266.653 169.695 262.909 c
-163.143 259.165 157.743 256.069 152.199 253.765 c
-149.031 252.469 145.647 251.173 142.623 250.885 c
-139.743 250.597 136.071 250.669 133.911 250.669 c
-131.463 250.669 128.799 251.533 126.279 252.541 c
-126.279 252.613 129.303 249.301 129.303 249.301 c
-closepath
-0.46 0.26 0 rgb
-F
-newpath
-129.159 249.373 m
-133.335 248.581 137.799 249.157 140.463 249.157 c
-145.647 249.157 151.479 251.173 158.175 254.269 c
-164.943 257.293 165.807 258.589 170.631 261.037 c
-175.239 263.557 181.647 266.581 179.631 267.517 c
-177.615 268.453 176.175 266.509 169.623 262.765 c
-163.071 259.093 157.599 255.925 152.199 253.693 c
-148.959 252.397 145.647 251.101 142.623 250.813 c
-139.743 250.525 136.071 250.597 133.983 250.597 c
-131.535 250.597 128.871 251.461 126.351 252.397 c
-126.351 252.469 129.159 249.373 129.159 249.373 c
-closepath
-0.43 0.23 0 rgb
-F
-newpath
-129.087 249.445 m
-133.263 248.653 137.799 249.229 140.463 249.229 c
-145.647 249.229 151.407 251.245 158.103 254.269 c
-164.799 257.293 165.663 258.589 170.415 261.037 c
-175.023 263.485 181.503 266.509 179.487 267.445 c
-177.471 268.381 176.103 266.365 169.551 262.693 c
-162.999 259.021 157.455 255.781 152.127 253.621 c
-148.887 252.325 145.647 251.029 142.623 250.741 c
-139.743 250.453 136.071 250.525 133.983 250.525 c
-131.535 250.525 128.943 251.389 126.423 252.325 c
-126.423 252.397 129.087 249.445 129.087 249.445 c
-closepath
-0.4 0.2 0 rgb
-F
-newpath
-164.007 198.541 m
-164.871 201.349 192.879 207.973 197.487 205.813 c
-202.023 203.653 223.767 172.045 219.879 170.317 c
-215.991 168.661 207.639 180.829 195.471 186.445 c
-183.303 192.061 163.143 195.661 164.007 198.541 c
-closepath
-1 1 1 rgb
-F
-newpath
-164.831 198.484 m
-165.679 201.245 192.976 207.56 197.521 205.481 c
-201.998 203.402 223.29 172.584 219.466 170.891 c
-215.642 169.266 207.501 181.237 195.525 186.764 c
-183.549 192.291 163.984 195.655 164.831 198.484 c
-closepath
-0.98 0.98 0.98 rgb
-F
-newpath
-165.656 198.427 m
-166.488 201.142 193.074 207.148 197.556 205.15 c
-201.973 203.151 222.813 173.123 219.053 171.465 c
-215.293 169.871 207.363 181.644 195.579 187.083 c
-183.796 192.521 164.824 195.648 165.656 198.427 c
-closepath
-0.96 0.96 0.96 rgb
-F
-newpath
-166.48 198.371 m
-167.296 201.038 193.171 206.735 197.59 204.818 c
-201.948 202.9 222.337 173.662 218.64 172.038 c
-214.944 170.476 207.224 182.052 195.633 187.402 c
-184.042 192.752 165.665 195.642 166.48 198.371 c
-closepath
-0.94 0.94 0.94 rgb
-F
-newpath
-167.305 198.314 m
-168.105 200.934 193.269 206.322 197.625 204.486 c
-201.923 202.65 221.86 174.202 218.227 172.612 c
-214.595 171.081 207.086 182.46 195.687 187.721 c
-184.288 192.982 166.505 195.635 167.305 198.314 c
-closepath
-0.92 0.92 0.92 rgb
-F
-newpath
-168.13 198.257 m
-168.913 200.831 193.366 205.91 197.66 204.154 c
-201.898 202.399 221.383 174.741 217.814 173.186 c
-214.246 171.686 206.948 182.867 195.741 188.04 c
-184.535 193.212 167.346 195.629 168.13 198.257 c
-closepath
-0.9 0.9 0.9 rgb
-F
-newpath
-168.954 198.2 m
-169.721 200.727 193.464 205.497 197.694 203.822 c
-201.874 202.148 220.906 175.28 217.402 173.76 c
-213.897 172.29 206.81 183.275 195.795 188.359 c
-184.781 193.443 168.187 195.623 168.954 198.2 c
-closepath
-0.88 0.88 0.88 rgb
-F
-newpath
-169.779 198.143 m
-170.53 200.623 193.561 205.084 197.729 203.491 c
-201.849 201.897 220.429 175.819 216.989 174.334 c
-213.548 172.895 206.671 183.683 195.849 188.678 c
-185.027 193.673 169.027 195.616 169.779 198.143 c
-closepath
-0.86 0.86 0.86 rgb
-F
-newpath
-170.603 198.087 m
-171.338 200.52 193.659 204.671 197.763 203.159 c
-201.824 201.646 219.953 176.358 216.576 174.907 c
-213.199 173.5 206.533 184.091 195.903 188.997 c
-185.273 193.903 169.868 195.61 170.603 198.087 c
-closepath
-0.84 0.84 0.84 rgb
-F
-newpath
-171.428 198.03 m
-172.147 200.416 193.756 204.259 197.798 202.827 c
-201.799 201.395 219.476 176.897 216.163 175.481 c
-212.85 174.105 206.395 184.498 195.957 189.316 c
-185.52 194.133 170.708 195.603 171.428 198.03 c
-closepath
-0.82 0.82 0.82 rgb
-F
-newpath
-172.252 197.973 m
-172.955 200.312 193.854 203.846 197.832 202.495 c
-201.774 201.145 218.999 177.436 215.75 176.055 c
-212.501 174.71 206.257 184.906 196.011 189.635 c
-185.766 194.363 171.549 195.597 172.252 197.973 c
-closepath
-0.8 0.8 0.8 rgb
-F
-newpath
-173.076 197.916 m
-173.763 200.209 193.951 203.433 197.867 202.164 c
-201.749 200.894 218.522 177.976 215.337 176.629 c
-212.152 175.315 206.118 185.314 196.065 189.954 c
-186.012 194.594 172.39 195.591 173.076 197.916 c
-closepath
-0.78 0.78 0.78 rgb
-F
-newpath
-173.901 197.859 m
-174.572 200.105 194.048 203.021 197.901 201.832 c
-201.724 200.643 218.045 178.515 214.924 177.203 c
-211.803 175.92 205.98 185.721 196.119 190.273 c
-186.259 194.824 173.23 195.584 173.901 197.859 c
-closepath
-0.76 0.76 0.76 rgb
-F
-newpath
-174.725 197.803 m
-175.38 200.002 194.146 202.608 197.936 201.5 c
-201.699 200.392 217.569 179.054 214.511 177.776 c
-211.454 176.525 205.842 186.129 196.173 190.592 c
-186.505 195.054 174.071 195.578 174.725 197.803 c
-closepath
-0.74 0.74 0.74 rgb
-F
-newpath
-175.55 197.746 m
-176.189 199.898 194.243 202.195 197.97 201.169 c
-201.674 200.141 217.092 179.593 214.098 178.35 c
-211.105 177.13 205.703 186.537 196.227 190.911 c
-186.751 195.285 174.911 195.571 175.55 197.746 c
-closepath
-0.72 0.72 0.72 rgb
-F
-newpath
-176.374 197.689 m
-176.997 199.794 194.341 201.783 198.005 200.837 c
-201.649 199.89 216.615 180.132 213.686 178.924 c
-210.756 177.734 205.565 186.945 196.281 191.23 c
-186.997 195.515 175.752 195.565 176.374 197.689 c
-closepath
-0.7 0.7 0.7 rgb
-F
-newpath
-177.199 197.632 m
-177.805 199.691 194.438 201.37 198.039 200.505 c
-201.625 199.639 216.138 180.671 213.273 179.498 c
-210.407 178.339 205.427 187.352 196.335 191.549 c
-187.244 195.745 176.593 195.559 177.199 197.632 c
-closepath
-0.68 0.68 0.68 rgb
-F
-newpath
-178.023 197.575 m
-178.614 199.587 194.536 200.957 198.074 200.173 c
-201.6 199.389 215.661 181.211 212.86 180.072 c
-210.058 178.944 205.289 187.76 196.389 191.868 c
-187.49 195.975 177.433 195.552 178.023 197.575 c
-closepath
-0.66 0.66 0.66 rgb
-F
-newpath
-178.848 197.519 m
-179.422 199.483 194.633 200.544 198.108 199.841 c
-201.575 199.138 215.185 181.75 212.447 180.645 c
-209.709 179.549 205.15 188.168 196.443 192.187 c
-187.736 196.206 178.274 195.546 178.848 197.519 c
-closepath
-0.64 0.64 0.64 rgb
-F
-newpath
-179.673 197.462 m
-180.231 199.38 194.731 200.132 198.143 199.51 c
-201.55 198.887 214.708 182.289 212.034 181.219 c
-209.36 180.154 205.012 188.575 196.497 192.506 c
-187.983 196.436 179.114 195.539 179.673 197.462 c
-closepath
-0.62 0.62 0.62 rgb
-F
-newpath
-180.497 197.405 m
-181.039 199.276 194.828 199.719 198.177 199.178 c
-201.525 198.636 214.231 182.828 211.621 181.793 c
-209.011 180.759 204.874 188.983 196.551 192.825 c
-188.229 196.666 179.955 195.533 180.497 197.405 c
-closepath
-0.6 0.6 0.6 rgb
-F
-newpath
-128.727 155.485 m
-131.607 155.341 128.871 139.213 128.871 122.581 c
-128.871 105.949 131.103 100.117 129.015 98.0291 c
-126.927 95.9411 123.327 103.429 123.327 120.061 c
-123.327 136.693 125.847 155.629 128.727 155.485 c
-closepath
-1 1 1 rgb
-F
-newpath
-128.698 155.094 m
-131.48 154.933 128.807 139.042 128.795 122.675 c
-128.783 106.309 130.982 100.468 128.959 98.4376 c
-126.938 96.4097 123.398 103.821 123.413 120.19 c
-123.425 136.557 125.915 155.255 128.698 155.094 c
-closepath
-0.98 0.98 0.98 rgb
-F
-newpath
-128.668 154.703 m
-131.354 154.524 128.744 138.872 128.719 122.77 c
-128.694 106.668 130.861 100.819 128.903 98.8462 c
-126.95 96.8784 123.468 104.213 123.498 120.32 c
-123.523 136.421 125.983 154.882 128.668 154.703 c
-closepath
-0.96 0.96 0.96 rgb
-F
-newpath
-128.639 154.312 m
-131.227 154.116 128.68 138.701 128.643 122.865 c
-128.606 107.028 130.74 101.17 128.847 99.2547 c
-126.961 97.347 123.539 104.606 123.584 120.449 c
-123.62 136.285 126.051 154.508 128.639 154.312 c
-closepath
-0.94 0.94 0.94 rgb
-F
-newpath
-128.609 153.921 m
-131.101 153.708 128.616 138.53 128.567 122.959 c
-128.518 107.388 130.619 101.521 128.791 99.6633 c
-126.973 97.8157 123.61 104.998 123.669 120.579 c
-123.718 136.15 126.118 154.135 128.609 153.921 c
-closepath
-0.92 0.92 0.92 rgb
-F
-newpath
-128.58 153.53 m
-130.974 153.299 128.553 138.359 128.491 123.053 c
-128.43 107.748 130.497 101.872 128.734 100.072 c
-126.984 98.2843 123.681 105.39 123.755 120.708 c
-123.816 136.014 126.186 153.762 128.58 153.53 c
-closepath
-0.9 0.9 0.9 rgb
-F
-newpath
-128.551 153.139 m
-130.847 152.891 128.489 138.188 128.415 123.148 c
-128.341 108.107 130.376 102.223 128.678 100.48 c
-126.995 98.753 123.751 105.782 123.84 120.837 c
-123.914 135.878 126.254 153.388 128.551 153.139 c
-closepath
-0.88 0.88 0.88 rgb
-F
-newpath
-128.521 152.748 m
-130.721 152.483 128.425 138.018 128.339 123.243 c
-128.253 108.467 130.255 102.574 128.622 100.889 c
-127.007 99.2216 123.822 106.174 123.926 120.967 c
-124.012 135.742 126.322 153.014 128.521 152.748 c
-closepath
-0.86 0.86 0.86 rgb
-F
-newpath
-128.492 152.357 m
-130.594 152.074 128.362 137.847 128.263 123.337 c
-128.165 108.827 130.134 102.925 128.566 101.297 c
-127.018 99.6903 123.893 106.567 124.011 121.096 c
-124.109 135.606 126.39 152.641 128.492 152.357 c
-closepath
-0.84 0.84 0.84 rgb
-F
-newpath
-128.462 151.966 m
-130.468 151.666 128.298 137.676 128.187 123.432 c
-128.076 109.187 130.013 103.276 128.51 101.706 c
-127.03 100.159 123.963 106.959 124.097 121.226 c
-124.207 135.47 126.458 152.268 128.462 151.966 c
-closepath
-0.82 0.82 0.82 rgb
-F
-newpath
-128.433 151.576 m
-130.341 151.258 128.234 137.505 128.111 123.526 c
-127.988 109.546 129.892 103.626 128.454 102.115 c
-127.041 100.628 124.034 107.351 124.182 121.355 c
-124.305 135.335 126.525 151.894 128.433 151.576 c
-closepath
-0.8 0.8 0.8 rgb
-F
-newpath
-128.404 151.185 m
-130.214 150.849 128.171 137.335 128.036 123.62 c
-127.9 109.906 129.771 103.977 128.398 102.523 c
-127.052 101.096 124.105 107.743 124.268 121.484 c
-124.403 135.199 126.593 151.52 128.404 151.185 c
-closepath
-0.78 0.78 0.78 rgb
-F
-newpath
-128.374 150.794 m
-130.088 150.441 128.107 137.164 127.96 123.715 c
-127.811 110.266 129.65 104.328 128.342 102.932 c
-127.064 101.565 124.175 108.135 124.353 121.614 c
-124.501 135.063 126.661 151.147 128.374 150.794 c
-closepath
-0.76 0.76 0.76 rgb
-F
-newpath
-128.345 150.403 m
-129.961 150.032 128.044 136.993 127.884 123.81 c
-127.723 110.626 129.529 104.679 128.286 103.34 c
-127.075 102.033 124.246 108.528 124.438 121.743 c
-124.598 134.927 126.729 150.773 128.345 150.403 c
-closepath
-0.74 0.74 0.74 rgb
-F
-newpath
-128.315 150.012 m
-129.835 149.624 127.98 136.822 127.808 123.904 c
-127.635 110.985 129.408 105.03 128.23 103.749 c
-127.087 102.502 124.317 108.92 124.524 121.873 c
-124.696 134.791 126.797 150.4 128.315 150.012 c
-closepath
-0.72 0.72 0.72 rgb
-F
-newpath
-128.286 149.621 m
-129.708 149.216 127.916 136.652 127.732 123.999 c
-127.547 111.345 129.286 105.381 128.173 104.157 c
-127.098 102.971 124.387 109.312 124.61 122.002 c
-124.794 134.655 126.865 150.026 128.286 149.621 c
-closepath
-0.7 0.7 0.7 rgb
-F
-newpath
-128.257 149.23 m
-129.581 148.807 127.853 136.481 127.656 124.093 c
-127.458 111.705 129.165 105.732 128.117 104.566 c
-127.109 103.439 124.458 109.704 124.695 122.131 c
-124.892 134.519 126.933 149.653 128.257 149.23 c
-closepath
-0.68 0.68 0.68 rgb
-F
-newpath
-128.227 148.839 m
-129.455 148.399 127.789 136.31 127.58 124.188 c
-127.37 112.065 129.044 106.083 128.061 104.974 c
-127.121 103.908 124.529 110.096 124.781 122.261 c
-124.99 134.384 127 149.279 128.227 148.839 c
-closepath
-0.66 0.66 0.66 rgb
-F
-newpath
-128.198 148.448 m
-129.328 147.991 127.725 136.14 127.504 124.282 c
-127.282 112.424 128.923 106.434 128.005 105.383 c
-127.132 104.377 124.6 110.489 124.866 122.39 c
-125.087 134.248 127.068 148.906 128.198 148.448 c
-closepath
-0.64 0.64 0.64 rgb
-F
-newpath
-128.168 148.057 m
-129.202 147.582 127.662 135.969 127.428 124.377 c
-127.193 112.784 128.802 106.785 127.949 105.791 c
-127.144 104.845 124.67 110.881 124.951 122.52 c
-125.185 134.112 127.136 148.533 128.168 148.057 c
-closepath
-0.62 0.62 0.62 rgb
-F
-newpath
-128.139 147.666 m
-129.075 147.174 127.598 135.798 127.352 124.471 c
-127.105 113.144 128.681 107.136 127.893 106.2 c
-127.155 105.314 124.741 111.273 125.037 122.649 c
-125.283 133.976 127.204 148.159 128.139 147.666 c
-closepath
-0.6 0.6 0.6 rgb
-F
-newpath
-135.027 199.949 m
-136.763 199.757 147.464 202.167 147.85 201.203 c
-148.235 200.431 141.198 198.31 138.884 195.9 c
-138.113 195.129 136.088 193.297 134.835 193.49 c
-133.871 193.586 133.292 195.611 131.846 197.154 c
-128.375 200.624 126.158 200.335 126.833 201.685 c
-127.411 202.745 132.039 200.239 135.027 199.949 c
-closepath
-1 1 1 rgb
-F
-newpath
-135.072 199.909 m
-136.772 199.721 147.248 202.08 147.626 201.137 c
-148.003 200.381 141.113 198.305 138.848 195.945 c
-138.093 195.19 136.111 193.397 134.884 193.586 c
-133.94 193.68 133.374 195.662 131.958 197.173 c
-128.56 200.57 126.39 200.287 127.05 201.609 c
-127.616 202.646 132.147 200.193 135.072 199.909 c
-closepath
-0.988 0.988 0.988 rgb
-F
-newpath
-135.117 199.869 m
-136.78 199.685 147.031 201.994 147.401 201.07 c
-147.77 200.331 141.029 198.299 138.812 195.99 c
-138.074 195.252 136.134 193.497 134.933 193.682 c
-134.01 193.774 133.455 195.714 132.07 197.192 c
-128.745 200.516 126.621 200.239 127.268 201.532 c
-127.822 202.548 132.255 200.147 135.117 199.869 c
-closepath
-0.975 0.975 0.975 rgb
-F
-newpath
-135.163 199.829 m
-136.789 199.649 146.815 201.907 147.177 201.004 c
-147.538 200.281 140.944 198.294 138.776 196.036 c
-138.054 195.313 136.157 193.597 134.983 193.778 c
-134.079 193.868 133.537 195.765 132.182 197.211 c
-128.93 200.462 126.853 200.191 127.485 201.456 c
-128.027 202.449 132.363 200.101 135.163 199.829 c
-closepath
-0.962 0.962 0.962 rgb
-F
-newpath
-135.208 199.789 m
-136.798 199.613 146.599 201.821 146.952 200.938 c
-147.305 200.231 140.86 198.288 138.74 196.081 c
-138.034 195.375 136.179 193.697 135.032 193.874 c
-134.149 193.962 133.619 195.816 132.294 197.229 c
-129.115 200.408 127.085 200.143 127.703 201.379 c
-128.232 202.35 132.471 200.055 135.208 199.789 c
-closepath
-0.95 0.95 0.95 rgb
-F
-newpath
-135.253 199.75 m
-136.807 199.577 146.383 201.734 146.728 200.872 c
-147.073 200.181 140.775 198.283 138.704 196.126 c
-138.014 195.436 136.202 193.797 135.081 193.97 c
-134.218 194.055 133.7 195.867 132.406 197.248 c
-129.3 200.354 127.316 200.095 127.92 201.303 c
-128.438 202.251 132.579 200.009 135.253 199.75 c
-closepath
-0.938 0.938 0.938 rgb
-F
-newpath
-135.298 199.71 m
-136.815 199.542 146.166 201.648 146.504 200.805 c
-146.84 200.131 140.691 198.277 138.669 196.171 c
-137.995 195.498 136.225 193.897 135.13 194.065 c
-134.288 194.149 133.782 195.919 132.518 197.267 c
-129.485 200.299 127.548 200.047 128.138 201.227 c
-128.643 202.153 132.687 199.963 135.298 199.71 c
-closepath
-0.925 0.925 0.925 rgb
-F
-newpath
-135.343 199.67 m
-136.824 199.506 145.95 201.561 146.279 200.739 c
-146.607 200.081 140.606 198.272 138.633 196.217 c
-137.975 195.559 136.248 193.997 135.179 194.161 c
-134.357 194.243 133.864 195.97 132.63 197.286 c
-129.67 200.245 127.78 199.999 128.355 201.15 c
-128.848 202.054 132.795 199.917 135.343 199.67 c
-closepath
-0.913 0.913 0.913 rgb
-F
-newpath
-135.389 199.63 m
-136.833 199.47 145.734 201.475 146.055 200.673 c
-146.375 200.031 140.522 198.266 138.597 196.262 c
-137.955 195.621 136.271 194.097 135.229 194.257 c
-134.427 194.337 133.945 196.021 132.742 197.305 c
-129.855 200.191 128.011 199.951 128.573 201.074 c
-129.053 201.955 132.903 199.871 135.389 199.63 c
-closepath
-0.9 0.9 0.9 rgb
-F
-newpath
-135.434 199.59 m
-136.841 199.434 145.517 201.388 145.83 200.606 c
-146.143 199.981 140.437 198.261 138.561 196.307 c
-137.936 195.682 136.294 194.197 135.278 194.353 c
-134.496 194.431 134.027 196.073 132.854 197.324 c
-130.04 200.137 128.243 199.903 128.79 200.997 c
-129.259 201.857 133.011 199.825 135.434 199.59 c
-closepath
-0.887 0.887 0.887 rgb
-F
-newpath
-135.479 199.55 m
-136.85 199.398 145.301 201.302 145.606 200.54 c
-145.91 199.931 140.353 198.255 138.525 196.352 c
-137.916 195.743 136.316 194.297 135.327 194.449 c
-134.565 194.525 134.109 196.124 132.966 197.342 c
-130.225 200.083 128.475 199.855 129.008 200.921 c
-129.464 201.758 133.119 199.779 135.479 199.55 c
-closepath
-0.875 0.875 0.875 rgb
-F
-newpath
-135.524 199.51 m
-136.859 199.362 145.085 201.215 145.382 200.474 c
-145.678 199.881 140.268 198.25 138.489 196.398 c
-137.896 195.805 136.339 194.396 135.376 194.545 c
-134.635 194.619 134.19 196.175 133.079 197.361 c
-130.411 200.029 128.706 199.807 129.225 200.845 c
-129.669 201.659 133.227 199.733 135.524 199.51 c
-closepath
-0.863 0.863 0.863 rgb
-F
-newpath
-135.569 199.47 m
-136.867 199.326 144.868 201.128 145.157 200.407 c
-145.445 199.831 140.183 198.245 138.453 196.443 c
-137.877 195.866 136.362 194.496 135.425 194.641 c
-134.704 194.713 134.272 196.227 133.191 197.38 c
-130.596 199.975 128.938 199.759 129.442 200.768 c
-129.875 201.561 133.335 199.687 135.569 199.47 c
-closepath
-0.85 0.85 0.85 rgb
-F
-newpath
-135.615 199.43 m
-136.876 199.29 144.652 201.042 144.933 200.341 c
-145.213 199.781 140.099 198.239 138.417 196.488 c
-137.857 195.928 136.385 194.596 135.475 194.737 c
-134.774 194.807 134.353 196.278 133.303 197.399 c
-130.781 199.921 129.169 199.711 129.66 200.692 c
-130.08 201.462 133.443 199.641 135.615 199.43 c
-closepath
-0.837 0.837 0.837 rgb
-F
-newpath
-135.66 199.39 m
-136.885 199.254 144.436 200.955 144.708 200.275 c
-144.98 199.731 140.014 198.234 138.381 196.533 c
-137.837 195.989 136.408 194.696 135.524 194.833 c
-134.843 194.901 134.435 196.329 133.415 197.418 c
-130.966 199.867 129.401 199.663 129.877 200.615 c
-130.285 201.363 133.551 199.595 135.66 199.39 c
-closepath
-0.825 0.825 0.825 rgb
-F
-newpath
-135.705 199.35 m
-136.893 199.219 144.219 200.869 144.484 200.208 c
-144.747 199.681 139.93 198.228 138.346 196.579 c
-137.818 196.051 136.431 194.796 135.573 194.928 c
-134.913 194.995 134.517 196.38 133.527 197.437 c
-131.151 199.812 129.633 199.615 130.095 200.539 c
-130.49 201.264 133.659 199.549 135.705 199.35 c
-closepath
-0.813 0.813 0.813 rgb
-F
-newpath
-135.75 199.311 m
-136.902 199.183 144.003 200.782 144.26 200.142 c
-144.515 199.631 139.845 198.223 138.31 196.624 c
-137.798 196.112 136.454 194.896 135.622 195.024 c
-134.982 195.088 134.598 196.432 133.639 197.456 c
-131.336 199.758 129.864 199.567 130.312 200.463 c
-130.696 201.166 133.767 199.503 135.75 199.311 c
-closepath
-0.8 0.8 0.8 rgb
-F
-newpath
-135.795 199.271 m
-136.911 199.147 143.787 200.696 144.035 200.076 c
-144.283 199.581 139.761 198.217 138.274 196.669 c
-137.778 196.174 136.476 194.996 135.671 195.12 c
-135.052 195.182 134.68 196.483 133.751 197.474 c
-131.521 199.704 130.096 199.519 130.53 200.386 c
-130.901 201.067 133.875 199.457 135.795 199.271 c
-closepath
-0.788 0.788 0.788 rgb
-F
-newpath
-135.841 199.231 m
-136.92 199.111 143.571 200.609 143.811 200.01 c
-144.05 199.531 139.676 198.212 138.238 196.714 c
-137.758 196.235 136.499 195.096 135.721 195.216 c
-135.121 195.276 134.762 196.534 133.863 197.493 c
-131.706 199.65 130.328 199.471 130.747 200.31 c
-131.106 200.968 133.983 199.411 135.841 199.231 c
-closepath
-0.775 0.775 0.775 rgb
-F
-newpath
-135.886 199.191 m
-136.928 199.075 143.354 200.523 143.586 199.943 c
-143.818 199.481 139.592 198.206 138.202 196.76 c
-137.739 196.297 136.522 195.196 135.77 195.312 c
-135.191 195.37 134.843 196.586 133.975 197.512 c
-131.891 199.596 130.559 199.423 130.965 200.233 c
-131.312 200.87 134.091 199.365 135.886 199.191 c
-closepath
-0.762 0.762 0.762 rgb
-F
-newpath
-135.931 199.151 m
-136.937 199.039 143.138 200.436 143.362 199.877 c
-143.585 199.431 139.507 198.201 138.166 196.805 c
-137.719 196.358 136.545 195.296 135.819 195.408 c
-135.26 195.464 134.925 196.637 134.087 197.531 c
-132.076 199.542 130.791 199.375 131.182 200.157 c
-131.517 200.771 134.199 199.319 135.931 199.151 c
-closepath
-0.75 0.75 0.75 rgb
-F
-newpath
-170.533 352.938 m
-168.936 350.807 167.693 335.983 171.598 334.296 c
-175.504 332.699 192.015 337.936 191.483 341.309 c
-190.684 346.724 183.76 352.405 180.12 354.092 c
-177.102 355.601 172.131 355.068 170.533 352.938 c
-closepath
-0 0 0 rgb
-F
-newpath
-170.743 352.703 m
-169.185 350.624 167.956 336.178 171.769 334.53 c
-175.582 332.967 191.573 338.118 191.052 341.416 c
-190.266 346.702 183.61 352.215 180.063 353.85 c
-177.107 355.313 172.302 354.782 170.743 352.703 c
-closepath
-0.02 0.02 0.02 rgb
-F
-newpath
-170.953 352.469 m
-169.434 350.442 168.219 336.374 171.939 334.764 c
-175.66 333.236 191.132 338.301 190.621 341.523 c
-189.847 346.68 183.46 352.026 180.006 353.608 c
-177.112 355.026 172.474 354.496 170.953 352.469 c
-closepath
-0.04 0.04 0.04 rgb
-F
-newpath
-171.164 352.234 m
-169.683 350.259 168.482 336.569 172.11 334.998 c
-175.738 333.504 190.69 338.483 190.19 341.631 c
-189.429 346.658 183.311 351.836 179.949 353.366 c
-177.117 354.738 172.645 354.209 171.164 352.234 c
-closepath
-0.06 0.06 0.06 rgb
-F
-newpath
-171.374 352 m
-169.932 350.076 168.746 336.765 172.281 335.233 c
-175.816 333.772 190.249 338.665 189.759 341.738 c
-189.011 346.636 183.161 351.647 179.893 353.124 c
-177.122 354.45 172.817 353.923 171.374 352 c
-closepath
-0.08 0.08 0.08 rgb
-F
-newpath
-171.584 351.766 m
-170.181 349.893 169.009 336.96 172.451 335.467 c
-175.895 334.041 189.807 338.848 189.329 341.845 c
-188.592 346.614 183.011 351.457 179.836 352.882 c
-177.127 354.163 172.988 353.637 171.584 351.766 c
-closepath
-0.1 0.1 0.1 rgb
-F
-newpath
-171.794 351.531 m
-170.43 349.711 169.272 337.156 172.622 335.701 c
-175.973 334.309 189.366 339.03 188.898 341.952 c
-188.174 346.592 182.861 351.268 179.779 352.64 c
-177.132 353.875 173.159 353.351 171.794 351.531 c
-closepath
-0.12 0.12 0.12 rgb
-F
-newpath
-172.004 351.296 m
-170.679 349.528 169.535 337.351 172.793 335.935 c
-176.051 334.577 188.924 339.212 188.467 342.06 c
-187.756 346.57 182.711 351.078 179.722 352.398 c
-177.137 353.587 173.331 353.065 172.004 351.296 c
-closepath
-0.14 0.14 0.14 rgb
-F
-newpath
-172.215 351.062 m
-170.928 349.345 169.798 337.547 172.963 336.169 c
-176.129 334.846 188.483 339.394 188.036 342.167 c
-187.337 346.548 182.562 350.889 179.665 352.156 c
-177.142 353.299 173.502 352.778 172.215 351.062 c
-closepath
-0.16 0.16 0.16 rgb
-F
-newpath
-172.425 350.827 m
-171.177 349.163 170.061 337.742 173.134 336.403 c
-176.207 335.114 188.041 339.577 187.605 342.274 c
-186.919 346.526 182.412 350.699 179.608 351.914 c
-177.147 353.012 173.674 352.492 172.425 350.827 c
-closepath
-0.18 0.18 0.18 rgb
-F
-newpath
-172.635 350.593 m
-171.426 348.98 170.324 337.938 173.305 336.638 c
-176.285 335.383 187.6 339.759 187.174 342.382 c
-186.501 346.505 182.262 350.51 179.551 351.672 c
-177.152 352.724 173.845 352.206 172.635 350.593 c
-closepath
-0.2 0.2 0.2 rgb
-F
-newpath
-172.845 350.358 m
-171.674 348.797 170.588 338.133 173.475 336.872 c
-176.363 335.651 187.158 339.941 186.743 342.489 c
-186.082 346.483 182.112 350.32 179.495 351.431 c
-177.157 352.436 174.016 351.92 172.845 350.358 c
-closepath
-0.22 0.22 0.22 rgb
-F
-newpath
-173.055 350.124 m
-171.923 348.615 170.851 338.328 173.646 337.106 c
-176.441 335.919 186.716 340.124 186.312 342.596 c
-185.664 346.461 181.962 350.13 179.438 351.189 c
-177.162 352.149 174.188 351.634 173.055 350.124 c
-closepath
-0.24 0.24 0.24 rgb
-F
-newpath
-173.266 349.889 m
-172.172 348.432 171.114 338.524 173.816 337.34 c
-176.519 336.188 186.275 340.306 185.881 342.703 c
-185.245 346.439 181.813 349.941 179.381 350.947 c
-177.167 351.861 174.359 351.347 173.266 349.889 c
-closepath
-0.26 0.26 0.26 rgb
-F
-newpath
-173.476 349.655 m
-172.421 348.249 171.377 338.719 173.987 337.574 c
-176.597 336.456 185.833 340.488 185.45 342.811 c
-184.827 346.417 181.663 349.751 179.324 350.705 c
-177.172 351.573 174.531 351.061 173.476 349.655 c
-closepath
-0.28 0.28 0.28 rgb
-F
-newpath
-173.686 349.42 m
-172.67 348.067 171.64 338.915 174.158 337.808 c
-176.675 336.724 185.392 340.671 185.02 342.918 c
-184.409 346.395 181.513 349.562 179.267 350.463 c
-177.177 351.285 174.702 350.775 173.686 349.42 c
-closepath
-0.3 0.3 0.3 rgb
-F
-newpath
-173.896 349.186 m
-172.919 347.884 171.903 339.11 174.328 338.042 c
-176.754 336.993 184.95 340.853 184.589 343.025 c
-183.99 346.373 181.363 349.372 179.21 350.221 c
-177.182 350.998 174.873 350.489 173.896 349.186 c
-closepath
-0.32 0.32 0.32 rgb
-F
-newpath
-174.106 348.951 m
-173.168 347.701 172.167 339.306 174.499 338.277 c
-176.832 337.261 184.509 341.035 184.158 343.132 c
-183.572 346.351 181.213 349.183 179.154 349.979 c
-177.187 350.71 175.045 350.203 174.106 348.951 c
-closepath
-0.34 0.34 0.34 rgb
-F
-newpath
-174.317 348.717 m
-173.417 347.518 172.43 339.501 174.67 338.511 c
-176.91 337.529 184.067 341.217 183.727 343.24 c
-183.154 346.329 181.064 348.993 179.097 349.737 c
-177.192 350.422 175.216 349.916 174.317 348.717 c
-closepath
-0.36 0.36 0.36 rgb
-F
-newpath
-174.527 348.482 m
-173.666 347.336 172.693 339.697 174.84 338.745 c
-176.988 337.798 183.626 341.4 183.296 343.347 c
-182.735 346.307 180.914 348.804 179.04 349.495 c
-177.197 350.135 175.388 349.63 174.527 348.482 c
-closepath
-0.38 0.38 0.38 rgb
-F
-newpath
-174.737 348.248 m
-173.915 347.153 172.956 339.892 175.011 338.979 c
-177.066 338.066 183.184 341.582 182.865 343.454 c
-182.317 346.285 180.764 348.614 178.983 349.253 c
-177.202 349.847 175.559 349.344 174.737 348.248 c
-closepath
-0.4 0.4 0.4 rgb
-F
-newpath
-197.745 259.589 m
-197.007 258.687 198.319 251.224 203.157 246.304 c
-207.996 241.466 210.948 241.466 212.916 243.598 c
-216.688 247.616 213.654 251.389 211.358 254.013 c
-209.062 256.637 206.11 255.735 203.403 258.359 c
-200.697 260.983 198.811 260.819 197.745 259.589 c
-closepath
-0 0 0 rgb
-F
-newpath
-197.815 259.522 m
-197.083 258.627 198.385 251.222 203.185 246.34 c
-207.987 241.54 210.916 241.54 212.868 243.655 c
-216.611 247.642 213.601 251.386 211.323 253.989 c
-209.044 256.593 206.115 255.698 203.429 258.302 c
-200.744 260.905 198.873 260.743 197.815 259.522 c
-closepath
-0.02 0.02 0.02 rgb
-F
-newpath
-197.886 259.455 m
-197.159 258.567 198.451 251.22 203.214 246.377 c
-207.977 241.614 210.883 241.614 212.821 243.713 c
-216.534 247.668 213.547 251.383 211.287 253.966 c
-209.027 256.549 206.121 255.661 203.456 258.244 c
-200.792 260.828 198.935 260.666 197.886 259.455 c
-closepath
-0.04 0.04 0.04 rgb
-F
-newpath
-197.956 259.388 m
-197.235 258.507 198.517 251.218 203.242 246.413 c
-207.968 241.688 210.851 241.688 212.773 243.77 c
-216.457 247.694 213.494 251.379 211.252 253.942 c
-209.009 256.505 206.126 255.624 203.482 258.187 c
-200.839 260.75 198.997 260.59 197.956 259.388 c
-closepath
-0.06 0.06 0.06 rgb
-F
-newpath
-198.026 259.321 m
-197.311 258.447 198.582 251.216 203.27 246.449 c
-207.959 241.762 210.819 241.762 212.726 243.827 c
-216.381 247.721 213.441 251.376 211.216 253.919 c
-208.992 256.461 206.131 255.587 203.508 258.13 c
-200.887 260.672 199.059 260.513 198.026 259.321 c
-closepath
-0.08 0.08 0.08 rgb
-F
-newpath
-198.096 259.254 m
-197.387 258.388 198.648 251.215 203.298 246.486 c
-207.949 241.836 210.787 241.836 212.678 243.885 c
-216.304 247.747 213.388 251.373 211.181 253.895 c
-208.974 256.417 206.137 255.55 203.535 258.072 c
-200.934 260.594 199.121 260.437 198.096 259.254 c
-closepath
-0.1 0.1 0.1 rgb
-F
-newpath
-198.167 259.188 m
-197.463 258.328 198.714 251.213 203.327 246.522 c
-207.94 241.909 210.755 241.909 212.631 243.942 c
-216.227 247.773 213.334 251.37 211.145 253.871 c
-208.956 256.373 206.142 255.513 203.561 258.015 c
-200.981 260.517 199.183 260.36 198.167 259.188 c
-closepath
-0.12 0.12 0.12 rgb
-F
-newpath
-198.237 259.121 m
-197.539 258.268 198.78 251.211 203.355 246.558 c
-207.931 241.983 210.722 241.983 212.583 243.999 c
-216.15 247.799 213.281 251.367 211.11 253.848 c
-208.939 256.329 206.147 255.476 203.587 257.958 c
-201.029 260.439 199.245 260.284 198.237 259.121 c
-closepath
-0.14 0.14 0.14 rgb
-F
-newpath
-198.307 259.054 m
-197.615 258.208 198.846 251.209 203.383 246.594 c
-207.921 242.057 210.69 242.057 212.536 244.057 c
-216.073 247.825 213.228 251.363 211.074 253.824 c
-208.921 256.285 206.152 255.439 203.614 257.9 c
-201.076 260.361 199.307 260.207 198.307 259.054 c
-closepath
-0.16 0.16 0.16 rgb
-F
-newpath
-198.378 258.987 m
-197.691 258.148 198.912 251.207 203.412 246.631 c
-207.912 242.131 210.658 242.131 212.488 244.114 c
-215.996 247.851 213.174 251.36 211.039 253.801 c
-208.904 256.241 206.158 255.402 203.64 257.843 c
-201.124 260.283 199.369 260.131 198.378 258.987 c
-closepath
-0.18 0.18 0.18 rgb
-F
-newpath
-198.448 258.92 m
-197.768 258.088 198.978 251.205 203.44 246.667 c
-207.902 242.205 210.625 242.205 212.44 244.172 c
-215.919 247.878 213.121 251.357 211.004 253.777 c
-208.886 256.198 206.163 255.366 203.667 257.786 c
-201.171 260.206 199.431 260.055 198.448 258.92 c
-closepath
-0.2 0.2 0.2 rgb
-F
-newpath
-198.518 258.853 m
-197.844 258.028 199.043 251.203 203.468 246.703 c
-207.893 242.279 210.593 242.279 212.393 244.229 c
-215.843 247.904 213.068 251.354 210.968 253.753 c
-208.868 256.154 206.168 255.329 203.693 257.728 c
-201.218 260.128 199.493 259.978 198.518 258.853 c
-closepath
-0.22 0.22 0.22 rgb
-F
-newpath
-198.589 258.786 m
-197.92 257.968 199.109 251.201 203.497 246.74 c
-207.884 242.353 210.561 242.353 212.345 244.286 c
-215.766 247.93 213.014 251.351 210.933 253.73 c
-208.851 256.11 206.174 255.292 203.719 257.671 c
-201.266 260.05 199.555 259.902 198.589 258.786 c
-closepath
-0.24 0.24 0.24 rgb
-F
-newpath
-198.659 258.719 m
-197.996 257.908 199.175 251.199 203.525 246.776 c
-207.874 242.427 210.529 242.427 212.298 244.344 c
-215.689 247.956 212.961 251.347 210.897 253.706 c
-208.833 256.066 206.179 255.255 203.746 257.613 c
-201.313 259.972 199.617 259.825 198.659 258.719 c
-closepath
-0.26 0.26 0.26 rgb
-F
-newpath
-198.729 258.652 m
-198.072 257.848 199.241 251.197 203.553 246.812 c
-207.865 242.501 210.496 242.501 212.25 244.401 c
-215.612 247.982 212.908 251.344 210.862 253.683 c
-208.816 256.022 206.184 255.218 203.772 257.556 c
-201.361 259.895 199.679 259.749 198.729 258.652 c
-closepath
-0.28 0.28 0.28 rgb
-F
-newpath
-198.799 258.586 m
-198.148 257.789 199.307 251.195 203.582 246.848 c
-207.856 242.574 210.464 242.574 212.203 244.458 c
-215.535 248.008 212.854 251.341 210.826 253.659 c
-208.798 255.978 206.189 255.181 203.798 257.499 c
-201.408 259.817 199.741 259.672 198.799 258.586 c
-closepath
-0.3 0.3 0.3 rgb
-F
-newpath
-198.87 258.519 m
-198.224 257.729 199.373 251.194 203.61 246.885 c
-207.846 242.648 210.432 242.648 212.155 244.516 c
-215.458 248.034 212.801 251.338 210.791 253.635 c
-208.78 255.934 206.195 255.144 203.825 257.441 c
-201.455 259.739 199.803 259.596 198.87 258.519 c
-closepath
-0.32 0.32 0.32 rgb
-F
-newpath
-198.94 258.452 m
-198.3 257.669 199.438 251.192 203.638 246.921 c
-207.837 242.722 210.4 242.722 212.108 244.573 c
-215.382 248.061 212.748 251.335 210.755 253.612 c
-208.763 255.89 206.2 255.107 203.851 257.384 c
-201.503 259.661 199.865 259.519 198.94 258.452 c
-closepath
-0.34 0.34 0.34 rgb
-F
-newpath
-199.01 258.385 m
-198.376 257.609 199.504 251.19 203.666 246.957 c
-207.828 242.796 210.367 242.796 212.06 244.63 c
-215.305 248.087 212.695 251.331 210.72 253.588 c
-208.745 255.846 206.205 255.07 203.877 257.327 c
-201.55 259.583 199.927 259.443 199.01 258.385 c
-closepath
-0.36 0.36 0.36 rgb
-F
-newpath
-199.081 258.318 m
-198.452 257.549 199.57 251.188 203.695 246.994 c
-207.818 242.87 210.335 242.87 212.013 244.688 c
-215.228 248.113 212.641 251.328 210.684 253.565 c
-208.728 255.802 206.211 255.033 203.904 257.269 c
-201.598 259.506 199.989 259.366 199.081 258.318 c
-closepath
-0.38 0.38 0.38 rgb
-F
-newpath
-199.151 258.251 m
-198.528 257.489 199.636 251.186 203.723 247.03 c
-207.809 242.944 210.303 242.944 211.965 244.745 c
-215.151 248.139 212.588 251.325 210.649 253.541 c
-208.71 255.758 206.216 254.996 203.93 257.212 c
-201.645 259.428 200.051 259.29 199.151 258.251 c
-closepath
-0.4 0.4 0.4 rgb
-F
-newpath
-121.095 320.725 m
-120.375 318.565 129.807 315.613 131.895 313.741 c
-134.703 311.221 134.919 306.253 138.231 308.269 c
-140.391 309.565 138.735 312.445 134.775 316.837 c
-128.943 323.317 121.743 322.525 121.095 320.725 c
-closepath
-0 0 0 rgb
-F
-newpath
-121.583 320.528 m
-120.868 318.455 129.859 315.628 131.92 313.788 c
-134.665 311.331 134.881 306.539 138.066 308.475 c
-140.16 309.729 138.515 312.547 134.724 316.755 c
-129.148 322.958 122.232 322.259 121.583 320.528 c
-closepath
-0.02 0.02 0.02 rgb
-F
-newpath
-122.072 320.332 m
-121.361 318.345 129.911 315.644 131.945 313.834 c
-134.627 311.441 134.843 306.825 137.9 308.68 c
-139.93 309.893 138.296 312.648 134.673 316.673 c
-129.354 322.598 122.72 321.994 122.072 320.332 c
-closepath
-0.04 0.04 0.04 rgb
-F
-newpath
-122.56 320.135 m
-121.855 318.235 129.963 315.659 131.97 313.88 c
-134.589 311.551 134.805 307.111 137.735 308.886 c
-139.699 310.057 138.076 312.75 134.623 316.592 c
-129.559 322.239 123.209 321.728 122.56 320.135 c
-closepath
-0.06 0.06 0.06 rgb
-F
-newpath
-123.049 319.938 m
-122.348 318.125 130.015 315.675 131.995 313.927 c
-134.552 311.661 134.767 307.396 137.57 309.092 c
-139.468 310.221 137.857 312.852 134.572 316.51 c
-129.765 321.88 123.698 321.463 123.049 319.938 c
-closepath
-0.08 0.08 0.08 rgb
-F
-newpath
-123.537 319.742 m
-122.841 318.015 130.067 315.69 132.02 313.974 c
-134.514 311.771 134.73 307.682 137.405 309.298 c
-139.238 310.385 137.637 312.953 134.521 316.428 c
-129.97 321.52 124.186 321.197 123.537 319.742 c
-closepath
-0.1 0.1 0.1 rgb
-F
-newpath
-124.025 319.545 m
-123.334 317.905 130.119 315.706 132.045 314.02 c
-134.476 311.88 134.692 307.968 137.239 309.503 c
-139.007 310.549 137.418 313.055 134.47 316.346 c
-130.176 321.161 124.675 320.931 124.025 319.545 c
-closepath
-0.12 0.12 0.12 rgb
-F
-newpath
-124.514 319.348 m
-123.827 317.795 130.171 315.721 132.07 314.066 c
-134.438 311.99 134.654 308.254 137.074 309.709 c
-138.776 310.713 137.198 313.157 134.419 316.264 c
-130.381 320.802 125.164 320.666 124.514 319.348 c
-closepath
-0.14 0.14 0.14 rgb
-F
-newpath
-125.002 319.151 m
-124.321 317.685 130.223 315.737 132.095 314.113 c
-134.4 312.1 134.616 308.54 136.909 309.915 c
-138.545 310.877 136.979 313.259 134.369 316.183 c
-130.587 320.442 125.652 320.4 125.002 319.151 c
-closepath
-0.16 0.16 0.16 rgb
-F
-newpath
-125.491 318.955 m
-124.814 317.575 130.275 315.752 132.12 314.159 c
-134.362 312.21 134.578 308.826 136.743 310.12 c
-138.315 311.041 136.759 313.36 134.318 316.101 c
-130.792 320.083 126.141 320.135 125.491 318.955 c
-closepath
-0.18 0.18 0.18 rgb
-F
-newpath
-125.979 318.758 m
-125.307 317.466 130.327 315.768 132.146 314.206 c
-134.324 312.32 134.54 309.112 136.578 310.326 c
-138.084 311.204 136.539 313.462 134.267 316.019 c
-130.997 319.724 126.63 319.869 125.979 318.758 c
-closepath
-0.2 0.2 0.2 rgb
-F
-newpath
-126.467 318.561 m
-125.8 317.356 130.379 315.783 132.171 314.253 c
-134.287 312.43 134.502 309.397 136.413 310.532 c
-137.853 311.368 136.32 313.564 134.216 315.937 c
-131.203 319.364 127.118 319.603 126.467 318.561 c
-closepath
-0.22 0.22 0.22 rgb
-F
-newpath
-126.956 318.365 m
-126.293 317.246 130.431 315.798 132.196 314.299 c
-134.249 312.54 134.464 309.683 136.247 310.737 c
-137.623 311.532 136.1 313.665 134.165 315.855 c
-131.408 319.005 127.607 319.338 126.956 318.365 c
-closepath
-0.24 0.24 0.24 rgb
-F
-newpath
-127.444 318.168 m
-126.787 317.136 130.483 315.814 132.221 314.345 c
-134.211 312.65 134.426 309.969 136.082 310.943 c
-137.392 311.696 135.881 313.767 134.115 315.774 c
-131.614 318.645 128.095 319.072 127.444 318.168 c
-closepath
-0.26 0.26 0.26 rgb
-F
-newpath
-127.933 317.971 m
-127.28 317.026 130.535 315.829 132.246 314.392 c
-134.173 312.76 134.388 310.255 135.917 311.149 c
-137.161 311.86 135.661 313.869 134.064 315.692 c
-131.819 318.286 128.584 318.807 127.933 317.971 c
-closepath
-0.28 0.28 0.28 rgb
-F
-newpath
-128.421 317.774 m
-127.773 316.916 130.587 315.845 132.271 314.438 c
-134.135 312.87 134.35 310.541 135.751 311.354 c
-136.93 312.024 135.442 313.971 134.013 315.61 c
-132.025 317.927 129.073 318.541 128.421 317.774 c
-closepath
-0.3 0.3 0.3 rgb
-F
-newpath
-128.909 317.578 m
-128.266 316.806 130.639 315.86 132.296 314.485 c
-134.097 312.979 134.313 310.827 135.586 311.56 c
-136.7 312.188 135.222 314.072 133.962 315.528 c
-132.23 317.567 129.561 318.275 128.909 317.578 c
-closepath
-0.32 0.32 0.32 rgb
-F
-newpath
-129.398 317.381 m
-128.759 316.696 130.691 315.876 132.321 314.531 c
-134.06 313.089 134.275 311.112 135.421 311.766 c
-136.469 312.352 135.003 314.174 133.911 315.446 c
-132.436 317.208 130.05 318.01 129.398 317.381 c
-closepath
-0.34 0.34 0.34 rgb
-F
-newpath
-129.886 317.184 m
-129.253 316.586 130.743 315.891 132.346 314.578 c
-134.022 313.199 134.237 311.398 135.256 311.972 c
-136.238 312.516 134.783 314.276 133.861 315.365 c
-132.641 316.849 130.539 317.744 129.886 317.184 c
-closepath
-0.36 0.36 0.36 rgb
-F
-newpath
-130.375 316.988 m
-129.746 316.476 130.795 315.907 132.371 314.624 c
-133.984 313.309 134.199 311.684 135.09 312.177 c
-136.008 312.68 134.564 314.377 133.81 315.283 c
-132.847 316.489 131.027 317.479 130.375 316.988 c
-closepath
-0.38 0.38 0.38 rgb
-F
-newpath
-130.863 316.791 m
-130.239 316.366 130.847 315.922 132.396 314.671 c
-133.946 313.419 134.161 311.97 134.925 312.383 c
-135.777 312.844 134.344 314.479 133.759 315.201 c
-133.052 316.13 131.516 317.213 130.863 316.791 c
-closepath
-0.4 0.4 0.4 rgb
-F
-newpath
-171.063 321.517 m
-170.991 320.437 174.015 319.789 175.959 319.069 c
-177.903 318.421 181.719 315.829 183.519 313.813 c
-185.319 311.869 189.207 306.109 190.071 307.621 c
-190.935 308.989 188.055 312.949 187.263 314.605 c
-186.471 316.261 184.023 319.861 180.135 321.085 c
-176.751 322.093 171.135 322.381 171.063 321.517 c
-closepath
-0 0 0 rgb
-F
-newpath
-171.372 321.44 m
-171.3 320.39 174.24 319.756 176.13 319.053 c
-178.02 318.42 181.727 315.892 183.475 313.931 c
-185.222 312.038 189.01 306.438 189.851 307.904 c
-190.689 309.232 187.914 313.077 187.111 314.699 c
-186.311 316.321 183.937 319.79 180.16 321 c
-176.879 321.996 171.443 322.281 171.372 321.44 c
-closepath
-0.025 0.025 0.025 rgb
-F
-newpath
-171.681 321.364 m
-171.61 320.343 174.466 319.722 176.301 319.036 c
-178.137 318.419 181.736 315.955 183.432 314.048 c
-185.124 312.206 188.813 306.766 189.63 308.187 c
-190.444 309.474 187.774 313.206 186.96 314.794 c
-186.152 316.381 183.85 319.719 180.184 320.915 c
-177.006 321.899 171.751 322.18 171.681 321.364 c
-closepath
-0.05 0.05 0.05 rgb
-F
-newpath
-171.99 321.287 m
-171.919 320.296 174.691 319.689 176.472 319.02 c
-178.254 318.418 181.744 316.018 183.388 314.166 c
-185.027 312.375 188.616 307.095 189.41 308.469 c
-190.198 309.717 187.633 313.334 186.808 314.888 c
-185.992 316.441 183.764 319.647 180.209 320.83 c
-177.134 321.802 172.059 322.079 171.99 321.287 c
-closepath
-0.075 0.075 0.075 rgb
-F
-newpath
-172.299 321.21 m
-172.229 320.249 174.917 319.656 176.643 319.004 c
-178.37 318.416 181.753 316.082 183.344 314.284 c
-184.929 312.544 188.419 307.424 189.189 308.752 c
-189.953 309.959 187.493 313.463 186.656 314.982 c
-185.833 316.501 183.678 319.576 180.233 320.745 c
-177.262 321.704 172.367 321.979 172.299 321.21 c
-closepath
-0.1 0.1 0.1 rgb
-F
-newpath
-172.607 321.133 m
-172.538 320.202 175.143 319.622 176.814 318.988 c
-178.487 318.415 181.761 316.145 183.301 314.401 c
-184.832 312.712 188.222 307.752 188.969 309.035 c
-189.707 310.202 187.352 313.591 186.505 315.077 c
-185.673 316.561 183.591 319.505 180.258 320.66 c
-177.389 321.607 172.675 321.879 172.607 321.133 c
-closepath
-0.125 0.125 0.125 rgb
-F
-newpath
-172.916 321.057 m
-172.847 320.155 175.368 319.589 176.986 318.971 c
-178.604 318.414 181.769 316.208 183.257 314.519 c
-184.735 312.881 188.025 308.081 188.748 309.318 c
-189.461 310.445 187.212 313.72 186.353 315.171 c
-185.513 316.622 183.505 319.434 180.282 320.575 c
-177.517 321.51 172.984 321.778 172.916 321.057 c
-closepath
-0.15 0.15 0.15 rgb
-F
-newpath
-173.225 320.98 m
-173.157 320.108 175.593 319.556 177.157 318.955 c
-178.721 318.413 181.778 316.271 183.213 314.637 c
-184.637 313.05 187.828 308.41 188.528 309.601 c
-189.216 310.687 187.071 313.848 186.201 315.265 c
-185.354 316.682 183.419 319.362 180.307 320.49 c
-177.645 321.413 173.292 321.678 173.225 320.98 c
-closepath
-0.175 0.175 0.175 rgb
-F
-newpath
-173.534 320.903 m
-173.466 320.061 175.819 319.522 177.328 318.939 c
-178.838 318.412 181.786 316.334 183.169 314.754 c
-184.54 313.218 187.631 308.738 188.307 309.883 c
-188.97 310.93 186.931 313.977 186.05 315.36 c
-185.194 316.742 183.332 319.291 180.331 320.405 c
-177.772 321.316 173.6 321.577 173.534 320.903 c
-closepath
-0.2 0.2 0.2 rgb
-F
-newpath
-173.843 320.827 m
-173.776 320.014 176.044 319.489 177.499 318.923 c
-178.955 318.411 181.795 316.397 183.126 314.872 c
-184.442 313.387 187.434 309.067 188.087 310.166 c
-188.725 311.172 186.79 314.105 185.898 315.454 c
-185.035 316.802 183.246 319.22 180.356 320.32 c
-177.9 321.219 173.908 321.477 173.843 320.827 c
-closepath
-0.225 0.225 0.225 rgb
-F
-newpath
-174.152 320.75 m
-174.085 319.967 176.27 319.456 177.67 318.906 c
-179.072 318.409 181.803 316.461 183.082 314.99 c
-184.345 313.555 187.237 309.396 187.867 310.449 c
-188.479 311.415 186.65 314.234 185.746 315.549 c
-184.875 316.862 183.16 319.148 180.38 320.235 c
-178.027 321.121 174.216 321.376 174.152 320.75 c
-closepath
-0.25 0.25 0.25 rgb
-F
-newpath
-174.461 320.673 m
-174.394 319.921 176.495 319.422 177.841 318.89 c
-179.188 318.408 181.811 316.524 183.038 315.107 c
-184.248 313.724 187.04 309.724 187.646 310.732 c
-188.233 311.658 186.509 314.362 185.595 315.643 c
-184.715 316.922 183.073 319.077 180.405 320.15 c
-178.155 321.024 174.524 321.276 174.461 320.673 c
-closepath
-0.275 0.275 0.275 rgb
-F
-newpath
-174.77 320.597 m
-174.704 319.874 176.721 319.389 178.012 318.874 c
-179.305 318.407 181.82 316.587 182.995 315.225 c
-184.15 313.893 186.843 310.053 187.426 311.015 c
-187.988 311.9 186.369 314.49 185.443 315.737 c
-184.556 316.982 182.987 319.006 180.43 320.065 c
-178.283 320.927 174.832 321.175 174.77 320.597 c
-closepath
-0.3 0.3 0.3 rgb
-F
-newpath
-175.079 320.52 m
-175.013 319.827 176.947 319.355 178.183 318.858 c
-179.422 318.406 181.828 316.65 182.951 315.342 c
-184.053 314.061 186.646 310.381 187.205 311.297 c
-187.742 312.143 186.229 314.619 185.292 315.832 c
-184.396 317.042 182.9 318.935 180.454 319.98 c
-178.41 320.83 175.14 321.074 175.079 320.52 c
-closepath
-0.325 0.325 0.325 rgb
-F
-newpath
-175.388 320.443 m
-175.323 319.78 177.172 319.322 178.354 318.841 c
-179.539 318.405 181.837 316.713 182.907 315.46 c
-183.955 314.23 186.449 310.71 186.985 311.58 c
-187.497 312.385 186.088 314.747 185.14 315.926 c
-184.237 317.102 182.814 318.863 180.479 319.895 c
-178.538 320.733 175.448 320.974 175.388 320.443 c
-closepath
-0.35 0.35 0.35 rgb
-F
-newpath
-175.697 320.367 m
-175.632 319.733 177.397 319.289 178.525 318.825 c
-179.656 318.404 181.845 316.776 182.863 315.578 c
-183.858 314.399 186.252 311.039 186.764 311.863 c
-187.251 312.628 185.947 314.876 184.988 316.02 c
-184.077 317.163 182.728 318.792 180.503 319.81 c
-178.666 320.636 175.757 320.874 175.697 320.367 c
-closepath
-0.375 0.375 0.375 rgb
-F
-newpath
-176.005 320.29 m
-175.941 319.686 177.623 319.255 178.697 318.809 c
-179.773 318.403 181.853 316.839 182.82 315.695 c
-183.761 314.567 186.055 311.367 186.544 312.146 c
-187.005 312.871 185.807 315.004 184.837 316.115 c
-183.917 317.223 182.641 318.721 180.528 319.725 c
-178.793 320.539 176.065 320.773 176.005 320.29 c
-closepath
-0.4 0.4 0.4 rgb
-F
-newpath
-176.314 320.213 m
-176.251 319.639 177.848 319.222 178.868 318.793 c
-179.889 318.401 181.862 316.903 182.776 315.813 c
-183.663 314.736 185.858 311.696 186.323 312.429 c
-186.76 313.113 185.666 315.133 184.685 316.209 c
-183.758 317.283 182.555 318.65 180.552 319.64 c
-178.921 320.441 176.373 320.673 176.314 320.213 c
-closepath
-0.425 0.425 0.425 rgb
-F
-newpath
-176.623 320.136 m
-176.56 319.592 178.074 319.189 179.039 318.776 c
-180.006 318.4 181.87 316.966 182.732 315.931 c
-183.566 314.905 185.661 312.025 186.103 312.711 c
-186.514 313.356 185.526 315.261 184.533 316.303 c
-183.598 317.343 182.469 318.578 180.577 319.555 c
-179.049 320.344 176.681 320.572 176.623 320.136 c
-closepath
-0.45 0.45 0.45 rgb
-F
-newpath
-176.932 320.06 m
-176.87 319.545 178.299 319.155 179.21 318.76 c
-180.123 318.399 181.879 317.029 182.689 316.048 c
-183.468 315.073 185.464 312.353 185.882 312.994 c
-186.269 313.598 185.385 315.39 184.382 316.398 c
-183.439 317.403 182.382 318.507 180.601 319.47 c
-179.176 320.247 176.989 320.471 176.932 320.06 c
-closepath
-0.475 0.475 0.475 rgb
-F
-newpath
-177.241 319.983 m
-177.179 319.498 178.525 319.122 179.381 318.744 c
-180.24 318.398 181.887 317.092 182.645 316.166 c
-183.371 315.242 185.267 312.682 185.662 313.277 c
-186.023 313.841 185.245 315.518 184.23 316.492 c
-183.279 317.463 182.296 318.436 180.626 319.385 c
-179.304 320.15 177.297 320.371 177.241 319.983 c
-closepath
-0.5 0.5 0.5 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 286.623 35.4611 275.535 27.9011 c
-261.567 18.3251 256.743 14.0771 252.207 9.54113 c
-245.151 2.48513 238.455 0.109134 227.727 0.109134 c
-216.999 0.109134 212.175 2.34113 208.863 5.29313 c
-205.551 8.17313 201.879 15.5171 202.239 26.4611 c
-202.527 37.3331 205.983 47.2691 207.639 64.1891 c
-208.359 71.4611 208.287 80.4611 208.287 88.4531 c
-208.287 98.5331 208.431 107.101 210.591 108.397 c
-214.479 110.845 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.647 110.701 228.159 109.189 c
-229.599 107.749 229.023 104.437 228.519 99.7571 c
-228.087 95.0771 230.319 93.5651 232.551 91.6211 c
-234.783 89.7491 236.799 87.3731 243.855 86.7971 c
-250.911 86.2931 253.503 87.4451 256.815 89.5331 c
-260.127 91.6211 264.807 95.3651 266.535 97.5251 c
-268.191 99.6131 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.6 0.35 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 286.519 35.4971 275.38 28.0451 c
-261.495 18.6743 256.477 14.5055 251.858 10.1423 c
-244.946 3.40313 238.444 1.05953 227.943 1.12433 c
-217.532 1.17113 212.827 3.30593 209.529 6.24353 c
-206.231 9.10913 202.599 16.2083 202.916 26.8211 c
-203.121 37.6715 206.617 47.5031 208.172 64.0991 c
-208.838 71.4791 208.579 80.4035 208.507 88.4747 c
-208.431 98.5439 208.435 107.101 210.591 108.397 c
-214.479 110.841 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.651 110.697 228.159 109.189 c
-229.649 107.699 228.926 104.304 228.364 99.7823 c
-227.734 95.1239 229.822 93.2951 232.159 91.1747 c
-234.499 89.1155 236.648 86.7035 243.693 86.1527 c
-250.925 85.6703 253.708 86.9843 257.056 89.2595 c
-260.357 91.4663 264.829 95.1635 266.567 97.4279 c
-268.209 99.5591 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.62 0.373 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 286.414 35.5331 275.225 28.1891 c
-261.423 19.0235 256.21 14.9339 251.509 10.7435 c
-244.741 4.32113 238.433 2.00993 228.159 2.13953 c
-218.065 2.23313 213.478 4.27073 210.195 7.19393 c
-206.912 10.0451 203.319 16.8995 203.593 27.1811 c
-203.715 38.0099 207.25 47.7371 208.705 64.0091 c
-209.317 71.4971 208.87 80.3459 208.726 88.4963 c
-208.575 98.5547 208.438 107.101 210.591 108.397 c
-214.479 110.838 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.654 110.694 228.159 109.189 c
-229.7 107.648 228.829 104.171 228.209 99.8075 c
-227.381 95.1707 229.325 93.0251 231.766 90.7283 c
-234.214 88.4819 236.497 86.0339 243.531 85.5083 c
-250.94 85.0475 253.913 86.5235 257.297 88.9859 c
-260.588 91.3115 264.85 94.9619 266.6 97.3307 c
-268.227 99.5051 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.64 0.395 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 286.31 35.5691 275.071 28.3331 c
-261.351 19.3727 255.944 15.3623 251.159 11.3447 c
-244.535 5.23913 238.423 2.96033 228.375 3.15473 c
-218.597 3.29513 214.13 5.23553 210.861 8.14433 c
-207.592 10.9811 204.039 17.5907 204.269 27.5411 c
-204.309 38.3483 207.884 47.9711 209.237 63.9191 c
-209.795 71.5151 209.162 80.2883 208.946 88.5179 c
-208.719 98.5655 208.442 107.101 210.591 108.397 c
-214.479 110.834 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.658 110.69 228.159 109.189 c
-229.75 107.598 228.731 104.037 228.055 99.8327 c
-227.029 95.2175 228.829 92.7551 231.374 90.2819 c
-233.93 87.8483 236.345 85.3643 243.369 84.8639 c
-250.954 84.4247 254.119 86.0627 257.539 88.7123 c
-260.818 91.1567 264.872 94.7603 266.632 97.2335 c
-268.245 99.4511 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.66 0.417 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 286.205 35.6051 274.916 28.4771 c
-261.279 19.7219 255.677 15.7907 250.81 11.9459 c
-244.33 6.15712 238.412 3.91073 228.591 4.16993 c
-219.13 4.35713 214.781 6.20032 211.527 9.09472 c
-208.273 11.9171 204.759 18.2819 204.946 27.9011 c
-204.903 38.6867 208.517 48.2051 209.77 63.8291 c
-210.274 71.5331 209.453 80.2307 209.165 88.5395 c
-208.863 98.5763 208.445 107.101 210.591 108.397 c
-214.479 110.831 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.661 110.687 228.159 109.189 c
-229.801 107.547 228.634 103.904 227.9 99.8579 c
-226.676 95.2643 228.332 92.4851 230.981 89.8355 c
-233.645 87.2147 236.194 84.6947 243.207 84.2195 c
-250.969 83.8019 254.324 85.6019 257.78 88.4387 c
-261.049 91.0019 264.893 94.5587 266.665 97.1363 c
-268.263 99.3971 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.68 0.44 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 286.101 35.6411 274.761 28.6211 c
-261.207 20.0711 255.411 16.2191 250.461 12.5471 c
-244.125 7.07512 238.401 4.86113 228.807 5.18513 c
-219.663 5.41913 215.433 7.16512 212.193 10.0451 c
-208.953 12.8531 205.479 18.9731 205.623 28.2611 c
-205.497 39.0251 209.151 48.4391 210.303 63.7391 c
-210.753 71.5511 209.745 80.1731 209.385 88.5611 c
-209.007 98.5871 208.449 107.101 210.591 108.397 c
-214.479 110.827 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.665 110.683 228.159 109.189 c
-229.851 107.497 228.537 103.771 227.745 99.8831 c
-226.323 95.3111 227.835 92.2151 230.589 89.3891 c
-233.361 86.5811 236.043 84.0251 243.045 83.5751 c
-250.983 83.1791 254.529 85.1411 258.021 88.1651 c
-261.279 90.8471 264.915 94.3571 266.697 97.0391 c
-268.281 99.3431 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.7 0.463 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 285.997 35.6771 274.606 28.7651 c
-261.135 20.4203 255.145 16.6475 250.112 13.1483 c
-243.92 7.99312 238.39 5.81152 229.023 6.20032 c
-220.196 6.48112 216.085 8.12992 212.859 10.9955 c
-209.633 13.7891 206.199 19.6643 206.3 28.6211 c
-206.091 39.3635 209.785 48.6731 210.836 63.6491 c
-211.232 71.5691 210.037 80.1155 209.605 88.5827 c
-209.151 98.5979 208.453 107.101 210.591 108.397 c
-214.479 110.823 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.669 110.679 228.159 109.189 c
-229.901 107.447 228.44 103.638 227.59 99.9083 c
-225.97 95.3579 227.338 91.9451 230.197 88.9427 c
-233.077 85.9475 235.892 83.3555 242.883 82.9307 c
-250.997 82.5563 254.734 84.6803 258.262 87.8915 c
-261.509 90.6923 264.937 94.1555 266.729 96.9419 c
-268.299 99.2891 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.72 0.485 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 285.892 35.7131 274.451 28.9091 c
-261.063 20.7695 254.878 17.0759 249.763 13.7495 c
-243.715 8.91112 238.379 6.76192 229.239 7.21552 c
-220.729 7.54312 216.736 9.09472 213.525 11.9459 c
-210.314 14.7251 206.919 20.3555 206.977 28.9811 c
-206.685 39.7019 210.418 48.9071 211.369 63.5591 c
-211.711 71.5871 210.328 80.0579 209.824 88.6043 c
-209.295 98.6087 208.456 107.101 210.591 108.397 c
-214.479 110.82 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.672 110.676 228.159 109.189 c
-229.952 107.396 228.343 103.505 227.435 99.9335 c
-225.617 95.4047 226.841 91.6751 229.804 88.4963 c
-232.792 85.3139 235.741 82.6859 242.721 82.2863 c
-251.012 81.9335 254.939 84.2195 258.503 87.6179 c
-261.74 90.5375 264.958 93.9539 266.762 96.8447 c
-268.317 99.2351 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.74 0.507 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 285.788 35.7491 274.297 29.0531 c
-260.991 21.1187 254.612 17.5043 249.413 14.3507 c
-243.509 9.82912 238.369 7.71232 229.455 8.23072 c
-221.261 8.60512 217.388 10.0595 214.191 12.8963 c
-210.994 15.6611 207.639 21.0467 207.653 29.3411 c
-207.279 40.0403 211.052 49.1411 211.901 63.4691 c
-212.189 71.6051 210.62 80.0003 210.044 88.6259 c
-209.439 98.6195 208.46 107.101 210.591 108.397 c
-214.479 110.816 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.676 110.672 228.159 109.189 c
-230.002 107.346 228.245 103.371 227.281 99.9587 c
-225.265 95.4515 226.345 91.4051 229.412 88.0499 c
-232.508 84.6803 235.589 82.0163 242.559 81.6419 c
-251.026 81.3107 255.145 83.7587 258.745 87.3443 c
-261.97 90.3827 264.98 93.7523 266.794 96.7475 c
-268.335 99.1811 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.76 0.53 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 285.683 35.7851 274.142 29.1971 c
-260.919 21.4679 254.345 17.9327 249.064 14.9519 c
-243.304 10.7471 238.358 8.66272 229.671 9.24592 c
-221.794 9.66712 218.039 11.0243 214.857 13.8467 c
-211.675 16.5971 208.359 21.7379 208.33 29.7011 c
-207.873 40.3787 211.685 49.3751 212.434 63.3791 c
-212.668 71.6231 210.911 79.9427 210.263 88.6475 c
-209.583 98.6303 208.463 107.101 210.591 108.397 c
-214.479 110.813 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.679 110.669 228.159 109.189 c
-230.053 107.295 228.148 103.238 227.126 99.9839 c
-224.912 95.4983 225.848 91.1351 229.019 87.6035 c
-232.223 84.0467 235.438 81.3467 242.397 80.9975 c
-251.041 80.6879 255.35 83.2979 258.986 87.0707 c
-262.201 90.2279 265.001 93.5507 266.827 96.6503 c
-268.353 99.1271 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.78 0.553 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 285.579 35.8211 273.987 29.3411 c
-260.847 21.8171 254.079 18.3611 248.715 15.5531 c
-243.099 11.6651 238.347 9.61312 229.887 10.2611 c
-222.327 10.7291 218.691 11.9891 215.523 14.7971 c
-212.355 17.5331 209.079 22.4291 209.007 30.0611 c
-208.467 40.7171 212.319 49.6091 212.967 63.2891 c
-213.147 71.6411 211.203 79.8851 210.483 88.6691 c
-209.727 98.6411 208.467 107.101 210.591 108.397 c
-214.479 110.809 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.683 110.665 228.159 109.189 c
-230.103 107.245 228.051 103.105 226.971 100.009 c
-224.559 95.5451 225.351 90.8651 228.627 87.1571 c
-231.939 83.4131 235.287 80.6771 242.235 80.3531 c
-251.055 80.0651 255.555 82.8371 259.227 86.7971 c
-262.431 90.0731 265.023 93.3491 266.859 96.5531 c
-268.371 99.0731 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.8 0.575 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 285.475 35.8571 273.832 29.4851 c
-260.775 22.1663 253.813 18.7895 248.366 16.1543 c
-242.894 12.5831 238.336 10.5635 230.103 11.2763 c
-222.86 11.7911 219.343 12.9539 216.189 15.7475 c
-213.035 18.4691 209.799 23.1203 209.684 30.4211 c
-209.061 41.0555 212.953 49.8431 213.5 63.1991 c
-213.626 71.6591 211.495 79.8275 210.703 88.6907 c
-209.871 98.6519 208.471 107.101 210.591 108.397 c
-214.479 110.805 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.687 110.661 228.159 109.189 c
-230.153 107.195 227.954 102.972 226.816 100.034 c
-224.206 95.5919 224.854 90.5951 228.235 86.7107 c
-231.655 82.7795 235.136 80.0075 242.073 79.7087 c
-251.069 79.4423 255.76 82.3763 259.468 86.5235 c
-262.661 89.9183 265.045 93.1475 266.891 96.4559 c
-268.389 99.0191 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.82 0.598 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 285.37 35.8931 273.677 29.6291 c
-260.703 22.5155 253.546 19.2179 248.017 16.7555 c
-242.689 13.5011 238.325 11.5139 230.319 12.2915 c
-223.393 12.8531 219.994 13.9187 216.855 16.6979 c
-213.716 19.4051 210.519 23.8115 210.361 30.7811 c
-209.655 41.3939 213.586 50.0771 214.033 63.1091 c
-214.105 71.6771 211.786 79.7699 210.922 88.7123 c
-210.015 98.6627 208.474 107.101 210.591 108.397 c
-214.479 110.802 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.69 110.658 228.159 109.189 c
-230.204 107.144 227.857 102.839 226.661 100.059 c
-223.853 95.6387 224.357 90.3251 227.842 86.2643 c
-231.37 82.1459 234.985 79.3379 241.911 79.0643 c
-251.084 78.8195 255.965 81.9155 259.709 86.2499 c
-262.892 89.7635 265.066 92.9459 266.924 96.3587 c
-268.407 98.9651 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.84 0.62 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 285.266 35.9291 273.523 29.7731 c
-260.631 22.8647 253.28 19.6463 247.667 17.3567 c
-242.483 14.4191 238.315 12.4643 230.535 13.3067 c
-223.925 13.9151 220.646 14.8835 217.521 17.6483 c
-214.396 20.3411 211.239 24.5027 211.037 31.1411 c
-210.249 41.7323 214.22 50.3111 214.565 63.0191 c
-214.583 71.6951 212.078 79.7123 211.142 88.7339 c
-210.159 98.6735 208.478 107.101 210.591 108.397 c
-214.479 110.798 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.694 110.654 228.159 109.189 c
-230.254 107.094 227.759 102.705 226.507 100.085 c
-223.501 95.6855 223.861 90.0551 227.45 85.8179 c
-231.086 81.5123 234.833 78.6683 241.749 78.4199 c
-251.098 78.1967 256.171 81.4547 259.951 85.9763 c
-263.122 89.6087 265.088 92.7443 266.956 96.2615 c
-268.425 98.9111 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.86 0.642 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 285.161 35.9651 273.368 29.9171 c
-260.559 23.2139 253.013 20.0747 247.318 17.9579 c
-242.278 15.3371 238.304 13.4147 230.751 14.3219 c
-224.458 14.9771 221.297 15.8483 218.187 18.5987 c
-215.077 21.2771 211.959 25.1939 211.714 31.5011 c
-210.843 42.0707 214.853 50.5451 215.098 62.9291 c
-215.062 71.7131 212.369 79.6547 211.361 88.7555 c
-210.303 98.6843 208.481 107.101 210.591 108.397 c
-214.479 110.795 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.697 110.651 228.159 109.189 c
-230.305 107.043 227.662 102.572 226.352 100.11 c
-223.148 95.7323 223.364 89.7851 227.057 85.3715 c
-230.801 80.8787 234.682 77.9987 241.587 77.7755 c
-251.113 77.5739 256.376 80.9939 260.192 85.7027 c
-263.353 89.4539 265.109 92.5427 266.989 96.1643 c
-268.443 98.8571 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.88 0.665 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 285.057 36.0011 273.213 30.0611 c
-260.487 23.5631 252.747 20.5031 246.969 18.5591 c
-242.073 16.2551 238.293 14.3651 230.967 15.3371 c
-224.991 16.0391 221.949 16.8131 218.853 19.5491 c
-215.757 22.2131 212.679 25.8851 212.391 31.8611 c
-211.437 42.4091 215.487 50.7791 215.631 62.8391 c
-215.541 71.7311 212.661 79.5971 211.581 88.7771 c
-210.447 98.6951 208.485 107.101 210.591 108.397 c
-214.479 110.791 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.701 110.647 228.159 109.189 c
-230.355 106.993 227.565 102.439 226.197 100.135 c
-222.795 95.7791 222.867 89.5151 226.665 84.9251 c
-230.517 80.2451 234.531 77.3291 241.425 77.1311 c
-251.127 76.9511 256.581 80.5331 260.433 85.4291 c
-263.583 89.2991 265.131 92.3411 267.021 96.0671 c
-268.461 98.8031 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.9 0.688 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 284.953 36.0371 273.058 30.2051 c
-260.415 23.9123 252.481 20.9315 246.62 19.1603 c
-241.868 17.1731 238.282 15.3155 231.183 16.3523 c
-225.524 17.1011 222.601 17.7779 219.519 20.4995 c
-216.437 23.1491 213.399 26.5763 213.068 32.2211 c
-212.031 42.7475 216.121 51.0131 216.164 62.7491 c
-216.02 71.7491 212.953 79.5395 211.801 88.7987 c
-210.591 98.7059 208.489 107.101 210.591 108.397 c
-214.479 110.787 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.705 110.643 228.159 109.189 c
-230.405 106.943 227.468 102.306 226.042 100.16 c
-222.442 95.8259 222.37 89.2451 226.273 84.4787 c
-230.233 79.6115 234.38 76.6595 241.263 76.4867 c
-251.141 76.3283 256.786 80.0723 260.674 85.1555 c
-263.813 89.1443 265.153 92.1395 267.053 95.9699 c
-268.479 98.7491 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.92 0.71 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 284.848 36.0731 272.903 30.3491 c
-260.343 24.2615 252.214 21.3599 246.271 19.7615 c
-241.663 18.0911 238.271 16.2659 231.399 17.3675 c
-226.057 18.1631 223.252 18.7427 220.185 21.4499 c
-217.118 24.0851 214.119 27.2675 213.745 32.5811 c
-212.625 43.0859 216.754 51.2471 216.697 62.6591 c
-216.499 71.7671 213.244 79.4819 212.02 88.8203 c
-210.735 98.7167 208.492 107.101 210.591 108.397 c
-214.479 110.784 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.708 110.64 228.159 109.189 c
-230.456 106.892 227.371 102.173 225.887 100.185 c
-222.089 95.8727 221.873 88.9751 225.88 84.0323 c
-229.948 78.9779 234.229 75.9899 241.101 75.8423 c
-251.156 75.7055 256.991 79.6115 260.915 84.8819 c
-264.044 88.9895 265.174 91.9379 267.086 95.8727 c
-268.497 98.6951 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.94 0.733 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 284.744 36.1091 272.749 30.4931 c
-260.271 24.6107 251.948 21.7883 245.921 20.3627 c
-241.457 19.0091 238.261 17.2163 231.615 18.3827 c
-226.589 19.2251 223.904 19.7075 220.851 22.4003 c
-217.798 25.0211 214.839 27.9587 214.421 32.9411 c
-213.219 43.4243 217.388 51.4811 217.229 62.5691 c
-216.977 71.7851 213.536 79.4243 212.24 88.8419 c
-210.879 98.7275 208.496 107.101 210.591 108.397 c
-214.479 110.78 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.712 110.636 228.159 109.189 c
-230.506 106.842 227.273 102.039 225.733 100.211 c
-221.737 95.9195 221.377 88.7051 225.488 83.5859 c
-229.664 78.3443 234.077 75.3203 240.939 75.1979 c
-251.17 75.0827 257.197 79.1507 261.157 84.6083 c
-264.274 88.8347 265.196 91.7363 267.118 95.7755 c
-268.515 98.6411 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.96 0.755 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 284.639 36.1451 272.594 30.6371 c
-260.199 24.9599 251.681 22.2167 245.572 20.9639 c
-241.252 19.9271 238.25 18.1667 231.831 19.3979 c
-227.122 20.2871 224.555 20.6723 221.517 23.3507 c
-218.479 25.9571 215.559 28.6499 215.098 33.3011 c
-213.813 43.7627 218.021 51.7151 217.762 62.4791 c
-217.456 71.8031 213.827 79.3667 212.459 88.8635 c
-211.023 98.7383 208.499 107.101 210.591 108.397 c
-214.479 110.777 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.715 110.633 228.159 109.189 c
-230.557 106.791 227.176 101.906 225.578 100.236 c
-221.384 95.9663 220.88 88.4351 225.095 83.1395 c
-229.379 77.7107 233.926 74.6507 240.777 74.5535 c
-251.185 74.4599 257.402 78.6899 261.398 84.3347 c
-264.505 88.6799 265.217 91.5347 267.151 95.6783 c
-268.533 98.5871 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-0.98 0.778 0 rgb
-F
-newpath
-281.223 104.581 m
-285.687 98.1011 281.079 89.6771 284.319 84.4931 c
-289.647 75.9971 300.375 67.4291 304.479 65.0531 c
-307.431 63.2531 311.607 61.5251 311.463 56.2691 c
-311.247 50.2931 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 284.535 36.1811 272.439 30.7811 c
-260.127 25.3091 251.415 22.6451 245.223 21.5651 c
-241.047 20.8451 238.239 19.1171 232.047 20.4131 c
-227.655 21.3491 225.207 21.6371 222.183 24.3011 c
-219.159 26.8931 216.279 29.3411 215.775 33.6611 c
-214.407 44.1011 218.655 51.9491 218.295 62.3891 c
-217.935 71.8211 214.119 79.3091 212.679 88.8851 c
-211.167 98.7491 208.503 107.101 210.591 108.397 c
-214.479 110.773 215.343 110.989 219.951 110.989 c
-224.559 110.989 226.719 110.629 228.159 109.189 c
-230.607 106.741 227.079 101.773 225.423 100.261 c
-221.031 96.0131 220.383 88.1651 224.703 82.6931 c
-229.095 77.0771 233.775 73.9811 240.615 73.9091 c
-251.199 73.8371 257.607 78.2291 261.639 84.0611 c
-264.735 88.5251 265.239 91.3331 267.183 95.5811 c
-268.551 98.5331 272.295 106.813 273.087 106.813 c
-273.807 106.813 278.559 108.469 281.223 104.581 c
-closepath
-1 0.8 0 rgb
-F
-newpath
-213.856 91.3482 m
-213.147 91.6058 209.925 106.556 211.665 107.587 c
-215.016 109.584 215.918 109.907 220.042 109.907 c
-224.166 109.907 226.099 109.584 227.388 108.296 c
-229.514 106.169 226.228 101.594 224.939 100.305 c
-221.202 96.6322 214.565 91.0902 213.856 91.3482 c
-closepath
-F
-newpath
-214.085 91.825 m
-213.315 92.1503 209.983 106.543 211.717 107.568 c
-215.061 109.558 215.995 109.778 220.039 109.778 c
-224.163 109.778 226.015 109.51 227.32 108.177 c
-229.427 106.04 226.202 101.604 224.923 100.324 c
-221.196 96.6612 214.842 91.5123 214.085 91.825 c
-closepath
-1 0.801 0.01 rgb
-F
-newpath
-214.314 92.3019 m
-213.482 92.6948 210.041 106.53 211.768 107.548 c
-215.106 109.533 216.073 109.649 220.036 109.649 c
-224.16 109.649 225.932 109.436 227.253 108.057 c
-229.34 105.911 226.176 101.613 224.907 100.344 c
-221.189 96.6902 215.119 91.9344 214.314 92.3019 c
-closepath
-1 0.802 0.02 rgb
-F
-newpath
-214.542 92.7787 m
-213.65 93.2393 210.099 106.517 211.82 107.529 c
-215.151 109.507 216.15 109.52 220.032 109.52 c
-224.156 109.52 225.848 109.362 227.185 107.938 c
-229.253 105.782 226.151 101.623 224.891 100.363 c
-221.183 96.7192 215.396 92.3564 214.542 92.7787 c
-closepath
-1 0.803 0.03 rgb
-F
-newpath
-214.771 93.2556 m
-213.817 93.7838 210.157 106.504 211.871 107.51 c
-215.196 109.481 216.227 109.391 220.029 109.391 c
-224.153 109.391 225.764 109.288 227.117 107.819 c
-229.166 105.654 226.125 101.633 224.875 100.382 c
-221.176 96.7481 215.673 92.7785 214.771 93.2556 c
-closepath
-1 0.804 0.04 rgb
-F
-newpath
-215 93.7324 m
-213.985 94.3283 210.215 106.492 211.923 107.49 c
-215.242 109.455 216.305 109.262 220.026 109.262 c
-224.15 109.262 225.68 109.214 227.05 107.7 c
-229.079 105.525 226.099 101.642 224.858 100.402 c
-221.17 96.7771 215.95 93.2006 215 93.7324 c
-closepath
-1 0.805 0.05 rgb
-F
-newpath
-215.229 94.2092 m
-214.152 94.8729 210.273 106.479 211.974 107.471 c
-215.287 109.429 216.382 109.134 220.023 109.134 c
-224.147 109.134 225.596 109.139 226.982 107.58 c
-228.992 105.396 226.074 101.652 224.842 100.421 c
-221.163 96.8061 216.227 93.6227 215.229 94.2092 c
-closepath
-1 0.806 0.06 rgb
-F
-newpath
-215.457 94.6861 m
-214.32 95.4174 210.331 106.466 212.026 107.452 c
-215.332 109.404 216.459 109.005 220.02 109.005 c
-224.144 109.005 225.513 109.065 226.914 107.461 c
-228.905 105.267 226.048 101.662 224.826 100.44 c
-221.157 96.8351 216.504 94.0448 215.457 94.6861 c
-closepath
-1 0.807 0.07 rgb
-F
-newpath
-215.686 95.1629 m
-214.487 95.9619 210.389 106.453 212.077 107.432 c
-215.377 109.378 216.536 108.876 220.016 108.876 c
-224.14 108.876 225.429 108.991 226.847 107.342 c
-228.818 105.138 226.022 101.671 224.81 100.46 c
-221.15 96.8641 216.781 94.4668 215.686 95.1629 c
-closepath
-1 0.808 0.08 rgb
-F
-newpath
-215.915 95.6398 m
-214.655 96.5064 210.447 106.44 212.129 107.413 c
-215.422 109.352 216.614 108.747 220.013 108.747 c
-224.137 108.747 225.345 108.917 226.779 107.223 c
-228.731 105.009 225.996 101.681 224.794 100.479 c
-221.144 96.8931 217.058 94.8889 215.915 95.6398 c
-closepath
-1 0.809 0.09 rgb
-F
-newpath
-216.143 96.1166 m
-214.823 97.0509 210.505 106.427 212.18 107.393 c
-215.467 109.326 216.691 108.618 220.01 108.618 c
-224.134 108.618 225.262 108.843 226.712 107.104 c
-228.645 104.881 225.97 101.691 224.778 100.499 c
-221.137 96.9221 217.336 95.311 216.143 96.1166 c
-closepath
-1 0.81 0.1 rgb
-F
-newpath
-216.372 96.5934 m
-214.99 97.5954 210.563 106.414 212.232 107.374 c
-215.512 109.301 216.768 108.489 220.007 108.489 c
-224.131 108.489 225.178 108.769 226.644 106.984 c
-228.558 104.752 225.945 101.7 224.762 100.518 c
-221.131 96.951 217.613 95.7331 216.372 96.5934 c
-closepath
-1 0.811 0.11 rgb
-F
-newpath
-216.601 97.0703 m
-215.158 98.1399 210.621 106.401 212.284 107.355 c
-215.557 109.275 216.846 108.36 220.004 108.36 c
-224.128 108.36 225.094 108.695 226.576 106.865 c
-228.471 104.623 225.919 101.71 224.746 100.537 c
-221.125 96.98 217.89 96.1552 216.601 97.0703 c
-closepath
-1 0.812 0.12 rgb
-F
-newpath
-216.83 97.5471 m
-215.325 98.6844 210.679 106.388 212.335 107.335 c
-215.602 109.249 216.923 108.231 220 108.231 c
-224.124 108.231 225.01 108.621 226.509 106.746 c
-228.384 104.494 225.893 101.719 224.73 100.557 c
-221.118 97.009 218.167 96.5772 216.83 97.5471 c
-closepath
-1 0.813 0.13 rgb
-F
-newpath
-217.059 98.024 m
-215.493 99.2289 210.737 106.375 212.387 107.316 c
-215.647 109.224 217 108.102 219.997 108.102 c
-224.121 108.102 224.926 108.547 226.441 106.627 c
-228.297 104.365 225.867 101.729 224.714 100.576 c
-221.112 97.038 218.444 96.9993 217.059 98.024 c
-closepath
-1 0.814 0.14 rgb
-F
-newpath
-217.287 98.5008 m
-215.66 99.7735 210.795 106.362 212.438 107.297 c
-215.693 109.198 217.077 107.974 219.994 107.974 c
-224.118 107.974 224.843 108.472 226.373 106.507 c
-228.21 104.236 225.842 101.739 224.698 100.595 c
-221.105 97.067 218.721 97.4214 217.287 98.5008 c
-closepath
-1 0.815 0.15 rgb
-F
-newpath
-217.516 98.9776 m
-215.828 100.318 210.853 106.35 212.49 107.277 c
-215.738 109.172 217.155 107.845 219.991 107.845 c
-224.115 107.845 224.759 108.398 226.306 106.388 c
-228.123 104.107 225.816 101.748 224.681 100.615 c
-221.099 97.096 218.998 97.8435 217.516 98.9776 c
-closepath
-1 0.816 0.16 rgb
-F
-newpath
-217.745 99.4545 m
-215.995 100.862 210.911 106.337 212.541 107.258 c
-215.783 109.146 217.232 107.716 219.988 107.716 c
-224.112 107.716 224.675 108.324 226.238 106.269 c
-228.036 103.979 225.79 101.758 224.665 100.634 c
-221.092 97.1249 219.275 98.2656 217.745 99.4545 c
-closepath
-1 0.817 0.17 rgb
-F
-newpath
-217.973 99.9313 m
-216.163 101.407 210.969 106.324 212.593 107.239 c
-215.828 109.12 217.309 107.587 219.984 107.587 c
-224.108 107.587 224.591 108.25 226.17 106.15 c
-227.949 103.85 225.764 101.768 224.649 100.653 c
-221.086 97.1539 219.552 98.6876 217.973 99.9313 c
-closepath
-1 0.818 0.18 rgb
-F
-newpath
-218.202 100.408 m
-216.33 101.951 211.027 106.311 212.644 107.219 c
-215.873 109.095 217.387 107.458 219.981 107.458 c
-224.105 107.458 224.508 108.176 226.103 106.03 c
-227.862 103.721 225.739 101.777 224.633 100.673 c
-221.079 97.1829 219.829 99.1097 218.202 100.408 c
-closepath
-1 0.819 0.19 rgb
-F
-newpath
-218.431 100.885 m
-216.498 102.496 211.085 106.298 212.696 107.2 c
-215.918 109.069 217.464 107.329 219.978 107.329 c
-224.102 107.329 224.424 108.102 226.035 105.911 c
-227.775 103.592 225.713 101.787 224.617 100.692 c
-221.073 97.2119 220.106 99.5318 218.431 100.885 c
-closepath
-1 0.82 0.2 rgb
-F
-newpath
-280.362 103.736 m
-284.104 98.276 280.301 90.9762 283 86.6208 c
-276.191 92.8777 273.062 95.4541 263.676 86.2529 c
-266.253 89.9946 266.805 92.5098 268.4 96.0676 c
-269.504 98.5215 272.755 105.637 273.43 105.637 c
-274.043 105.637 278.154 106.987 280.362 103.736 c
-closepath
-1 0.8 0 rgb
-F
-newpath
-280.323 103.699 m
-283.978 98.3635 280.358 91.0979 282.901 86.9752 c
-276.233 93.0722 273.172 95.6412 263.993 86.6523 c
-266.414 90.1804 267.018 92.7477 268.598 96.2456 c
-269.72 98.7065 272.842 105.546 273.55 105.556 c
-274.177 105.563 278.166 106.873 280.323 103.699 c
-closepath
-1 0.801 0.01 rgb
-F
-newpath
-280.284 103.661 m
-283.852 98.4511 280.415 91.2196 282.801 87.3297 c
-276.274 93.2668 273.282 95.8283 264.309 87.0518 c
-266.575 90.3661 267.232 92.9855 268.797 96.4236 c
-269.937 98.8914 272.929 105.455 273.67 105.475 c
-274.311 105.488 278.177 106.76 280.284 103.661 c
-closepath
-1 0.802 0.02 rgb
-F
-newpath
-280.245 103.623 m
-283.725 98.5387 280.473 91.3414 282.702 87.6841 c
-276.316 93.4613 273.392 96.0153 264.626 87.4512 c
-266.737 90.5519 267.445 93.2234 268.995 96.6016 c
-270.153 99.0764 273.016 105.364 273.79 105.394 c
-274.445 105.414 278.189 106.646 280.245 103.623 c
-closepath
-1 0.803 0.03 rgb
-F
-newpath
-280.206 103.586 m
-283.599 98.6262 280.53 91.4631 282.603 88.0386 c
-276.358 93.6559 273.502 96.2024 264.943 87.8507 c
-266.898 90.7376 267.659 93.4613 269.194 96.7797 c
-270.37 99.2614 273.103 105.273 273.909 105.313 c
-274.579 105.339 278.201 106.533 280.206 103.586 c
-closepath
-1 0.804 0.04 rgb
-F
-newpath
-280.168 103.549 m
-283.473 98.7138 280.587 91.5848 282.503 88.393 c
-276.399 93.8504 273.612 96.3895 265.259 88.2501 c
-267.059 90.9234 267.872 93.6992 269.392 96.9577 c
-270.586 99.4464 273.19 105.182 274.029 105.232 c
-274.714 105.265 278.212 106.419 280.168 103.549 c
-closepath
-1 0.805 0.05 rgb
-F
-newpath
-280.129 103.511 m
-283.346 98.8013 280.645 91.7065 282.404 88.7475 c
-276.441 94.045 273.722 96.5766 265.576 88.6496 c
-267.22 91.1091 268.085 93.937 269.591 97.1357 c
-270.802 99.6313 273.278 105.091 274.149 105.151 c
-274.848 105.191 278.224 106.305 280.129 103.511 c
-closepath
-1 0.806 0.06 rgb
-F
-newpath
-280.09 103.474 m
-283.22 98.8888 280.702 91.8282 282.305 89.1019 c
-276.483 94.2395 273.832 96.7636 265.893 89.049 c
-267.381 91.2949 268.299 94.1749 269.789 97.3137 c
-271.019 99.8163 273.365 105 274.269 105.07 c
-274.982 105.116 278.236 106.192 280.09 103.474 c
-closepath
-1 0.807 0.07 rgb
-F
-newpath
-280.051 103.436 m
-283.094 98.9764 280.759 91.95 282.205 89.4564 c
-276.524 94.4341 273.942 96.9507 266.209 89.4485 c
-267.543 91.4806 268.512 94.4128 269.988 97.4917 c
-271.235 100.001 273.452 104.909 274.389 104.989 c
-275.116 105.042 278.247 106.078 280.051 103.436 c
-closepath
-1 0.808 0.08 rgb
-F
-newpath
-280.012 103.398 m
-282.968 99.0639 280.816 92.0717 282.106 89.8108 c
-276.566 94.6286 274.052 97.1378 266.526 89.8479 c
-267.704 91.6664 268.726 94.6506 270.186 97.6697 c
-271.452 100.186 273.539 104.818 274.509 104.908 c
-275.25 104.967 278.259 105.965 280.012 103.398 c
-closepath
-1 0.809 0.09 rgb
-F
-newpath
-279.973 103.361 m
-282.841 99.1515 280.874 92.1934 282.007 90.1653 c
-276.607 94.8232 274.162 97.3249 266.842 90.2473 c
-267.865 91.8521 268.939 94.8885 270.384 97.8477 c
-271.668 100.371 273.626 104.727 274.628 104.826 c
-275.384 104.893 278.271 105.851 279.973 103.361 c
-closepath
-1 0.81 0.1 rgb
-F
-newpath
-279.934 103.324 m
-282.715 99.2391 280.931 92.3151 281.907 90.5197 c
-276.649 95.0177 274.272 97.5119 267.159 90.6468 c
-268.026 92.0379 269.152 95.1264 270.583 98.0258 c
-271.884 100.556 273.713 104.636 274.748 104.745 c
-275.518 104.819 278.282 105.737 279.934 103.324 c
-closepath
-1 0.811 0.11 rgb
-F
-newpath
-279.895 103.286 m
-282.589 99.3266 280.988 92.4368 281.808 90.8741 c
-276.691 95.2122 274.382 97.699 267.476 91.0462 c
-268.187 92.2237 269.366 95.3642 270.781 98.2038 c
-272.101 100.741 273.8 104.545 274.868 104.664 c
-275.652 104.744 278.294 105.624 279.895 103.286 c
-closepath
-1 0.812 0.12 rgb
-F
-newpath
-279.856 103.248 m
-282.463 99.4142 281.045 92.5586 281.708 91.2286 c
-276.732 95.4068 274.492 97.8861 267.792 91.4457 c
-268.349 92.4094 269.579 95.6021 270.98 98.3818 c
-272.317 100.926 273.887 104.454 274.988 104.583 c
-275.786 104.67 278.305 105.51 279.856 103.248 c
-closepath
-1 0.813 0.13 rgb
-F
-newpath
-279.817 103.211 m
-282.337 99.5017 281.103 92.6803 281.609 91.583 c
-276.774 95.6013 274.602 98.0732 268.109 91.8451 c
-268.51 92.5952 269.793 95.84 271.178 98.5598 c
-272.534 101.111 273.974 104.363 275.108 104.502 c
-275.92 104.595 278.317 105.397 279.817 103.211 c
-closepath
-1 0.814 0.14 rgb
-F
-newpath
-279.779 103.174 m
-282.21 99.5892 281.16 92.802 281.51 91.9375 c
-276.816 95.7959 274.712 98.2602 268.426 92.2446 c
-268.671 92.7809 270.006 96.0779 271.377 98.7378 c
-272.75 101.296 274.062 104.272 275.228 104.421 c
-276.055 104.521 278.329 105.283 279.779 103.174 c
-closepath
-1 0.815 0.15 rgb
-F
-newpath
-279.74 103.136 m
-282.084 99.6768 281.217 92.9237 281.41 92.2919 c
-276.857 95.9904 274.822 98.4473 268.742 92.644 c
-268.832 92.9667 270.219 96.3157 271.575 98.9158 c
-272.966 101.481 274.149 104.181 275.348 104.34 c
-276.189 104.447 278.34 105.169 279.74 103.136 c
-closepath
-1 0.816 0.16 rgb
-F
-newpath
-279.701 103.099 m
-281.958 99.7644 281.274 93.0454 281.311 92.6464 c
-276.899 96.185 274.932 98.6344 269.059 93.0435 c
-268.993 93.1524 270.433 96.5536 271.774 99.0939 c
-273.183 101.666 274.236 104.09 275.467 104.259 c
-276.323 104.372 278.352 105.056 279.701 103.099 c
-closepath
-1 0.817 0.17 rgb
-F
-newpath
-279.662 103.061 m
-281.832 99.8519 281.332 93.1672 281.212 93.0008 c
-276.941 96.3795 275.042 98.8214 269.376 93.4429 c
-269.155 93.3382 270.646 96.7915 271.972 99.2719 c
-273.399 101.851 274.323 103.999 275.587 104.178 c
-276.457 104.298 278.364 104.942 279.662 103.061 c
-closepath
-1 0.818 0.18 rgb
-F
-newpath
-279.623 103.023 m
-281.705 99.9395 281.389 93.2889 281.112 93.3553 c
-276.982 96.5741 275.152 99.0085 269.692 93.8424 c
-269.316 93.5239 270.86 97.0293 272.171 99.4499 c
-273.616 102.036 274.41 103.908 275.707 104.097 c
-276.591 104.223 278.375 104.829 279.623 103.023 c
-closepath
-1 0.819 0.19 rgb
-F
-newpath
-279.584 102.986 m
-281.579 100.027 281.446 93.4106 281.013 93.7097 c
-277.024 96.7686 275.262 99.1956 270.009 94.2418 c
-269.477 93.7097 271.073 97.2672 272.369 99.6279 c
-273.832 102.221 274.497 103.817 275.827 104.016 c
-276.725 104.149 278.387 104.715 279.584 102.986 c
-closepath
-1 0.82 0.2 rgb
-F
-newpath
-283.455 83.6291 m
-289.431 75.7811 300.519 67.3571 304.479 65.0531 c
-307.359 63.3971 311.535 61.4531 311.463 56.2691 c
-311.319 50.3651 308.295 48.7091 306.639 47.0531 c
-303.327 43.7411 284.463 36.1091 272.439 30.7811 c
-260.199 25.3811 251.343 22.5731 245.223 21.5651 c
-241.119 20.9171 238.167 19.1891 232.047 20.4131 c
-227.727 21.2771 225.135 21.7091 222.183 24.3011 c
-219.231 26.8211 216.207 29.4851 215.775 33.6611 c
-214.551 44.0291 219.447 50.5811 224.199 59.5811 c
-228.087 66.7811 235.935 68.2211 240.831 67.5731 c
-258.399 65.1971 257.247 76.2131 262.071 81.0371 c
-266.535 85.5011 279.279 89.1011 283.455 83.6291 c
-closepath
-1 0.8 0 rgb
-F
-newpath
-283.403 83.556 m
-289.365 75.7264 300.427 67.3222 304.378 65.0237 c
-307.251 63.3715 311.417 61.4321 311.345 56.2603 c
-311.202 50.3701 308.185 48.718 306.533 47.0659 c
-303.228 43.7617 284.193 36.0721 272.293 30.9762 c
-260.034 25.8016 251.645 23.1031 245.491 22.0186 c
-241.414 21.3344 238.335 19.6242 232.233 20.8419 c
-227.93 21.697 225.467 22.0731 222.525 24.6521 c
-219.587 27.1628 216.769 29.6146 216.342 33.7705 c
-215.131 44.1108 219.707 50.4278 224.386 59.4204 c
-228.275 66.7956 236.177 67.8548 241.051 67.1981 c
-258.564 64.783 257.257 76.1574 262.069 80.9701 c
-266.523 85.4236 279.237 89.0152 283.403 83.556 c
-closepath
-1 0.801 0.01 rgb
-F
-newpath
-283.351 83.4829 m
-289.299 75.6718 300.335 67.2874 304.277 64.9942 c
-307.143 63.346 311.299 61.4111 311.228 56.2514 c
-311.085 50.3752 308.075 48.727 306.427 47.0787 c
-303.13 43.7823 283.922 36.0352 272.147 31.1713 c
-259.868 26.2221 251.946 23.6332 245.759 22.4721 c
-241.708 21.7517 238.503 20.0592 232.418 21.2706 c
-228.132 22.1168 225.799 22.437 222.868 25.0031 c
-219.944 27.5044 217.332 29.7442 216.909 33.88 c
-215.711 44.1924 219.967 50.2745 224.573 59.2597 c
-228.463 66.8101 236.418 67.4886 241.271 66.823 c
-258.729 64.369 257.266 76.1018 262.068 80.9031 c
-266.511 85.3462 279.195 88.9292 283.351 83.4829 c
-closepath
-1 0.802 0.02 rgb
-F
-newpath
-283.3 83.4099 m
-289.233 75.6171 300.243 67.2525 304.175 64.9648 c
-307.035 63.3204 311.182 61.3901 311.11 56.2426 c
-310.967 50.3802 307.965 48.7359 306.32 47.0915 c
-303.031 43.8029 283.652 35.9982 272.001 31.3665 c
-259.703 26.6427 252.247 24.1632 246.027 22.9256 c
-242.003 22.169 238.67 20.4943 232.604 21.6994 c
-228.335 22.5367 226.131 22.801 223.21 25.3541 c
-220.3 27.8461 217.894 29.8737 217.476 33.9894 c
-216.291 44.2741 220.226 50.1212 224.76 59.099 c
-228.651 66.8246 236.66 67.1223 241.49 66.448 c
-258.894 63.9549 257.276 76.0461 262.066 80.8361 c
-266.499 85.2687 279.153 88.8433 283.3 83.4099 c
-closepath
-1 0.803 0.03 rgb
-F
-newpath
-283.248 83.3368 m
-289.168 75.5625 300.151 67.2176 304.074 64.9353 c
-306.927 63.2948 311.064 61.3691 310.993 56.2338 c
-310.85 50.3852 307.854 48.7448 306.214 47.1044 c
-302.933 43.8235 283.382 35.9613 271.855 31.5616 c
-259.538 27.0632 252.549 24.6933 246.294 23.3791 c
-242.297 22.5863 238.838 20.9294 232.789 22.1281 c
-228.537 22.9566 226.464 23.1649 223.553 25.7052 c
-220.656 28.1877 218.457 30.0033 218.042 34.0989 c
-216.871 44.3558 220.486 49.9679 224.946 58.9383 c
-228.839 66.8392 236.901 66.756 241.71 66.073 c
-259.058 63.5409 257.286 75.9905 262.065 80.7691 c
-266.487 85.1912 279.111 88.7574 283.248 83.3368 c
-closepath
-1 0.804 0.04 rgb
-F
-newpath
-283.196 83.2637 m
-289.102 75.5079 300.06 67.1828 303.973 64.9059 c
-306.819 63.2693 310.946 61.3481 310.875 56.2249 c
-310.733 50.3903 307.744 48.7537 306.108 47.1172 c
-302.835 43.8441 283.111 35.9243 271.709 31.7567 c
-259.372 27.4837 252.85 25.2233 246.562 23.8326 c
-242.592 23.0036 239.006 21.3644 232.975 22.5569 c
-228.74 23.3764 226.796 23.5289 223.896 26.0562 c
-221.012 28.5294 219.019 30.1328 218.609 34.2083 c
-217.451 44.4374 220.746 49.8146 225.133 58.7775 c
-229.027 66.8537 237.143 66.3898 241.93 65.6979 c
-259.223 63.1268 257.296 75.9348 262.063 80.7021 c
-266.474 85.1137 279.069 88.6714 283.196 83.2637 c
-closepath
-1 0.805 0.05 rgb
-F
-newpath
-283.144 83.1907 m
-289.036 75.4532 299.968 67.1479 303.872 64.8764 c
-306.711 63.2437 310.828 61.3271 310.757 56.2161 c
-310.616 50.3953 307.634 48.7627 306.001 47.13 c
-302.736 43.8647 282.841 35.8873 271.563 31.9519 c
-259.207 27.9042 253.152 25.7534 246.83 24.2861 c
-242.887 23.4208 239.174 21.7995 233.16 22.9856 c
-228.942 23.7963 227.128 23.8928 224.238 26.4072 c
-221.369 28.8711 219.581 30.2624 219.176 34.3178 c
-218.031 44.5191 221.006 49.6613 225.32 58.6168 c
-229.215 66.8682 237.385 66.0235 242.15 65.3229 c
-259.388 62.7128 257.305 75.8792 262.061 80.6351 c
-266.462 85.0363 279.027 88.5855 283.144 83.1907 c
-closepath
-1 0.806 0.06 rgb
-F
-newpath
-283.092 83.1176 m
-288.97 75.3986 299.876 67.113 303.771 64.847 c
-306.603 63.2181 310.711 61.3061 310.64 56.2073 c
-310.498 50.4003 307.524 48.7716 305.895 47.1428 c
-302.637 43.8853 282.571 35.8504 271.417 32.147 c
-259.042 28.3247 253.453 26.2834 247.098 24.7396 c
-243.181 23.8381 239.341 22.2346 233.346 23.4144 c
-229.145 24.2162 227.46 24.2568 224.581 26.7582 c
-221.725 29.2127 220.144 30.3919 219.743 34.4272 c
-218.611 44.6008 221.265 49.508 225.507 58.4561 c
-229.403 66.8827 237.626 65.6572 242.37 64.9479 c
-259.553 62.2987 257.315 75.8235 262.06 80.5681 c
-266.45 84.9588 278.985 88.4996 283.092 83.1176 c
-closepath
-1 0.807 0.07 rgb
-F
-newpath
-283.041 83.0445 m
-288.904 75.3439 299.784 67.0782 303.669 64.8175 c
-306.495 63.1926 310.593 61.2851 310.522 56.1985 c
-310.381 50.4054 307.414 48.7805 305.789 47.1556 c
-302.539 43.9059 282.3 35.8134 271.271 32.3421 c
-258.876 28.7453 253.755 26.8135 247.366 25.1931 c
-243.476 24.2554 239.509 22.6696 233.531 23.8431 c
-229.347 24.6361 227.792 24.6207 224.923 27.1092 c
-222.081 29.5544 220.706 30.5215 220.31 34.5367 c
-219.191 44.6825 221.525 49.3547 225.694 58.2954 c
-229.591 66.8972 237.868 65.291 242.589 64.5728 c
-259.718 61.8847 257.325 75.7679 262.058 80.5011 c
-266.438 84.8813 278.943 88.4137 283.041 83.0445 c
-closepath
-1 0.808 0.08 rgb
-F
-newpath
-282.989 82.9714 m
-288.838 75.2893 299.692 67.0433 303.568 64.7881 c
-306.387 63.167 310.475 61.2641 310.405 56.1896 c
-310.264 50.4104 307.304 48.7895 305.683 47.1684 c
-302.44 43.9265 282.03 35.7765 271.125 32.5372 c
-258.711 29.1658 254.056 27.3435 247.634 25.6466 c
-243.77 24.6727 239.677 23.1047 233.717 24.2719 c
-229.55 25.0559 228.124 24.9847 225.266 27.4602 c
-222.438 29.896 221.269 30.651 220.877 34.6461 c
-219.771 44.7641 221.785 49.2014 225.881 58.1347 c
-229.779 66.9117 238.109 64.9247 242.809 64.1978 c
-259.883 61.4706 257.334 75.7122 262.057 80.4341 c
-266.426 84.8039 278.901 88.3277 282.989 82.9714 c
-closepath
-1 0.809 0.09 rgb
-F
-newpath
-282.937 82.8983 m
-288.773 75.2346 299.6 67.0085 303.467 64.7586 c
-306.28 63.1414 310.357 61.243 310.287 56.1808 c
-310.146 50.4155 307.194 48.7984 305.577 47.1813 c
-302.342 43.9471 281.76 35.7395 270.979 32.7323 c
-258.546 29.5863 254.358 27.8736 247.902 26.1001 c
-244.065 25.09 239.845 23.5397 233.902 24.7006 c
-229.753 25.4758 228.456 25.3486 225.608 27.8112 c
-222.794 30.2377 221.831 30.7806 221.443 34.7555 c
-220.351 44.8458 222.044 49.0481 226.068 57.974 c
-229.967 66.9263 238.351 64.5584 243.029 63.8227 c
-260.047 61.0565 257.344 75.6565 262.055 80.3671 c
-266.414 84.7264 278.859 88.2418 282.937 82.8983 c
-closepath
-1 0.81 0.1 rgb
-F
-newpath
-282.885 82.8253 m
-288.707 75.1799 299.508 66.9736 303.366 64.7291 c
-306.172 63.1159 310.24 61.222 310.169 56.172 c
-310.029 50.4205 307.083 48.8073 305.47 47.1941 c
-302.243 43.9676 281.489 35.7025 270.832 32.9275 c
-258.38 30.0068 254.66 28.4036 248.169 26.5536 c
-244.36 25.5073 240.012 23.9748 234.088 25.1294 c
-229.955 25.8957 228.789 25.7126 225.951 28.1623 c
-223.15 30.5794 222.393 30.9101 222.01 34.865 c
-220.931 44.9275 222.304 48.8949 226.254 57.8133 c
-230.155 66.9408 238.593 64.1922 243.249 63.4477 c
-260.212 60.6425 257.354 75.6009 262.053 80.3002 c
-266.402 84.6489 278.817 88.1559 282.885 82.8253 c
-closepath
-1 0.811 0.11 rgb
-F
-newpath
-282.833 82.7522 m
-288.641 75.1253 299.416 66.9387 303.265 64.6997 c
-306.064 63.0903 310.122 61.201 310.052 56.1631 c
-309.912 50.4255 306.973 48.8163 305.364 47.2069 c
-302.145 43.9882 281.219 35.6656 270.686 33.1226 c
-258.215 30.4273 254.961 28.9337 248.437 27.0071 c
-244.654 25.9246 240.18 24.4099 234.274 25.5582 c
-230.158 26.3155 229.121 26.0766 226.293 28.5133 c
-223.507 30.921 222.956 31.0396 222.577 34.9744 c
-221.511 45.0091 222.564 48.7416 226.441 57.6526 c
-230.343 66.9553 238.834 63.8259 243.469 63.0727 c
-260.377 60.2284 257.363 75.5452 262.052 80.2332 c
-266.39 84.5715 278.775 88.0699 282.833 82.7522 c
-closepath
-1 0.812 0.12 rgb
-F
-newpath
-282.782 82.6791 m
-288.575 75.0706 299.324 66.9039 303.163 64.6702 c
-305.956 63.0648 310.004 61.18 309.934 56.1543 c
-309.795 50.4306 306.863 48.8252 305.258 47.2197 c
-302.047 44.0088 280.948 35.6286 270.54 33.3177 c
-258.049 30.8479 255.262 29.4637 248.705 27.4606 c
-244.949 26.3419 240.348 24.8449 234.459 25.9869 c
-230.36 26.7354 229.453 26.4405 226.635 28.8643 c
-223.863 31.2627 223.518 31.1692 223.144 35.0839 c
-222.091 45.0908 222.824 48.5883 226.628 57.4919 c
-230.531 66.9698 239.076 63.4597 243.688 62.6976 c
-260.542 59.8144 257.373 75.4896 262.05 80.1662 c
-266.378 84.494 278.733 87.984 282.782 82.6791 c
-closepath
-1 0.813 0.13 rgb
-F
-newpath
-282.73 82.606 m
-288.509 75.016 299.232 66.869 303.062 64.6408 c
-305.848 63.0392 309.887 61.159 309.817 56.1455 c
-309.677 50.4356 306.753 48.8341 305.152 47.2325 c
-301.948 44.0294 280.678 35.5917 270.394 33.5129 c
-257.884 31.2684 255.564 29.9938 248.973 27.9141 c
-245.243 26.7592 240.516 25.28 234.645 26.4157 c
-230.563 27.1553 229.785 26.8045 226.978 29.2153 c
-224.219 31.6043 224.081 31.2987 223.711 35.1933 c
-222.671 45.1725 223.083 48.435 226.815 57.3312 c
-230.719 66.9843 239.317 63.0934 243.908 62.3226 c
-260.707 59.4003 257.383 75.4339 262.049 80.0992 c
-266.366 84.4165 278.691 87.8981 282.73 82.606 c
-closepath
-1 0.814 0.14 rgb
-F
-newpath
-282.678 82.533 m
-288.443 74.9613 299.141 66.8341 302.961 64.6114 c
-305.74 63.0136 309.769 61.138 309.699 56.1367 c
-309.56 50.4406 306.643 48.843 305.045 47.2453 c
-301.849 44.05 280.408 35.5547 270.248 33.708 c
-257.719 31.6889 255.865 30.5238 249.241 28.3676 c
-245.538 27.1764 240.683 25.7151 234.83 26.8444 c
-230.765 27.5751 230.117 27.1684 227.32 29.5663 c
-224.576 31.946 224.643 31.4283 224.278 35.3028 c
-223.251 45.2542 223.343 48.2817 227.002 57.1705 c
-230.907 66.9988 239.559 62.7271 244.128 61.9476 c
-260.872 58.9863 257.393 75.3783 262.047 80.0322 c
-266.354 84.3391 278.649 87.8121 282.678 82.533 c
-closepath
-1 0.815 0.15 rgb
-F
-newpath
-282.626 82.4599 m
-288.377 74.9067 299.049 66.7993 302.86 64.5819 c
-305.632 62.9881 309.651 61.117 309.581 56.1278 c
-309.443 50.4457 306.533 48.852 304.939 47.2581 c
-301.751 44.0706 280.137 35.5177 270.102 33.9031 c
-257.553 32.1094 256.167 31.0539 249.509 28.8211 c
-245.833 27.5937 240.851 26.1501 235.016 27.2732 c
-230.968 27.995 230.449 27.5324 227.663 29.9173 c
-224.932 32.2877 225.205 31.5578 224.845 35.4122 c
-223.831 45.3358 223.603 48.1284 227.189 57.0097 c
-231.095 67.0133 239.801 62.3609 244.348 61.5725 c
-261.037 58.5722 257.402 75.3226 262.045 79.9652 c
-266.341 84.2616 278.607 87.7262 282.626 82.4599 c
-closepath
-1 0.816 0.16 rgb
-F
-newpath
-282.574 82.3868 m
-288.312 74.8521 298.957 66.7644 302.759 64.5525 c
-305.524 62.9625 309.533 61.096 309.464 56.119 c
-309.326 50.4507 306.422 48.8609 304.833 47.271 c
-301.652 44.0912 279.867 35.4808 269.956 34.0982 c
-257.388 32.5299 256.468 31.5839 249.776 29.2746 c
-246.127 28.011 241.019 26.5852 235.201 27.7019 c
-231.17 28.4149 230.782 27.8963 228.006 30.2684 c
-225.288 32.6293 225.768 31.6874 225.411 35.5217 c
-224.411 45.4175 223.863 47.9751 227.375 56.849 c
-231.283 67.0279 240.042 61.9946 244.568 61.1975 c
-261.201 58.1582 257.412 75.267 262.044 79.8982 c
-266.329 84.1841 278.565 87.6403 282.574 82.3868 c
-closepath
-1 0.817 0.17 rgb
-F
-newpath
-282.523 82.3138 m
-288.246 74.7974 298.865 66.7295 302.657 64.523 c
-305.416 62.9369 309.415 61.075 309.346 56.1102 c
-309.208 50.4557 306.312 48.8698 304.727 47.2838 c
-301.554 44.1118 279.597 35.4438 269.81 34.2934 c
-257.223 32.9505 256.77 32.114 250.044 29.7281 c
-246.422 28.4283 241.187 27.0203 235.387 28.1307 c
-231.373 28.8348 231.114 28.2603 228.348 30.6194 c
-225.644 32.971 226.33 31.8169 225.978 35.6311 c
-224.991 45.4992 224.122 47.8218 227.562 56.6883 c
-231.471 67.0424 240.284 61.6283 244.787 60.8225 c
-261.366 57.7441 257.422 75.2113 262.042 79.8312 c
-266.317 84.1066 278.523 87.5544 282.523 82.3138 c
-closepath
-1 0.818 0.18 rgb
-F
-newpath
-282.471 82.2407 m
-288.18 74.7428 298.773 66.6947 302.556 64.4936 c
-305.308 62.9114 309.298 61.054 309.229 56.1013 c
-309.091 50.4608 306.202 48.8788 304.62 47.2966 c
-301.456 44.1324 279.326 35.4069 269.664 34.4885 c
-257.057 33.371 257.071 32.6441 250.312 30.1816 c
-246.716 28.8456 241.354 27.4553 235.572 28.5594 c
-231.575 29.2546 231.446 28.6242 228.691 30.9704 c
-226.001 33.3126 226.893 31.9465 226.545 35.7406 c
-225.571 45.5808 224.382 47.6685 227.749 56.5276 c
-231.659 67.0569 240.525 61.2621 245.007 60.4474 c
-261.531 57.3301 257.431 75.1557 262.041 79.7642 c
-266.305 84.0292 278.481 87.4684 282.471 82.2407 c
-closepath
-1 0.819 0.19 rgb
-F
-newpath
-282.419 82.1676 m
-288.114 74.6881 298.681 66.6598 302.455 64.4641 c
-305.2 62.8858 309.18 61.033 309.111 56.0925 c
-308.974 50.4658 306.092 48.8877 304.514 47.3094 c
-301.357 44.153 279.056 35.3699 269.518 34.6836 c
-256.892 33.7915 257.373 33.1741 250.58 30.6351 c
-247.011 29.2629 241.522 27.8904 235.758 28.9882 c
-231.778 29.6745 231.778 28.9882 229.033 31.3214 c
-226.357 33.6543 227.455 32.076 227.112 35.85 c
-226.151 45.6625 224.642 47.5152 227.936 56.3669 c
-231.847 67.0714 240.767 60.8958 245.227 60.0724 c
-261.696 56.916 257.441 75.1 262.039 79.6972 c
-266.293 83.9517 278.439 87.3825 282.419 82.1676 c
-closepath
-1 0.82 0.2 rgb
-F
-newpath
-30.0869 93.4931 m
-23.6069 88.8131 7.19093 89.2451 3.01493 83.7731 c
--1.08907 78.3011 3.15893 70.3811 3.08693 55.6931 c
-3.08693 49.4291 2.00693 44.6771 1.28693 40.8611 c
-0.278929 36.0371 -0.369071 32.6531 1.64693 29.1971 c
-5.31893 23.0771 11.2229 21.5651 44.9909 14.5091 c
-63.0629 10.7651 80.1269 1.04513 91.5749 0.109134 c
-103.023 -0.754866 105.471 3.06113 112.455 9.25313 c
-119.367 15.4451 121.599 13.5011 121.383 27.1091 c
-121.167 40.6451 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 36.5669 98.1731 30.0869 93.4931 c
-closepath
-0.6 0.35 0 rgb
-F
-newpath
-30.1913 93.2051 m
-23.7941 88.5035 7.71653 89.4179 3.13013 83.6939 c
--1.02427 78.2795 3.35693 70.4171 3.22733 55.7399 c
-3.20213 49.5083 2.07533 44.8571 1.29053 40.8611 c
-0.253729 35.9903 -0.387071 32.6603 1.63973 29.2439 c
-5.42693 23.0807 11.3345 22.1195 45.0953 15.0743 c
-63.1565 11.3375 79.6373 1.76873 91.4381 0.962332 c
-102.623 0.170332 105.003 3.79193 111.901 9.92273 c
-118.798 16.1183 120.926 14.1995 120.76 27.3287 c
-120.685 40.8503 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 36.6209 97.9427 30.1913 93.2051 c
-closepath
-0.62 0.373 0 rgb
-F
-newpath
-30.2957 92.9171 m
-23.9813 88.1939 8.24213 89.5907 3.24533 83.6147 c
--0.95947 78.2579 3.55493 70.4531 3.36773 55.7867 c
-3.31733 49.5875 2.14373 45.0371 1.29413 40.8611 c
-0.228529 35.9435 -0.405071 32.6675 1.63253 29.2907 c
-5.53493 23.0843 11.4461 22.6739 45.1997 15.6395 c
-63.2501 11.9099 79.1477 2.49233 91.3013 1.81553 c
-102.224 1.09553 104.535 4.52273 111.346 10.5923 c
-118.229 16.7915 120.253 14.8979 120.137 27.5483 c
-120.202 41.0555 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 36.6749 97.7123 30.2957 92.9171 c
-closepath
-0.64 0.395 0 rgb
-F
-newpath
-30.4001 92.6291 m
-24.1685 87.8843 8.76772 89.7635 3.36053 83.5355 c
--0.89467 78.2363 3.75293 70.4891 3.50813 55.8335 c
-3.43253 49.6667 2.21213 45.2171 1.29773 40.8611 c
-0.203329 35.8967 -0.423071 32.6747 1.62533 29.3375 c
-5.64293 23.0879 11.5577 23.2283 45.3041 16.2047 c
-63.3437 12.4823 78.6581 3.21593 91.1645 2.66873 c
-101.824 2.02073 104.067 5.25353 110.792 11.2619 c
-117.661 17.4647 119.579 15.5963 119.515 27.7679 c
-119.72 41.2607 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 36.7289 97.4819 30.4001 92.6291 c
-closepath
-0.66 0.417 0 rgb
-F
-newpath
-30.5045 92.3411 m
-24.3557 87.5747 9.29332 89.9363 3.47573 83.4563 c
--0.82987 78.2147 3.95093 70.5251 3.64853 55.8803 c
-3.54773 49.7459 2.28053 45.3971 1.30133 40.8611 c
-0.178129 35.8499 -0.441071 32.6819 1.61813 29.3843 c
-5.75093 23.0915 11.6693 23.7827 45.4085 16.7699 c
-63.4373 13.0547 78.1685 3.93952 91.0277 3.52193 c
-101.425 2.94593 103.599 5.98432 110.237 11.9315 c
-117.092 18.1379 118.906 16.2947 118.892 27.9875 c
-119.237 41.4659 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 36.7829 97.2515 30.5045 92.3411 c
-closepath
-0.68 0.44 0 rgb
-F
-newpath
-30.6089 92.0531 m
-24.5429 87.2651 9.81892 90.1091 3.59093 83.3771 c
--0.76507 78.1931 4.14893 70.5611 3.78893 55.9271 c
-3.66293 49.8251 2.34893 45.5771 1.30493 40.8611 c
-0.152929 35.8031 -0.459071 32.6891 1.61093 29.4311 c
-5.85893 23.0951 11.7809 24.3371 45.5129 17.3351 c
-63.5309 13.6271 77.6789 4.66312 90.8909 4.37513 c
-101.025 3.87113 103.131 6.71512 109.683 12.6011 c
-116.523 18.8111 118.233 16.9931 118.269 28.2071 c
-118.755 41.6711 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 36.8369 97.0211 30.6089 92.0531 c
-closepath
-0.7 0.463 0 rgb
-F
-newpath
-30.7133 91.7651 m
-24.7301 86.9555 10.3445 90.2819 3.70613 83.2979 c
--0.70027 78.1715 4.34693 70.5971 3.92933 55.9739 c
-3.77813 49.9043 2.41733 45.7571 1.30853 40.8611 c
-0.127729 35.7563 -0.477071 32.6963 1.60373 29.4779 c
-5.96693 23.0987 11.8925 24.8915 45.6173 17.9003 c
-63.6245 14.1995 77.1893 5.38672 90.7541 5.22832 c
-100.625 4.79632 102.663 7.44592 109.129 13.2707 c
-115.954 19.4843 117.56 17.6915 117.646 28.4267 c
-118.273 41.8763 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 36.8909 96.7907 30.7133 91.7651 c
-closepath
-0.72 0.485 0 rgb
-F
-newpath
-30.8177 91.4771 m
-24.9173 86.6459 10.8701 90.4547 3.82133 83.2187 c
--0.63547 78.1499 4.54493 70.6331 4.06973 56.0207 c
-3.89333 49.9835 2.48573 45.9371 1.31213 40.8611 c
-0.102529 35.7095 -0.495071 32.7035 1.59653 29.5247 c
-6.07493 23.1023 12.0041 25.4459 45.7217 18.4655 c
-63.7181 14.7719 76.6997 6.11032 90.6173 6.08152 c
-100.226 5.72152 102.195 8.17672 108.574 13.9403 c
-115.385 20.1575 116.887 18.3899 117.023 28.6463 c
-117.79 42.0815 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 36.9449 96.5603 30.8177 91.4771 c
-closepath
-0.74 0.507 0 rgb
-F
-newpath
-30.9221 91.1891 m
-25.1045 86.3363 11.3957 90.6275 3.93653 83.1395 c
--0.57067 78.1283 4.74293 70.6691 4.21013 56.0675 c
-4.00853 50.0627 2.55413 46.1171 1.31573 40.8611 c
-0.077329 35.6627 -0.513071 32.7107 1.58933 29.5715 c
-6.18293 23.1059 12.1157 26.0003 45.8261 19.0307 c
-63.8117 15.3443 76.2101 6.83392 90.4805 6.93472 c
-99.8262 6.64672 101.727 8.90752 108.02 14.6099 c
-114.817 20.8307 116.213 19.0883 116.401 28.8659 c
-117.308 42.2867 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 36.9989 96.3299 30.9221 91.1891 c
-closepath
-0.76 0.53 0 rgb
-F
-newpath
-31.0265 90.9011 m
-25.2917 86.0267 11.9213 90.8003 4.05173 83.0603 c
--0.50587 78.1067 4.94093 70.7051 4.35053 56.1143 c
-4.12373 50.1419 2.62253 46.2971 1.31933 40.8611 c
-0.052129 35.6159 -0.531071 32.7179 1.58213 29.6183 c
-6.29093 23.1095 12.2273 26.5547 45.9305 19.5959 c
-63.9053 15.9167 75.7205 7.55752 90.3437 7.78792 c
-99.4266 7.57192 101.259 9.63832 107.465 15.2795 c
-114.248 21.5039 115.54 19.7867 115.778 29.0855 c
-116.825 42.4919 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 37.0529 96.0995 31.0265 90.9011 c
-closepath
-0.78 0.553 0 rgb
-F
-newpath
-31.1309 90.6131 m
-25.4789 85.7171 12.4469 90.9731 4.16693 82.9811 c
--0.44107 78.0851 5.13893 70.7411 4.49093 56.1611 c
-4.23893 50.2211 2.69093 46.4771 1.32293 40.8611 c
-0.026929 35.5691 -0.549071 32.7251 1.57493 29.6651 c
-6.39893 23.1131 12.3389 27.1091 46.0349 20.1611 c
-63.9989 16.4891 75.2309 8.28112 90.2069 8.64112 c
-99.0269 8.49712 100.791 10.3691 106.911 15.9491 c
-113.679 22.1771 114.867 20.4851 115.155 29.3051 c
-116.343 42.6971 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 37.1069 95.8691 31.1309 90.6131 c
-closepath
-0.8 0.575 0 rgb
-F
-newpath
-31.2353 90.3251 m
-25.6661 85.4075 12.9725 91.1459 4.28213 82.9019 c
--0.376271 78.0635 5.33693 70.7771 4.63133 56.2079 c
-4.35413 50.3003 2.75933 46.6571 1.32653 40.8611 c
-0.001729 35.5223 -0.567071 32.7323 1.56773 29.7119 c
-6.50693 23.1167 12.4505 27.6635 46.1393 20.7263 c
-64.0925 17.0615 74.7413 9.00471 90.0701 9.49432 c
-98.6273 9.42232 100.323 11.0999 106.357 16.6187 c
-113.11 22.8503 114.194 21.1835 114.532 29.5247 c
-115.861 42.9023 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 37.1609 95.6387 31.2353 90.3251 c
-closepath
-0.82 0.598 0 rgb
-F
-newpath
-31.3397 90.0371 m
-25.8533 85.0979 13.4981 91.3187 4.39733 82.8227 c
--0.311471 78.0419 5.53493 70.8131 4.77173 56.2547 c
-4.46933 50.3795 2.82773 46.8371 1.33013 40.8611 c
--0.023471 35.4755 -0.585071 32.7395 1.56053 29.7587 c
-6.61493 23.1203 12.5621 28.2179 46.2437 21.2915 c
-64.1861 17.6339 74.2517 9.72831 89.9333 10.3475 c
-98.2277 10.3475 99.8549 11.8307 105.802 17.2883 c
-112.541 23.5235 113.521 21.8819 113.909 29.7443 c
-115.378 43.1075 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 37.2149 95.4083 31.3397 90.0371 c
-closepath
-0.84 0.62 0 rgb
-F
-newpath
-31.4441 89.7491 m
-26.0405 84.7883 14.0237 91.4915 4.51253 82.7435 c
--0.246671 78.0203 5.73293 70.8491 4.91213 56.3015 c
-4.58453 50.4587 2.89613 47.0171 1.33373 40.8611 c
--0.048671 35.4287 -0.603071 32.7467 1.55333 29.8055 c
-6.72293 23.1239 12.6737 28.7723 46.3481 21.8567 c
-64.2797 18.2063 73.7621 10.4519 89.7965 11.2007 c
-97.8281 11.2727 99.3869 12.5615 105.248 17.9579 c
-111.973 24.1967 112.847 22.5803 113.287 29.9639 c
-114.896 43.3127 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 37.2689 95.1779 31.4441 89.7491 c
-closepath
-0.86 0.642 0 rgb
-F
-newpath
-31.5485 89.4611 m
-26.2277 84.4787 14.5493 91.6643 4.62773 82.6643 c
--0.181871 77.9987 5.93093 70.8851 5.05253 56.3483 c
-4.69973 50.5379 2.96453 47.1971 1.33733 40.8611 c
--0.073871 35.3819 -0.621071 32.7539 1.54613 29.8523 c
-6.83093 23.1275 12.7853 29.3267 46.4525 22.4219 c
-64.3733 18.7787 73.2725 11.1755 89.6597 12.0539 c
-97.4285 12.1979 98.9189 13.2923 104.693 18.6275 c
-111.404 24.8699 112.174 23.2787 112.664 30.1835 c
-114.413 43.5179 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 37.3229 94.9475 31.5485 89.4611 c
-closepath
-0.88 0.665 0 rgb
-F
-newpath
-31.6529 89.1731 m
-26.4149 84.1691 15.0749 91.8371 4.74293 82.5851 c
--0.117071 77.9771 6.12893 70.9211 5.19293 56.3951 c
-4.81493 50.6171 3.03293 47.3771 1.34093 40.8611 c
--0.099071 35.3351 -0.639071 32.7611 1.53893 29.8991 c
-6.93893 23.1311 12.8969 29.8811 46.5569 22.9871 c
-64.4669 19.3511 72.7829 11.8991 89.5229 12.9071 c
-97.0289 13.1231 98.4509 14.0231 104.139 19.2971 c
-110.835 25.5431 111.501 23.9771 112.041 30.4031 c
-113.931 43.7231 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 37.3769 94.7171 31.6529 89.1731 c
-closepath
-0.9 0.688 0 rgb
-F
-newpath
-31.7573 88.8851 m
-26.6021 83.8595 15.6005 92.0099 4.85813 82.5059 c
--0.0522708 77.9555 6.32693 70.9571 5.33333 56.4419 c
-4.93013 50.6963 3.10133 47.5571 1.34453 40.8611 c
--0.124271 35.2883 -0.657071 32.7683 1.53173 29.9459 c
-7.04693 23.1347 13.0085 30.4355 46.6613 23.5523 c
-64.5605 19.9235 72.2933 12.6227 89.3861 13.7603 c
-96.6293 14.0483 97.9829 14.7539 103.585 19.9667 c
-110.266 26.2163 110.828 24.6755 111.418 30.6227 c
-113.449 43.9283 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 37.4309 94.4867 31.7573 88.8851 c
-closepath
-0.92 0.71 0 rgb
-F
-newpath
-31.8617 88.5971 m
-26.7893 83.5499 16.1261 92.1827 4.97333 82.4267 c
-0.0125292 77.9339 6.52493 70.9931 5.47373 56.4887 c
-5.04533 50.7755 3.16973 47.7371 1.34813 40.8611 c
--0.149471 35.2415 -0.675071 32.7755 1.52453 29.9927 c
-7.15493 23.1383 13.1201 30.9899 46.7657 24.1175 c
-64.6541 20.4959 71.8037 13.3463 89.2493 14.6135 c
-96.2297 14.9735 97.5149 15.4847 103.03 20.6363 c
-109.697 26.8895 110.155 25.3739 110.795 30.8423 c
-112.966 44.1335 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 37.4849 94.2563 31.8617 88.5971 c
-closepath
-0.94 0.733 0 rgb
-F
-newpath
-31.9661 88.3091 m
-26.9765 83.2403 16.6517 92.3555 5.08853 82.3475 c
-0.0773291 77.9123 6.72293 71.0291 5.61413 56.5355 c
-5.16053 50.8547 3.23813 47.9171 1.35173 40.8611 c
--0.174671 35.1947 -0.693071 32.7827 1.51733 30.0395 c
-7.26293 23.1419 13.2317 31.5443 46.8701 24.6827 c
-64.7477 21.0683 71.3141 14.0699 89.1125 15.4667 c
-95.8301 15.8987 97.0469 16.2155 102.476 21.3059 c
-109.129 27.5627 109.481 26.0723 110.173 31.0619 c
-112.484 44.3387 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 37.5389 94.0259 31.9661 88.3091 c
-closepath
-0.96 0.755 0 rgb
-F
-newpath
-32.0705 88.0211 m
-27.1637 82.9307 17.1773 92.5283 5.20373 82.2683 c
-0.142129 77.8907 6.92093 71.0651 5.75453 56.5823 c
-5.27573 50.9339 3.30653 48.0971 1.35533 40.8611 c
--0.199871 35.1479 -0.711071 32.7899 1.51013 30.0863 c
-7.37093 23.1455 13.3433 32.0987 46.9745 25.2479 c
-64.8413 21.6407 70.8245 14.7935 88.9757 16.3199 c
-95.4305 16.8239 96.5789 16.9463 101.921 21.9755 c
-108.56 28.2359 108.808 26.7707 109.55 31.2815 c
-112.001 44.5439 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 37.5929 93.7955 32.0705 88.0211 c
-closepath
-0.98 0.778 0 rgb
-F
-newpath
-32.1749 87.7331 m
-27.3509 82.6211 17.7029 92.7011 5.31893 82.1891 c
-0.206929 77.8691 7.11893 71.1011 5.89493 56.6291 c
-5.39093 51.0131 3.37493 48.2771 1.35893 40.8611 c
--0.225071 35.1011 -0.729071 32.7971 1.50293 30.1331 c
-7.47893 23.1491 13.4549 32.6531 47.0789 25.8131 c
-64.9349 22.2131 70.3349 15.5171 88.8389 17.1731 c
-95.0309 17.7491 96.1109 17.6771 101.367 22.6451 c
-107.991 28.9091 108.135 27.4691 108.927 31.5011 c
-111.519 44.7491 112.455 44.6771 102.591 60.3011 c
-92.7269 75.9251 91.1429 78.8051 84.5909 89.1731 c
-78.0389 99.3971 65.0789 117.973 57.6629 118.189 c
-51.7589 118.333 48.4469 115.165 44.7749 111.421 c
-41.1029 107.677 37.6469 93.5651 32.1749 87.7331 c
-closepath
-1 0.8 0 rgb
-F
-newpath
-35.2936 82.1072 m
-31.0153 77.5695 17.0138 83.4684 10.402 78.4772 c
-5.67014 74.9767 12.8004 70.5688 11.8281 57.6045 c
-11.4392 52.6782 8.00362 51.7705 9.42973 44.9643 c
-10.5318 39.8435 11.6986 39.973 13.6431 37.6396 c
-18.9584 31.4167 17.727 35.9544 47.9985 29.861 c
-64.0094 26.6199 68.936 20.5914 85.595 22.0825 c
-91.1696 22.6009 92.2068 22.5363 96.874 27.0088 c
-102.838 32.5834 99.7909 31.4167 100.439 34.9818 c
-102.708 46.8442 100.893 48.9186 92.0123 62.9847 c
-83.1319 77.0511 83.9098 77.8289 78.0758 87.0985 c
-72.2418 96.2382 64.2039 112.897 57.5274 113.027 c
-52.2768 113.157 49.2301 110.305 45.9244 106.934 c
-42.6183 103.563 40.155 87.2929 35.2936 82.1072 c
-closepath
-F
-newpath
-35.5879 82.0164 m
-31.1267 77.3145 16.9831 83.2124 10.5277 78.311 c
-5.82692 74.7971 13.106 70.2613 12.1366 57.6311 c
-11.7358 52.7342 8.40343 51.7548 9.67831 44.9978 c
-10.6653 39.9046 12.0364 40.0591 14.0122 37.7966 c
-19.6983 31.6651 18.6855 35.9702 48.1314 30.053 c
-64.0498 26.8426 68.947 20.8386 85.5039 22.3208 c
-91.0453 22.8333 91.9821 22.7833 96.6586 27.1692 c
-102.524 32.5764 99.5181 31.4567 100.071 35.226 c
-102.138 47.0149 100.514 49.2083 91.8829 62.8765 c
-83.0526 76.8591 83.7402 77.5752 77.941 86.7895 c
-72.1418 95.8748 64.2403 112.594 57.6036 112.723 c
-52.3842 112.853 49.3557 110.018 46.0697 106.667 c
-42.7833 103.316 40.426 87.1626 35.5879 82.0164 c
-closepath
-1 0.801 0.01 rgb
-F
-newpath
-35.8822 81.9256 m
-31.2381 77.0594 16.9524 82.9565 10.6535 78.1447 c
-5.98371 74.6174 13.4115 69.9537 12.4451 57.6578 c
-12.0323 52.7902 8.80325 51.7392 9.9269 45.0312 c
-10.7989 39.9657 12.3743 40.1451 14.3812 37.9537 c
-20.4383 31.9134 19.644 35.986 48.2644 30.2449 c
-64.0902 27.0653 68.958 21.0858 85.4128 22.5591 c
-90.9209 23.0657 91.7574 23.0304 96.4432 27.3297 c
-102.21 32.5695 99.2454 31.4966 99.7031 35.4703 c
-101.568 47.1856 100.134 49.4979 91.7536 62.7683 c
-82.9733 76.6671 83.5707 77.3214 77.8062 86.4805 c
-72.0417 95.5113 64.2766 112.291 57.6797 112.42 c
-52.4917 112.548 49.4813 109.73 46.215 106.399 c
-42.9483 103.069 40.6971 87.0323 35.8822 81.9256 c
-closepath
-1 0.802 0.02 rgb
-F
-newpath
-36.1764 81.8347 m
-31.3495 76.8044 16.9217 82.7005 10.7792 77.9784 c
-6.14049 74.4378 13.7171 69.6462 12.7536 57.6844 c
-12.3289 52.8462 9.20306 51.7235 10.1755 45.0647 c
-10.9324 40.0268 12.7121 40.2312 14.7503 38.1107 c
-21.1782 32.1618 20.6025 36.0017 48.3973 30.4369 c
-64.1305 27.288 68.969 21.333 85.3217 22.7975 c
-90.7966 23.2981 91.5326 23.2774 96.2277 27.4901 c
-101.897 32.5625 98.9726 31.5366 99.3351 35.7145 c
-100.998 47.3563 99.7552 49.7876 91.6243 62.6601 c
-82.894 76.475 83.4011 77.0677 77.6714 86.1715 c
-71.9417 95.1479 64.313 111.988 57.7559 112.116 c
-52.5991 112.244 49.6069 109.443 46.3603 106.132 c
-43.1133 102.821 40.9681 86.902 36.1764 81.8347 c
-closepath
-1 0.803 0.03 rgb
-F
-newpath
-36.4707 81.7439 m
-31.4608 76.5493 16.891 82.4446 10.905 77.8122 c
-6.29728 74.2581 14.0227 69.3387 13.0621 57.7111 c
-12.6254 52.9022 9.60288 51.7079 10.4241 45.0981 c
-11.0659 40.088 13.0499 40.3172 15.1194 38.2677 c
-21.9181 32.4101 21.561 36.0175 48.5303 30.6289 c
-64.1709 27.5107 68.9801 21.5802 85.2306 23.0358 c
-90.6723 23.5304 91.3079 23.5245 96.0123 27.6506 c
-101.583 32.5556 98.6998 31.5766 98.9671 35.9588 c
-100.428 47.527 99.376 50.0772 91.4949 62.552 c
-82.8148 76.283 83.2315 76.8139 77.5366 85.8625 c
-71.8417 94.7844 64.3494 111.686 57.832 111.813 c
-52.7065 111.939 49.7325 109.155 46.5056 105.865 c
-43.2783 102.574 41.2391 86.7717 36.4707 81.7439 c
-closepath
-1 0.804 0.04 rgb
-F
-newpath
-36.765 81.6531 m
-31.5722 76.2943 16.8602 82.1886 11.0307 77.6459 c
-6.45406 74.0785 14.3283 69.0312 13.3707 57.7377 c
-12.922 52.9582 10.0027 51.6922 10.6726 45.1316 c
-11.1995 40.1491 13.3877 40.4033 15.4885 38.4248 c
-22.658 32.6585 22.5196 36.0333 48.6632 30.8209 c
-64.2113 27.7334 68.9911 21.8274 85.1395 23.2741 c
-90.548 23.7628 91.0832 23.7715 95.7969 27.811 c
-101.269 32.5486 98.4271 31.6165 98.5992 36.203 c
-99.8584 47.6977 98.9967 50.3669 91.3656 62.4438 c
-82.7355 76.091 83.062 76.5602 77.4018 85.5535 c
-71.7416 94.421 64.3857 111.383 57.9082 111.509 c
-52.814 111.635 49.8581 108.868 46.6508 105.597 c
-43.4433 102.327 41.5102 86.6414 36.765 81.6531 c
-closepath
-1 0.805 0.05 rgb
-F
-newpath
-37.0593 81.5623 m
-31.6836 76.0392 16.8295 81.9327 11.1565 77.4797 c
-6.61085 73.8988 14.6339 68.7236 13.6792 57.7644 c
-13.2186 53.0142 10.4025 51.6765 10.9212 45.1651 c
-11.333 40.2102 13.7256 40.4893 15.8575 38.5818 c
-23.398 32.9068 23.4781 36.049 48.7962 31.0128 c
-64.2517 27.9561 69.0021 22.0747 85.0484 23.5124 c
-90.4236 23.9952 90.8585 24.0185 95.5815 27.9714 c
-100.955 32.5416 98.1543 31.6565 98.2312 36.4473 c
-99.2885 47.8684 98.6175 50.6566 91.2362 62.3356 c
-82.6562 75.899 82.8924 76.3064 77.267 85.2445 c
-71.6416 94.0575 64.4221 111.08 57.9843 111.205 c
-52.9214 111.331 49.9837 108.58 46.7961 105.33 c
-43.6082 102.08 41.7812 86.5111 37.0593 81.5623 c
-closepath
-1 0.806 0.06 rgb
-F
-newpath
-37.3536 81.4715 m
-31.795 75.7842 16.7988 81.6767 11.2822 77.3134 c
-6.76763 73.7192 14.9394 68.4161 13.9877 57.791 c
-13.5151 53.0702 10.8023 51.6609 11.1698 45.1985 c
-11.4665 40.2713 14.0634 40.5753 16.2266 38.7388 c
-24.1379 33.1552 24.4366 36.0648 48.9291 31.2048 c
-64.2921 28.1788 69.0131 22.3219 84.9573 23.7507 c
-90.2993 24.2276 90.6338 24.2656 95.3661 28.1319 c
-100.642 32.5347 97.8815 31.6965 97.8632 36.6915 c
-98.7186 48.0391 98.2383 50.9462 91.1069 62.2274 c
-82.5769 75.707 82.7228 76.0527 77.1322 84.9355 c
-71.5415 93.6941 64.4585 110.777 58.0605 110.902 c
-53.0288 111.026 50.1093 108.293 46.9414 105.063 c
-43.7732 101.832 42.0522 86.3808 37.3536 81.4715 c
-closepath
-1 0.807 0.07 rgb
-F
-newpath
-37.6478 81.3806 m
-31.9064 75.5291 16.7681 81.4208 11.408 77.1472 c
-6.92442 73.5395 15.245 68.1086 14.2962 57.8177 c
-13.8117 53.1262 11.2021 51.6452 11.4184 45.232 c
-11.6 40.3324 14.4012 40.6614 16.5957 38.8959 c
-24.8778 33.4035 25.3951 36.0806 49.0621 31.3968 c
-64.3324 28.4015 69.0241 22.5691 84.8662 23.9891 c
-90.175 24.46 90.409 24.5126 95.1506 28.2923 c
-100.328 32.5277 97.6088 31.7364 97.4952 36.9358 c
-98.1486 48.2098 97.859 51.2359 90.9775 62.1192 c
-82.4976 75.5149 82.5532 75.7989 76.9974 84.6265 c
-71.4415 93.3306 64.4948 110.474 58.1366 110.598 c
-53.1363 110.722 50.2349 108.005 47.0867 104.795 c
-43.9382 101.585 42.3233 86.2505 37.6478 81.3806 c
-closepath
-1 0.808 0.08 rgb
-F
-newpath
-37.9421 81.2898 m
-32.0178 75.2741 16.7374 81.1648 11.5337 76.9809 c
-7.0812 73.3599 15.5506 67.801 14.6047 57.8443 c
-14.1082 53.1822 11.6019 51.6296 11.667 45.2654 c
-11.7336 40.3935 14.7391 40.7474 16.9648 39.0529 c
-25.6177 33.6519 26.3536 36.0964 49.195 31.5888 c
-64.3728 28.6242 69.0351 22.8163 84.7751 24.2274 c
-90.0506 24.6924 90.1843 24.7597 94.9352 28.4528 c
-100.014 32.5208 97.336 31.7764 97.1273 37.18 c
-97.5787 48.3805 97.4798 51.5255 90.8482 62.011 c
-82.4183 75.3229 82.3837 75.5452 76.8626 84.3176 c
-71.3415 92.9672 64.5312 110.171 58.2128 110.295 c
-53.2437 110.417 50.3605 107.718 47.232 104.528 c
-44.1032 101.338 42.5943 86.1202 37.9421 81.2898 c
-closepath
-1 0.809 0.09 rgb
-F
-newpath
-38.2364 81.199 m
-32.1292 75.0191 16.7067 80.9088 11.6595 76.8147 c
-7.23798 73.1803 15.8561 67.4935 14.9132 57.8709 c
-14.4048 53.2382 12.0018 51.6139 11.9156 45.2989 c
-11.8671 40.4547 15.0769 40.8335 17.3338 39.2099 c
-26.3577 33.9002 27.3121 36.1122 49.3279 31.7808 c
-64.4132 28.847 69.0462 23.0635 84.684 24.4657 c
-89.9263 24.9248 89.9596 25.0067 94.7198 28.6132 c
-99.7002 32.5138 97.0632 31.8163 96.7593 37.4242 c
-97.0088 48.5513 97.1005 51.8152 90.7188 61.9028 c
-82.3391 75.1309 82.2141 75.2915 76.7278 84.0086 c
-71.2414 92.6037 64.5676 109.868 58.2889 109.991 c
-53.3512 110.113 50.4861 107.43 47.3773 104.26 c
-44.2682 101.091 42.8653 85.9899 38.2364 81.199 c
-closepath
-1 0.81 0.1 rgb
-F
-newpath
-38.5307 81.1082 m
-32.2405 74.764 16.676 80.6529 11.7852 76.6484 c
-7.39477 73.0006 16.1617 67.186 15.2217 57.8976 c
-14.7014 53.2942 12.4016 51.5982 12.1641 45.3324 c
-12.0006 40.5158 15.4147 40.9196 17.7029 39.367 c
-27.0976 34.1486 28.2706 36.1279 49.4609 31.9727 c
-64.4536 29.0697 69.0572 23.3107 84.5928 24.704 c
-89.802 25.1571 89.7349 25.2537 94.5044 28.7736 c
-99.3865 32.5068 96.7905 31.8563 96.3913 37.6685 c
-96.4389 48.722 96.7212 52.1049 90.5895 61.7947 c
-82.2598 74.9389 82.0445 75.0377 76.5929 83.6996 c
-71.1414 92.2403 64.6039 109.566 58.3651 109.687 c
-53.4586 109.809 50.6118 107.143 47.5226 103.993 c
-44.4332 100.844 43.1364 85.8596 38.5307 81.1082 c
-closepath
-1 0.811 0.11 rgb
-F
-newpath
-38.825 81.0174 m
-32.3519 74.509 16.6453 80.3969 11.9109 76.4821 c
-7.55155 72.821 16.4673 66.8784 15.5302 57.9242 c
-14.9979 53.3502 12.8014 51.5826 12.4127 45.3658 c
-12.1342 40.5769 15.7526 41.0056 18.072 39.524 c
-27.8375 34.397 29.2291 36.1437 49.5938 32.1647 c
-64.494 29.2924 69.0682 23.5579 84.5017 24.9423 c
-89.6776 25.3895 89.5102 25.5008 94.289 28.9341 c
-99.0727 32.4999 96.5177 31.8963 96.0234 37.9127 c
-95.869 48.8927 96.342 52.3945 90.4602 61.6865 c
-82.1805 74.7469 81.875 74.784 76.4581 83.3906 c
-71.0414 91.8769 64.6403 109.263 58.4413 109.384 c
-53.566 109.504 50.7374 106.856 47.6679 103.726 c
-44.5982 100.596 43.4074 85.7294 38.825 81.0174 c
-closepath
-1 0.812 0.12 rgb
-F
-newpath
-39.1192 80.9265 m
-32.4633 74.2539 16.6146 80.141 12.0367 76.3159 c
-7.70834 72.6413 16.7729 66.5709 15.8387 57.9509 c
-15.2945 53.4062 13.2012 51.5669 12.6613 45.3993 c
-12.2677 40.638 16.0904 41.0917 18.4411 39.6811 c
-28.5774 34.6453 30.1876 36.1595 49.7268 32.3567 c
-64.5343 29.5151 69.0792 23.8051 84.4106 25.1807 c
-89.5533 25.6219 89.2854 25.7478 94.0735 29.0945 c
-98.7589 32.4929 96.245 31.9362 95.6554 38.157 c
-95.299 49.0634 95.9627 52.6842 90.3308 61.5783 c
-82.1012 74.5548 81.7054 74.5302 76.3233 83.0816 c
-70.9413 91.5134 64.6766 108.96 58.5174 109.08 c
-53.6735 109.2 50.863 106.568 47.8132 103.458 c
-44.7632 100.349 43.6785 85.5991 39.1192 80.9265 c
-closepath
-1 0.813 0.13 rgb
-F
-newpath
-39.4135 80.8357 m
-32.5747 73.9989 16.5839 79.885 12.1624 76.1496 c
-7.86512 72.4617 17.0784 66.2634 16.1472 57.9775 c
-15.591 53.4622 13.601 51.5513 12.9099 45.4327 c
-12.4012 40.6991 16.4282 41.1777 18.8102 39.8381 c
-29.3174 34.8937 31.1461 36.1753 49.8597 32.5486 c
-64.5747 29.7378 69.0902 24.0523 84.3195 25.419 c
-89.429 25.8543 89.0607 25.9949 93.8581 29.255 c
-98.4452 32.486 95.9722 31.9762 95.2874 38.4012 c
-94.7291 49.2341 95.5835 52.9738 90.2015 61.4701 c
-82.0219 74.3628 81.5358 74.2765 76.1885 82.7726 c
-70.8413 91.15 64.713 108.657 58.5936 108.777 c
-53.7809 108.895 50.9886 106.281 47.9585 103.191 c
-44.9282 100.102 43.9495 85.4688 39.4135 80.8357 c
-closepath
-1 0.814 0.14 rgb
-F
-newpath
-39.7078 80.7449 m
-32.6861 73.7438 16.5532 79.6291 12.2882 75.9834 c
-8.02191 72.282 17.384 65.9558 16.4557 58.0042 c
-15.8876 53.5182 14.0008 51.5356 13.1585 45.4662 c
-12.5347 40.7602 16.7661 41.2637 19.1792 39.9951 c
-30.0573 35.142 32.1047 36.191 49.9927 32.7406 c
-64.6151 29.9605 69.1012 24.2996 84.2284 25.6573 c
-89.3046 26.0867 88.836 26.2419 93.6427 29.4154 c
-98.1314 32.479 95.6994 32.0162 94.9194 38.6455 c
-94.1592 49.4048 95.2042 53.2635 90.0721 61.3619 c
-81.9426 74.1708 81.3662 74.0227 76.0537 82.4636 c
-70.7413 90.7865 64.7494 108.354 58.6697 108.473 c
-53.8883 108.591 51.1142 105.993 48.1038 102.924 c
-45.0931 99.8546 44.2205 85.3385 39.7078 80.7449 c
-closepath
-1 0.815 0.15 rgb
-F
-newpath
-40.0021 80.6541 m
-32.7975 73.4888 16.5224 79.3731 12.4139 75.8171 c
-8.17869 72.1024 17.6896 65.6483 16.7643 58.0308 c
-16.1842 53.5742 14.4006 51.5199 13.4071 45.4997 c
-12.6683 40.8213 17.1039 41.3498 19.5483 40.1522 c
-30.7972 35.3904 33.0632 36.2068 50.1256 32.9326 c
-64.6555 30.1832 69.1122 24.5468 84.1373 25.8956 c
-89.1803 26.3191 88.6113 26.4889 93.4273 29.5758 c
-97.8176 32.472 95.4267 32.0561 94.5515 38.8897 c
-93.5893 49.5755 94.825 53.5532 89.9428 61.2537 c
-81.8633 73.9788 81.1967 73.769 75.9189 82.1546 c
-70.6412 90.4231 64.7857 108.051 58.7459 108.169 c
-53.9958 108.287 51.2398 105.706 48.249 102.656 c
-45.2581 99.6074 44.4916 85.2082 40.0021 80.6541 c
-closepath
-1 0.816 0.16 rgb
-F
-newpath
-40.2964 80.5633 m
-32.9088 73.2337 16.4917 79.1172 12.5397 75.6509 c
-8.33548 71.9227 17.9952 65.3408 17.0728 58.0575 c
-16.4807 53.6302 14.8005 51.5043 13.6556 45.5331 c
-12.8018 40.8825 17.4417 41.4358 19.9174 40.3092 c
-31.5371 35.6387 34.0217 36.2226 50.2586 33.1246 c
-64.6959 30.4059 69.1233 24.794 84.0462 26.1339 c
-89.056 26.5514 88.3866 26.736 93.2119 29.7363 c
-97.5038 32.4651 95.1539 32.0961 94.1835 39.134 c
-93.0194 49.7462 94.4457 53.8428 89.8134 61.1456 c
-81.7841 73.7868 81.0271 73.5152 75.7841 81.8456 c
-70.5412 90.0596 64.8221 107.749 58.822 107.866 c
-54.1032 107.982 51.3654 105.418 48.3943 102.389 c
-45.4231 99.3602 44.7626 85.0779 40.2964 80.5633 c
-closepath
-1 0.817 0.17 rgb
-F
-newpath
-40.5906 80.4724 m
-33.0202 72.9787 16.461 78.8612 12.6654 75.4846 c
-8.49226 71.7431 18.3007 65.0333 17.3813 58.0841 c
-16.7773 53.6862 15.2003 51.4886 13.9042 45.5666 c
-12.9353 40.9436 17.7795 41.5219 20.2864 40.4662 c
-32.2771 35.8871 34.9802 36.2383 50.3915 33.3166 c
-64.7362 30.6286 69.1343 25.0412 83.9551 26.3723 c
-88.9317 26.7838 88.1618 26.983 92.9964 29.8967 c
-97.19 32.4581 94.8811 32.1361 93.8155 39.3782 c
-92.4494 49.9169 94.0665 54.1325 89.6841 61.0374 c
-81.7048 73.5947 80.8575 73.2615 75.6493 81.5366 c
-70.4412 89.6962 64.8585 107.446 58.8982 107.562 c
-54.2106 107.678 51.491 105.131 48.5396 102.122 c
-45.5881 99.113 45.0336 84.9476 40.5906 80.4724 c
-closepath
-1 0.818 0.18 rgb
-F
-newpath
-40.8849 80.3816 m
-33.1316 72.7236 16.4303 78.6053 12.7912 75.3184 c
-8.64905 71.5634 18.6063 64.7257 17.6898 58.1108 c
-17.0738 53.7422 15.6001 51.473 14.1528 45.6 c
-13.0689 41.0047 18.1174 41.6079 20.6555 40.6233 c
-33.017 36.1354 35.9387 36.2541 50.5245 33.5085 c
-64.7766 30.8513 69.1453 25.2884 83.864 26.6106 c
-88.8073 27.0162 87.9371 27.2301 92.781 30.0572 c
-96.8763 32.4512 94.6084 32.176 93.4476 39.6225 c
-91.8795 50.0876 93.6872 54.4221 89.5547 60.9292 c
-81.6255 73.4027 80.688 73.0077 75.5145 81.2276 c
-70.3411 89.3327 64.8948 107.143 58.9743 107.259 c
-54.3181 107.373 51.6166 104.843 48.6849 101.854 c
-45.7531 98.8657 45.3047 84.8173 40.8849 80.3816 c
-closepath
-1 0.819 0.19 rgb
-F
-newpath
-41.1792 80.2908 m
-33.243 72.4686 16.3996 78.3493 12.9169 75.1521 c
-8.80583 71.3838 18.9119 64.4182 17.9983 58.1374 c
-17.3704 53.7982 15.9999 51.4573 14.4014 45.6335 c
-13.2024 41.0658 18.4552 41.694 21.0246 40.7803 c
-33.7569 36.3838 36.8972 36.2699 50.6574 33.7005 c
-64.817 31.074 69.1563 25.5356 83.7729 26.8489 c
-88.683 27.2486 87.7124 27.4771 92.5656 30.2176 c
-96.5625 32.4442 94.3356 32.216 93.0796 39.8667 c
-91.3096 50.2583 93.308 54.7118 89.4254 60.821 c
-81.5462 73.2107 80.5184 72.754 75.3797 80.9186 c
-70.2411 88.9693 64.9312 106.84 59.0505 106.955 c
-54.4255 107.069 51.7422 104.556 48.8302 101.587 c
-45.9181 98.6185 45.5757 84.687 41.1792 80.2908 c
-closepath
-1 0.82 0.2 rgb
-F
-newpath
-66.3749 148.429 m
-65.4389 146.341 64.6469 128.413 69.3269 121.429 c
-74.0069 114.517 72.6389 110.557 67.4549 115.813 c
-62.0549 120.925 58.5269 128.629 58.4549 133.957 c
-58.4549 137.053 60.8309 149.797 61.7669 151.165 c
-62.7749 152.605 67.0949 150.013 66.3749 148.429 c
-closepath
-0 0 0 rgb
-F
-newpath
-66.2849 148.08 m
-65.3813 145.74 64.6289 128.381 69.2945 121.411 c
-73.9601 114.51 72.4805 110.921 67.4549 116.054 c
-62.2241 121.051 58.8473 128.525 58.7141 133.842 c
-58.6709 136.956 60.9497 149.261 61.8461 150.632 c
-62.8073 152.025 66.9725 149.642 66.2849 148.08 c
-closepath
-0.015 0.015 0.015 rgb
-F
-newpath
-66.1949 147.731 m
-65.3237 145.139 64.6109 128.348 69.2621 121.393 c
-73.9133 114.503 72.3221 111.284 67.4549 116.295 c
-62.3933 121.177 59.1677 128.42 58.9733 133.727 c
-58.8869 136.859 61.0685 148.724 61.9253 150.099 c
-62.8397 151.446 66.8501 149.271 66.1949 147.731 c
-closepath
-0.03 0.03 0.03 rgb
-F
-newpath
-66.1049 147.381 m
-65.2661 144.537 64.5929 128.316 69.2297 121.375 c
-73.8665 114.495 72.1637 111.648 67.4549 116.537 c
-62.5625 121.303 59.4881 128.316 59.2325 133.611 c
-59.1029 136.761 61.1873 148.188 62.0045 149.567 c
-62.8721 150.866 66.7277 148.901 66.1049 147.381 c
-closepath
-0.045 0.045 0.045 rgb
-F
-newpath
-66.0149 147.032 m
-65.2085 143.936 64.5749 128.283 69.1973 121.357 c
-73.8197 114.488 72.0053 112.011 67.4549 116.778 c
-62.7317 121.429 59.8085 128.211 59.4917 133.496 c
-59.3189 136.664 61.3061 147.651 62.0837 149.034 c
-62.9045 150.287 66.6053 148.53 66.0149 147.032 c
-closepath
-0.06 0.06 0.06 rgb
-F
-newpath
-65.9249 146.683 m
-65.1509 143.335 64.5569 128.251 69.1649 121.339 c
-73.7729 114.481 71.8469 112.375 67.4549 117.019 c
-62.9009 121.555 60.1289 128.107 59.7509 133.381 c
-59.5349 136.567 61.4249 147.115 62.1629 148.501 c
-62.9369 149.707 66.4829 148.159 65.9249 146.683 c
-closepath
-0.075 0.075 0.075 rgb
-F
-newpath
-65.8349 146.334 m
-65.0933 142.734 64.5389 128.219 69.1325 121.321 c
-73.7261 114.474 71.6885 112.739 67.4549 117.26 c
-63.0701 121.681 60.4493 128.003 60.0101 133.266 c
-59.7509 136.47 61.5437 146.579 62.2421 147.968 c
-62.9693 149.127 66.3605 147.788 65.8349 146.334 c
-closepath
-0.09 0.09 0.09 rgb
-F
-newpath
-65.7449 145.985 m
-65.0357 142.133 64.5209 128.186 69.1001 121.303 c
-73.6793 114.467 71.5301 113.102 67.4549 117.501 c
-63.2393 121.807 60.7697 127.898 60.2693 133.151 c
-59.9669 136.373 61.6625 146.042 62.3213 147.435 c
-63.0017 148.548 66.2381 147.417 65.7449 145.985 c
-closepath
-0.105 0.105 0.105 rgb
-F
-newpath
-65.6549 145.635 m
-64.9781 141.531 64.5029 128.154 69.0677 121.285 c
-73.6325 114.459 71.3717 113.466 67.4549 117.743 c
-63.4085 121.933 61.0901 127.794 60.5285 133.035 c
-60.1829 136.275 61.7813 145.506 62.4005 146.903 c
-63.0341 147.968 66.1157 147.047 65.6549 145.635 c
-closepath
-0.12 0.12 0.12 rgb
-F
-newpath
-65.5649 145.286 m
-64.9205 140.93 64.4849 128.121 69.0353 121.267 c
-73.5857 114.452 71.2133 113.829 67.4549 117.984 c
-63.5777 122.059 61.4105 127.689 60.7877 132.92 c
-60.3989 136.178 61.9001 144.969 62.4797 146.37 c
-63.0665 147.389 65.9933 146.676 65.5649 145.286 c
-closepath
-0.135 0.135 0.135 rgb
-F
-newpath
-65.4749 144.937 m
-64.8629 140.329 64.4669 128.089 69.0029 121.249 c
-73.5389 114.445 71.0549 114.193 67.4549 118.225 c
-63.7469 122.185 61.7309 127.585 61.0469 132.805 c
-60.6149 136.081 62.0189 144.433 62.5589 145.837 c
-63.0989 146.809 65.8709 146.305 65.4749 144.937 c
-closepath
-0.15 0.15 0.15 rgb
-F
-newpath
-65.3849 144.588 m
-64.8053 139.728 64.4489 128.057 68.9705 121.231 c
-73.4921 114.438 70.8965 114.557 67.4549 118.466 c
-63.9161 122.311 62.0513 127.481 61.3061 132.69 c
-60.8309 135.984 62.1377 143.897 62.6381 145.304 c
-63.1313 146.229 65.7485 145.934 65.3849 144.588 c
-closepath
-0.165 0.165 0.165 rgb
-F
-newpath
-65.2949 144.239 m
-64.7477 139.127 64.4309 128.024 68.9381 121.213 c
-73.4453 114.431 70.7381 114.92 67.4549 118.707 c
-64.0853 122.437 62.3717 127.376 61.5653 132.575 c
-61.0469 135.887 62.2565 143.36 62.7173 144.771 c
-63.1637 145.65 65.6261 145.563 65.2949 144.239 c
-closepath
-0.18 0.18 0.18 rgb
-F
-newpath
-65.2049 143.889 m
-64.6901 138.525 64.4129 127.992 68.9057 121.195 c
-73.3985 114.423 70.5797 115.284 67.4549 118.949 c
-64.2545 122.563 62.6921 127.272 61.8245 132.459 c
-61.2629 135.789 62.3753 142.824 62.7965 144.239 c
-63.1961 145.07 65.5037 145.193 65.2049 143.889 c
-closepath
-0.195 0.195 0.195 rgb
-F
-newpath
-65.1149 143.54 m
-64.6325 137.924 64.3949 127.959 68.8733 121.177 c
-73.3517 114.416 70.4213 115.647 67.4549 119.19 c
-64.4237 122.689 63.0125 127.167 62.0837 132.344 c
-61.4789 135.692 62.4941 142.287 62.8757 143.706 c
-63.2285 144.491 65.3813 144.822 65.1149 143.54 c
-closepath
-0.21 0.21 0.21 rgb
-F
-newpath
-65.0249 143.191 m
-64.5749 137.323 64.3769 127.927 68.8409 121.159 c
-73.3049 114.409 70.2629 116.011 67.4549 119.431 c
-64.5929 122.815 63.3329 127.063 62.3429 132.229 c
-61.6949 135.595 62.6129 141.751 62.9549 143.173 c
-63.2609 143.911 65.2589 144.451 65.0249 143.191 c
-closepath
-0.225 0.225 0.225 rgb
-F
-newpath
-64.9349 142.842 m
-64.5173 136.722 64.3589 127.895 68.8085 121.141 c
-73.2581 114.402 70.1045 116.375 67.4549 119.672 c
-64.7621 122.941 63.6533 126.959 62.6021 132.114 c
-61.9109 135.498 62.7317 141.215 63.0341 142.64 c
-63.2933 143.331 65.1365 144.08 64.9349 142.842 c
-closepath
-0.24 0.24 0.24 rgb
-F
-newpath
-64.8449 142.493 m
-64.4597 136.121 64.3409 127.862 68.7761 121.123 c
-73.2113 114.395 69.9461 116.738 67.4549 119.913 c
-64.9313 123.067 63.9737 126.854 62.8613 131.999 c
-62.1269 135.401 62.8505 140.678 63.1133 142.107 c
-63.3257 142.752 65.0141 143.709 64.8449 142.493 c
-closepath
-0.255 0.255 0.255 rgb
-F
-newpath
-64.7549 142.143 m
-64.4021 135.519 64.3229 127.83 68.7437 121.105 c
-73.1645 114.387 69.7877 117.102 67.4549 120.155 c
-65.1005 123.193 64.2941 126.75 63.1205 131.883 c
-62.3429 135.303 62.9693 140.142 63.1925 141.575 c
-63.3581 142.172 64.8917 143.339 64.7549 142.143 c
-closepath
-0.27 0.27 0.27 rgb
-F
-newpath
-64.6649 141.794 m
-64.3445 134.918 64.3049 127.797 68.7113 121.087 c
-73.1177 114.38 69.6293 117.465 67.4549 120.396 c
-65.2697 123.319 64.6145 126.645 63.3797 131.768 c
-62.5589 135.206 63.0881 139.605 63.2717 141.042 c
-63.3905 141.593 64.7693 142.968 64.6649 141.794 c
-closepath
-0.285 0.285 0.285 rgb
-F
-newpath
-64.5749 141.445 m
-64.2869 134.317 64.2869 127.765 68.6789 121.069 c
-73.0709 114.373 69.4709 117.829 67.4549 120.637 c
-65.4389 123.445 64.9349 126.541 63.6389 131.653 c
-62.7749 135.109 63.2069 139.069 63.3509 140.509 c
-63.4229 141.013 64.6469 142.597 64.5749 141.445 c
-closepath
-0.3 0.3 0.3 rgb
-F
-newpath
-66.3749 148.429 m
-70.6949 157.861 73.0709 168.013 79.2629 177.877 c
-85.3829 187.669 82.9349 191.485 78.3989 186.517 c
-73.8629 181.549 68.8949 171.037 68.8949 171.037 c
-68.8949 171.037 63.0629 161.821 61.7669 151.165 c
-61.5509 149.365 65.6549 146.917 66.3749 148.429 c
-closepath
-0 0 0 rgb
-F
-newpath
-66.5601 149.04 m
-70.8397 158.539 73.1756 168.286 79.1458 177.842 c
-85.0476 187.329 82.7553 191.121 78.3825 186.313 c
-73.9794 181.467 69.0812 171.078 69.0146 170.932 c
-69.0146 170.932 63.3773 161.941 62.1371 151.693 c
-61.9288 149.923 65.8579 147.549 66.5601 149.04 c
-closepath
-0.01 0.01 0.01 rgb
-F
-newpath
-66.7452 149.651 m
-70.9844 159.217 73.2803 168.56 79.0286 177.807 c
-84.7122 186.989 82.5757 190.757 78.3661 186.11 c
-74.096 181.384 69.2675 171.118 69.1343 170.827 c
-69.1343 170.827 63.6918 162.061 62.5072 152.222 c
-62.3068 150.481 66.0609 148.181 66.7452 149.651 c
-closepath
-0.02 0.02 0.02 rgb
-F
-newpath
-66.9304 150.261 m
-71.1292 159.895 73.385 168.833 78.9115 177.772 c
-84.3769 186.649 82.396 190.392 78.3497 185.906 c
-74.2125 181.302 69.4539 171.159 69.2541 170.723 c
-69.2541 170.723 64.0062 162.181 62.8773 152.75 c
-62.6847 151.039 66.2639 148.813 66.9304 150.261 c
-closepath
-0.03 0.03 0.03 rgb
-F
-newpath
-67.1155 150.872 m
-71.274 160.573 73.4896 169.107 78.7944 177.737 c
-84.0416 186.309 82.2164 190.028 78.3333 185.702 c
-74.3291 181.219 69.6402 171.199 69.3738 170.618 c
-69.3738 170.618 64.3206 162.3 63.2475 153.279 c
-63.0626 151.597 66.4669 149.445 67.1155 150.872 c
-closepath
-0.04 0.04 0.04 rgb
-F
-newpath
-67.3007 151.483 m
-71.4187 161.251 73.5943 169.38 78.6773 177.702 c
-83.7063 185.969 82.0368 189.664 78.3169 185.499 c
-74.4456 181.137 69.8265 171.24 69.4935 170.513 c
-69.4935 170.513 64.6351 162.42 63.6176 153.807 c
-63.4405 152.155 66.6699 150.077 67.3007 151.483 c
-closepath
-0.05 0.05 0.05 rgb
-F
-newpath
-67.4859 152.094 m
-71.5635 161.93 73.699 169.654 78.5602 177.667 c
-83.3709 185.629 81.8572 189.299 78.3005 185.295 c
-74.5622 181.055 70.0128 171.28 69.6133 170.408 c
-69.6133 170.408 64.9495 162.54 63.9878 154.336 c
-63.8185 152.713 66.8729 150.708 67.4859 152.094 c
-closepath
-0.06 0.06 0.06 rgb
-F
-newpath
-67.671 152.705 m
-71.7083 162.608 73.8037 169.927 78.443 177.632 c
-83.0356 185.289 81.6776 188.935 78.2841 185.091 c
-74.6787 180.972 70.1992 171.321 69.733 170.303 c
-69.733 170.303 65.2639 162.66 64.3579 154.865 c
-64.1964 153.271 67.0759 151.34 67.671 152.705 c
-closepath
-0.07 0.07 0.07 rgb
-F
-newpath
-67.8562 153.315 m
-71.853 163.286 73.9084 170.201 78.3259 177.597 c
-82.7003 184.949 81.498 188.571 78.2677 184.888 c
-74.7953 180.89 70.3855 171.361 69.8527 170.199 c
-69.8527 170.199 65.5784 162.78 64.7281 155.393 c
-64.5743 153.829 67.2789 151.972 67.8562 153.315 c
-closepath
-0.08 0.08 0.08 rgb
-F
-newpath
-68.0413 153.926 m
-71.9978 163.964 74.0131 170.474 78.2088 177.562 c
-82.365 184.609 81.3184 188.207 78.2513 184.684 c
-74.9118 180.807 70.5718 171.402 69.9724 170.094 c
-69.9724 170.094 65.8928 162.9 65.0983 155.921 c
-64.9523 154.387 67.4819 152.604 68.0413 153.926 c
-closepath
-0.09 0.09 0.09 rgb
-F
-newpath
-68.2265 154.537 m
-72.1425 164.642 74.1178 170.747 78.0917 177.526 c
-82.0296 184.27 81.1387 187.842 78.235 184.48 c
-75.0284 180.725 70.7581 171.443 70.0921 169.989 c
-70.0921 169.989 66.2073 163.02 65.4684 156.45 c
-65.3302 154.945 67.685 153.236 68.2265 154.537 c
-closepath
-0.1 0.1 0.1 rgb
-F
-newpath
-68.4117 155.148 m
-72.2873 165.32 74.2224 171.021 77.9745 177.491 c
-81.6943 183.93 80.9591 187.478 78.2186 184.277 c
-75.145 180.643 70.9445 171.483 70.2119 169.884 c
-70.2119 169.884 66.5217 163.139 65.8385 156.979 c
-65.7081 155.502 67.888 153.868 68.4117 155.148 c
-closepath
-0.11 0.11 0.11 rgb
-F
-newpath
-68.5968 155.759 m
-72.4321 165.998 74.3271 171.294 77.8574 177.456 c
-81.359 183.59 80.7795 187.114 78.2022 184.073 c
-75.2615 180.56 71.1308 171.524 70.3316 169.779 c
-70.3316 169.779 66.8361 163.259 66.2087 157.507 c
-66.0861 156.06 68.091 154.5 68.5968 155.759 c
-closepath
-0.12 0.12 0.12 rgb
-F
-newpath
-68.782 156.369 m
-72.5768 166.676 74.4318 171.568 77.7403 177.421 c
-81.0237 183.25 80.5999 186.75 78.1858 183.87 c
-75.3781 180.478 71.3171 171.564 70.4513 169.675 c
-70.4513 169.675 67.1506 163.379 66.5788 158.035 c
-66.464 156.618 68.294 155.132 68.782 156.369 c
-closepath
-0.13 0.13 0.13 rgb
-F
-newpath
-68.9671 156.98 m
-72.7216 167.354 74.5365 171.841 77.6232 177.386 c
-80.6883 182.91 80.4203 186.385 78.1694 183.666 c
-75.4946 180.395 71.5034 171.605 70.571 169.57 c
-70.571 169.57 67.465 163.499 66.949 158.564 c
-66.8419 157.176 68.497 155.764 68.9671 156.98 c
-closepath
-0.14 0.14 0.14 rgb
-F
-newpath
-69.1523 157.591 m
-72.8664 168.033 74.6412 172.115 77.506 177.351 c
-80.353 182.57 80.2407 186.021 78.153 183.462 c
-75.6112 180.313 71.6898 171.645 70.6908 169.465 c
-70.6908 169.465 67.7794 163.619 67.3192 159.092 c
-67.2198 157.734 68.7 156.395 69.1523 157.591 c
-closepath
-0.15 0.15 0.15 rgb
-F
-newpath
-69.3375 158.202 m
-73.0111 168.711 74.7459 172.388 77.3889 177.316 c
-80.0177 182.23 80.0611 185.657 78.1366 183.259 c
-75.7277 180.231 71.8761 171.686 70.8105 169.36 c
-70.8105 169.36 68.0939 163.739 67.6893 159.621 c
-67.5978 158.292 68.903 157.027 69.3375 158.202 c
-closepath
-0.16 0.16 0.16 rgb
-F
-newpath
-69.5226 158.813 m
-73.1559 169.389 74.8505 172.662 77.2718 177.281 c
-79.6824 181.89 79.8814 185.293 78.1202 183.055 c
-75.8443 180.148 72.0624 171.726 70.9302 169.255 c
-70.9302 169.255 68.4083 163.858 68.0594 160.15 c
-67.9757 158.85 69.106 157.659 69.5226 158.813 c
-closepath
-0.17 0.17 0.17 rgb
-F
-newpath
-69.7078 159.423 m
-73.3007 170.067 74.9552 172.935 77.1547 177.246 c
-79.347 181.55 79.7018 184.928 78.1038 182.851 c
-75.9608 180.066 72.2487 171.767 71.0499 169.151 c
-71.0499 169.151 68.7227 163.978 68.4296 160.678 c
-68.3536 159.408 69.309 158.291 69.7078 159.423 c
-closepath
-0.18 0.18 0.18 rgb
-F
-newpath
-69.8929 160.034 m
-73.4454 170.745 75.0599 173.209 77.0375 177.211 c
-79.0117 181.21 79.5222 184.564 78.0874 182.648 c
-76.0774 179.983 72.4351 171.807 71.1697 169.046 c
-71.1697 169.046 69.0372 164.098 68.7998 161.206 c
-68.7316 159.966 69.512 158.923 69.8929 160.034 c
-closepath
-0.19 0.19 0.19 rgb
-F
-newpath
-70.0781 160.645 m
-73.5902 171.423 75.1646 173.482 76.9204 177.176 c
-78.6764 180.87 79.3426 184.2 78.071 182.444 c
-76.1939 179.901 72.6214 171.848 71.2894 168.941 c
-71.2894 168.941 69.3516 164.218 69.1699 161.735 c
-69.1095 160.524 69.715 159.555 70.0781 160.645 c
-closepath
-0.2 0.2 0.2 rgb
-F
-newpath
-250.623 141.517 m
-252.711 147.421 252.495 162.469 247.167 172.189 c
-245.295 175.717 243.495 179.821 242.415 180.037 c
-241.263 180.253 239.175 177.949 239.391 177.589 c
-239.679 177.013 249.399 163.333 247.383 144.757 c
-247.239 143.245 250.119 140.149 250.623 141.517 c
-closepath
-0 0 0 rgb
-F
-newpath
-250.529 142.28 m
-252.555 147.998 252.282 162.66 247.186 171.943 c
-245.37 175.35 243.65 179.316 242.591 179.533 c
-241.469 179.746 239.466 177.511 239.666 177.165 c
-239.924 176.603 249.271 163.388 247.395 145.413 c
-247.264 143.925 250.041 140.957 250.529 142.28 c
-closepath
-0.015 0.015 0.015 rgb
-F
-newpath
-250.434 143.043 m
-252.399 148.576 252.07 162.85 247.205 171.697 c
-245.444 174.982 243.805 178.811 242.766 179.028 c
-241.675 179.24 239.757 177.073 239.941 176.741 c
-240.168 176.193 249.143 163.443 247.407 146.07 c
-247.29 144.605 249.963 141.765 250.434 143.043 c
-closepath
-0.03 0.03 0.03 rgb
-F
-newpath
-250.34 143.806 m
-252.244 149.153 251.857 163.04 247.225 171.45 c
-245.519 174.615 243.959 178.307 242.942 178.524 c
-241.881 178.733 240.047 176.634 240.216 176.317 c
-240.413 175.783 249.015 163.498 247.419 146.726 c
-247.315 145.285 249.885 142.573 250.34 143.806 c
-closepath
-0.045 0.045 0.045 rgb
-F
-newpath
-250.245 144.568 m
-252.088 149.73 251.644 163.231 247.244 171.204 c
-245.594 174.248 244.114 177.802 243.117 178.019 c
-242.087 178.226 240.338 176.196 240.491 175.893 c
-240.658 175.373 248.887 163.553 247.431 147.382 c
-247.341 145.966 249.807 143.381 250.245 144.568 c
-closepath
-0.06 0.06 0.06 rgb
-F
-newpath
-250.15 145.331 m
-251.932 150.307 251.431 163.421 247.263 170.958 c
-245.668 173.881 244.269 177.297 243.293 177.515 c
-242.293 177.72 240.629 175.758 240.766 175.469 c
-240.902 174.964 248.758 163.608 247.443 148.038 c
-247.366 146.646 249.729 144.189 250.15 145.331 c
-closepath
-0.075 0.075 0.075 rgb
-F
-newpath
-250.056 146.094 m
-251.776 150.885 251.218 163.612 247.282 170.712 c
-245.743 173.513 244.424 176.792 243.468 177.01 c
-242.499 177.213 240.92 175.32 241.041 175.046 c
-241.147 174.554 248.63 163.663 247.456 148.695 c
-247.392 147.326 249.651 144.996 250.056 146.094 c
-closepath
-0.09 0.09 0.09 rgb
-F
-newpath
-249.962 146.857 m
-251.62 151.462 251.006 163.803 247.301 170.465 c
-245.818 173.146 244.579 176.288 243.644 176.506 c
-242.705 176.706 241.21 174.882 241.316 174.622 c
-241.392 174.144 248.502 163.718 247.468 149.351 c
-247.417 148.006 249.573 145.804 249.962 146.857 c
-closepath
-0.105 0.105 0.105 rgb
-F
-newpath
-249.867 147.62 m
-251.465 152.039 250.793 163.993 247.321 170.219 c
-245.892 172.779 244.733 175.783 243.819 176.001 c
-242.911 176.2 241.501 174.443 241.591 174.198 c
-241.636 173.734 248.374 163.773 247.48 150.007 c
-247.443 148.686 249.495 146.612 249.867 147.62 c
-closepath
-0.12 0.12 0.12 rgb
-F
-newpath
-249.773 148.383 m
-251.309 152.616 250.58 164.184 247.34 169.973 c
-245.967 172.412 244.888 175.278 243.995 175.497 c
-243.117 175.693 241.792 174.005 241.866 173.774 c
-241.881 173.324 248.246 163.828 247.492 150.663 c
-247.468 149.366 249.417 147.42 249.773 148.383 c
-closepath
-0.135 0.135 0.135 rgb
-F
-newpath
-249.678 149.146 m
-251.153 153.194 250.367 164.374 247.359 169.727 c
-246.042 172.044 245.043 174.773 244.171 174.992 c
-243.324 175.186 242.083 173.567 242.142 173.35 c
-242.126 172.914 248.118 163.883 247.504 151.32 c
-247.493 150.047 249.34 148.228 249.678 149.146 c
-closepath
-0.15 0.15 0.15 rgb
-F
-newpath
-249.583 149.908 m
-250.997 153.771 250.155 164.564 247.378 169.48 c
-246.116 171.677 245.198 174.269 244.346 174.488 c
-243.53 174.68 242.373 173.129 242.417 172.926 c
-242.37 172.504 247.99 163.937 247.516 151.976 c
-247.519 150.727 249.262 149.036 249.583 149.908 c
-closepath
-0.165 0.165 0.165 rgb
-F
-newpath
-249.489 150.671 m
-250.841 154.348 249.942 164.755 247.397 169.234 c
-246.191 171.31 245.353 173.764 244.522 173.984 c
-243.736 174.173 242.664 172.691 242.692 172.502 c
-242.615 172.094 247.862 163.992 247.528 152.632 c
-247.544 151.407 249.184 149.844 249.489 150.671 c
-closepath
-0.18 0.18 0.18 rgb
-F
-newpath
-249.395 151.434 m
-250.686 154.925 249.729 164.945 247.417 168.988 c
-246.265 170.943 245.507 173.259 244.697 173.479 c
-243.942 173.667 242.955 172.252 242.967 172.078 c
-242.859 171.684 247.734 164.047 247.54 153.288 c
-247.57 152.087 249.106 150.652 249.395 151.434 c
-closepath
-0.195 0.195 0.195 rgb
-F
-newpath
-249.3 152.197 m
-250.53 155.503 249.516 165.136 247.436 168.742 c
-246.34 170.576 245.662 172.755 244.873 172.975 c
-244.148 173.16 243.245 171.814 243.242 171.654 c
-243.104 171.274 247.606 164.102 247.552 153.945 c
-247.595 152.767 249.028 151.46 249.3 152.197 c
-closepath
-0.21 0.21 0.21 rgb
-F
-newpath
-249.206 152.96 m
-250.374 156.08 249.304 165.327 247.455 168.495 c
-246.415 170.208 245.817 172.25 245.048 172.47 c
-244.354 172.653 243.536 171.376 243.517 171.23 c
-243.349 170.865 247.478 164.157 247.564 154.601 c
-247.621 153.447 248.95 152.268 249.206 152.96 c
-closepath
-0.225 0.225 0.225 rgb
-F
-newpath
-249.111 153.723 m
-250.218 156.657 249.091 165.517 247.474 168.249 c
-246.489 169.841 245.972 171.745 245.224 171.966 c
-244.56 172.147 243.827 170.938 243.792 170.807 c
-243.593 170.455 247.349 164.212 247.577 155.257 c
-247.646 154.127 248.872 153.075 249.111 153.723 c
-closepath
-0.24 0.24 0.24 rgb
-F
-newpath
-249.016 154.485 m
-250.062 157.234 248.878 165.708 247.493 168.003 c
-246.564 169.474 246.127 171.24 245.399 171.461 c
-244.766 171.64 244.118 170.5 244.067 170.383 c
-243.838 170.045 247.221 164.267 247.589 155.913 c
-247.672 154.808 248.794 153.883 249.016 154.485 c
-closepath
-0.255 0.255 0.255 rgb
-F
-newpath
-248.922 155.248 m
-249.907 157.812 248.666 165.898 247.513 167.757 c
-246.639 169.106 246.281 170.736 245.575 170.957 c
-244.972 171.133 244.409 170.061 244.342 169.959 c
-244.083 169.635 247.093 164.322 247.601 156.57 c
-247.697 155.488 248.716 154.691 248.922 155.248 c
-closepath
-0.27 0.27 0.27 rgb
-F
-newpath
-248.827 156.011 m
-249.751 158.389 248.453 166.089 247.532 167.51 c
-246.713 168.739 246.436 170.231 245.75 170.452 c
-245.178 170.627 244.699 169.623 244.617 169.535 c
-244.327 169.225 246.965 164.377 247.613 157.226 c
-247.723 156.168 248.638 155.499 248.827 156.011 c
-closepath
-0.285 0.285 0.285 rgb
-F
-newpath
-248.733 156.774 m
-249.595 158.966 248.24 166.279 247.551 167.264 c
-246.788 168.372 246.591 169.726 245.926 169.948 c
-245.384 170.12 244.99 169.185 244.892 169.111 c
-244.572 168.815 246.837 164.432 247.625 157.882 c
-247.748 156.848 248.56 156.307 248.733 156.774 c
-closepath
-0.3 0.3 0.3 rgb
-F
-newpath
-242.415 180.037 m
-232.191 194.005 218.943 198.541 220.311 194.149 c
-220.311 194.149 230.463 188.389 239.391 177.589 c
-241.119 175.501 243.999 177.877 242.415 180.037 c
-closepath
-0 0 0 rgb
-F
-newpath
-241.965 180.424 m
-232.041 193.919 219.071 198.335 220.426 194.123 c
-220.443 194.112 230.327 188.51 239.035 178.052 c
-240.713 176.037 243.501 178.338 241.965 180.424 c
-closepath
-0.015 0.015 0.015 rgb
-F
-newpath
-241.515 180.81 m
-231.891 193.833 219.198 198.129 220.54 194.097 c
-220.575 194.075 230.192 188.63 238.679 178.515 c
-240.307 176.572 243.004 178.798 241.515 180.81 c
-closepath
-0.03 0.03 0.03 rgb
-F
-newpath
-241.065 181.197 m
-231.741 193.746 219.326 197.923 220.655 194.071 c
-220.708 194.038 230.056 188.751 238.323 178.979 c
-239.901 177.108 242.506 179.259 241.065 181.197 c
-closepath
-0.045 0.045 0.045 rgb
-F
-newpath
-240.614 181.584 m
-231.591 193.66 219.453 197.717 220.769 194.045 c
-220.84 194.001 229.92 188.872 237.967 179.442 c
-239.495 177.644 242.009 179.719 240.614 181.584 c
-closepath
-0.06 0.06 0.06 rgb
-F
-newpath
-240.164 181.971 m
-231.44 193.574 219.581 197.512 220.883 194.019 c
-220.972 193.964 229.785 188.993 237.611 179.905 c
-239.089 178.179 241.511 180.18 240.164 181.971 c
-closepath
-0.075 0.075 0.075 rgb
-F
-newpath
-239.714 182.357 m
-231.29 193.488 219.708 197.306 220.998 193.993 c
-221.104 193.927 229.649 189.113 237.254 180.368 c
-238.683 178.715 241.013 180.641 239.714 182.357 c
-closepath
-0.09 0.09 0.09 rgb
-F
-newpath
-239.264 182.744 m
-231.14 193.401 219.836 197.1 221.113 193.967 c
-221.236 193.89 229.513 189.234 236.898 180.831 c
-238.277 179.251 240.516 181.101 239.264 182.744 c
-closepath
-0.105 0.105 0.105 rgb
-F
-newpath
-238.814 183.131 m
-230.99 193.315 219.963 196.894 221.227 193.941 c
-221.369 193.853 229.377 189.355 236.542 181.295 c
-237.871 179.786 240.018 181.562 238.814 183.131 c
-closepath
-0.12 0.12 0.12 rgb
-F
-newpath
-238.364 183.517 m
-230.84 193.229 220.091 196.688 221.342 193.915 c
-221.501 193.816 229.242 189.475 236.186 181.758 c
-237.465 180.322 239.521 182.022 238.364 183.517 c
-closepath
-0.135 0.135 0.135 rgb
-F
-newpath
-237.913 183.904 m
-230.69 193.143 220.219 196.482 221.456 193.889 c
-221.633 193.779 229.106 189.596 235.83 182.221 c
-237.059 180.858 239.023 182.483 237.913 183.904 c
-closepath
-0.15 0.15 0.15 rgb
-F
-newpath
-237.463 184.291 m
-230.54 193.056 220.346 196.276 221.57 193.864 c
-221.765 193.741 228.97 189.717 235.474 182.684 c
-236.652 181.393 238.525 182.944 237.463 184.291 c
-closepath
-0.165 0.165 0.165 rgb
-F
-newpath
-237.013 184.677 m
-230.39 192.97 220.474 196.07 221.685 193.838 c
-221.897 193.704 228.835 189.837 235.118 183.147 c
-236.246 181.929 238.028 183.404 237.013 184.677 c
-closepath
-0.18 0.18 0.18 rgb
-F
-newpath
-236.563 185.064 m
-230.24 192.884 220.601 195.864 221.799 193.812 c
-222.03 193.667 228.699 189.958 234.762 183.611 c
-235.84 182.464 237.53 183.865 236.563 185.064 c
-closepath
-0.195 0.195 0.195 rgb
-F
-newpath
-236.113 185.451 m
-230.09 192.798 220.729 195.658 221.914 193.786 c
-222.162 193.63 228.563 190.079 234.406 184.074 c
-235.434 183 237.033 184.325 236.113 185.451 c
-closepath
-0.21 0.21 0.21 rgb
-F
-newpath
-235.663 185.837 m
-229.939 192.711 220.856 195.452 222.029 193.76 c
-222.294 193.593 228.427 190.199 234.049 184.537 c
-235.028 183.536 236.535 184.786 235.663 185.837 c
-closepath
-0.225 0.225 0.225 rgb
-F
-newpath
-235.213 186.224 m
-229.789 192.625 220.984 195.247 222.143 193.734 c
-222.426 193.556 228.292 190.32 233.693 185 c
-234.622 184.071 236.037 185.247 235.213 186.224 c
-closepath
-0.24 0.24 0.24 rgb
-F
-newpath
-234.762 186.611 m
-229.639 192.539 221.111 195.041 222.257 193.708 c
-222.558 193.519 228.156 190.441 233.337 185.463 c
-234.216 184.607 235.54 185.707 234.762 186.611 c
-closepath
-0.255 0.255 0.255 rgb
-F
-newpath
-234.312 186.998 m
-229.489 192.452 221.239 194.835 222.372 193.682 c
-222.691 193.482 228.02 190.562 232.981 185.927 c
-233.81 185.143 235.042 186.168 234.312 186.998 c
-closepath
-0.27 0.27 0.27 rgb
-F
-newpath
-233.862 187.384 m
-229.339 192.366 221.366 194.629 222.486 193.656 c
-222.823 193.445 227.885 190.682 232.625 186.39 c
-233.404 185.678 234.545 186.628 233.862 187.384 c
-closepath
-0.285 0.285 0.285 rgb
-F
-newpath
-233.412 187.771 m
-229.189 192.28 221.494 194.423 222.601 193.63 c
-222.955 193.408 227.749 190.803 232.269 186.853 c
-232.998 186.214 234.047 187.089 233.412 187.771 c
-closepath
-0.3 0.3 0.3 rgb
-F
-newpath
-250.623 141.517 m
-250.767 135.253 244.863 119.269 242.631 119.845 c
-240.111 120.421 243.135 125.101 245.439 133.021 c
-246.375 136.333 247.095 144.469 247.383 144.757 c
-248.319 145.693 250.623 143.029 250.623 141.517 c
-closepath
-0 0 0 rgb
-F
-newpath
-250.439 140.995 m
-250.542 134.912 244.802 119.402 242.643 119.977 c
-240.221 120.544 243.19 125.123 245.457 132.906 c
-246.356 136.082 247.052 143.853 247.344 144.154 c
-248.257 145.081 250.49 142.627 250.439 140.995 c
-closepath
-0.02 0.02 0.02 rgb
-F
-newpath
-250.255 140.474 m
-250.317 134.572 244.741 119.535 242.654 120.109 c
-240.331 120.668 243.245 125.145 245.475 132.79 c
-246.336 135.832 247.009 143.237 247.305 143.551 c
-248.194 144.47 250.357 142.225 250.255 140.474 c
-closepath
-0.04 0.04 0.04 rgb
-F
-newpath
-250.071 139.952 m
-250.092 134.231 244.68 119.667 242.666 120.241 c
-240.441 120.791 243.301 125.167 245.493 132.674 c
-246.317 135.581 246.966 142.621 247.266 142.948 c
-248.132 143.858 250.225 141.823 250.071 139.952 c
-closepath
-0.06 0.06 0.06 rgb
-F
-newpath
-249.887 139.431 m
-249.866 133.89 244.619 119.8 242.677 120.373 c
-240.552 120.914 243.356 125.189 245.511 132.559 c
-246.297 135.331 246.923 142.005 247.228 142.346 c
-248.069 143.247 250.092 141.422 249.887 139.431 c
-closepath
-0.08 0.08 0.08 rgb
-F
-newpath
-249.703 138.909 m
-249.641 133.549 244.558 119.933 242.689 120.505 c
-240.662 121.037 243.411 125.211 245.529 132.443 c
-246.278 135.08 246.88 141.389 247.189 141.743 c
-248.007 142.635 249.959 141.02 249.703 138.909 c
-closepath
-0.1 0.1 0.1 rgb
-F
-newpath
-249.519 138.387 m
-249.416 133.209 244.496 120.065 242.7 120.637 c
-240.772 121.161 243.466 125.233 245.548 132.328 c
-246.259 134.83 246.838 140.773 247.15 141.14 c
-247.944 142.024 249.826 140.618 249.519 138.387 c
-closepath
-0.12 0.12 0.12 rgb
-F
-newpath
-249.335 137.866 m
-249.191 132.868 244.435 120.198 242.712 120.769 c
-240.882 121.284 243.521 125.255 245.566 132.212 c
-246.239 134.579 246.795 140.157 247.111 140.537 c
-247.882 141.412 249.693 140.216 249.335 137.866 c
-closepath
-0.14 0.14 0.14 rgb
-F
-newpath
-249.151 137.344 m
-248.966 132.527 244.374 120.331 242.723 120.901 c
-240.992 121.407 243.577 125.277 245.584 132.097 c
-246.22 134.329 246.752 139.541 247.072 139.934 c
-247.819 140.801 249.561 139.814 249.151 137.344 c
-closepath
-0.16 0.16 0.16 rgb
-F
-newpath
-248.967 136.823 m
-248.741 132.186 244.313 120.464 242.735 121.033 c
-241.102 121.531 243.632 125.299 245.602 131.981 c
-246.2 134.078 246.709 138.925 247.033 139.331 c
-247.757 140.189 249.428 139.412 248.967 136.823 c
-closepath
-0.18 0.18 0.18 rgb
-F
-newpath
-248.783 136.301 m
-248.516 131.846 244.252 120.596 242.746 121.165 c
-241.212 121.654 243.687 125.322 245.62 131.866 c
-246.181 133.827 246.666 138.309 246.995 138.729 c
-247.695 139.577 249.295 139.01 248.783 136.301 c
-closepath
-0.2 0.2 0.2 rgb
-F
-newpath
-248.599 135.779 m
-248.29 131.505 244.191 120.729 242.758 121.298 c
-241.323 121.777 243.742 125.344 245.638 131.751 c
-246.162 133.577 246.623 137.692 246.956 138.126 c
-247.632 138.966 249.162 138.609 248.599 135.779 c
-closepath
-0.22 0.22 0.22 rgb
-F
-newpath
-248.415 135.258 m
-248.065 131.164 244.13 120.862 242.77 121.43 c
-241.433 121.901 243.797 125.366 245.656 131.635 c
-246.142 133.326 246.58 137.076 246.917 137.523 c
-247.57 138.354 249.029 138.207 248.415 135.258 c
-closepath
-0.24 0.24 0.24 rgb
-F
-newpath
-248.231 134.736 m
-247.84 130.823 244.069 120.995 242.781 121.562 c
-241.543 122.024 243.853 125.388 245.674 131.52 c
-246.123 133.076 246.537 136.46 246.878 136.92 c
-247.507 137.743 248.897 137.805 248.231 134.736 c
-closepath
-0.26 0.26 0.26 rgb
-F
-newpath
-248.047 134.215 m
-247.615 130.482 244.008 121.128 242.793 121.694 c
-241.653 122.147 243.908 125.41 245.692 131.404 c
-246.103 132.825 246.494 135.844 246.839 136.317 c
-247.445 137.131 248.764 137.403 248.047 134.215 c
-closepath
-0.28 0.28 0.28 rgb
-F
-newpath
-247.863 133.693 m
-247.39 130.142 243.947 121.26 242.804 121.826 c
-241.763 122.271 243.963 125.432 245.71 131.288 c
-246.084 132.575 246.452 135.228 246.8 135.714 c
-247.382 136.52 248.631 137.001 247.863 133.693 c
-closepath
-0.3 0.3 0.3 rgb
-F
-newpath
-247.679 133.171 m
-247.165 129.801 243.885 121.393 242.816 121.958 c
-241.873 122.394 244.018 125.454 245.729 131.173 c
-246.065 132.324 246.409 134.612 246.761 135.111 c
-247.32 135.908 248.498 136.599 247.679 133.171 c
-closepath
-0.32 0.32 0.32 rgb
-F
-newpath
-247.495 132.65 m
-246.939 129.46 243.824 121.526 242.827 122.09 c
-241.984 122.517 244.073 125.476 245.747 131.057 c
-246.045 132.074 246.366 133.996 246.723 134.509 c
-247.257 135.297 248.365 136.198 247.495 132.65 c
-closepath
-0.34 0.34 0.34 rgb
-F
-newpath
-247.311 132.128 m
-246.714 129.12 243.763 121.659 242.839 122.222 c
-242.094 122.64 244.129 125.498 245.765 130.942 c
-246.026 131.823 246.323 133.38 246.684 133.906 c
-247.195 134.685 248.233 135.796 247.311 132.128 c
-closepath
-0.36 0.36 0.36 rgb
-F
-newpath
-247.127 131.607 m
-246.489 128.779 243.702 121.791 242.85 122.354 c
-242.204 122.764 244.184 125.52 245.783 130.826 c
-246.006 131.573 246.28 132.764 246.645 133.303 c
-247.132 134.074 248.1 135.394 247.127 131.607 c
-closepath
-0.38 0.38 0.38 rgb
-F
-newpath
-246.943 131.085 m
-246.264 128.438 243.641 121.924 242.862 122.486 c
-242.314 122.887 244.239 125.542 245.801 130.711 c
-245.987 131.322 246.237 132.148 246.606 132.7 c
-247.07 133.462 247.967 134.992 246.943 131.085 c
-closepath
-0.4 0.4 0.4 rgb
-F
-newpath
-228.663 179.245 m
-227.126 177.623 225.76 169.254 229.602 166.351 c
-233.445 163.533 240.191 168.742 240.191 171.731 c
-240.105 178.477 230.2 180.953 228.663 179.245 c
-closepath
-0 0 0 rgb
-F
-newpath
-228.8 179.105 m
-227.24 177.493 225.924 169.282 229.657 166.438 c
-233.389 163.675 240.006 168.711 240.041 171.717 c
-239.994 178.292 230.359 180.799 228.8 179.105 c
-closepath
-0.008 0.008 0.008 rgb
-F
-newpath
-228.937 178.964 m
-227.355 177.364 226.087 169.311 229.711 166.525 c
-233.332 163.817 239.82 168.68 239.89 171.703 c
-239.882 178.107 230.519 180.646 228.937 178.964 c
-closepath
-0.015 0.015 0.015 rgb
-F
-newpath
-229.073 178.824 m
-227.469 177.234 226.251 169.339 229.766 166.612 c
-233.276 163.959 239.635 168.649 239.74 171.689 c
-239.771 177.922 230.678 180.493 229.073 178.824 c
-closepath
-0.023 0.023 0.023 rgb
-F
-newpath
-229.21 178.683 m
-227.584 177.105 226.415 169.368 229.821 166.699 c
-233.219 164.1 239.45 168.619 239.589 171.675 c
-239.66 177.737 230.838 180.339 229.21 178.683 c
-closepath
-0.03 0.03 0.03 rgb
-F
-newpath
-229.347 178.543 m
-227.698 176.975 226.579 169.396 229.876 166.786 c
-233.163 164.242 239.265 168.588 239.439 171.661 c
-239.548 177.552 230.997 180.186 229.347 178.543 c
-closepath
-0.038 0.038 0.038 rgb
-F
-newpath
-229.484 178.403 m
-227.813 176.846 226.742 169.425 229.93 166.874 c
-233.106 164.384 239.079 168.557 239.288 171.647 c
-239.437 177.367 231.157 180.032 229.484 178.403 c
-closepath
-0.045 0.045 0.045 rgb
-F
-newpath
-229.621 178.262 m
-227.927 176.716 226.906 169.453 229.985 166.961 c
-233.049 164.526 238.894 168.526 239.138 171.633 c
-239.326 177.182 231.316 179.878 229.621 178.262 c
-closepath
-0.053 0.053 0.053 rgb
-F
-newpath
-229.757 178.122 m
-228.042 176.587 227.07 169.482 230.04 167.048 c
-232.993 164.668 238.709 168.495 238.987 171.619 c
-239.214 176.997 231.476 179.725 229.757 178.122 c
-closepath
-0.06 0.06 0.06 rgb
-F
-newpath
-229.894 177.981 m
-228.156 176.457 227.234 169.51 230.094 167.135 c
-232.937 164.81 238.524 168.464 238.837 171.605 c
-239.103 176.812 231.635 179.572 229.894 177.981 c
-closepath
-0.068 0.068 0.068 rgb
-F
-newpath
-230.031 177.841 m
-228.271 176.327 227.397 169.538 230.149 167.222 c
-232.88 164.952 238.339 168.434 238.686 171.591 c
-238.992 176.627 231.795 179.418 230.031 177.841 c
-closepath
-0.075 0.075 0.075 rgb
-F
-newpath
-230.168 177.701 m
-228.385 176.198 227.561 169.567 230.204 167.309 c
-232.824 165.093 238.153 168.403 238.536 171.577 c
-238.88 176.442 231.954 179.264 230.168 177.701 c
-closepath
-0.083 0.083 0.083 rgb
-F
-newpath
-230.305 177.56 m
-228.499 176.068 227.725 169.595 230.258 167.396 c
-232.767 165.235 237.968 168.372 238.386 171.563 c
-238.769 176.257 232.114 179.111 230.305 177.56 c
-closepath
-0.09 0.09 0.09 rgb
-F
-newpath
-230.441 177.42 m
-228.614 175.939 227.889 169.624 230.313 167.483 c
-232.711 165.377 237.783 168.341 238.235 171.549 c
-238.657 176.072 232.273 178.958 230.441 177.42 c
-closepath
-0.098 0.098 0.098 rgb
-F
-newpath
-230.578 177.279 m
-228.728 175.809 228.053 169.652 230.368 167.57 c
-232.654 165.519 237.597 168.31 238.085 171.535 c
-238.546 175.887 232.433 178.804 230.578 177.279 c
-closepath
-0.105 0.105 0.105 rgb
-F
-newpath
-230.715 177.139 m
-228.843 175.68 228.216 169.681 230.423 167.658 c
-232.598 165.661 237.412 168.279 237.934 171.521 c
-238.435 175.702 232.592 178.65 230.715 177.139 c
-closepath
-0.113 0.113 0.113 rgb
-F
-newpath
-230.852 176.999 m
-228.957 175.55 228.38 169.709 230.477 167.745 c
-232.541 165.803 237.227 168.248 237.784 171.507 c
-238.323 175.517 232.752 178.497 230.852 176.999 c
-closepath
-0.12 0.12 0.12 rgb
-F
-newpath
-230.989 176.858 m
-229.072 175.421 228.544 169.738 230.532 167.832 c
-232.484 165.944 237.042 168.218 237.633 171.493 c
-238.212 175.332 232.911 178.343 230.989 176.858 c
-closepath
-0.127 0.127 0.127 rgb
-F
-newpath
-231.125 176.718 m
-229.186 175.291 228.708 169.766 230.587 167.919 c
-232.428 166.086 236.856 168.187 237.483 171.479 c
-238.101 175.147 233.071 178.19 231.125 176.718 c
-closepath
-0.135 0.135 0.135 rgb
-F
-newpath
-231.262 176.577 m
-229.301 175.162 228.871 169.795 230.641 168.006 c
-232.372 166.228 236.671 168.156 237.332 171.465 c
-237.989 174.962 233.23 178.036 231.262 176.577 c
-closepath
-0.143 0.143 0.143 rgb
-F
-newpath
-231.399 176.437 m
-229.415 175.032 229.035 169.823 230.696 168.093 c
-232.315 166.37 236.486 168.125 237.182 171.451 c
-237.878 174.777 233.39 177.883 231.399 176.437 c
-closepath
-0.15 0.15 0.15 rgb
-F
-newpath
-228.303 110.413 m
-229.815 108.901 231.111 112.645 232.623 113.869 c
-234.135 115.093 236.583 117.757 241.479 117.757 c
-246.375 117.757 246.015 117.901 245.799 119.773 c
-245.655 121.573 244.215 121.429 239.895 120.781 c
-235.575 120.205 232.695 117.973 230.967 115.957 c
-229.311 114.013 227.439 111.277 228.303 110.413 c
-closepath
-0 0 0 rgb
-F
-newpath
-228.636 110.781 m
-230.095 109.331 231.339 112.901 232.841 114.087 c
-234.342 115.274 236.771 117.819 241.48 117.82 c
-246.19 117.82 245.895 117.947 245.688 119.759 c
-245.551 121.503 244.146 121.352 239.939 120.739 c
-235.733 120.196 232.911 118.037 231.228 116.091 c
-229.613 114.213 227.79 111.615 228.636 110.781 c
-closepath
-0.02 0.02 0.02 rgb
-F
-newpath
-228.969 111.148 m
-230.375 109.76 231.567 113.156 233.058 114.305 c
-234.549 115.454 236.959 117.882 241.482 117.883 c
-246.004 117.884 245.774 117.993 245.578 119.745 c
-245.446 121.433 244.077 121.275 239.984 120.697 c
-235.892 120.186 233.127 118.1 231.488 116.224 c
-229.915 114.413 228.142 111.954 228.969 111.148 c
-closepath
-0.04 0.04 0.04 rgb
-F
-newpath
-229.302 111.516 m
-230.655 110.19 231.796 113.412 233.276 114.523 c
-234.756 115.635 237.147 117.944 241.483 117.946 c
-245.819 117.947 245.654 118.039 245.467 119.731 c
-245.342 121.362 244.007 121.198 240.029 120.655 c
-236.05 120.176 233.343 118.164 231.749 116.358 c
-230.217 114.613 228.493 112.292 229.302 111.516 c
-closepath
-0.06 0.06 0.06 rgb
-F
-newpath
-229.634 111.884 m
-230.936 110.62 232.024 113.667 233.493 114.742 c
-234.962 115.816 237.335 118.006 241.484 118.008 c
-245.633 118.011 245.534 118.085 245.357 119.718 c
-245.238 121.292 243.938 121.121 240.073 120.613 c
-236.208 120.167 233.558 118.228 232.01 116.491 c
-230.519 114.813 228.845 112.631 229.634 111.884 c
-closepath
-0.08 0.08 0.08 rgb
-F
-newpath
-229.967 112.252 m
-231.216 111.049 232.252 113.923 233.711 114.96 c
-235.169 115.997 237.523 118.069 241.485 118.071 c
-245.448 118.074 245.413 118.132 245.246 119.704 c
-245.133 121.222 243.869 121.044 240.118 120.57 c
-236.367 120.158 233.774 118.291 232.271 116.625 c
-230.822 115.013 229.196 112.969 229.967 112.252 c
-closepath
-0.1 0.1 0.1 rgb
-F
-newpath
-230.3 112.619 m
-231.496 111.479 232.48 114.178 233.928 115.178 c
-235.376 116.178 237.711 118.131 241.486 118.134 c
-245.263 118.137 245.293 118.178 245.136 119.69 c
-245.029 121.152 243.8 120.967 240.162 120.528 c
-236.525 120.148 233.99 118.355 232.531 116.759 c
-231.124 115.213 229.547 113.308 230.3 112.619 c
-closepath
-0.12 0.12 0.12 rgb
-F
-newpath
-230.633 112.987 m
-231.776 111.909 232.709 114.434 234.146 115.396 c
-235.583 116.358 237.899 118.193 241.488 118.197 c
-245.077 118.201 245.173 118.224 245.025 119.676 c
-244.925 121.082 243.731 120.89 240.206 120.486 c
-236.683 120.139 234.206 118.419 232.792 116.892 c
-231.426 115.413 229.899 113.646 230.633 112.987 c
-closepath
-0.14 0.14 0.14 rgb
-F
-newpath
-230.966 113.355 m
-232.056 112.338 232.937 114.689 234.363 115.614 c
-235.79 116.539 238.087 118.256 241.489 118.26 c
-244.892 118.264 245.053 118.27 244.915 119.662 c
-244.82 121.011 243.661 120.813 240.251 120.444 c
-236.841 120.129 234.422 118.482 233.053 117.026 c
-231.728 115.613 230.25 113.985 230.966 113.355 c
-closepath
-0.16 0.16 0.16 rgb
-F
-newpath
-231.299 113.723 m
-232.336 112.768 233.165 114.945 234.581 115.832 c
-235.997 116.72 238.275 118.318 241.49 118.323 c
-244.706 118.328 244.932 118.316 244.804 119.648 c
-244.716 120.941 243.592 120.736 240.296 120.402 c
-237 120.119 234.638 118.546 233.314 117.159 c
-232.03 115.813 230.602 114.323 231.299 113.723 c
-closepath
-0.18 0.18 0.18 rgb
-F
-newpath
-231.632 114.09 m
-232.617 113.198 233.393 115.201 234.798 116.051 c
-236.203 116.9 238.462 118.381 241.492 118.385 c
-244.521 118.391 244.812 118.362 244.693 119.635 c
-244.611 120.871 243.523 120.659 240.34 120.36 c
-237.158 120.11 234.854 118.609 233.574 117.293 c
-232.332 116.012 230.953 114.661 231.632 114.09 c
-closepath
-0.2 0.2 0.2 rgb
-F
-newpath
-231.964 114.458 m
-232.897 113.627 233.622 115.456 235.016 116.269 c
-236.41 117.081 238.65 118.443 241.493 118.448 c
-244.336 118.454 244.692 118.408 244.583 119.621 c
-244.507 120.801 243.454 120.582 240.385 120.318 c
-237.316 120.101 235.069 118.673 233.835 117.427 c
-232.634 116.212 231.304 115 231.964 114.458 c
-closepath
-0.22 0.22 0.22 rgb
-F
-newpath
-232.297 114.826 m
-233.177 114.057 233.85 115.712 235.234 116.487 c
-236.617 117.262 238.838 118.505 241.494 118.511 c
-244.15 118.518 244.571 118.454 244.472 119.607 c
-244.403 120.731 243.385 120.505 240.429 120.276 c
-237.475 120.091 235.285 118.737 234.096 117.56 c
-232.936 116.412 231.656 115.338 232.297 114.826 c
-closepath
-0.24 0.24 0.24 rgb
-F
-newpath
-232.63 115.194 m
-233.457 114.486 234.078 115.967 235.451 116.705 c
-236.824 117.443 239.026 118.568 241.495 118.574 c
-243.965 118.581 244.451 118.5 244.362 119.593 c
-244.298 120.66 243.315 120.428 240.474 120.234 c
-237.633 120.081 235.501 118.8 234.357 117.694 c
-233.238 116.612 232.007 115.677 232.63 115.194 c
-closepath
-0.26 0.26 0.26 rgb
-F
-newpath
-232.963 115.562 m
-233.737 114.916 234.306 116.223 235.669 116.923 c
-237.031 117.623 239.214 118.63 241.497 118.637 c
-243.779 118.645 244.331 118.546 244.251 119.579 c
-244.194 120.59 243.246 120.351 240.518 120.192 c
-237.791 120.072 235.717 118.864 234.618 117.827 c
-233.54 116.812 232.359 116.015 232.963 115.562 c
-closepath
-0.28 0.28 0.28 rgb
-F
-newpath
-233.296 115.929 m
-234.017 115.346 234.535 116.478 235.886 117.141 c
-237.238 117.804 239.402 118.692 241.498 118.7 c
-243.594 118.708 244.21 118.592 244.141 119.565 c
-244.09 120.52 243.177 120.274 240.562 120.15 c
-237.949 120.062 235.933 118.928 234.878 117.961 c
-233.842 117.012 232.71 116.354 233.296 115.929 c
-closepath
-0.3 0.3 0.3 rgb
-F
-newpath
-233.629 116.297 m
-234.297 115.775 234.763 116.734 236.104 117.359 c
-237.445 117.985 239.59 118.755 241.499 118.763 c
-243.409 118.771 244.09 118.639 244.03 119.551 c
-243.985 120.45 243.108 120.197 240.607 120.107 c
-238.108 120.053 236.149 118.991 235.139 118.095 c
-234.145 117.212 233.061 116.692 233.629 116.297 c
-closepath
-0.32 0.32 0.32 rgb
-F
-newpath
-233.961 116.665 m
-234.578 116.205 234.991 116.989 236.321 117.578 c
-237.651 118.166 239.778 118.817 241.5 118.825 c
-243.223 118.835 243.97 118.685 243.92 119.538 c
-243.881 120.38 243.039 120.12 240.652 120.065 c
-238.266 120.044 236.364 119.055 235.4 118.228 c
-234.447 117.412 233.413 117.031 233.961 116.665 c
-closepath
-0.34 0.34 0.34 rgb
-F
-newpath
-234.294 117.033 m
-234.858 116.635 235.219 117.245 236.539 117.796 c
-237.858 118.347 239.966 118.879 241.501 118.888 c
-243.038 118.898 243.85 118.731 243.809 119.524 c
-243.777 120.309 242.969 120.043 240.696 120.023 c
-238.424 120.034 236.58 119.119 235.661 118.362 c
-234.749 117.612 233.764 117.369 234.294 117.033 c
-closepath
-0.36 0.36 0.36 rgb
-F
-newpath
-234.627 117.4 m
-235.138 117.064 235.448 117.5 236.756 118.014 c
-238.065 118.527 240.154 118.942 241.503 118.951 c
-242.852 118.962 243.729 118.777 243.699 119.51 c
-243.672 120.239 242.9 119.966 240.741 119.981 c
-238.583 120.024 236.796 119.182 235.921 118.495 c
-235.051 117.812 234.116 117.708 234.627 117.4 c
-closepath
-0.38 0.38 0.38 rgb
-F
-newpath
-234.96 117.768 m
-235.418 117.494 235.676 117.756 236.974 118.232 c
-238.272 118.708 240.342 119.004 241.504 119.014 c
-242.667 119.025 243.609 118.823 243.588 119.496 c
-243.568 120.169 242.831 119.889 240.785 119.939 c
-238.741 120.015 237.012 119.246 236.182 118.629 c
-235.353 118.012 234.467 118.046 234.96 117.768 c
-closepath
-0.4 0.4 0.4 rgb
-F
-newpath
-247.815 119.845 m
-247.815 117.541 252.495 116.749 256.959 116.101 c
-261.351 115.453 264.879 114.589 265.095 109.981 c
-265.311 105.445 264.159 102.205 266.175 102.565 c
-270.495 103.357 272.079 108.037 272.007 110.197 c
-272.007 112.357 268.839 116.245 263.151 118.405 c
-258.975 119.989 255.951 120.709 252.279 120.853 c
-247.383 121.069 247.815 119.845 247.815 119.845 c
-closepath
-0 0 0 rgb
-F
-newpath
-247.941 119.807 m
-247.953 117.568 252.584 116.836 256.99 116.168 c
-261.341 115.493 264.74 114.658 265.101 110.165 c
-265.445 105.75 264.247 102.652 266.236 102.976 c
-270.381 103.717 271.924 108.177 271.844 110.309 c
-271.829 112.461 268.726 116.219 263.11 118.348 c
-258.981 119.911 256 120.645 252.37 120.8 c
-247.616 121.017 247.932 119.848 247.941 119.807 c
-closepath
-0.015 0.015 0.015 rgb
-F
-newpath
-248.067 119.768 m
-248.09 117.595 252.673 116.923 257.02 116.234 c
-261.332 115.533 264.601 114.726 265.107 110.35 c
-265.578 106.055 264.335 103.098 266.297 103.387 c
-270.267 104.076 271.769 108.318 271.681 110.421 c
-271.651 112.564 268.612 116.193 263.069 118.29 c
-258.988 119.833 256.048 120.581 252.461 120.746 c
-247.849 120.964 248.049 119.851 248.067 119.768 c
-closepath
-0.03 0.03 0.03 rgb
-F
-newpath
-248.193 119.73 m
-248.228 117.622 252.762 117.01 257.051 116.301 c
-261.322 115.573 264.462 114.795 265.113 110.534 c
-265.712 106.361 264.424 103.545 266.358 103.798 c
-270.153 104.436 271.614 108.458 271.518 110.532 c
-271.474 112.668 268.499 116.167 263.029 118.233 c
-258.994 119.755 256.097 120.517 252.552 120.693 c
-248.082 120.912 248.166 119.854 248.193 119.73 c
-closepath
-0.045 0.045 0.045 rgb
-F
-newpath
-248.319 119.692 m
-248.366 117.649 252.851 117.097 257.081 116.367 c
-261.312 115.614 264.323 114.864 265.119 110.718 c
-265.845 106.666 264.512 103.992 266.419 104.209 c
-270.039 104.796 271.46 108.598 271.355 110.644 c
-271.296 112.772 268.385 116.141 262.988 118.175 c
-259 119.678 256.145 120.454 252.643 120.639 c
-248.315 120.859 248.284 119.857 248.319 119.692 c
-closepath
-0.06 0.06 0.06 rgb
-F
-newpath
-248.445 119.654 m
-248.504 117.675 252.94 117.185 257.112 116.434 c
-261.303 115.654 264.184 114.932 265.125 110.903 c
-265.979 106.971 264.6 104.438 266.48 104.62 c
-269.926 105.155 271.305 108.739 271.192 110.756 c
-271.118 112.876 268.272 116.116 262.947 118.118 c
-259.006 119.6 256.194 120.39 252.734 120.586 c
-248.548 120.807 248.401 119.859 248.445 119.654 c
-closepath
-0.075 0.075 0.075 rgb
-F
-newpath
-248.571 119.615 m
-248.642 117.702 253.029 117.272 257.142 116.501 c
-261.293 115.694 264.045 115.001 265.132 111.087 c
-266.112 107.277 264.688 104.885 266.541 105.031 c
-269.812 105.515 271.15 108.879 271.029 110.868 c
-270.94 112.979 268.158 116.09 262.906 118.06 c
-259.013 119.522 256.243 120.326 252.825 120.533 c
-248.78 120.755 248.518 119.862 248.571 119.615 c
-closepath
-0.09 0.09 0.09 rgb
-F
-newpath
-248.697 119.577 m
-248.779 117.729 253.118 117.359 257.173 116.567 c
-261.283 115.734 263.906 115.07 265.138 111.271 c
-266.246 107.582 264.776 105.332 266.602 105.442 c
-269.698 105.875 270.995 109.019 270.866 110.98 c
-270.763 113.083 268.045 116.064 262.865 118.003 c
-259.019 119.444 256.291 120.262 252.916 120.479 c
-249.013 120.702 248.635 119.865 248.697 119.577 c
-closepath
-0.105 0.105 0.105 rgb
-F
-newpath
-248.823 119.539 m
-248.917 117.756 253.207 117.446 257.203 116.634 c
-261.274 115.774 263.767 115.138 265.144 111.456 c
-266.379 107.887 264.865 105.779 266.663 105.853 c
-269.584 106.234 270.84 109.16 270.703 111.091 c
-270.585 113.187 267.931 116.038 262.825 117.945 c
-259.025 119.366 256.34 120.198 253.007 120.426 c
-249.246 120.65 248.752 119.868 248.823 119.539 c
-closepath
-0.12 0.12 0.12 rgb
-F
-newpath
-248.949 119.5 m
-249.055 117.783 253.296 117.533 257.234 116.7 c
-261.264 115.814 263.628 115.207 265.15 111.64 c
-266.513 108.192 264.953 106.225 266.724 106.264 c
-269.47 106.594 270.685 109.3 270.54 111.203 c
-270.407 113.291 267.818 116.012 262.784 117.888 c
-259.031 119.288 256.388 120.134 253.098 120.372 c
-249.479 120.597 248.869 119.871 248.949 119.5 c
-closepath
-0.135 0.135 0.135 rgb
-F
-newpath
-249.075 119.462 m
-249.193 117.81 253.385 117.62 257.265 116.767 c
-261.255 115.854 263.49 115.275 265.156 111.825 c
-266.646 108.497 265.041 106.672 266.784 106.675 c
-269.356 106.954 270.531 109.441 270.377 111.315 c
-270.229 113.395 267.704 115.986 262.743 117.83 c
-259.038 119.21 256.437 120.07 253.19 120.319 c
-249.712 120.545 248.987 119.874 249.075 119.462 c
-closepath
-0.15 0.15 0.15 rgb
-F
-newpath
-249.201 119.424 m
-249.33 117.837 253.475 117.707 257.295 116.834 c
-261.245 115.895 263.351 115.344 265.162 112.009 c
-266.78 108.803 265.129 107.119 266.845 107.086 c
-269.242 107.313 270.376 109.581 270.214 111.427 c
-270.052 113.498 267.591 115.96 262.702 117.773 c
-259.044 119.133 256.486 120.007 253.281 120.266 c
-249.945 120.493 249.104 119.877 249.201 119.424 c
-closepath
-0.165 0.165 0.165 rgb
-F
-newpath
-249.327 119.385 m
-249.468 117.864 253.564 117.794 257.326 116.9 c
-261.235 115.935 263.212 115.413 265.168 112.193 c
-266.914 109.108 265.217 107.565 266.906 107.497 c
-269.128 107.673 270.221 109.721 270.051 111.539 c
-269.874 113.602 267.478 115.934 262.661 117.716 c
-259.05 119.055 256.534 119.943 253.372 120.212 c
-250.178 120.44 249.221 119.88 249.327 119.385 c
-closepath
-0.18 0.18 0.18 rgb
-F
-newpath
-249.453 119.347 m
-249.606 117.891 253.653 117.881 257.356 116.967 c
-261.226 115.975 263.073 115.481 265.174 112.378 c
-267.047 109.413 265.306 108.012 266.967 107.908 c
-269.014 108.032 270.066 109.862 269.888 111.65 c
-269.696 113.706 267.364 115.908 262.621 117.658 c
-259.056 118.977 256.583 119.879 253.463 120.159 c
-250.411 120.388 249.338 119.883 249.453 119.347 c
-closepath
-0.195 0.195 0.195 rgb
-F
-newpath
-249.579 119.309 m
-249.743 117.918 253.742 117.968 257.387 117.033 c
-261.216 116.015 262.934 115.55 265.18 112.562 c
-267.181 109.718 265.394 108.459 267.028 108.319 c
-268.9 108.392 269.911 110.002 269.725 111.762 c
-269.518 113.81 267.251 115.882 262.58 117.601 c
-259.062 118.899 256.631 119.815 253.554 120.105 c
-250.644 120.335 249.455 119.886 249.579 119.309 c
-closepath
-0.21 0.21 0.21 rgb
-F
-newpath
-249.705 119.271 m
-249.881 117.945 253.831 118.055 257.417 117.1 c
-261.206 116.055 262.795 115.619 265.187 112.746 c
-267.314 110.024 265.482 108.906 267.089 108.73 c
-268.786 108.752 269.756 110.142 269.562 111.874 c
-269.341 113.913 267.137 115.856 262.539 117.543 c
-259.069 118.821 256.68 119.751 253.645 120.052 c
-250.876 120.283 249.572 119.889 249.705 119.271 c
-closepath
-0.225 0.225 0.225 rgb
-F
-newpath
-249.831 119.232 m
-250.019 117.971 253.92 118.143 257.448 117.167 c
-261.197 116.095 262.656 115.687 265.193 112.931 c
-267.448 110.329 265.57 109.352 267.15 109.141 c
-268.673 109.111 269.601 110.283 269.399 111.986 c
-269.163 114.017 267.024 115.831 262.498 117.486 c
-259.075 118.743 256.729 119.687 253.736 119.999 c
-251.109 120.231 249.689 119.891 249.831 119.232 c
-closepath
-0.24 0.24 0.24 rgb
-F
-newpath
-249.957 119.194 m
-250.157 117.998 254.009 118.23 257.478 117.233 c
-261.187 116.136 262.517 115.756 265.199 113.115 c
-267.581 110.634 265.658 109.799 267.211 109.552 c
-268.559 109.471 269.447 110.423 269.236 112.098 c
-268.985 114.121 266.91 115.805 262.457 117.428 c
-259.081 118.666 256.777 119.624 253.827 119.945 c
-251.342 120.178 249.807 119.894 249.957 119.194 c
-closepath
-0.255 0.255 0.255 rgb
-F
-newpath
-250.083 119.156 m
-250.295 118.025 254.098 118.317 257.509 117.3 c
-261.177 116.176 262.378 115.825 265.205 113.299 c
-267.715 110.94 265.747 110.246 267.272 109.963 c
-268.445 109.831 269.292 110.563 269.073 112.209 c
-268.807 114.225 266.797 115.779 262.417 117.371 c
-259.087 118.588 256.826 119.56 253.918 119.892 c
-251.575 120.126 249.924 119.897 250.083 119.156 c
-closepath
-0.27 0.27 0.27 rgb
-F
-newpath
-250.209 119.117 m
-250.432 118.052 254.187 118.404 257.539 117.366 c
-261.168 116.216 262.239 115.893 265.211 113.484 c
-267.848 111.245 265.835 110.692 267.333 110.374 c
-268.331 110.19 269.137 110.704 268.91 112.321 c
-268.63 114.328 266.683 115.753 262.376 117.313 c
-259.094 118.51 256.874 119.496 254.009 119.838 c
-251.808 120.073 250.041 119.9 250.209 119.117 c
-closepath
-0.285 0.285 0.285 rgb
-F
-newpath
-250.335 119.079 m
-250.57 118.079 254.276 118.491 257.57 117.433 c
-261.158 116.256 262.1 115.962 265.217 113.668 c
-267.982 111.55 265.923 111.139 267.394 110.785 c
-268.217 110.55 268.982 110.844 268.747 112.433 c
-268.452 114.432 266.57 115.727 262.335 117.256 c
-259.1 118.432 256.923 119.432 254.1 119.785 c
-252.041 120.021 250.158 119.903 250.335 119.079 c
-closepath
-0.3 0.3 0.3 rgb
-F
-newpath
-265.158 114.256 m
-266.805 113.256 266.511 112.197 267.57 111.491 c
-268.099 111.139 268.982 111.139 268.452 112.491 c
-267.746 114.079 267.158 114.962 263.511 116.433 c
-261.158 117.374 261.629 116.374 265.158 114.256 c
-closepath
-F
-newpath
-265.202 114.244 m
-266.808 113.268 266.521 112.235 267.555 111.547 c
-268.071 111.203 268.932 111.203 268.415 112.522 c
-267.726 114.071 267.153 114.933 263.595 116.368 c
-261.3 117.285 261.759 116.31 265.202 114.244 c
-closepath
-0.315 0.315 0.315 rgb
-F
-newpath
-265.245 114.232 m
-266.812 113.281 266.532 112.274 267.539 111.602 c
-268.042 111.267 268.882 111.267 268.378 112.553 c
-267.707 114.063 267.147 114.903 263.679 116.302 c
-261.441 117.197 261.889 116.246 265.245 114.232 c
-closepath
-0.33 0.33 0.33 rgb
-F
-newpath
-265.289 114.22 m
-266.815 113.293 266.542 112.312 267.524 111.658 c
-268.014 111.332 268.832 111.332 268.341 112.584 c
-267.687 114.056 267.142 114.874 263.763 116.236 c
-261.583 117.108 262.019 116.182 265.289 114.22 c
-closepath
-0.345 0.345 0.345 rgb
-F
-newpath
-265.333 114.207 m
-266.818 113.305 266.553 112.35 267.508 111.713 c
-267.985 111.396 268.782 111.396 268.304 112.615 c
-267.667 114.048 267.137 114.844 263.847 116.171 c
-261.725 117.02 262.149 116.118 265.333 114.207 c
-closepath
-0.36 0.36 0.36 rgb
-F
-newpath
-265.376 114.195 m
-266.822 113.318 266.563 112.388 267.493 111.769 c
-267.957 111.46 268.732 111.46 268.267 112.646 c
-267.647 114.04 267.131 114.815 263.931 116.105 c
-261.866 116.931 262.279 116.054 265.376 114.195 c
-closepath
-0.375 0.375 0.375 rgb
-F
-newpath
-265.42 114.183 m
-266.825 113.33 266.574 112.427 267.477 111.825 c
-267.929 111.524 268.682 111.524 268.23 112.678 c
-267.628 114.032 267.126 114.785 264.015 116.04 c
-262.008 116.843 262.41 115.99 265.42 114.183 c
-closepath
-0.39 0.39 0.39 rgb
-F
-newpath
-265.464 114.171 m
-266.828 113.342 266.585 112.465 267.462 111.88 c
-267.9 111.588 268.632 111.588 268.193 112.709 c
-267.608 114.024 267.121 114.756 264.099 115.975 c
-262.15 116.754 262.54 115.926 265.464 114.171 c
-closepath
-0.405 0.405 0.405 rgb
-F
-newpath
-265.507 114.159 m
-266.831 113.355 266.595 112.503 267.446 111.936 c
-267.872 111.653 268.582 111.653 268.156 112.74 c
-267.588 114.017 267.115 114.726 264.183 115.909 c
-262.291 116.666 262.67 115.862 265.507 114.159 c
-closepath
-0.42 0.42 0.42 rgb
-F
-newpath
-265.551 114.147 m
-266.835 113.367 266.605 112.542 267.431 111.991 c
-267.843 111.717 268.532 111.717 268.119 112.771 c
-267.568 114.009 267.11 114.697 264.267 115.843 c
-262.433 116.577 262.8 115.798 265.551 114.147 c
-closepath
-0.435 0.435 0.435 rgb
-F
-newpath
-265.594 114.134 m
-266.838 113.38 266.616 112.58 267.415 112.047 c
-267.815 111.781 268.482 111.781 268.081 112.802 c
-267.549 114.001 267.104 114.667 264.351 115.778 c
-262.574 116.488 262.93 115.734 265.594 114.134 c
-closepath
-0.45 0.45 0.45 rgb
-F
-newpath
-265.638 114.122 m
-266.841 113.392 266.626 112.618 267.4 112.103 c
-267.787 111.845 268.431 111.845 268.044 112.833 c
-267.529 113.993 267.099 114.638 264.435 115.713 c
-262.716 116.4 263.06 115.669 265.638 114.122 c
-closepath
-0.465 0.465 0.465 rgb
-F
-newpath
-265.682 114.11 m
-266.845 113.404 266.637 112.657 267.385 112.158 c
-267.758 111.909 268.381 111.909 268.007 112.864 c
-267.509 113.985 267.094 114.609 264.519 115.647 c
-262.858 116.311 263.19 115.605 265.682 114.11 c
-closepath
-0.48 0.48 0.48 rgb
-F
-newpath
-265.725 114.098 m
-266.848 113.417 266.647 112.695 267.369 112.214 c
-267.73 111.974 268.331 111.974 267.97 112.895 c
-267.489 113.978 267.088 114.579 264.603 115.581 c
-262.999 116.223 263.32 115.541 265.725 114.098 c
-closepath
-0.495 0.495 0.495 rgb
-F
-newpath
-265.769 114.086 m
-266.851 113.429 266.658 112.733 267.354 112.269 c
-267.701 112.038 268.281 112.038 267.933 112.926 c
-267.47 113.97 267.083 114.55 264.687 115.516 c
-263.141 116.134 263.45 115.477 265.769 114.086 c
-closepath
-0.51 0.51 0.51 rgb
-F
-newpath
-265.813 114.074 m
-266.854 113.441 266.669 112.771 267.338 112.325 c
-267.673 112.102 268.231 112.102 267.896 112.957 c
-267.45 113.962 267.078 114.52 264.771 115.451 c
-263.283 116.046 263.581 115.413 265.813 114.074 c
-closepath
-0.525 0.525 0.525 rgb
-F
-newpath
-265.856 114.062 m
-266.858 113.454 266.679 112.81 267.323 112.381 c
-267.645 112.166 268.181 112.166 267.859 112.989 c
-267.43 113.954 267.072 114.491 264.855 115.385 c
-263.424 115.957 263.711 115.349 265.856 114.062 c
-closepath
-0.54 0.54 0.54 rgb
-F
-newpath
-265.9 114.049 m
-266.861 113.466 266.69 112.848 267.307 112.436 c
-267.616 112.23 268.131 112.23 267.822 113.02 c
-267.41 113.946 267.067 114.461 264.939 115.32 c
-263.566 115.869 263.841 115.285 265.9 114.049 c
-closepath
-0.555 0.555 0.555 rgb
-F
-newpath
-265.944 114.037 m
-266.864 113.478 266.7 112.886 267.292 112.492 c
-267.588 112.295 268.081 112.295 267.785 113.051 c
-267.391 113.939 267.062 114.432 265.023 115.254 c
-263.708 115.78 263.971 115.221 265.944 114.037 c
-closepath
-0.57 0.57 0.57 rgb
-F
-newpath
-265.987 114.025 m
-266.868 113.491 266.711 112.925 267.276 112.547 c
-267.559 112.359 268.031 112.359 267.748 113.082 c
-267.371 113.931 267.056 114.402 265.107 115.188 c
-263.849 115.692 264.101 115.157 265.987 114.025 c
-closepath
-0.585 0.585 0.585 rgb
-F
-newpath
-266.031 114.013 m
-266.871 113.503 266.721 112.963 267.261 112.603 c
-267.531 112.423 267.981 112.423 267.711 113.113 c
-267.351 113.923 267.051 114.373 265.191 115.123 c
-263.991 115.603 264.231 115.093 266.031 114.013 c
-closepath
-0.6 0.6 0.6 rgb
-F
-%%PageTrailer
-%showpage
-%%Trailer
-end
-%%DocumentSuppliedResources: procset Linux-Sketch-Procset 1.0 2
-%%EOF

Index: Press-use/MDK/Makefile.am
===================================================================
RCS file: Press-use/MDK/Makefile.am
diff -N Press-use/MDK/Makefile.am
--- Press-use/MDK/Makefile.am   28 Jul 2003 18:17:59 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,30 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-# Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc.
-#
-# This file is free software; as a special exception the author gives
-# unlimited permission to copy and/or distribute it, with or without
-# modifications, as long as this notice is preserved.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-# $Id: Makefile.am,v 1.1 2003/07/28 18:17:59 opus Exp $
-
-SUBDIRS = img
-SUFFIXES = .html
-
-info_TEXINFOS = mdk.texi
-mdk_TEXINFOS = mdk_intro.texi mdk_ack.texi mdk_tut.texi mdk_gstart.texi \
-               mdk_mixvm.texi mdk_emacs.texi mdk_mixasm.texi mdk_bugs.texi \
-               mdk_index.texi mdk_gmixvm.texi mdk_install.texi \
-               mdk_mixguile.texi mdk_copying.texi mdk_findex.texi
-
-html_docs = mdk.html
-
-.texi.html:
-       $(MAKEINFO) --html $<
-
-.PHONY: html
-html: $(html_docs)

Index: Press-use/MDK/mdk.texi
===================================================================
RCS file: Press-use/MDK/mdk.texi
diff -N Press-use/MDK/mdk.texi
--- Press-use/MDK/mdk.texi      28 Jul 2003 18:17:59 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,276 +0,0 @@
-\input texinfo
address@hidden
address@hidden %**start of header
address@hidden mdk.info
address@hidden GNU MIX Development Kit (mdk)
address@hidden
address@hidden odd
address@hidden %**end of header
-
address@hidden GNU programming tools
address@hidden
-* MDK: (mdk).           The GNU MIX Development Kit.
address@hidden direntry
-
-
address@hidden UPDATED June, 2003
address@hidden EDITION 1.0.1
address@hidden VERSION 1.0.1
address@hidden JAO Jose Antonio Ortega Ruiz
address@hidden PHILIP Philip E. King
address@hidden PIETER Pieter E. J. Pareit
address@hidden separate
-
address@hidden
-This file documents the the GNU @sc{mdk} utilities for developing
-programs using Donald Knuth's MIX language.
-
-Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-
-Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License,
-Version 1.1 or any later version published by the Free Software
-Foundation; with no Invariant Sections, no Front-Cover Texts and
-no Back-Cover Texts.  A copy of the license is included in the
-section entitled "GNU Free Documentation License".
-
address@hidden
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
-
address@hidden ignore
-Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License,
-Version 1.1 or any later version published by the Free Software
-Foundation; with no Invariant Sections, no Front-Cover Texts and
-no Back-Cover Texts.  A copy of the license is included in the
-section entitled "GNU Free Documentation License".
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation
-approved by the Free Software Foundation.
address@hidden ifinfo
-
address@hidden
address@hidden GNU MDK
address@hidden GNU MIX Development Kit
address@hidden Edition @value{EDITION}, for GNU @sc{mdk} Version @value{VERSION}
address@hidden @value{UPDATED}
address@hidden by @value{JAO}
-
address@hidden
address@hidden 0pt plus 1filll
-Copyright @copyright{} 2000, 2001 Free Software Foundation, Inc.
-
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
-
-Permission is granted to copy, distribute and/or modify this
-document under the terms of the GNU Free Documentation License,
-Version 1.1 or any later version published by the Free Software
-Foundation; with no Invariant Sections, no Front-Cover Texts and
-no Back-Cover Texts.  A copy of the license is included in the
-section entitled "GNU Free Documentation License".
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the above conditions for modified versions,
-except that this permission notice may be stated in a translation
-approved by the Free Software Foundation.
address@hidden titlepage
-
address@hidden Top, Introduction, (dir), (dir)
-
address@hidden
-This file documents the GNU @sc{mdk} utilities to develop, run and debug
-programs written in the MIXAL programming language.  MIXAL is an
-assembler-like language for programming a virtual computer called
-MIX. They were created by Donald Knuth in the first volume of @cite{The
-Art of Computer Programming} (Addison Wesley, 1997).
-
-GNU @sc{mdk} is part of the GNU project.
-
-GNU @sc{mdk} was written by @value{JAO} and is released under the GNU
-General Public license (@pxref{Copying}), so that users are free to share
-and improve it.
-
address@hidden is the author of the Emacs @code{MIXAL} mode
-(@pxref{MIXAL mode}), and has also contributed many bug fixes.
-
address@hidden has contributed to this package development with many
-helpful discussions, as well as actual code (@pxref{GUD integration}).
-
address@hidden ifinfo
-
address@hidden
-* Introduction::
-* Acknowledgments::
-* Installing MDK::              Installing GNU MDK from the source tarball.
-* MIX and MIXAL tutorial::      Learn the innards of MIX and MIXAL.
-* Getting started::             Basic usage of the @sc{mdk} tools.
-* Emacs tools::                 Programming the MIX using Emacs.
-* mixasm::                      Invoking the MIXAL assembler.
-* mixvm::                       Invoking and using the MIX virtual machine.
-* gmixvm::                      Invoking and using the GTK+ virtual machine.
-* mixguile::                    Invoking and using the Scheme virtual machine.
-* Problems::                    Reporting bugs.
-* Copying::                     @sc{mdk} licensing terms.
-* Concept Index::               Index of concepts.
-* Instructions and commands::   Index of MIXAL instructions and MIXVM commands.
-
address@hidden
- --- The Detailed Node Listing ---
-
-Installing @sc{mdk}
-
-* Download::
-* Requirements::
-* Basic installation::
-* Emacs support::
-* Special configure flags::
-* Supported platforms::
-
-MIX and MIXAL tutorial
-
-* The MIX computer::            Architecture and instruction set
-                                of the MIX computer.
-* MIXAL::                       The MIX assembly language.
-
-The MIX computer
-
-* MIX architecture::
-* MIX instruction set::
-
-MIX instruction set
-
-* Instruction structure::
-* Loading operators::
-* Storing operators::
-* Arithmetic operators::
-* Address transfer operators::
-* Comparison operators::
-* Jump operators::
-* Input-output operators::
-* Conversion operators::
-* Shift operators::
-* Miscellaneous operators::
-* Execution times::
-
-MIXAL
-
-* Basic structure::             Writing basic MIXAL programs.
-* MIXAL directives::            Assembler directives.
-* Expressions::                 Evaluation of expressions.
-* W-expressions::               Evaluation of w-expressions.
-* Local symbols::               Special symbol table entries.
-* Literal constants::           Specifying an immediate operand.
-
-Getting started
-
-* Writing a source file::       A sample MIXAL source file.
-* Compiling::                   Using @code{mixasm} to compile source
-                                files into binary format.
-* Running the program::         Running and debugging your programs.
-* Using mixguile::              Using the Scheme interpreter to run and
-                                debug your programs.
-* Using Scheme in mixvm and gmixvm::
-
-Running the program
-
-* Non-interactive mode::        Running your programs non-interactively.
-* Interactive mode::            Running programs interactively.
-* Debugging::                   Commands for debugging your programs.
-
-Using @code{mixguile}
-
-* The mixguile shell::          Using the Scheme MIX virtual machine.
-* Additional functions::        Scheme functions accessing the VM.
-* Defining new functions::      Defining your own Scheme functions.
-* Hook functions::              Using command and break hook functions.
-* Scheme scripts::
-
-Hook functions
-
-* Command hooks::
-* Break hooks::
-
-Emacs tools
-
-* MIXAL mode::                  Editing MIXAL files.
-* GUD integration::             Invoking @code{mixvm} within Emacs.
-
-MIXAL mode
-
-* Basics::                      Editing code, font locking and indentation.
-* Help system::                 Using the interactive help system.
-* Compiling and running::       Invoking compiler and/or virtual machine.
-
address@hidden, the MIXAL assembler
-
-* Invoking @code{mixasm}::      @code{mixasm} options
-
address@hidden, the MIX computer simulator
-
-* Invocation::                  Options when invoking @code{mixvm}.
-* Commands::                    Commands available in interactive mode.
-* Devices::                     MIX block devices implementation.
-
-Interactive commands
-
-* File commands::               Loading and executing programs.
-* Debug commands::              Debugging programs.
-* State commands::              Inspecting the virtual machine state.
-* Configuration commands::      Changing and storing mixvm settings.
-* Scheme commands::
-
address@hidden, the GTK virtual machine
-
-* Invoking @code{gmixvm}::      Invoking the GTK+ interface.
-* MIXVM console::               Using @code{mixvm} commands.
-* MIX virtual machine::         The MIX virtual machine window.
-* MIXAL source view::           Viewing the MIXAL source code.
-* MIX devices view::            Device output.
-* Menu and status bars::        Available menu commands.
-
address@hidden, the Scheme virtual machine
-
-* Invoking mixguile::           Command line options.
-* Scheme functions reference::  Scheme functions accessing the VM.
-
-Scheme functions reference
-
-* mixvm wrappers::              Functions invoking mixvm commands.
-* Hooks::                       Adding hooks to mixvm commands.
-* Additional VM functions::     Functions accessing the MIX virtual machine.
-
-Copying
-
-* GNU General Public License::
-* GNU Free Documentation License::
-
address@hidden detailmenu
address@hidden menu
-
address@hidden mdk_intro.texi
address@hidden mdk_ack.texi
address@hidden mdk_install.texi
address@hidden mdk_tut.texi
address@hidden mdk_gstart.texi
address@hidden mdk_emacs.texi
address@hidden mdk_mixasm.texi
address@hidden mdk_mixvm.texi
address@hidden mdk_gmixvm.texi
address@hidden mdk_mixguile.texi
address@hidden mdk_bugs.texi
address@hidden mdk_copying.texi
address@hidden mdk_index.texi
address@hidden mdk_findex.texi
-
address@hidden
address@hidden
address@hidden
-
-$Id: mdk.texi,v 1.1 2003/07/28 18:17:59 opus Exp $

Index: Press-use/MDK/mdk_ack.texi
===================================================================
RCS file: Press-use/MDK/mdk_ack.texi
diff -N Press-use/MDK/mdk_ack.texi
--- Press-use/MDK/mdk_ack.texi  28 Jul 2003 18:18:00 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,87 +0,0 @@
address@hidden -*-texinfo-*-
address@hidden This is part of the GNU MDK Reference Manual.
address@hidden Copyright (C) 2000, 2001, 2002, 2003
address@hidden   Free Software Foundation, Inc.
address@hidden See the file mdk.texi for copying conditions.
-
address@hidden $Id: mdk_ack.texi,v 1.1 2003/07/28 18:18:00 opus Exp $
-
address@hidden Acknowledgments, Installing MDK, Introduction, Top
address@hidden  node-name,  next,  previous,  up
address@hidden Acknowledgements
-
-Many people have contributed to @sc{mdk} by reporting problems,
-suggesting various improvements, or submitting actual code. Here is a
-list of these people. Help me keep this list complete and up to date
-by sending email to (@email{jao@@gnu.org}).
-
address@hidden @bullet
address@hidden Richard Stallman (@email{rms@@gnu.org})
-suggested various improvements to the documentation.
-
address@hidden Philip Ellis King (@email{pking@@pdq.net})
-provided MIXAL test programs pinpointing bugs in the first @sc{mdk}
-release, and useful comments as well. Philip has also contributed to
-the Emacs port of @code{mixvm} and influenced the @code{gmixvm} GUI
-design with insightful comments and prototypes.
-
address@hidden Pieter E. J. Pareit (@email{pieter.pareit@@skynet.be})
-is the author of the Emacs MIXAL mode, and has also contributed many
-bug fixes.
-
address@hidden Agustin Navarro (@email{anp@@cantv.net})
-tested the installation on Mandrake and Red Hat and helped debug the
-package configurations. He created and maintains the @sc{mdk} Red Hat
-and Mandrake packages.
-
address@hidden Francesc Xavier Noria (@email{fxn@@retemail.es})
-kindly and thoroughly reviewed the @sc{mdk} documentation, providing
-insightful advice.
-
address@hidden Ying-Chieh Liao (@email{ijliao@@csie.nctu.edu.tw})
-tested @sc{mdk} on a FreeBSD system, and developed and maintains a port for
-it.
-
address@hidden Adrian Bunk (@email{bunk@@fs.tum.de})
-created and maintained the @sc{mdk} Debian packages.
-
address@hidden Baruch Even (@email{baruch@@debian.org})
-is the current maintainer of the official Debian packages.
-
address@hidden Nelson H. F. Beebe (@email{beebe@@math.utah.edu})
-has tested @sc{mdk} on a variety of Unix platforms, suggesting portability
-enhancements to the source code.
-
address@hidden Eli Bendersky (@email{spur4444@@yahoo.com})
- reported several bugs in the documentation.
-
address@hidden Ronald Cole (@email{ronald@@forte-intl.com})
-created RPM packages for version 1.0.
-
address@hidden Christoph von Nathusius (@email{nathusiu@@gmx.net})
-tested @sc{mdk} on Windows/Cygwin.
-
address@hidden Stephen Ramsay (@email{sjr3a@@virginia.edu})
-tested @sc{mdk} on Sun/Solaris.
-
address@hidden Johan Swanljung (@email{johanswa@@yahoo.com})
-tested @sc{mdk} on Mac OS X, and helped fix the configuration process
-to support this platform.
-
address@hidden Jason Uhlenkott
-also reported the pmem problem.
-
address@hidden Andrew Hood (@email{ajhood@@fl.net.au})
-reported a bug in @code{gmixvm} initialization.
-
address@hidden Radu Butnaru (@email{rbb@@email.ro})
-reported a bug in @code{mixvm}'s MOVE implementation.
-
address@hidden Milan Bella (@email{milanbella@@hotmail.com})
-reported a bug in the @sc{mdk} documentation.
-
address@hidden @sc{mdk} was inspired by Darius Bacon's
address@hidden://www.accesscom.com/~darius/, MIXAL program}.
-
address@hidden itemize
-

Index: Press-use/MDK/mdk_bugs.texi
===================================================================
RCS file: Press-use/MDK/mdk_bugs.texi
diff -N Press-use/MDK/mdk_bugs.texi
--- Press-use/MDK/mdk_bugs.texi 28 Jul 2003 18:18:00 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,24 +0,0 @@
address@hidden -*-texinfo-*-
address@hidden This is part of the GNU MDK Reference Manual.
address@hidden Copyright (C) 2000, 2001, 2003
address@hidden   Free Software Foundation, Inc.
address@hidden See the file mdk.texi for copying conditions.
-
address@hidden $Id: mdk_bugs.texi,v 1.1 2003/07/28 18:18:00 opus Exp $
-
address@hidden Problems, Copying, mixguile, Top
address@hidden Reporting Bugs
address@hidden bugs
address@hidden problems
address@hidden questions
address@hidden suggestions
-
-If you have any questions, comments or suggestions, please send
-electronic mail to @email{jao@@gnu.org, the author}.
-
-If you find a bug in @sc{mdk}, please send electronic mail to
address@hidden@@gnu.org, the @sc{mdk} bug list}.
-
-In your report, please include the version number, which you can find by
-running @address@hidden --version}}.  Also include in your message the
-output that the program produced and the output you expected.

Index: Press-use/MDK/mdk_copying.texi
===================================================================
RCS file: Press-use/MDK/mdk_copying.texi
diff -N Press-use/MDK/mdk_copying.texi
--- Press-use/MDK/mdk_copying.texi      5 May 2005 19:37:09 -0000       1.2
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,816 +0,0 @@
address@hidden Copying, Concept Index, Problems, Top
address@hidden Copying
-
address@hidden
-* GNU General Public License::
-* GNU Free Documentation License::
address@hidden menu
-
-GNU MDK is distributed under the GNU General Public License (GPL) and
-this manual under the GNU Free Documentation License (GFDL).
-
address@hidden GNU General Public License, GNU Free Documentation License, 
Copying, Copying
address@hidden GNU General Public License
address@hidden GPL, GNU General Public License
-
address@hidden
-
address@hidden Version 2, June 1991
-
address@hidden
-Copyright @copyright{} 1989, 1991, 2003 Free Software Foundation, Inc.
-675 Mass Ave, Cambridge, MA 02139, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
address@hidden display
-
address@hidden Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software---to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
address@hidden
address@hidden TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
address@hidden iftex
address@hidden
address@hidden TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
address@hidden ifinfo
-
address@hidden
address@hidden
-This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The ``Program'', below,
-refers to any such program or work, and a ``work based on the Program''
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term ``modification''.)  Each licensee is addressed as ``you''.
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
address@hidden
-You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
address@hidden
-You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
address@hidden a
address@hidden
-You must cause the modified files to carry prominent notices
-stating that you changed the files and the date of any change.
-
address@hidden
-You must cause any work that you distribute or publish, that in
-whole or in part contains or is derived from the Program or any
-part thereof, to be licensed as a whole at no charge to all third
-parties under the terms of this License.
-
address@hidden
-If the modified program normally reads commands interactively
-when run, you must cause it, when started running for such
-interactive use in the most ordinary way, to print or display an
-announcement including an appropriate copyright notice and a
-notice that there is no warranty (or else, saying that you provide
-a warranty) and that users may redistribute the program under
-these conditions, and telling the user how to view a copy of this
-License.  (Exception: if the Program itself is interactive but
-does not normally print such an announcement, your work based on
-the Program is not required to print an announcement.)
address@hidden enumerate
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
address@hidden
-You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
address@hidden a
address@hidden
-Accompany it with the complete corresponding machine-readable
-source code, which must be distributed under the terms of Sections
-1 and 2 above on a medium customarily used for software interchange; or,
-
address@hidden
-Accompany it with a written offer, valid for at least three
-years, to give any third party, for a charge no more than your
-cost of physically performing source distribution, a complete
-machine-readable copy of the corresponding source code, to be
-distributed under the terms of Sections 1 and 2 above on a medium
-customarily used for software interchange; or,
-
address@hidden
-Accompany it with the information you received as to the offer
-to distribute corresponding source code.  (This alternative is
-allowed only for noncommercial distribution and only if you
-received the program in object code or executable form with such
-an offer, in accord with Subsection b above.)
address@hidden enumerate
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
address@hidden
-You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
address@hidden
-You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
address@hidden
-Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
address@hidden
-If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
address@hidden
-If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
address@hidden
-The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and ``any
-later version'', you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
address@hidden
-If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
address@hidden
address@hidden NO WARRANTY
address@hidden iftex
address@hidden
address@hidden NO WARRANTY
address@hidden ifinfo
-
address@hidden
-BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
address@hidden
-IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
address@hidden enumerate
-
address@hidden
address@hidden END OF TERMS AND CONDITIONS
address@hidden iftex
address@hidden
address@hidden END OF TERMS AND CONDITIONS
address@hidden ifinfo
-
address@hidden
address@hidden How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the ``copyright'' line and a pointer to where the full notice is found.
-
address@hidden
address@hidden line to give the program's name and an idea of what it does.}
-Copyright (C) address@hidden  @var{name of author}
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
address@hidden smallexample
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
address@hidden
-Gnomovision version 69, Copyright (C) address@hidden @var{name of author}
-Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
-type `show w'.  This is free software, and you are welcome
-to redistribute it under certain conditions; type `show c'
-for details.
address@hidden smallexample
-
-The hypothetical commands @samp{show w} and @samp{show c} should show
-the appropriate parts of the General Public License.  Of course, the
-commands you use may be called something other than @samp{show w} and
address@hidden c}; they could even be mouse-clicks or menu items---whatever
-suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a ``copyright disclaimer'' for the program, if
-necessary.  Here is a sample; alter the names:
-
address@hidden
address@hidden
-Yoyodyne, Inc., hereby disclaims all copyright
-interest in the program `Gnomovision'
-(which makes passes at compilers) written
-by James Hacker.
-
address@hidden of Ty Coon}, 1 April 1989
-Ty Coon, President of Vice
address@hidden group
address@hidden smallexample
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
-
address@hidden
-
-
address@hidden GNU Free Documentation License,  , GNU General Public License, 
Copying
address@hidden GNU Free Documentation License
-
address@hidden FDL, GNU Free Documentation License
address@hidden Version 1.1, March 2000
-
address@hidden
-Copyright @copyright{} 2000 Free Software Foundation, Inc.
-51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
address@hidden display
-
address@hidden 0
address@hidden
-PREAMBLE
-
-The purpose of this License is to make a manual, textbook, or other
-written document @dfn{free} in the sense of freedom: to assure everyone
-the effective freedom to copy and redistribute it, with or without
-modifying it, either commercially or noncommercially.  Secondarily,
-this License preserves for the author and publisher a way to get
-credit for their work, while not being considered responsible for
-modifications made by others.
-
-This License is a kind of ``copyleft'', which means that derivative
-works of the document must themselves be free in the same sense.  It
-complements the GNU General Public License, which is a copyleft
-license designed for free software.
-
-We have designed this License in order to use it for manuals for free
-software, because free software needs free documentation: a free
-program should come with manuals providing the same freedoms that the
-software does.  But this License is not limited to software manuals;
-it can be used for any textual work, regardless of subject matter or
-whether it is published as a printed book.  We recommend this License
-principally for works whose purpose is instruction or reference.
-
address@hidden
-APPLICABILITY AND DEFINITIONS
-
-This License applies to any manual or other work that contains a
-notice placed by the copyright holder saying it can be distributed
-under the terms of this License.  The ``Document'', below, refers to any
-such manual or work.  Any member of the public is a licensee, and is
-addressed as ``you''.
-
-A ``Modified Version'' of the Document means any work containing the
-Document or a portion of it, either copied verbatim, or with
-modifications and/or translated into another language.
-
-A ``Secondary Section'' is a named appendix or a front-matter section of
-the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall subject
-(or to related matters) and contains nothing that could fall directly
-within that overall subject.  (For example, if the Document is in part a
-textbook of mathematics, a Secondary Section may not explain any
-mathematics.)  The relationship could be a matter of historical
-connection with the subject or with related matters, or of legal,
-commercial, philosophical, ethical or political position regarding
-them.
-
-The ``Invariant Sections'' are certain Secondary Sections whose titles
-are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License.
-
-The ``Cover Texts'' are certain short passages of text that are listed,
-as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License.
-
-A ``Transparent'' copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, whose contents can be viewed and edited directly and
-straightforwardly with generic text editors or (for images composed of
-pixels) generic paint programs or (for drawings) some widely available
-drawing editor, and that is suitable for input to text formatters or
-for automatic translation to a variety of formats suitable for input
-to text formatters.  A copy made in an otherwise Transparent file
-format whose markup has been designed to thwart or discourage
-subsequent modification by readers is not Transparent.  A copy that is
-not ``Transparent'' is called ``Opaque''.
-
-Examples of suitable formats for Transparent copies include plain
address@hidden without markup, Texinfo input format, address@hidden input 
format,
address@hidden or @acronym{XML} using a publicly available
address@hidden, and standard-conforming simple @acronym{HTML} designed
-for human modification.  Opaque formats include PostScript,
address@hidden, proprietary formats that can be read and edited only by
-proprietary word processors, @acronym{SGML} or @acronym{XML} for which
-the @acronym{DTD} and/or processing tools are not generally available,
-and the machine-generated @acronym{HTML} produced by some word
-processors for output purposes only.
-
-The ``Title Page'' means, for a printed book, the title page itself,
-plus such following pages as are needed to hold, legibly, the material
-this License requires to appear in the title page.  For works in
-formats which do not have any title page as such, ``Title Page'' means
-the text near the most prominent appearance of the work's title,
-preceding the beginning of the body of the text.
-
address@hidden
-VERBATIM COPYING
-
-You may copy and distribute the Document in any medium, either
-commercially or noncommercially, provided that this License, the
-copyright notices, and the license notice saying this License applies
-to the Document are reproduced in all copies, and that you add no other
-conditions whatsoever to those of this License.  You may not use
-technical measures to obstruct or control the reading or further
-copying of the copies you make or distribute.  However, you may accept
-compensation in exchange for copies.  If you distribute a large enough
-number of copies you must also follow the conditions in section 3.
-
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-
address@hidden
-COPYING IN QUANTITY
-
-If you publish printed copies of the Document numbering more than 100,
-and the Document's license notice requires Cover Texts, you must enclose
-the copies in covers that carry, clearly and legibly, all these Cover
-Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
-the back cover.  Both covers must also clearly and legibly identify
-you as the publisher of these copies.  The front cover must present
-the full title with all words of the title equally prominent and
-visible.  You may add other material on the covers in addition.
-Copying with changes limited to the covers, as long as they preserve
-the title of the Document and satisfy these conditions, can be treated
-as verbatim copying in other respects.
-
-If the required texts for either cover are too voluminous to fit
-legibly, you should put the first ones listed (as many as fit
-reasonably) on the actual cover, and continue the rest onto adjacent
-pages.
-
-If you publish or distribute Opaque copies of the Document numbering
-more than 100, you must either include a machine-readable Transparent
-copy along with each Opaque copy, or state in or with each Opaque copy
-a publicly-accessible computer-network location containing a complete
-Transparent copy of the Document, free of added material, which the
-general network-using public has access to download anonymously at no
-charge using public-standard network protocols.  If you use the latter
-option, you must take reasonably prudent steps, when you begin
-distribution of Opaque copies in quantity, to ensure that this
-Transparent copy will remain thus accessible at the stated location
-until at least one year after the last time you distribute an Opaque
-copy (directly or through your agents or retailers) of that edition to
-the public.
-
-It is requested, but not required, that you contact the authors of the
-Document well before redistributing any large number of copies, to give
-them a chance to provide you with an updated version of the Document.
-
address@hidden
-MODIFICATIONS
-
-You may copy and distribute a Modified Version of the Document under
-the conditions of sections 2 and 3 above, provided that you release
-the Modified Version under precisely this License, with the Modified
-Version filling the role of the Document, thus licensing distribution
-and modification of the Modified Version to whoever possesses a copy
-of it.  In addition, you must do these things in the Modified Version:
-
address@hidden A
address@hidden
-Use in the Title Page (and on the covers, if any) a title distinct
-from that of the Document, and from those of previous versions
-(which should, if there were any, be listed in the History section
-of the Document).  You may use the same title as a previous version
-if the original publisher of that version gives permission.
-
address@hidden
-List on the Title Page, as authors, one or more persons or entities
-responsible for authorship of the modifications in the Modified
-Version, together with at least five of the principal authors of the
-Document (all of its principal authors, if it has less than five).
-
address@hidden
-State on the Title page the name of the publisher of the
-Modified Version, as the publisher.
-
address@hidden
-Preserve all the copyright notices of the Document.
-
address@hidden
-Add an appropriate copyright notice for your modifications
-adjacent to the other copyright notices.
-
address@hidden
-Include, immediately after the copyright notices, a license notice
-giving the public permission to use the Modified Version under the
-terms of this License, in the form shown in the Addendum below.
-
address@hidden
-Preserve in that license notice the full lists of Invariant Sections
-and required Cover Texts given in the Document's license notice.
-
address@hidden
-Include an unaltered copy of this License.
-
address@hidden
-Preserve the section entitled ``History'', and its title, and add to
-it an item stating at least the title, year, new authors, and
-publisher of the Modified Version as given on the Title Page.  If
-there is no section entitled ``History'' in the Document, create one
-stating the title, year, authors, and publisher of the Document as
-given on its Title Page, then add an item describing the Modified
-Version as stated in the previous sentence.
-
address@hidden
-Preserve the network location, if any, given in the Document for
-public access to a Transparent copy of the Document, and likewise
-the network locations given in the Document for previous versions
-it was based on.  These may be placed in the ``History'' section.
-You may omit a network location for a work that was published at
-least four years before the Document itself, or if the original
-publisher of the version it refers to gives permission.
-
address@hidden
-In any section entitled ``Acknowledgments'' or ``Dedications'',
-preserve the section's title, and preserve in the section all the
-substance and tone of each of the contributor acknowledgments
-and/or dedications given therein.
-
address@hidden
-Preserve all the Invariant Sections of the Document,
-unaltered in their text and in their titles.  Section numbers
-or the equivalent are not considered part of the section titles.
-
address@hidden
-Delete any section entitled ``Endorsements''.  Such a section
-may not be included in the Modified Version.
-
address@hidden
-Do not retitle any existing section as ``Endorsements''
-or to conflict in title with any Invariant Section.
address@hidden enumerate
-
-If the Modified Version includes new front-matter sections or
-appendices that qualify as Secondary Sections and contain no material
-copied from the Document, you may at your option designate some or all
-of these sections as invariant.  To do this, add their titles to the
-list of Invariant Sections in the Modified Version's license notice.
-These titles must be distinct from any other section titles.
-
-You may add a section entitled ``Endorsements'', provided it contains
-nothing but endorsements of your Modified Version by various
-parties---for example, statements of peer review or that the text has
-been approved by an organization as the authoritative definition of a
-standard.
-
-You may add a passage of up to five words as a Front-Cover Text, and a
-passage of up to 25 words as a Back-Cover Text, to the end of the list
-of Cover Texts in the Modified Version.  Only one passage of
-Front-Cover Text and one of Back-Cover Text may be added by (or
-through arrangements made by) any one entity.  If the Document already
-includes a cover text for the same cover, previously added by you or
-by arrangement made by the same entity you are acting on behalf of,
-you may not add another; but you may replace the old one, on explicit
-permission from the previous publisher that added the old one.
-
-The author(s) and publisher(s) of the Document do not by this License
-give permission to use their names for publicity for or to assert or
-imply endorsement of any Modified Version.
-
address@hidden
-COMBINING DOCUMENTS
-
-You may combine the Document with other documents released under this
-License, under the terms defined in section 4 above for modified
-versions, provided that you include in the combination all of the
-Invariant Sections of all of the original documents, unmodified, and
-list them all as Invariant Sections of your combined work in its
-license notice.
-
-The combined work need only contain one copy of this License, and
-multiple identical Invariant Sections may be replaced with a single
-copy.  If there are multiple Invariant Sections with the same name but
-different contents, make the title of each such section unique by
-adding at the end of it, in parentheses, the name of the original
-author or publisher of that section if known, or else a unique number.
-Make the same adjustment to the section titles in the list of
-Invariant Sections in the license notice of the combined work.
-
-In the combination, you must combine any sections entitled ``History''
-in the various original documents, forming one section entitled
-``History''; likewise combine any sections entitled ``Acknowledgments'',
-and any sections entitled ``Dedications''.  You must delete all sections
-entitled ``Endorsements.''
-
address@hidden
-COLLECTIONS OF DOCUMENTS
-
-You may make a collection consisting of the Document and other documents
-released under this License, and replace the individual copies of this
-License in the various documents with a single copy that is included in
-the collection, provided that you follow the rules of this License for
-verbatim copying of each of the documents in all other respects.
-
-You may extract a single document from such a collection, and distribute
-it individually under this License, provided you insert a copy of this
-License into the extracted document, and follow this License in all
-other respects regarding verbatim copying of that document.
-
address@hidden
-AGGREGATION WITH INDEPENDENT WORKS
-
-A compilation of the Document or its derivatives with other separate
-and independent documents or works, in or on a volume of a storage or
-distribution medium, does not as a whole count as a Modified Version
-of the Document, provided no compilation copyright is claimed for the
-compilation.  Such a compilation is called an ``aggregate'', and this
-License does not apply to the other self-contained works thus compiled
-with the Document, on account of their being thus compiled, if they
-are not themselves derivative works of the Document.
-
-If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one quarter
-of the entire aggregate, the Document's Cover Texts may be placed on
-covers that surround only the Document within the aggregate.
-Otherwise they must appear on covers around the whole aggregate.
-
address@hidden
-TRANSLATION
-
-Translation is considered a kind of modification, so you may
-distribute translations of the Document under the terms of section 4.
-Replacing Invariant Sections with translations requires special
-permission from their copyright holders, but you may include
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections.  You may include a
-translation of this License provided that you also include the
-original English version of this License.  In case of a disagreement
-between the translation and the original English version of this
-License, the original English version will prevail.
-
address@hidden
-TERMINATION
-
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License.  Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License.  However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
address@hidden
-FUTURE REVISIONS OF THIS LICENSE
-
-The Free Software Foundation may publish new, revised versions
-of the GNU Free Documentation License from time to time.  Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.  See
address@hidden://www.gnu.org/copyleft/}.
-
-Each version of the License is given a distinguishing version number.
-If the Document specifies that a particular numbered version of this
-License ``or any later version'' applies to it, you have the option of
-following the terms and conditions either of that specified version or
-of any later version that has been published (not as a draft) by the
-Free Software Foundation.  If the Document does not specify a version
-number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.
address@hidden enumerate
-
address@hidden
address@hidden ADDENDUM: How to use this License for your documents
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and
-license notices just after the title page:
-
address@hidden
address@hidden
-  Copyright (C)  @var{year}  @var{your name}.
-  Permission is granted to copy, distribute and/or modify this document
-  under the terms of the GNU Free Documentation License, Version 1.1
-  or any later version published by the Free Software Foundation;
-  with the Invariant Sections being @var{list their titles}, with the
-  Front-Cover Texts being @var{list}, and with the Back-Cover Texts being 
@var{list}.
-  A copy of the license is included in the section entitled ``GNU
-  Free Documentation License''.
address@hidden group
address@hidden smallexample
-
-If you have no Invariant Sections, write ``with no Invariant Sections''
-instead of saying which ones are invariant.  If you have no
-Front-Cover Texts, write ``no Front-Cover Texts'' instead of
-``Front-Cover Texts being @var{list}''; likewise for Back-Cover Texts.
-
-If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-free software license, such as the GNU General Public License,
-to permit their use in free software.
-
address@hidden Local Variables:
address@hidden ispell-local-pdict: "ispell-dict"
address@hidden End:
-

Index: Press-use/MDK/mdk_emacs.texi
===================================================================
RCS file: Press-use/MDK/mdk_emacs.texi
diff -N Press-use/MDK/mdk_emacs.texi
--- Press-use/MDK/mdk_emacs.texi        28 Jul 2003 18:18:00 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,136 +0,0 @@
address@hidden -*-texinfo-*-
address@hidden This is part of the GNU MDK Reference Manual.
address@hidden Copyright (C) 2003
address@hidden   Free Software Foundation, Inc.
address@hidden See the file mdk.texi for copying conditions.
-
address@hidden Emacs tools, mixasm, Getting started, Top
address@hidden Emacs tools
-
-Everyone writing code knows how important a good text editor is. Most
-systems already come with Emacs, an excellent programmer's editor.
address@hidden adds support to Emacs for both writing and debugging MIX
-programs. A major mode for MIXAL source files makes editing your
-code easier, while integration with Emacs' debugging interface
-(@acronym{GUD}) lets you use @code{mixvm} without leaving your
-favorite text editor.
-
-This chapter shows how to use the Elisp modules included in @sc{mdk},
-assuming that you have followed the installation instructions in
address@hidden support}.
-
address@hidden
-* MIXAL mode::                  Editing MIXAL files.
-* GUD integration::             Invoking @code{mixvm} within Emacs.
address@hidden menu
-
address@hidden MIXAL mode, GUD integration, Emacs tools, Emacs tools
address@hidden MIXAL mode
-
-The module @file{mixal-mode.el} provides a new mode, mixal-mode, for
-editing MIXAL source address@hidden was developed and
-documented by @value{PIETER}.} When everything is installed correctly,
-Emacs will select it as the major mode for editing files with the
-extension @code{.mixal}. You can also activate mixal-mode in any buffer
-by issuing the Emacs command @code{M-x mixal-mode}.
-
address@hidden
-* Basics::                      Editing code, font locking and indentation.
-* Help system::                 Using the interactive help system.
-* Compiling and running::       Invoking compiler and/or virtual machine.
address@hidden menu
-
address@hidden Basics, Help system, MIXAL mode, MIXAL mode
address@hidden node-name, next, previous, up
address@hidden Basics
-
-The mode for editing mixal source files is inherited from
-fundamental-mode, meaning that all your favorite editing operations
-will still work. If you want a short introduction to Emacs, type
address@hidden t} inside Emacs to start the tutorial.
-
-Mixal mode adds font locking. If you do not have font locking globally
-enabled, you can turn it on for mixal-mode by placing the following
-line in your @file{.emacs} file:
-
address@hidden
-(add-hook 'mixal-mode-hook 'turn-on-font-lock)
address@hidden lisp
-
-You can also customize the colors used to color your mixal code by
-changing the requisite faces. This is the list of faces used by
-mixal-mode:
-
address@hidden
address@hidden @var{font-lock-comment-face:} Face to use for comments
address@hidden @var{mixal-font-lock-label-face:} Face to use for label names
address@hidden @var{mixal-font-lock-operation-code-face:} Face to use for 
operation code names
address@hidden @var{mixal-font-lock-assembly-pseudoinstruction-face:} Face to 
use for assembly pseudoinstruction names
address@hidden itemize
-
address@hidden Help system, Compiling and running, Basics, MIXAL mode
address@hidden node-name, next, previous, up
address@hidden Help system
-
-When coding your program, you will be thinking, looking up
-documentation, and editing files. Emacs already helps you with editing
-files, but Emacs can do much more. In particular, one of its strong
-points is its ability to find appropriate documentation. Besides the
-info system (which you are probably already using), mixal-mode defines
-commands for getting particular information about a MIX operation code.
-
-With @kbd{M-x mixal-describe-operation-code}, or its keyboard shortcut
address@hidden o}, you will get the documentation about a particular MIX
-operation code. Keep in mind that these are not assembly (MIXAL)
-pseudoinstructions. When the @code{point} is around a MIXAL
-pseudoinstruction in your source file, Emacs will recognize it and
-suggest the right MIX operation code.
-
address@hidden Compiling and running,  , Help system, MIXAL mode
address@hidden node-name, next, previous, up
address@hidden Compiling and running
-
-After you have written your MIXAL program, you'll probably want to
-test it. This can be done with the MIX virtual machine. First you will
-need to compile your code into MIX byte code. This can be done within
-Emacs with the command @kbd{M-x compile} (@kbd{C-c c}). In case of
-compilation errors, you can jump to the offending source code line
-with @kbd{M-x next-error}.
-
-Once the program compiles without errors, you can debug or run
-it. To invoke the debugger, use @kbd{M-x mixal-debug} (@kbd{C-c d}).
-Emacs will open a @code{GUD} buffer where you can
-use the debugging commands described in @ref{mixvm}.
-
-If you just want to execute the program, you can do so with @kbd{M-x
-mixal-run} (@kbd{C-c r}). This will invoke @code{mixvm},
-execute the program and show its output in a separate buffer.
-
address@hidden GUD integration,  , MIXAL mode, Emacs tools
address@hidden GUD integration
-
-If you are an Emacs user and write your MIXAL programs using this
-editor, you will find the elisp program @file{mixvm.el} quite
address@hidden@file{mixvm.el} has been kindly contributed by
address@hidden @file{mixvm.el} is based on a study of gdb, perldb, and
-pdb as found in @file{gud.el}, and @file{rubydb3x.el} distributed with
-the source code to the Ruby language.}. @file{mixvm.el} allows you to
-run the MIX virtual machine @code{mixvm} (@pxref{mixvm}) inside an Emacs
address@hidden buffer, while visiting the MIXAL source file in another
-buffer.
-
-After installing @file{mixvm.el} (@pxref{Emacs support}), you can
-initiate an @sc{mdk}/@acronym{GUD} session inside Emacs with the command:
-
address@hidden
-M-x mixvm
address@hidden example
-
address@hidden
-and you will have a @code{mixvm} prompt inside a newly created
address@hidden buffer. @acronym{GUD} will reflect the current line in the
-corresponding source file buffer.
-
-
-
-

Index: Press-use/MDK/mdk_findex.texi
===================================================================
RCS file: Press-use/MDK/mdk_findex.texi
diff -N Press-use/MDK/mdk_findex.texi
--- Press-use/MDK/mdk_findex.texi       28 Jul 2003 18:18:00 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,11 +0,0 @@
address@hidden -*-texinfo-*-
address@hidden This is part of the GNU MDK Reference Manual.
address@hidden Copyright (C) 2000, 2001, 2003
address@hidden   Free Software Foundation, Inc.
address@hidden See the file mdk.texi for copying conditions.
-
address@hidden $Id: mdk_findex.texi,v 1.1 2003/07/28 18:18:00 opus Exp $
-
address@hidden Instructions and commands, , Concept Index, Top
address@hidden Instructions and commands
address@hidden fn

Index: Press-use/MDK/mdk_gmixvm.texi
===================================================================
RCS file: Press-use/MDK/mdk_gmixvm.texi
diff -N Press-use/MDK/mdk_gmixvm.texi
--- Press-use/MDK/mdk_gmixvm.texi       28 Jul 2003 18:18:00 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,431 +0,0 @@
address@hidden -*-texinfo-*-
address@hidden This is part of the GNU MDK Reference Manual.
address@hidden Copyright (C) 2000, 2001, 2003
address@hidden   Free Software Foundation, Inc.
address@hidden See the file mdk.texi for copying conditions.
-
address@hidden $Id: mdk_gmixvm.texi,v 1.1 2003/07/28 18:18:00 opus Exp $
-
address@hidden gmixvm, mixguile, mixvm, Top
address@hidden  node-name,  next,  previous,  up
address@hidden @code{gmixvm}, the GTK virtual machine
address@hidden @code{gmixvm}
address@hidden GUI
address@hidden GTK+
-
-This chapter describes the graphical MIX virtual machine emulator
-shipped with @sc{mdk}. In addition to having all the command-oriented
-functionalities of the other virtual machines (@code{mixvm} and
address@hidden), @code{gmixvm} offers you a graphical interface
-displaying the status of the virtual machine, the source code of the
-downloaded programs and the contents of the MIX devices.
-
address@hidden
-* Invoking @code{gmixvm}::      Invoking the GTK+ interface.
-* MIXVM console::               Using @code{mixvm} commands.
-* MIX virtual machine::         The MIX virtual machine window.
-* MIXAL source view::           Viewing the MIXAL source code.
-* MIX devices view::            Device output.
-* Menu and status bars::        Available menu commands.
address@hidden menu
-
address@hidden Invoking @code{gmixvm}, MIXVM console, gmixvm, gmixvm
address@hidden  node-name,  next,  previous,  up
address@hidden Invoking @code{gmixvm}
-
-If you have built @sc{mdk} with GTK+ support (@pxref{Installing MDK}), a
-graphical front-end for the MIX virtual machine will be available in
-your system. You can invoke it by typing:
-
address@hidden
-gmixvm [-vhuq] [--version] [--help] [--usage] [--noinit]
address@hidden example
address@hidden
-at your command prompt, where the options have the following meanings:
-
address@hidden -v
address@hidden --version
-Prints version and copyleft information and exits.
address@hidden defopt
-
address@hidden -h
address@hidden --help
address@hidden -u
address@hidden --usage
-Prints a summary of available options and exits.
address@hidden defopt
-
address@hidden -q
address@hidden --noinit
-Do not load the Guile initialization file @code{~/.mdk/mixguile.scm} at
-start-up. This file contains any local Scheme code to be executed by the
-embedded Guile interpreter at start-up (@pxref{Using Scheme in mixvm and
-gmixvm}).
address@hidden defopt
-
-Typing @code{gmixvm} or @code{gmixvm -q} at your command prompt, the
-main window appears, offering you a graphical interface to run and
-debug your MIX programs.
-
address@hidden
address@hidden/ss_mix, 400pt}
address@hidden ifnottex
-
-Apart from the menu and status bars, we can distinguish two zones (or
-halves) in this main window. In the upper half of @code{gmixvm}'s main
-window there is a notebook with three pages, namely:
-
address@hidden
address@hidden
-a MIX virtual machine view, which shows the registers, flags, memory
-contents and time statistics of the virtual machine
address@hidden
-a MIXAL source view, which shows the MIXAL file and lets you manage
-breakpoints
address@hidden
-a Devices view, which shows the output to character-based MIX block
-devices
address@hidden itemize
-
address@hidden
-The application can run in two modes: non-split (the above windows are
-placed in a notebook in the main window) or split (the windows are
-detached from the main one, and can be hidden individually). You can
-choose the display mode using the corresponding command from the
address@hidden menu.
-
address@hidden
-Here is a screenshot showing how @code{gmixvm} looks when running
-in split mode:
-
address@hidden/ss_split, 420pt}
-
address@hidden ifhtml
-
-On the other hand, the main window's lower half presents you with a
address@hidden command prompt and a logging area where results of the
-issued commands are presented (in split mode, these widgets occupy the
-whole main window's space between the menu and status bars). These
-widgets implement a @code{mixvm} console which offers almost the same
-functionality as its @acronym{CLI} counterpart.
-
-When @code{gmixvm} is run, it creates a directory named @file{.mdk} in
-your home directory (if it does not already exist). The @file{.mdk}
-directory contains the program settings, the device files used by your
-MIX programs (@pxref{Devices}), and a command history file.
-
-The following sections describe the components of @code{gmixvm}
-mentioned above.
-
address@hidden MIXVM console, MIX virtual machine, Invoking @code{gmixvm}, 
gmixvm
address@hidden  node-name,  next,  previous,  up
address@hidden MIXVM console
-
-In the lower half of the @code{gmixvm} main window, you will find a
-command text entry area and, above it, an echo area. These widgets offer you
-the same functionality as the @acronym{CLI} counterpart, @code{mixvm}
-(@pxref{mixvm}). You can issue almost all @code{mixmv} commands at the
address@hidden's command prompt in order to manipulate the MIX virtual
-machine. Please refer to @ref{mixvm}, for a description of these
-commands, and to @ref{Getting started}, for a tutorial on using the MIX
-virtual machine. The command prompt offers command line completion for
-partially typed commands using the @key{TAB} key; e.g., if you type:
-
address@hidden
-lo @key{TAB}
address@hidden example
address@hidden
-the command is automatically completed to @code{load}. If multiple
-completions are available, they will be shown in the echo area. Thus,
-typing:
-
address@hidden
-p @key{TAB}
address@hidden example
address@hidden
-will produce the following output on the echo area:
-
address@hidden
-Completions:
-pc     psym     preg     pflags     pall
-pmem
address@hidden example
address@hidden
-which lists all the available commands starting with @code{p}. In
-addition, the command prompt maintains a history of typed commands,
-which can be recovered using the arrow up and down keys. As mentioned
-above, a file containing previous sessions' commands is stored in the
-configuration directory @file{~/.mdk}, and reloaded every time you start
address@hidden
-
-You can change the font used to display the issued commands and the
-messages in the echo area using the @w{Settings->Change font->Command
-prompt} and @w{Settings->Change font->Command log} menu commands.
-
address@hidden MIX virtual machine, MIXAL source view, MIXVM console, gmixvm
address@hidden  node-name,  next,  previous,  up
address@hidden MIX virtual machine
-
-The notebook's first page displays the current status of the virtual
-machine. There you can find the registers' contents, the value of the
-comparison and overflow flags, the location pointer, a list with all MIX
-memory cells and their contents, and the time statistics (including
-total uptime, elapsed time since the last run command and total
-execution time for the currently loaded MIX program).
-
-When you click any register entry, you will be prompted to enter new
-contents for the register.
-
address@hidden
-The next figure shows the enter word dialog.
-
address@hidden/ss_worddlg, 250pt}
-
address@hidden ifhtml
-
-In the same manner, click on any address of the memory cells list to be
-prompted to enter the new contents of the clicked cell. If you click the
-address column's title, a dialog asking you for a memory address will
-appear; if you enter a valid address, this will be the first cell
-displayed in the scrollable list after you click the OK button.
-
address@hidden
-The next figure shows the enter address dialog.
-
address@hidden/ss_goto, 200pt}
-
address@hidden ifhtml
-
-
-The register contents are shown as a list of MIX bytes plus signs. If you
-place the mouse pointer over any of them, the decimal value of that MIX
-word will appear inside a tooltip.
-
-You can change the font used to display the MIX virtual machine contents
-using the @w{Settings->Change font->MIX} menu command.
-
address@hidden MIXAL source view, MIX devices view, MIX virtual machine, gmixvm
address@hidden  node-name,  next,  previous,  up
address@hidden MIXAL source view
-
-The notebook's second page, dubbed MIXAL, shows you the MIXAL source of
-the currently loaded MIX file.
-
address@hidden
address@hidden/ss_mixal, 400pt}
address@hidden ifnottex
-
-The information is presented in two columns.  The first column shows the
-address and memory contents of the compiled MIX instruction, while the
-second one displays its corresponding MIXAL representation, together
-with the source file line number. The current location of the location
-counter is highlighted in grey, while any set breakpoint is marked in
-red. You can set and unset breakpoints by clicking on any line in this view
-that has an associated memory address.
-
-The colors used to mark the location pointer line and the breakpoints
-can be customized with the @w{Settings->Colors} menu command. When you
-click on this menu item, a dialog showing the current line colors will
-appear.
address@hidden
-The following figure shows the change color dialog.
-
address@hidden/ss_colors, 250pt}
-
address@hidden ifhtml
-Clicking on any of the colors will produce a color selection dialog for
-choosing a new color for the given element. In this way, you can change
-the foreground and background colors used for drawing the current line,
-the lines where breakpoints have been set, and plain MIXAL code lines.
-
-You can change the font used to display the MIXAL source code
-using the @w{Settings->Change font->MIXAL} menu command.
-
-
address@hidden MIX devices view, Menu and status bars, MIXAL source view, gmixvm
address@hidden  node-name,  next,  previous,  up
address@hidden MIX devices view
-
-The last notebook page, dubbed Devices, shows you the output/input
-to/from MIX block devices (the console, line printer, paper tape,
-disks, card and tapes; @pxref{Devices}) produced by the running
-program.
-
address@hidden
-
address@hidden/ss_devices, 400pt}
-
address@hidden ifhtml
-
-Input device contents are read from files located in the @file{~/.gmivm}
-directory, and the output is written in files at the same location. Note
-that device tabs will appear as they are used by the MIX program being
-run, and that loading a new MIX program will close all previously open
-devices.
-
-The input/output for binary block devices (tapes and disks) will be a
-list of MIX words, which can be displayed either in decimal or word
-format (e.g., @w{- 67} or @w{- 00 00 00 01 03}. The format used by
address@hidden can be configured using the @w{Settings->Device output}
-menu command for each binary device.
-
-You can change the font used to display the devices' contents
-using the @w{Settings->Change font->Devices} menu command.
-
address@hidden Menu and status bars,  , MIX devices view, gmixvm
address@hidden  node-name,  next,  previous,  up
address@hidden Menu and status bars
-
-The menu bar gives you access to the following commands:
-
address@hidden File Load
-Opens a file dialog that lets you specify a binary MIX file to be loaded
-in the virtual machine's memory. It is equivalent to the @code{mixvm}'s
address@hidden command (@pxref{File commands}).
address@hidden deffn
-
address@hidden File Edit
-Opens a file dialog that lets you specify a MIXAL source file to be
-edited. It is equivalent to the @code{mixvm}'s @code{edit} command
-(@pxref{File commands}). The program used for editing can be specified
-using the menu entry @w{Settings->External programs}, or using
-the @code{mixvm} command @code{sedit}.
address@hidden deffn
-
address@hidden File Compile
-Opens a file dialog that lets you specify a MIXAL source file to be
-compiled. It is equivalent to the @code{mixvm}'s @code{compile} command
-(@pxref{File commands}). The command used for compiling can be specified
-using the menu entry @w{Settings->External programs}, or using
-the @code{mixvm} command @code{sasm}.
address@hidden deffn
-
address@hidden File Exit
-Exits the application.
address@hidden deffn
-
address@hidden View @w{Toolbar(s)}
-Toggles the toolbar(s) in the @code{gmixvm} window(s) (in split mode
-there are multiple windows and, hence, multiple toolbars).
address@hidden deffn
-
address@hidden View MIX
address@hidden View MIXAL
address@hidden View Devices
-
-These toggles are available when running @code{gmixvm} in split mode,
-and let you turn the visibility of the corresponding @code{gmixvm}
-windows on and off.
-
address@hidden deffn
-
address@hidden View @w{Split windows}
address@hidden View @w{One window}
-
-Change the mode between single and split windows.
-
address@hidden deffn
-
-
address@hidden Debug Run
-Runs the currently loaded MIX program, up to the next breakpoint. It is
-equivalent to the @code{mixvm}'s @code{run} command (@pxref{Debug
-commands}).
address@hidden deffn
-
address@hidden Debug Next
-Executes the next MIX instruction. It is equivalent to the
address@hidden's @code{next} command (@pxref{Debug commands}).
address@hidden deffn
-
address@hidden Debug @w{Clear breakpoints}
-Clears all currently set breakpoints. It is equivalent to the
address@hidden's @code{cabp} command.
address@hidden deffn
-
address@hidden Debug Symbols
-Opens a dialog showing the list of symbols defined in the currently
-loaded MIX program.
-
address@hidden
-
address@hidden/ss_symbols, 250pt}
-
address@hidden ifhtml
-
address@hidden deffn
-
address@hidden Settings Colors
-Lets you change the colors used to mark the current and breakpoint lines
-in the MIXAL tab, as well as the colors used for plain source lines.
address@hidden deffn
-
address@hidden Settings @w{Change font}
-Lets you change the font used in the various @code{gmixvm} widgets
-(i.e., command prompt, command log, MIX, MIXAL and devices).
address@hidden deffn
-
address@hidden Settings @w{Device output}
-Opens a dialog that lets you specify which format will be used to show
-the contents of MIX binary block devices.
-
address@hidden
address@hidden/ss_devform, 250pt}
address@hidden ifhtml
-
-The available formats are decimal (e.g. @w{-1234}) and MIX word
-(e.g. @w{- 00 00 00 19 18}).
address@hidden deffn
-
address@hidden Settings @w{Devices dir}
-Opens a dialog that lets you choose where the MIX device files will be
-stored (@file{~/.mdk} is the default location).
-
address@hidden
address@hidden/ss_devdir, 250pt}
address@hidden ifhtml
-
-You can also specify the devices directory using the @code{mixvm}
-command @code{sddir} (@pxref{Configuration commands}).
-
address@hidden deffn
-
address@hidden Settings @w{External programs}
-This menu command opens a dialog that lets you specify the commands used
-for editing and compiling MIXAL source files.
-
address@hidden
address@hidden/ss_extprog, 250pt}
address@hidden ifhtml
-
-The commands are specified as template strings, where the control
-substring @code{%s} will be substituted by the actual file name. Thus,
-if you want to edit programs using @code{vi} running in an @code{xterm},
-you must enter the command template @address@hidden -e vi %s}} in the
-corresponding dialog entry. These settings can also be changed using the
address@hidden commands @code{sedit} and @code{sasm} (@pxref{Configuration
-commands}).
address@hidden deffn
-
-
address@hidden Settings Save
-Saves the current settings.
address@hidden deffn
-
address@hidden Settings @w{Save on exit}
-Check this box if you want @code{gmixvm} to save its settings
-every time you quit the program.
address@hidden deffn
-
address@hidden Help About
-Shows information about @code{gmixvm}'s version and copyright.
address@hidden deffn
-
-The status bar displays the name of the last loaded MIX file. In
-addition, when the mouse pointer is over a MIXAL source file line that
-contains symbols, a list of those symbols with their values will appear
-in the status bar.
-
-
-
-

Index: Press-use/MDK/mdk_gstart.texi
===================================================================
RCS file: Press-use/MDK/mdk_gstart.texi
diff -N Press-use/MDK/mdk_gstart.texi
--- Press-use/MDK/mdk_gstart.texi       28 Jul 2003 18:18:00 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,1057 +0,0 @@
address@hidden -*-texinfo-*-
address@hidden This is part of the GNU MDK Reference Manual.
address@hidden Copyright (C) 2000, 2001, 2002, 2003
address@hidden   Free Software Foundation, Inc.
address@hidden See the file mdk.texi for copying conditions.
-
address@hidden $Id: mdk_gstart.texi,v 1.1 2003/07/28 18:18:00 opus Exp $
-
address@hidden Getting started, Emacs tools, MIX and MIXAL tutorial, Top
address@hidden Getting started
address@hidden tutorial
-
-In this chapter, you will find a sample code-compile-run-debug session
-using the @sc{mdk} utilities. Familiarity with the MIX mythical computer
-and its assembly language MIXAL (as described in Knuth's TAOCP) is
-assumed; for a compact reminder, see @ref{MIX and MIXAL tutorial}.
-
address@hidden
-* Writing a source file::       A sample MIXAL source file.
-* Compiling::                   Using @code{mixasm} to compile source
-                                files into binary format.
-* Running the program::         Running and debugging your programs.
-* Using mixguile::              Using the Scheme interpreter to run and
-                                debug your programs.
-* Using Scheme in mixvm and gmixvm::
address@hidden menu
-
address@hidden Writing a source file, Compiling, Getting started, Getting 
started
address@hidden Writing a source file
address@hidden MIXAL
address@hidden source file
address@hidden .mixal file
-
-MIXAL programs can be written as ASCII files with your editor of choice.
-Here you have the mandatory @emph{hello world} as written in the MIXAL
-assembly language:
-
address@hidden
-*                                                        (1)
-* hello.mixal: say 'hello world' in MIXAL                (2)
-*                                                        (3)
-* label ins    operand     comment                       (4)
-TERM    EQU    19          the MIX console device number (5)
-        ORIG   1000        start address                 (6)
-START   OUT    MSG(TERM)   output data at address MSG    (7)
-        HLT                halt execution                (8)
-MSG     ALF    "MIXAL"                                   (9)
-        ALF    " HELL"                                   (10)
-        ALF    "O WOR"                                   (11)
-        ALF    "LD   "                                   (12)
-        END    START       end of the program            (13)
address@hidden example
-
address@hidden MIXAL source files should have the extension @file{.mixal}
-when used with the @sc{mdk} utilities. As you can see in the above
-sample, each line in a MIXAL file can be divided into four fields
-separated by an arbitrary amount of white space characters (blanks and/or
-tabs). While in Knuth's definition of MIXAL each field must start at a
-fixed predefined column number, the @sc{mdk} assembler loosens this
-requirement and lets you format the file as you see fit. The only
-restrictions retained are for comment lines (like 1-4), which must begin
-with an asterisk (*) placed at column 1, and for the label field (see
-below) which, if present, must also start at column 1. The four fields
-in each non-comment line are:
-
address@hidden @bullet
address@hidden
-an optional label, which either refers to the current memory address (as
address@hidden and @code{MSG} in lines 7 and 9) or a defined symbol
-(@code{TERM}) (if present, the label must always start at the first
-column in its line, because the first white space in the line marks the
-beginning of the second field),
address@hidden
-an operation mnemonic, which can represent either a MIX instruction
-(@code{OUT} and @code{HLT} in lines 7 and 8 above) or an assembly
-pseudoinstruction (e.g., the @code{ORIG} pseudoinstruction in line
address@hidden an @code{ORIG} directive is not used, the program will
-be loaded by the virtual machine at address 0. @code{ORIG} allows you
-to allocate the executable code where you see fit.}).
address@hidden
-an optional operand for the (pseudo)instruction, and
address@hidden
-an optional free text comment.
address@hidden itemize
-
address@hidden Lines 9-12 of the @file{hello.mixal} file above also show the
-second (and last) difference between Knuth's MIXAL definition and
-ours. In our version, the operand of the @code{ALF} pseudoinstruction
-(a word of five characters) must be quoted using ""address@hidden
-Knuth's definition, the operand always starts at a fixed column
-number, and the use of quotation is therefore unnecessary. As
address@hidden releases this requirement, marking the beginning and end
-of the @code{ALF} operand disambiguates the parser's recognition of
-this operand when it includes blanks. Note that double-quotes (") are
-not part of the MIX character set, and, therefore, no escape
-characters are needed within @code{ALF}'s operands.}
-
-The workings of this sample program should be straightforward if you are
-familiar with MIXAL. See TAOCP vol. 1 for a thorough definition or
address@hidden and MIXAL tutorial}, for a tutorial.
-
address@hidden Compiling, Running the program, Writing a source file, Getting 
started
address@hidden Compiling
address@hidden compiling
address@hidden binary programs
address@hidden virtual machine
address@hidden assembler
address@hidden @code{mixasm}
-
-Three simulators of the MIX computer, called @code{mixvm}, @code{gmixvm}
-and @code{mixguile}, are included in the @sc{mdk} tools. They are able to
-run binary files containing MIX instructions written in their binary
-representation. You can translate MIXAL source files into this binary
-form using @code{mixasm}, the MIXAL assembler. So, in order to compile
-the @file{hello.mixal} file, you can type the following command at your
-shell prompt:
-
address@hidden
-mixasm -g hello 
address@hidden example
-
address@hidden .mix file
-
-If the source file contains no errors, this will produce a binary file
-called @file{hello.mix} which can be loaded and run by the MIX virtual
-machine. The @code{-g} flag tells the assembler to include debug
-information in the executable file (for a complete description of all
-the compilation options, see @ref{mixasm}). Now, you are ready to run
-your first MIX program, as described in the following section.
-
-
address@hidden Running the program, Using mixguile, Compiling, Getting started
address@hidden Running the program
address@hidden @code{mixvm}
address@hidden non-interactive mode
address@hidden interactive mode
-
-MIX is a mythical computer, so it is no use ordering it from your
-favorite hardware provider. @sc{mdk} provides three software simulators of
-the computer, though. They are:
-
address@hidden @bullet
address@hidden
address@hidden, a command line oriented simulator,
address@hidden
address@hidden, a GTK based graphical interface to @code{mixvm}, and
address@hidden
address@hidden, a Guile shell with a built-in MIX simulator.
address@hidden itemize
-
-All three simulators accept the same set of user commands, but offer a
-different user interface, as noted above. In this section we will
-describe some of these commands and show you how to use them from
address@hidden's command line. You can also use them at @code{gmixvm}'s
-command prompt (@pxref{gmixvm}), or with the built-in Scheme primitives
-of @code{mixguile} (@pxref{Using mixguile}).
-
-Using the MIX simulators, you can run your MIXAL programs, after
-compiling them with @code{mixasm} into binary @file{.mix}
-files. @code{mixvm} can be used either in @dfn{interactive} or
address@hidden mode. In the second case, @code{mixvm} will load
-your program into memory, execute it (producing any output due to
-MIXAL @code{OUT} instructions present in the program), and exit when
-it encounters an @code{HLT} instruction. In interactive mode, you will
-enter a shell prompt which allows you to issue commands to the running
-virtual machine. This command will permit you to load, run and debug
-programs, as well as inspect the MIX computer state (register
-contents, memory cells contents and so on).
-
address@hidden
-* Non-interactive mode::        Running your programs non-interactively.
-* Interactive mode::            Running programs interactively.
-* Debugging::                   Commands for debugging your programs.
address@hidden menu
-
address@hidden Non-interactive mode, Interactive mode, Running the program, 
Running the program
address@hidden  node-name,  next,  previous,  up
address@hidden Non-interactive mode
address@hidden non-interactive mode
-
-To make @code{mixvm} work in non-interactive mode, use the @code{-r}
-flag. Thus, to run our @file{hello.mix} program, simply type:
-
address@hidden
-mixvm -r hello
address@hidden example
-
address@hidden at your command prompt, and you will get the following output:
-
address@hidden
-MIXAL HELLO WORLD
address@hidden example
-
address@hidden Since our hello world program uses MIX's device number 19 as
-its output device (@pxref{Writing a source file}), the output is
-redirected to the shell's standard output. Had you used any other MIX
-output devices (disks, drums, line printer, etc.), @code{mixvm} would
-have created a file named after the device used (e.g. @file{disk4.dev})
-and written its output address@hidden device files are stored, by
-default, in a directory called @file{.mdk}, which is created in your
-home directory the first time @code{mixvm} is run. You can change this
-default directory using the command @code{devdir} when running
address@hidden in interactive mode (@pxref{Configuration commands}).}
-
-The virtual machine can also report the execution time of the program,
-according to the (virtual) time spent on each of the binary instructions
-(@pxref{Execution times}). Printing of execution time statistics is
-activated with the @code{-t} flag; running:
-
address@hidden
-mixvm -t -r hello
address@hidden example
-
address@hidden
-produces the following output:
-
address@hidden
-MIXAL HELLO WORLD
-** Execution time: 11
address@hidden example
-
-Sometimes, you will prefer to store the results of your program in MIX
-registers rather than writing them to a device. In such cases,
address@hidden's @code{-d} flag is your friend. It makes @code{mixvm} dump
-the contents of its registers and flags after executing the loaded
-program. For instance, typing the following command at your shell's
-prompt:
-
address@hidden
-mixvm -d -r hello
address@hidden example
-
address@hidden you will obtain the following output:
-
address@hidden
-MIXAL HELLO WORLD
-rA: + 00 00 00 00 00 (0000000000)
-rX: + 00 00 00 00 00 (0000000000)
-rJ: + 00 00 (0000)
-rI1: + 00 00 (0000)     rI2: + 00 00 (0000)
-rI3: + 00 00 (0000)     rI4: + 00 00 (0000)
-rI5: + 00 00 (0000)     rI6: + 00 00 (0000)
-Overflow: F
-Cmp: E
address@hidden example
-
address@hidden which, in addition to the program's outputs and execution
-time, gives you the contents of the MIX registers and the values of the
-overflow toggle and comparison flag (admittedly, rather uninteresting in
-our sample).
-
-As you can see, running programs non-interactively has many
-limitations. You cannot peek the virtual machine's memory contents, step
-through your program's instructions, or set address@hidden
address@hidden program allows you to execute arbitrary combinations of
address@hidden commands (using Scheme) non-interactively. @xref{Scheme
-scripts}.} Enter interactive mode.
-
address@hidden Interactive mode, Debugging, Non-interactive mode, Running the 
program
address@hidden  node-name,  next,  previous,  up
address@hidden Interactive mode
address@hidden interactive mode
-
-To enter the MIX virtual machine's interactive mode, simply type:
-
address@hidden
-mixvm
address@hidden example
-
address@hidden at your shell command prompt. This command starts the
address@hidden command shell. You will be presented with the following
-command prompt:
-
address@hidden
-MIX >
address@hidden example
-
address@hidden The virtual machine is initialized and ready to accept your
-commands. The @code{mixvm} command shell uses GNU's readline, so you
-have at your disposal command completion (using @key{TAB}) and history
-functionality, as well as other line editing shortcuts common to all
-utilities using this library. (For a complete description of readline's
-line editing usage, see @ref{Command Line Editing,,,Readline}.)
-
address@hidden @code{load}
-Usually, the first thing you will want to do is load a compiled MIX
-program into memory. This is accomplished by the @code{load} command,
-which takes as an argument the name of the @file{.mix} file to be
-loaded. Thus, typing:
-
address@hidden
-MIX > load hello 
-Program loaded. Start address: 3000
-MIX >
address@hidden example
-
address@hidden will load @file{hello.mix} into the virtual machine's memory
-and set the program counter to the address of the first instruction. You
-can obtain the contents of the program counter using the command
address@hidden:
-
address@hidden @code{pc}
address@hidden
-MIX > pc
-Current address: 3000
-MIX >
address@hidden example
-
address@hidden @code{run}
-After loading it, you are ready to run the program, using, as you surely
-have guessed, the @code{run} command:
-
address@hidden
-MIX > run
-Running ...
-MIXAL HELLO WORLD
-... done
-Elapsed time: 11 /Total program time: 11 (Total uptime: 11)
-MIX >
address@hidden example
-
address@hidden Note that now the timing statistics are richer. You obtain the
-elapsed execution time (i.e., the time spent executing instructions
-since the last breakpoint), the total execution time for the program up
-to now (which in our case coincides with the elapsed time, since there
-were no breakpoints), and the total uptime for the virtual machine (you
-can load and run more than one program in the same
-session)address@hidden of timing statistics can be disabled using
-the command @code{timing} (@pxref{Configuration commands}).} After
-running the program, the program counter will point to the address after
-the one containing the @code{HLT} instruction. In our case, asking the
-value of the program counter after executing the program will give us:
-
address@hidden
-MIX > pc
-Current address: 3002
-MIX >
address@hidden example
-
address@hidden @code{pmem}
address@hidden You can check the contents of a memory cell by giving its address
-as an argument of the command @code{pmem}, like this:
-
address@hidden
-MIX > pmem 3001
-3001: + 00 00 00 02 05 (0000000133)
-MIX >
address@hidden example
-
address@hidden
-and convince yourself that address 3001 contains the binary
-representation of the instruction @code{HLT}. An address range of the
-form FROM-TO can also be used as the argument of @code{pmem}:
-
address@hidden
-MIX > pmem 3000-3006
-3000: + 46 58 00 19 37 (0786957541)
-3001: + 00 00 00 02 05 (0000000133)
-3002: + 14 09 27 01 13 (0237350989)
-3003: + 00 08 05 13 13 (0002118477)
-3004: + 16 00 26 16 19 (0268542995)
-3005: + 13 04 00 00 00 (0219152384)
-3006: + 00 00 00 00 00 (0000000000)
-MIX >
address@hidden example
-
address@hidden @code{preg}
address@hidden
-In a similar manner, you can look at the contents of the MIX registers
-and flags. For instance, to ask for the contents of the A register you
-can type:
-
address@hidden
-MIX > preg A
-rA: + 00 00 00 00 00 (0000000000)
-MIX >
address@hidden example
-
address@hidden @code{help}
address@hidden
-Use the command @code{help} to obtain a list of all available commands,
-and @code{help COMMAND} for help on a specific command, e.g.:
-
address@hidden
-MIX > help run
-run             Run loaded or given MIX code file. Usage: run [FILENAME]
-MIX >
address@hidden example
-
address@hidden
-For a complete list of commands available at the MIX prompt,
address@hidden In the following subsection, you will find a quick tour
-through commands useful for debugging your programs.
-
address@hidden Debugging,  , Interactive mode, Running the program
address@hidden  node-name,  next,  previous,  up
address@hidden Debugging commands
-
address@hidden @code{next}
-The interactive mode of @code{mixvm} lets you do step-by-step execution of
-programs as well as set breakpoints. Use @code{next} to step through
-the program, running its instructions one by one. To run our
-two-instruction @file{hello.mix} sample you can do the following:
-
address@hidden
-MIX > load hello
-Program loaded. Start address: 3000
-MIX > pc
-Current address: 3000
-MIX > next
-MIXAL HELLO WORLD
-Elapsed time: 1 /Total program time: 1 (Total uptime: 1)
-MIX > pc
-Current address: 3001
-MIX > next
-End of program reached at address 3002
-Elapsed time: 10 /Total program time: 11 (Total uptime: 11)
-MIX > pc
-Current address: 3002
-MIX > next
-MIXAL HELLO WORLD
-Elapsed time: 1 /Total program time: 1 (Total uptime: 12)
-MIX >
-MIX > run
-Running ...
-... done
-Elapsed time: 10 /Total program time: 11 (Total uptime: 22)
-MIX >
address@hidden example
address@hidden
-The above sample also shows how the virtual machine handles cumulative
-time statistics and automatic program restart.
-
address@hidden @code{sbpa}
address@hidden breakpoints
-
-You can set a breakpoint at a given address using the command
address@hidden (set breakpoint at address). When a breakpoint is set,
address@hidden will stop before executing the instruction at the given
-address. Typing @code{run} again will resume program execution. Coming
-back to our hello world example, we would have:
-
address@hidden
-MIX > sbpa 3001
-Breakpoint set at address 3001
-MIX > run
-Running ...
-MIXAL HELLO WORLD
-... stopped: breakpoint at line 8 (address 3001)
-Elapsed time: 1 /Total program time: 1 (Total uptime: 23)
-MIX > run
-Running ...
-... done
-Elapsed time: 10 /Total program time: 11 (Total uptime: 33)
-MIX >
address@hidden example
-
address@hidden @code{sbp}
address@hidden breakpoints
address@hidden
-Note that, since we compiled @file{hello.mixal} with debug info enabled
-(the @code{-g} flag of @code{mixasm}), the virtual machine is able to
-tell us the line in the source file corresponding to the breakpoint we
-are setting. As a matter of fact, you can directly set breakpoints at
-source code lines using the command @code{sbp LINE_NO}, e.g.:
-
address@hidden
-MIX > sbp 4
-Breakpoint set at line 7
-MIX >
address@hidden example
-
address@hidden
address@hidden sets the breakpoint at the first meaningful source code line.
-Since in the above example we have requested a breakpoint at a line that
-does not correspond to a MIX instruction, the breakpoint is set at the
-first line after the given one that contains a real instruction after
-the given one. To unset breakpoints, use @code{cbpa ADDRESS} and
address@hidden LINE_NO}, or @code{cabp} to remove all currently set
-breakpoints. You can also set conditional breakpoints, i.e., tell
address@hidden to interrupt program execution whenever a register, a
-memory cell, the comparison flag or the overflow toggle change, using the
-command @address@hidden (@pxref{Debug commands}).
-
address@hidden @code{psym}
-MIXAL lets you define symbolic constants by either using the @code{EQU}
-pseudoinstruction or starting an instruction line with a label (which
-assigns to the label the value of the current memory address). Each
-MIXAL program has, therefore, an associated symbol table which you can
-inspect using the @code{psym} command. For our hello world sample, you
-will obtain the following output:
-
address@hidden
-MIX > psym
-START:  3000
-TERM:  19
-MSG:  3002
-MIX >
address@hidden example
-
-Other useful commands for debugging are @code{strace} (which turns on
-tracing of executed instructions), @code{pbt} (which prints a backtrace
-of executed instructions) and @code{weval} (which evaluates
-w-expressions on the fly). For a complete description of all available
-MIX commands, @pxref{mixvm}
-
address@hidden Using mixguile, Using Scheme in mixvm and gmixvm, Running the 
program, Getting started
address@hidden Using @code{mixguile}
-
-With @code{mixguile} you can run a MIX simulator embedded in a Guile
-shell, using Scheme functions and programs. As with @code{mixvm},
address@hidden can be run both in interactive and non-interactive
-modes. The following subsections provide a quick tour through the use of
-this MIX emulator.
-
address@hidden
-* The mixguile shell::          Using the Scheme MIX virtual machine.
-* Additional functions::        Scheme functions accessing the VM.
-* Defining new functions::      Defining your own Scheme functions.
-* Hook functions::              Using command and break hook functions.
-* Scheme scripts::
address@hidden menu
-
address@hidden The mixguile shell, Additional functions, Using mixguile, Using 
mixguile
address@hidden The @code{mixguile} shell
address@hidden Scheme
address@hidden @code{mixguile}
address@hidden REPL
-
-If you simply type:
-
address@hidden
-mixguile 
address@hidden example
address@hidden
-at the command prompt, you'll be presented with a Guile shell prompt like
-this:
-
address@hidden
-guile>
address@hidden example
address@hidden
-At this point, you have entered a Scheme read-eval-print loop (REPL)
-which offers you all the Guile functionality plus a new set of built-in
-procedures to execute and debug MIX programs. Each of the @code{mixvm}
-commands described in the previous sections (also @pxref{mixvm}) has a
-Scheme function counterpart named after it by adding the prefix
address@hidden to its name. Thus, to load our hello world program, you can
-simply enter:
-
address@hidden
-guile> (mix-load "hello")
-Program loaded. Start address: 3000
-guile>
address@hidden example
address@hidden
-You can then run it using @code{mix-run}:
-
address@hidden
-guile> (mix-run)
-Running ...
-MIXAL HELLO WORLD
-... done
-Elapsed time: 11 /Total program time: 11 (Total uptime: 11)
-guile>
address@hidden example
address@hidden
-You can also execute it step-by-step using the Scheme
-function @code{mix-next} or set a breakpoint:
-
address@hidden
-guile> (mix-sbp 4)
-Breakpoint set at line 5
-guile>
address@hidden example
address@hidden
-or, if you want to peek at a register's contents:
-
address@hidden
-guile> (mix-preg 'A)
-rA: + 00 00 00 00 00 (0000000000)
-guile>
address@hidden example
-
-You get the idea. You have at your disposal all the @code{mixvm} and
address@hidden commands by means of @code{mix-} functions. But, in case
-you are wondering, this is only the beginning. You also have at your
-disposal a whole Scheme interpreter. You can, for instance, define new
-functions by combining the @code{mix-} commands and any of the other
-Scheme primitives. In the next sections, you'll find examples of how to
-take advantage of the Guile interpreter.
-
address@hidden Additional functions, Defining new functions, The mixguile 
shell, Using mixguile
address@hidden Additional MIX Scheme functions
-
-The @code{mix-} function counterparts of the @code{mixvm} commands don't
-return any value, and are evaluated only for their side-effects
-(possibly including informational messages to the standard output and/or
-error stream). When writing your own Scheme functions to manipulate the
-MIX virtual machine within @code{mixguile} (@pxref{Defining new
-functions}), you'll probably need Scheme functions returning the value
-of the registers, memory cells and so on. Don't worry: @code{mixguile}
-does also offer you such functions. For instance, to access the
-(numerical) value of a register you can use @code{mix-reg}:
-
address@hidden
-guile> (mix-reg 'I2)
-0
-guile>
address@hidden example
address@hidden
-Note that, unlike @code{(mix-preg 'I2)}, the expression @code{(mix-reg
-'I2)} in the above example evaluates to a Scheme number and does not
-produce any side-effect:
-
address@hidden
-guile> (number? (mix-reg 'I2))
-#t
-guile> (number? (mix-preg 'I2))
-rI2: + 00 00 (0000)
-#f
-guile>
address@hidden example
-
-In a similar fashion, you can access the memory contents using
address@hidden(mix-cell)}, or the program counter using @code{(mix-loc)}:
-
address@hidden
-guile> (mix-cell 3000)
-786957541
-guile> (mix-loc)
-3002
-guile>
address@hidden example
-
-Other functions returning the contents of the virtual machine components
-are @code{mix-cmp} and @code{mix-over}, which evaluate to the value of the
-comparison flag and the overflow toggle respectively. For a complete
-list of these additional functions, see @ref{mixguile}.
-
-In the next section, we'll see examples that use these functions to
-extend @code{mixguile}'s functionality.
-
address@hidden Defining new functions, Hook functions, Additional functions, 
Using mixguile
address@hidden Defining new functions
address@hidden Scheme functions
-
-Scheme is a powerful language, and you can use it inside @code{mixguile}
-to easily extend the MIX interpreter's capabilities.  For example, you
-can easily define a function that loads a file, prints its name,
-executes it, and shows the registers' contents, all in one shot:
-
address@hidden
-guile> (define my-load-and-run
-         (lambda (file)   
-           (mix-load file)  
-           (display "File loaded: ")
-           (mix-pprog) 
-           (mix-run)
-           (mix-preg)))
-guile>
address@hidden example
address@hidden
-and use it to run your programs:
-
address@hidden
-guile> (my-load-and-run "hello")
-Program loaded. Start address: 3000
-File loaded: hello.mix
-Running ...
-MIXAL HELLO WORLD
-... done
-Elapsed time: 11 /Total program time: 11 (Total uptime: 33)
-rA: + 00 00 00 00 00 (0000000000)
-rX: + 00 00 00 00 00 (0000000000)
-rJ: + 00 00 (0000)
-rI1: + 00 00 (0000)    rI2: + 00 00 (0000)
-rI3: + 00 00 (0000)    rI4: + 00 00 (0000)
-rI5: + 00 00 (0000)    rI6: + 00 00 (0000)
-guile>
address@hidden example
-
-
-Or, maybe, you want a function that sets a breakpoint at a specified
-line number before executing the program:
-
address@hidden
-guile> (define my-load-and-run-with-bp
-         (lambda (file line)
-           (mix-load file)
-           (mix-sbp line)
-           (mix-run)))
-guile> (my-load-and-run-with-bp "samples/primes" 10)
-Program loaded. Start address: 3000
-Breakpoint set at line 10
-Running ...
-... stopped: breakpoint at line 10 (address 3001)
-Elapsed time: 1 /Total program time: 1 (Total uptime: 45)
-guile>
address@hidden example
-
-As a third example, the following function loads a program, runs it and
-prints the contents of the memory between the program's start and end
-addresses:
-
address@hidden
-guile> (define my-run
-         (lambda (file)
-           (mix-load file)
-           (let ((start (mix-loc)))
-             (mix-run)
-             (mix-pmem start (mix-loc)))))
-guile> (my-run "hello")
-Program loaded. Start address: 3000
-Running ...
-MIXAL HELLO WORLD
-... done
-Elapsed time: 11 /Total program time: 11 (Total uptime: 11)
-3000: + 46 58 00 19 37 (0786957541)
-3001: + 00 00 00 02 05 (0000000133)
-3002: + 14 09 27 01 13 (0237350989)
-guile>
address@hidden example
-
-
-As you can see, the possibilities are virtually unlimited. Of course,
-you don't need to type a function definition each time you start
address@hidden You can write it in a file, and load it using Scheme's
address@hidden function. For instance, you can create a file named
address@hidden with your definitions (or any Scheme expression)
-and load it at the @code{mixguile} prompt:
-
address@hidden
-guile> (load "functions.scm")
address@hidden example
-
-Alternatively, you can make @code{mixguile} load it for you automatically. When
address@hidden starts, it looks for a file named @file{mixguile.scm} in
-your MDK configuration directory (@file{~/.mdk}) and, if it exists,
-loads it before entering the REPL. Therefore, you can copy your
-definitions into that file, or load the @file{functions.scm} file from
address@hidden
-
address@hidden Hook functions, Scheme scripts, Defining new functions, Using 
mixguile
address@hidden Hook functions
address@hidden hook function
address@hidden pre-hook
address@hidden post-hook
-
-Hooks are functions called before or after a given event occurs. In
address@hidden, you can define command and break hooks, which are
-associated, respectively, with command execution and program
-interruption events. The following sections give you a tutorial on using
-hook functions within @code{mixguile}.
-
address@hidden
-* Command hooks::
-* Break hooks::
address@hidden menu
-
address@hidden Command hooks, Break hooks, Hook functions, Hook functions
address@hidden Command hooks
-
-In the previous section, we have seen how to extend @code{mixguile}'s
-functionality through the use of user-defined functions. Frequently,
-you'll write new functions that improve in some way the workings of a
-built-in @code{mixvm} command, following this pattern:
-
address@hidden a
address@hidden
-Prepare the command execution
address@hidden
-Execute the desired command
address@hidden
-Perform post execution operations
address@hidden enumerate
-
-We call the functions executed in step (a) @dfn{pre-hook}s, and those in
-step (c) @dfn{post-hook}s of the given command. @code{mixguile} lets you
-specify pre- and post-hooks for any @code{mixvm} command using the
address@hidden and @code{mix-add-post-hook} functions, which
-take as arguments a symbol naming the command and the function to be
-executed. In other words, @code{mixguile} will execute steps (a) and (c)
-whenever you evaluate (b). The hook functions must take a single argument,
-which is a string list of the command's arguments. As an example, let us
-define the following hooks for the @code{next} command:
-
address@hidden
-(define next-pre-hook
-  (lambda (arglist)
-    (mix-slog #f)))
-
-(define next-post-hook
-  (lambda (arglist)
-    (display "Stopped at line ")
-    (display (mix-src-line-no))
-    (display ": ")
-    (display (mix-src-line))
-    (newline)
-    (mix-slog #t)))
address@hidden example
address@hidden
-In these functions, we are using the function @code{mix-slog} to turn
-off the informational messages produced by the virtual machine, since we
-are providing our own in the post-hook function. To install these
-hooks, we would write:
-
address@hidden
-(mix-add-pre-hook 'next next-pre-hook)
-(mix-add-post-hook 'next next-post-hook)
address@hidden example
address@hidden
-Assuming we have put the above expressions in @code{mixguile}'s
-initialization file, we would obtain the following results when
-evaluating @code{mix-next}:
-
address@hidden
-guile> (mix-next)
-MIXAL HELLO WORLD
-Stopped at line 6:             HLT
-guile>
address@hidden example
-
-As a second more elaborate example, let's define hooks that print
-the address and contents of a cell being modified using @code{smem}. The
-hook functions could be something like this:
-
address@hidden
-(define smem-pre-hook
-  (lambda (arglist)
-    (if (eq? (length arglist) 2)
-        (begin
-          (display "Changing address ")
-          (display (car arglist))
-          (newline)
-          (display "Old contents: ")
-          (display (mix-cell (string->number (car arglist))))
-          (newline))
-        (error "Wrong arguments" arglist))))
-
-(define smem-post-hook
-  (lambda (arglist)
-    (if (eq? (length arglist) 2)
-        (begin
-          (display "New contents: ")
-          (display (mix-cell (string->number (car arglist))))
-          (newline)))))
address@hidden example
address@hidden
-and we can install them using
-
address@hidden
-(mix-add-pre-hook 'smem smem-pre-hook)
-(mix-add-post-hook 'smem smem-post-hook)
address@hidden example
address@hidden
-Afterwards, a sample execution of @code{mix-smem} would look like this:
-
address@hidden
-guile> (mix-smem 2000 100)
-Changing address 2000
-Old contents: 0
-New contents: 100
-guile>
address@hidden example
-
address@hidden global hook
-
-You can add any number of hooks to a given command. They will be
-executed in the same order in which they are registered. You can also
-define global post- or pre- hooks, which will be called whenever any
address@hidden command is executed. Global hook functions must admit two
-arguments: a string naming the invoked command and a string list
-of its arguments. They are installed using the Scheme functions
address@hidden and @code{mix-add-global-post-hook}. A
-simple example of a global hook would be:
-
address@hidden
-guile> (define pre-hook
-         (lambda (cmd args)
-           (display cmd)
-           (display " invoked with arguments ")
-           (display args)
-           (newline)))
-guile> (mix-add-global-pre-hook pre-hook)
-ok
-guile> (mix-pmem 120 125)
-pmem invoked with arguments (120-125)
-0120: + 00 00 00 00 00 (0000000000)
-0121: + 00 00 00 00 00 (0000000000)
-0122: + 00 00 00 00 00 (0000000000)
-0123: + 00 00 00 00 00 (0000000000)
-0124: + 00 00 00 00 00 (0000000000)
-0125: + 00 00 00 00 00 (0000000000)
-guile>
address@hidden example
-
-Note that if you invoke @code{mixvm} commands within a global hook, their
-associated command hooks will also be run. Thus, if you have installed both
-the @code{next} hooks described earlier and the global hook above,
-executing @code{mix-next} will yield the following result:
-
address@hidden
-guile> (mix-next 5)
-next invoked with arguments (5)
-slog invoked with arguments (off)
-MIXAL HELLO WORLD
-Stopped at line 7: MSG         ALF   "MIXAL"
-slog invoked with arguments (on)
-guile>
address@hidden example
-
-Adventurous readers may see the above global hook as the beginning of a
-command log utility or a macro recorder that saves your commands for
-replay.
-
address@hidden Break hooks,  , Command hooks, Hook functions
address@hidden Break hooks
-
address@hidden break hook
-
-We have seen in the previous section how to associate hooks to command
-execution, but this is not the whole story. You can also associate hook
-functions to program interruption, specifying functions that should be
-called every time the execution of a MIX program is stopped due to the
-presence of a breakpoint, either explicit or conditional. Break hooks
-take as arguments the line number and memory address at which the break
-occurred. A simple hook that logs the line and address of the breakpoint
-could be defined as:
-
address@hidden
-(define break-hook
-  (lambda (line address)
-    (display "Breakpoint encountered at line ")
-    (display line)
-    (display " and address ")
-    (display address)
-    (newline)))
address@hidden example
address@hidden
-and installed for explicit and conditional breakpoints using:
-
address@hidden
-(mix-add-break-hook break-hook)
-(mix-add-cond-break-hook break-hook)
address@hidden example
address@hidden
-After that, every time the virtual machine encounters a breakpoint,
address@hidden will be evaluated automatically. @footnote{You may have
-noticed that break hooks can be implemented in terms of command hooks
-associated to @code{mix-run} and @code{mix-next}. As a matter of fact,
-they @emph{are} implemented this way. Take a look at the file
address@hidden@emph{install_dir}/share/mdk/mix-vm-stat.scm} if you are curious.}
-
address@hidden Scheme scripts,  , Hook functions, Using mixguile
address@hidden Scheme scripts
address@hidden Scheme script
address@hidden non-interactive
-
-Another way to use @code{mixguile} is to write executable scripts, which
-perform a set of commands for you. This is done using the
address@hidden switch @code{-s} (being a Guile shell, @code{mixguile}
-accepts all the command options of @code{guile}; type @code{mixguile -h}
-for a list of all available command options). For instance, if you have
-a very useful MIX program @file{foo.mix} that you frequently run, you
-don't have to fire up a MIX virtual machine, load and run the program
-every time. You can write a Scheme script instead:
-
address@hidden
-#! /usr/bin/mixguile -s
-!#
-;;; runprimes: execute the primes.mix program
-
-;; load the file you want to run
-(mix-load "../samples/primes")
-;; execute it
-(mix-run)
-;; print the contents of registers
-(mix-pall)
-;; ...
address@hidden example
-
-Just save the above script to a file named, say, @file{runtest}, make it
-executable (@code{chmod +x runtest}), and execute it from the Unix
-shell:
-
address@hidden
-$ ./runtest
-Program loaded. Start address: 3000
-Running ...
-... done
-Elapsed time: 190908 /Total program time: 190908 (Total uptime: 190908)
-rA: + 30 30 30 30 30 (0511305630)
-rX: + 30 30 32 32 39 (0511313959)
-rJ: + 47 18 (3026)
-rI1: + 00 00 (0000)     rI2: + 55 51 (3571)
-rI3: + 00 19 (0019)     rI4: + 31 51 (2035)
-rI5: + 00 00 (0000)     rI6: + 00 00 (0000)
-Overflow: F
-Cmp: L
-$
address@hidden example
-
-Note that this is far more flexible than running programs
-non-interactively using @code{mixvm} (@pxref{Non-interactive mode})
-because you can execute any combination of commands you want from a
-Scheme script (not just running and dumping the registers). For
-additional @code{mixguile} command line options, see @ref{Invoking
-mixguile}.
-
address@hidden Using Scheme in mixvm and gmixvm,  , Using mixguile, Getting 
started
address@hidden  Using Scheme in @code{mixvm} and @code{gmixvm}
address@hidden @code{scmf}
-
-In the previous section (@pxref{Using mixguile}) we have seen how the
-Guile shell @code{mixguile} offers you the possibility of using Scheme
-to manipulate a MIX virtual machine and extend the set of commands
-offered by @code{mixvm} and @code{gmixvm}. This possibility is not
-limited to the @code{mixguile} shell. Actually, both @code{mixvm} and
address@hidden incorporate an embedded Guile interpreter, and can
-evaluate Scheme expressions. To evaluate a single-line expression at the
address@hidden or @code{gmixvm} command prompt, simply write it and press
-return (the command parser will recognize it as a Scheme expression
-because it is parenthesized, and pass it to the Guile
-interpreter). A sample @code{mixvm} session using Scheme expressions
-could be:
-
address@hidden
-MIX > load hello
-Program loaded. Start address: 3000
-MIX > (define a (mix-loc))
-MIX > run
-Running ...
-MIXAL HELLO WORLD
-... done
-Elapsed time: 11 /Total program time: 11 (Total uptime: 11)
-MIX > (mix-pmem a)
-3000: + 46 58 00 19 37 (0786957541)
-MIX > (mix-pmem (mix-loc))
-3002: + 14 09 27 01 13 (0237350989)
-MIX >
address@hidden example
-
-You can also load and evaluate a file, using the @code{scmf}
-command like this:
-
address@hidden
-MIX> scmf /path/to/file/file.scm
address@hidden example
-
-Therefore, you have at your disposal all the @code{mixguile} goodies
-described above (new functions, new command definitions, hooks, etc.)
-inside @code{mixvm} and @code{gmixvm}. In other words, these programs
-are extensible using Scheme. See @ref{Using mixguile} for examples of
-how to do it.
-
-

Index: Press-use/MDK/mdk_index.texi
===================================================================
RCS file: Press-use/MDK/mdk_index.texi
diff -N Press-use/MDK/mdk_index.texi
--- Press-use/MDK/mdk_index.texi        28 Jul 2003 18:18:00 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
address@hidden -*-texinfo-*-
address@hidden This is part of the GNU MDK Reference Manual.
address@hidden Copyright (C) 2000, 2001, 2003
address@hidden   Free Software Foundation, Inc.
address@hidden See the file mdk.texi for copying conditions.
-
address@hidden $Id: mdk_index.texi,v 1.1 2003/07/28 18:18:00 opus Exp $
-
address@hidden Concept Index, Instructions and commands, Copying, Top
address@hidden Concept Index
-
address@hidden tail recursion
address@hidden cp
-

Index: Press-use/MDK/mdk_install.texi
===================================================================
RCS file: Press-use/MDK/mdk_install.texi
diff -N Press-use/MDK/mdk_install.texi
--- Press-use/MDK/mdk_install.texi      28 Jul 2003 18:18:00 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,288 +0,0 @@
address@hidden -*-texinfo-*-
address@hidden This is part of the GNU MDK Reference Manual.
address@hidden Copyright (C) 2000, 2001, 2002, 2003
address@hidden   Free Software Foundation, Inc.
address@hidden See the file mdk.texi for copying conditions.
-
address@hidden Installing MDK, MIX and MIXAL tutorial, Acknowledgments, Top
address@hidden  node-name,  next,  previous,  up
address@hidden Installing @sc{mdk}
-
address@hidden
-* Download::
-* Requirements::
-* Basic installation::
-* Emacs support::
-* Special configure flags::
-* Supported platforms::
address@hidden menu
-
address@hidden Download, Requirements, Installing MDK, Installing MDK
address@hidden  node-name,  next,  previous,  up
address@hidden Download the source tarball
-
-GNU @sc{mdk} is distributed as a source tarball available for download
-at the following @acronym{URL}s:
-
address@hidden @bullet
address@hidden
address@hidden://ftp.gnu.org/pub/gnu/mdk}
address@hidden
address@hidden://www.gnu.org/prep/ftp.html, GNU mirrors}
address@hidden
address@hidden://sourceforge.net/project/showfiles.php?group_id=13897}
address@hidden itemize
-
-The above sites contain the latest stable releases of @sc{mdk}. The
-development branch is available at:
-
address@hidden @bullet
address@hidden
address@hidden://savannah.gnu.org/cvs/?group_id=118}
address@hidden itemize
-
-After you have downloaded the source tarball, unpack it in a directory
-of your choice using the command:
-
address@hidden
-tar xfvz mdk-X.Y.tar.gz
address@hidden example
-
address@hidden
-where @var{X.Y} stands for the downloaded version (the current stable
-release being version @value{VERSION}).
-
address@hidden Requirements, Basic installation, Download, Installing MDK
address@hidden  node-name,  next,  previous,  up
address@hidden Requirements
-
-In order to build and install @sc{mdk}, you will need some or all of
-the following libraries installed in your system, depending on the
-configuration desired:
-
address@hidden @bullet
address@hidden
address@hidden://www.gtk.org, GLIB 1.2.0} (required)
address@hidden
address@hidden://www.gnu.org/software/flex/flex.html, GNU Flex 2.3} (required)
address@hidden
address@hidden://www.gtk.org, GTK 1.2.0} (optional)
address@hidden
address@hidden://ftp.gnome.org/pub/GNOME/stable/sources/libglade/, Libglade}
-(optional)
address@hidden
address@hidden://cnswww.cns.cwru.edu/php/chet/readline/rltop.html, GNU
-Readline}
-(optional)
address@hidden
address@hidden://www.gnu.org/software/guile, GNU Libguile 1.3} (optional)
address@hidden itemize
-
-If present, readline and history are used to provide command
-completion and history management to the command line MIX virtual
-machine, @code{mixvm}.  GTK+ and libglade are needed if you want to
-build the graphical interface to the MIX virtual machine,
address@hidden Finally, if libguile is found, the @sc{mdk} utilities
-will be compiled with Guile support and will be extensible using
-Scheme.
-
address@hidden note}: you will need both the libraries @emph{and} the
-headers; this means both the library package and the @file{-dev}
-package if you do not compile your libraries yourself (ex: installing
address@hidden and @file{libgtk1.2-dev} on Debian).
-
address@hidden Basic installation, Emacs support, Requirements, Installing MDK
address@hidden  node-name,  next,  previous,  up
address@hidden Basic installation
-
address@hidden uses GNU Autoconf and Automake tools, and therefore should
-be built and installed without hassle using the following commands
-inside the source directory:
-
address@hidden
-./configure
-make
-make install
address@hidden example
-
address@hidden
-where the last one must be run as root.
-
-The first command, @code{configure}, will set up the makefiles for
-your system. In particular, @code{configure} will look for GTK+ and
-libglade, and, if they are present, will generate the appropriate
-makefiles for building the @code{gmixvm} graphical user
-interface. Upon completion, you should see a message with the
-configuration results like the following:
-
address@hidden
-*** GNU MDK 1.0 has been successfully configured. ***
-
-Type 'make' to build the following utilities:
-    - mixasm (MIX assembler)
-    - mixvm (MIX virtual machine, with readline support,
-             with guile support)
-    - gmixvm (mixvm GTK+ GUI, with guile support)
-    - mixguile (the mixvm guile shell)
address@hidden example
-
address@hidden
-where the last lines may be missing if you lack the libraries
-mentioned above.
-
-The next command, @code{make}, will actually build the @sc{mdk}
-programs in the following locations:
-
address@hidden @bullet
address@hidden
address@hidden/mixasm}
address@hidden
address@hidden/mixvm}
address@hidden
address@hidden/gmixvm}
address@hidden
address@hidden/mixguile}
address@hidden itemize
-
-You can run these programs from within their directories, but I
-recommend you install them in proper locations using @code{make
-install} from a root shell.
-
address@hidden Emacs support, Special configure flags, Basic installation, 
Installing MDK
address@hidden  node-name,  next,  previous,  up
address@hidden Emacs support
-
address@hidden includes extensive support for Emacs. Upon installation, all
-the elisp code is installed in @file{PREFIX/share/mdk}, where
address@hidden stands for your installation root directory (e.g.
address@hidden/usr/local}). You can copy the elisp files to a directory that
-is already in your load-path, or you can add the above directory to
-it.  Assuming that the installing prefix is @file{/usr/local}, you can
-do it by adding the following line to your @file{.emacs} file:
-
address@hidden
-(setq load-path (cons "/usr/local/share/mdk" load-path))
address@hidden lisp
-
address@hidden programs can be written using Emacs and the elisp program
address@hidden/mdk/mixal-mode.el}, contributed by @value{PIETER}. It
-provides font locking, interactive help, compiling assistance and
-invocation of the @code{MIX} virtual machine via a new major mode
-called @code{mixal-mode}. To start @code{mixal-mode} automatically
-whenever you edit a @code{MIXAL} source file, add the following lines
-to your @file{.emacs} file:
-
address@hidden
-(autoload 'mixal-mode "mixal-mode" t)
-(add-to-list 'auto-mode-alist '("\\.mixal\\'" . mixal-mode))
address@hidden lisp
-
-In addition, @code{mixvm} can be run within an Emacs @acronym{GUD}
-buffer using the elisp program @file{share/mdk/mixvm.el}, contributed
-by @value{PHILIP}. @file{mixvm.el} provides an interface between
address@hidden's @code{mixvm} and Emacs, via @acronym{GUD}. Place this file
-in your load-path, optionally adding the following line to your
address@hidden file:
-
address@hidden
-(autoload 'mixvm "mixvm" "mixvm/gud interaction" t)
address@hidden lisp
-
-
address@hidden Special configure flags, Supported platforms, Emacs support, 
Installing MDK
address@hidden  node-name,  next,  previous,  up
address@hidden Special configure flags
-
-You can fine-tune the configuration process by using the following
-switches with configure:
-
address@hidden @w{--enable-gui[=yes|no]}
address@hidden --disable-gui
-Enables/disables the build of the MIX virtual machine GUI
-(@code{gmixvm}). If the required libraries are missing
-(@pxref{Requirements}) the configure script with automatically disable
-this feature.
address@hidden defopt
-
address@hidden @w{--with-guile[=yes|no]}
address@hidden --without-guile
-Enables/disables the Guile support for @code{mixvm} and @code{gmixvm},
-and the build of @code{mixguile}.  If the required libraries are
-missing (@pxref{Requirements}) the configure script will automatically
-disable this feature.
address@hidden defopt
-
address@hidden @w{--with-readline[=yes|no]}
address@hidden --without-readline
-Enables/disables the GNU Readline support for @code{mixvm}.  If the
-required libraries are missing (@pxref{Requirements}) the configure
-script with automatically disable this feature.
address@hidden defopt
-
-For additional, boilerplate configure options, see the @file{INSTALL}
-file, or run
-
address@hidden
-configure --help
address@hidden example
-
address@hidden Supported platforms,  , Special configure flags, Installing MDK
address@hidden  node-name,  next,  previous,  up
address@hidden Supported platforms
-
-GNU MDK has been tested on the following platforms:
-
address@hidden
address@hidden
-Debian GNU/Linux 2.2, 2.3, 3.0, 3.1
address@hidden
-Red Hat GNU/Linux 8.0 (Ronald Cole), 7.0 (Agustin Navarro), 6.2
-(Roberto Ferrero)
address@hidden
-Mandrake 8.0 (Agustin Navarro)
address@hidden
-FreeBSD 4.2, 4.3, 4.4, 4.5 (Ying-Chieh Liao)
address@hidden
-Solaris 2.8/gcc 2.95.3 (Stephen Ramsay)
address@hidden
-MS Windows 98 SE/Cygwin 1.1.8-2 (Christoph von
-Nathusius)@footnote{Caveats: Christoph has only tested @code{mixvm}
-and @code{mixasm} on this platform, using @code{gcc} 2.95.3-2,
address@hidden 1.2.10 and @code{GNUreadline} 4.1-2. He has reported
-missing history functionalities on this initial try. If you find
-problems with history/readline functionality, please try a newer,
-manually installed readline version.}
address@hidden
-Mac OS X 10.1.2 (Johan Swanljung)
address@hidden
-AMD Athlon, GNU/Linux version 2.4.2-2smp (Red Hat 7.1 (Seawolf)) (N.
-H. F. Beebe)
address@hidden
-Apple PowerPC G3, GNU/Linux 2.2.18-4hpmac (Red Hat Linux/PPC
-2000 Q4) (N. H. F. Beebe)
address@hidden
-DEC Alpha, GNU/Linux 2.2.19-6.2.1 (Red Hat 6.2) (N. H. F. Beebe)
address@hidden
-Compaq/DEC Alpha OSF/1 4.0F (ONLY after adding rsync's snprintf()
-implementation) (N. H. F. Beebe)
address@hidden
-IBM PowerPC AIX 4.2 (N. H. F. Beebe)
address@hidden
-Intel Pentium III, GNU/Linux 2.4.9-31smp (Red Hat 7.2 (Enigma)) (N. H.
-F. Beebe)
address@hidden
-SGI Origin 200, IRIX 6.5 (N.
-H. F. Beebe)
address@hidden
-Sun SPARC, GNU/Linux 2.2.19-6.2.1 (Red Hat 6.2) (N. H. F. Beebe)
address@hidden
-Sun SPARC, Solaris 2.8 (N. H. F. Beebe)
address@hidden itemize
-
address@hidden will probably work on any GNU/Linux or BSD platform. If you
-try it on a platform not listed above, please send an email to
address@hidden@@gnu.org, the author}.
-
-
-
-

Index: Press-use/MDK/mdk_intro.texi
===================================================================
RCS file: Press-use/MDK/mdk_intro.texi
diff -N Press-use/MDK/mdk_intro.texi
--- Press-use/MDK/mdk_intro.texi        28 Jul 2003 18:18:00 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,70 +0,0 @@
address@hidden -*-texinfo-*-
address@hidden This is part of the GNU MDK Reference Manual.
address@hidden Copyright (C) 2000, 2001, 2003
address@hidden   Free Software Foundation, Inc.
address@hidden See the file mdk.texi for copying conditions.
-
address@hidden $Id: mdk_intro.texi,v 1.1 2003/07/28 18:18:00 opus Exp $
-
address@hidden Introduction, Acknowledgments, Top, Top
address@hidden  node-name,  next,  previous,  up
address@hidden Introduction
address@hidden Introduction
-
-In his book series @cite{The Art of Computer Programming} (published
-by Addison Wesley), Donald Knuth uses an imaginary computer, the MIX,
-and its associated machine-code and assembly languages to illustrate
-concepts and algorithms as they are presented.
-
-The MIX's architecture is a simplified version of those found in real
-CISC CPUs, and the MIX assembly language (MIXAL) provides a set of
-primitives that will be very familiar to any person with a minimal
-level of experience in assembly programming. The MIX/MIXAL definition
-is powerful and complete enough to provide a virtual development
-platform for writing quite complex programs, and close enough to real
-computers to be worth using when learning programming techniques. At
-any rate, if you want to learn or improve your programming skills, a
-MIX development environment would come in handy.
-
-The @sc{mdk} package aims at providing such a virtual development
-environment on a GNU box. Thus, @sc{mdk} offers you a set of utilities
-to simulate the MIX computer and to write, compile, run and debug
-MIXAL programs. As of version @value{VERSION}, @sc{mdk} includes the
-following programs:
-
address@hidden @code
address@hidden mixasm
-MIXAL assembler. Assembler which translates MIXAL source files into
-programs that can be run (and debugged) by @code{mixvm}, @code{mixguile}
-or @code{gmixvm}.
address@hidden mixvm
-MIX virtual machine. Emulation of the MIX computer with a @acronym{CLI}.
address@hidden gmixvm
-A GTK+ GUI for the MIX virtual machine. Makes all of @code{mixvm}
-functionality accessible through a graphical interface.
address@hidden mixguile
-A Guile shell, with an embedded MIX virtual machine and built-in
-commands to manipulate it using Scheme.
address@hidden mixal-mode.el
-An Emacs major mode for MIXAL source files editing, providing syntax
-highlighting, documentation lookup and invocation of @code{mixvm}
-within Emacs.
address@hidden mixvm.el
-Elisp program allowing @code{mixvm} to be run inside an Emacs GUD
-buffer, facilitating concurrent editing and debugging of MIXAL programs.
address@hidden table
-
address@hidden and @code{gmixvm} implement a simulator of the MIX
-computer, giving you a virtual machine for executing and debugging MIX
-programs. These binary programs could be written by hand, but it is
-easier to produce them compiling MIXAL source files, using the MIXAL
-assembler @code{mixasm}. On the other hand, @code{mixguile} offers you
-the possibility of manipulating a MIX virtual machine through a set of
-Scheme functions, so that you can use this programming language to
-interact with the virtual machine. In addition, @code{mixvm} and
address@hidden are also able to interpret Scheme scripts (using an
-embedded Guile interpreter). You can use Scheme as an extension
-language to add new functionalities to these programs.
-
-This manual gives you a tutorial of MIX and MIXAL, and a thorough
-description of the use of the @sc{mdk} utilities.

Index: Press-use/MDK/mdk_mixasm.texi
===================================================================
RCS file: Press-use/MDK/mdk_mixasm.texi
diff -N Press-use/MDK/mdk_mixasm.texi
--- Press-use/MDK/mdk_mixasm.texi       28 Jul 2003 18:18:00 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,91 +0,0 @@
address@hidden -*-texinfo-*-
address@hidden This is part of the GNU MDK Reference Manual.
address@hidden Copyright (C) 2000, 2001, 2003
address@hidden   Free Software Foundation, Inc.
address@hidden See the file mdk.texi for copying conditions.
-
address@hidden $Id: mdk_mixasm.texi,v 1.1 2003/07/28 18:18:00 opus Exp $
-
address@hidden mixasm, mixvm, Emacs tools, Top
address@hidden  node-name,  next,  previous,  up
address@hidden @code{mixasm}, the MIXAL assembler
address@hidden @code{mixasm}
address@hidden MIXAL
address@hidden assembler
-
-MIX programs, as executed by @code{mixvm}, are composed of binary
-instructions loaded into the virtual machine memory as MIX
-words. Although you could write your MIX programs directly as a series
-of words in binary format, you have at your disposal a more friendly
-assembly language, MIXAL (@pxref{MIXAL}) which is compiled into binary
-form by @code{mixasm}, the MIXAL assembler included in @sc{mdk}. In this
-chapter, you will find a complete description of @code{mixasm} options.
-
address@hidden
-* Invoking @code{mixasm}::      @code{mixasm} options
address@hidden menu
-
address@hidden Invoking @code{mixasm},  , mixasm, mixasm
address@hidden  node-name,  next,  previous,  up
address@hidden Invoking @code{mixasm}
-
-In its simplest form, @code{mixasm} is invoked with a single argument,
-which is the name of the MIXAL file to be compiled, e.g.:
-
address@hidden
-mixasm hello
address@hidden example
-
address@hidden
-will compile either @file{hello} or @file{hello.mixal}, producing a
-binary file named @file{hello.mix} if no errors are found.
-
-In addition, @code{mixasm} can be invoked with the following command
-line options (note, that, following GNU's conventions, we provide a long
-option name for each available single letter switch):
-
address@hidden
-mixasm [-vhulg] [-o OUTPUT_FILE] [--version] [--help] [--usage]
-       [--debug] [--output=OUTPUT_FILE] [--list[=LIST_FILE]] file
address@hidden example
-
address@hidden
-The meaning of these options is as follows:
-
address@hidden -v
address@hidden --version
-Prints version and copyleft information and exits.
address@hidden defopt
-
address@hidden -h
address@hidden --help
address@hidden -u
address@hidden --usage
-Prints a summary of available options and exits.
address@hidden defopt
-
address@hidden -g
address@hidden --debug
-Includes debugging information in the compiled file, allowing breakpoint
-setting at source level and symbol table inspection under @code{mixvm}.
address@hidden defopt
-
address@hidden -o output_file
address@hidden --output=output_file
-By default, the given source file @var{file.mixal} is compiled into
address@hidden You can provide a different name for the output file
-using this option.
address@hidden defopt
-
address@hidden -l
address@hidden @w{--list[=list_file]}
-This option causes @code{mixasm} to produce, in addition to the
address@hidden file, an ASCII file containing a summary of the compilation
-results. If no argument is provided, the file is named after the MIXAL
-source file, with its extension changed to @file{.mls}. Otherwise, the
-listing file is named according to the argument.
address@hidden defopt
-
-
-
-

Index: Press-use/MDK/mdk_mixguile.texi
===================================================================
RCS file: Press-use/MDK/mdk_mixguile.texi
diff -N Press-use/MDK/mdk_mixguile.texi
--- Press-use/MDK/mdk_mixguile.texi     28 Jul 2003 18:18:00 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,449 +0,0 @@
address@hidden -*-texinfo-*-
address@hidden This is part of the GNU MDK Reference Manual.
address@hidden Copyright (C) 2000, 2001, 2003
address@hidden   Free Software Foundation, Inc.
address@hidden See the file mdk.texi for copying conditions.
-
address@hidden $Id: mdk_mixguile.texi,v 1.1 2003/07/28 18:18:00 opus Exp $
-
address@hidden mixguile, Problems, gmixvm, Top
address@hidden @code{mixguile}, the Scheme virtual machine
address@hidden @code{mixguile}
-
-This chapter provides a reference for using @code{mixguile} and the
-Scheme function library accessible to the MIX virtual machine in the
address@hidden emulators (@code{mixguile}, @code{mixvm} and @code{gmixvm}). See
address@hidden mixguile} for a tutorial, step-by-step introduction to
address@hidden and using Scheme as an extension language for the
address@hidden MIX virtual machines.
-
address@hidden
-* Invoking mixguile::           Command line options.
-* Scheme functions reference::  Scheme functions accessing the VM.
address@hidden menu
-
address@hidden Invoking mixguile, Scheme functions reference, mixguile, mixguile
address@hidden Invoking @code{mixguile}
address@hidden @code{mixguile} options
-
-Invoking @code{mixguile} without arguments will enter the Guile REPL
-(read-eval-print loop) after loading, if it exists, the user's
-initialization file (@file{~/.mdk/mixguile.scm}).
-
address@hidden accepts the same command line options as Guile:
-
address@hidden
-mixguile [-s SCRIPT] [-c EXPR] [-l FILE] [-e FUNCTION] [-qhv]
-         [--help] [--version]
address@hidden example
-
-The meaning of these options is as follows:
-
address@hidden -h
address@hidden --help
-Prints usage summary and exits.
address@hidden defopt
-
address@hidden -v
address@hidden --version
-Prints version and copyleft information and exits.
address@hidden defopt
-
address@hidden -s SCRIPT
-Loads Scheme code from @var{script}, evaluates it and exits. This option
-can be used to write executable Scheme scripts, as described in
address@hidden scripts}.
address@hidden defopt
-
address@hidden -c EXPR
-Evaluates the given Scheme expression and exits.
address@hidden defopt
-
address@hidden -l FILE
-Loads the given Scheme file and enters the REPL (read-eval-print loop).
address@hidden defopt
-
address@hidden -e FUNCTION
-After reading the script, executes the given function using the provided
-command line arguments. For instance, you can write the following Scheme
-script:
-
address@hidden
-#! /usr/bin/mixguile \
--e main -s
-!#
-
-;;; execute a given program and print the registers.
-
-(define main
-  (lambda (args)
-    ;; load the file provided as a command line argument
-    (mix-load (cadr args))
-    ;; execute it
-    (mix-run)
-    ;; print the contents of registers
-    (mix-pall)))
-
address@hidden example
address@hidden
-save it in a file called, say, @file{foo}, make it executable, and run
-it as:
-
address@hidden
-$ ./foo hello
address@hidden example
address@hidden
-This invocation will cause the evaluation of the @code{main} function
-with a list of command line parameters as its argument (@code{("./foo"
-"hello")} in the above example. Note that command line options to
address@hidden must be written on their own line after the @code{\} symbol.
address@hidden defopt
-
address@hidden -q
-Do not load user's initialization file. When @code{mixguile} starts up,
-it looks for a file named @file{mixguile.scm} in the user's @sc{mdk}
-configuration directory (@file{~/.mdk}), and loads it if it exists. This
-option tells @code{mixguile} not to load the initialization file.
address@hidden defopt
-
-
address@hidden Scheme functions reference,  , Invoking mixguile, mixguile
address@hidden Scheme functions reference
-
-As we have previously pointed out, @code{mixguile} embeds a MIX virtual
-machine which can be accessed through a set of Scheme
-functions. Conversely, @code{mixvm} and @code{gmixvm} contain a Guile
-interpreter, and are able to use this same Scheme library, as well as
-all the other Guile/Scheme primitives and any user defined
-function. Therefore, you have at your disposal a powerful programming
-language, Scheme, to extend the @sc{mdk} virtual machine emulators (see
address@hidden Scheme in @code{mixvm} and @code{gmixvm}} for examples of how to 
do it).
-
-The following subsections describe functions available in the MIX/Scheme
-library.
-
address@hidden
-* mixvm wrappers::              Functions invoking mixvm commands.
-* Hooks::                       Adding hooks to mixvm commands.
-* Additional VM functions::     Functions accessing the MIX virtual machine.
address@hidden menu
-
address@hidden mixvm wrappers, Hooks, Scheme functions reference, Scheme 
functions reference
address@hidden @code{mixvm} command wrappers
-
-For each of the @code{mixvm} commands listed in @ref{Commands}, there is
-a corresponding Scheme function named by prefixing the command name with
address@hidden (e.g., @code{mix-load}, @code{mix-run} and so on). These
-command wrappers are implemented using a generic command dispatching
-function:
-
address@hidden mixvm-cmd command argument
-Dispatches the given @var{command} to the MIX virtual machine appending the
-provided @var{argument}. Both @var{command} and @code{argument} must be
-strings. The net result is the same as writing "@var{command} @var{argument}" 
at
-the @code{mixvm} or @code{gmixvm} command prompt.
address@hidden defun
-
-For instance, you can invoke the @code{run} command at the @code{mixvm}
-prompt in three equivalent ways:
-
address@hidden
-MIX > run hello
-MIX > (mix-run "hello")
-MIX > (mixvm-cmd "run" "hello")
address@hidden example
address@hidden
-Only the two last forms can be used at the @code{mixguile} prompt or
-inside a Scheme script.
-
-The @code{mix-} functions evaluate to an unspecified value. If you want
-to check the result of the last @code{mixvm} command invocation, use the
address@hidden function:
-
address@hidden mix-last-result
-Returns @var{#t} if the last @code{mixvm} command invocation was
-successful, @var{#f} otherwise.
address@hidden defun
address@hidden
-Using this function, we could improve the script for running a program
-presented in the previous section by adding error checking:
-
-
address@hidden
-#! /usr/bin/mixguile \
--e main -s
-!#
-
-;;; Execute a given program and print the registers.
-
-(define main
-  (lambda (args)
-    ;; load the file provided as a command line argument
-    (mix-load (cadr args))
-    ;; execute it if mix-load succeeded
-    (if (mix-last-result) (mix-run))
-    ;; print the contents of registers if the above commands succeeded
-    (if (mix-last-result) (mix-pall))))
address@hidden example
-
-Please, refer to @ref{Commands} for a list of available commands. Given
-the description of @code{mixvm}, it is straightforward to use its
-Scheme counterpart. Therefore, we will not give a complete
-description of those functions here. Instead, we will only mention those
-wrappers that require a treatment differing from that of their
-command counterparts.
-
address@hidden mix-preg [register]
address@hidden mix-sreg register value
-The argument @var{register} of these functions can be either a string or
-a symbol representing the desired register. For instance, the following
-invocations are equivalent:
-
address@hidden
-(mix-preg 'I1)
-(mix-preg "I1")
address@hidden example
address@hidden defun
-
address@hidden mix-pmem from [to]
-The command @code{pmem} takes a single argument that can be either a
-cell number or a range of the form @code{FROM-TO}. This function takes
-one argument to ask for a single memory cell's contents, or two parameters
-to ask for a range. For instance, the following commands are equivalent:
-
address@hidden
-MIX > pmem 10-12
-0010: + 00 00 00 00 00 (0000000000)
-0011: + 00 00 00 00 00 (0000000000)
-0012: + 00 00 00 00 00 (0000000000)
-MIX > (mix-pmem 10 12)
-0010: + 00 00 00 00 00 (0000000000)
-0011: + 00 00 00 00 00 (0000000000)
-0012: + 00 00 00 00 00 (0000000000)
-MIX >
address@hidden example
address@hidden defun
-
address@hidden mix-sover #t|#f
-The command @code{sover} takes as argument either the string @code{T} or
-the string @code{F}, to set, respectively, the overflow toggle to true
-or false. Its Scheme counterpart, @code{mix-sover}, takes as an argument
-a Scheme boolean value: @code{#t} (true) or @code{#f} (false).
address@hidden defun
-
-For the remaining functions, you simply must take into account that when
-the command arguments are numerical, the corresponding Scheme function
-takes as arguments Scheme number literals. On the other hand, when the
-command argument is a string, the argument of its associated Scheme
-function will be a Scheme string. By way of example, here are two pairs
-of equivalent commands:
-
address@hidden
-MIX > load ../samples/hello
-MIX > (mix-load "../samples/hello")
-
-MIX > next 5
-MIX > (mix-next 5)
address@hidden example
-
address@hidden Hooks, Additional VM functions, mixvm wrappers, Scheme functions 
reference
address@hidden Hook functions
-
-Hooks are functions evaluated before or after executing a @code{mixvm}
-command (or its corresponding Scheme function wrapper), or after an
-explicit or conditional breakpoint is found during the execution of a
-MIX program. The following functions let you install hooks:
-
address@hidden mix-add-pre-hook command hook
-Adds a function to the list of pre-hooks associated with the given
address@hidden @var{command} is a string naming the corresponding @code{mixvm}
-command, and @var{hook} is a function which takes a single argument: a
-string list of the command's arguments. The following Scheme code defines
-a simple hook and associates it with the @code{run} command:
-
address@hidden
-(define run-hook
-  (lambda (args)
-    (display "argument list: ")
-    (display args)
-    (newline)))
-(mix-add-pre-hook "run" run-hook)
address@hidden example
-
-Pre-hooks are executed, in the order they are added, before invoking the
-corresponding command (or its associated Scheme wrapper function).
address@hidden defun
-
address@hidden mix-add-post-hook command hook
-Adds a function to the list of pre-hooks associated with the given
address@hidden The arguments have the same meaning as in
address@hidden
address@hidden defun
-
address@hidden mix-add-global-pre-hook hook
address@hidden mix-add-global-post-hook hook
-Global pre- and post- hooks are executed whenever any @code{mixvm} command
-or function wrapper is invoked. In this case, @var{hook} takes two
-arguments: a string with the name of the command being invoked, and a
-string list of the command's arguments.
address@hidden defun
-
address@hidden mix-add-break-hook hook
address@hidden mix-add-cond-break hook
-Add a hook function to be executed when an explicit or conditional
-breakpoint is encountered during program execution. @var{hook} is a
-function taking two arguments: the source line number where the hook has
-occurred, and the current program counter value. The following code
-shows a simple definition and installation of a break hook:
-
address@hidden
-(define break-hook
-  (lambda (line address)
-    (display "Breakpoint at line ") (display line)
-    (display " and address ") (display address)
-    (newline)))
-(mix-add-break-hook break-hook)
address@hidden example
-
-Break hook functions are entirely implemented in Scheme using regular
-post-hooks for the @code{next} and @code{run} commands. If you are
-curious, you can check the Scheme source code at
address@hidden@emph{prefix}/share/mdk/mixguile-vm-stat.scm} (where @emph{prefix}
-stands for your root install directory, usually @code{/usr} or
address@hidden/usr/local}.
address@hidden defun
-
-
-See @ref{Hook functions} for further examples on using hook functions.
-
-
address@hidden Additional VM functions,  , Hooks, Scheme functions reference
address@hidden Additional VM functions
-
-When writing non-trivial Scheme extensions using the MIX/Scheme library,
-you will probably need to evaluate the contents of the virtual machine
-components (registers, memory cells and so on). For instance, you may
-need to store the contents of the @code{A} register in a variable. The
-Scheme functions described so far are of no help; you can print the
-contents of @code{A} using @code{(mix-preg 'A)}, but you cannot define a
-variable containing the contents of @code{A}. To address this kind of
-problem, the MIX/Scheme library provides the following additional
-functions:
-
address@hidden mixvm-status
address@hidden mix-vm-status
-Return the current status of the virtual machine, as a number
-(@code{mixvm-status}) or as a symbol (@code{mix-vm-status}). Possible
-return values are:
address@hidden {aamixvmaastatusaa} {aamixvmastatusaaaaaaa} {return 
valuesaaaaaaaaaaaaaaaaaaaaaaaaaa}
address@hidden @code{(mixvm-status)} @tab @code{(mix-vm-status)} @tab
address@hidden 0 @tab MIX_ERROR @tab Loading or execution error
address@hidden 1 @tab MIX_BREAK @tab Breakpoint encountered
address@hidden 2 @tab MIX_COND_BREAK @tab Conditional breakpoint
address@hidden 3 @tab MIX_HALTED @tab Execution terminated
address@hidden 4 @tab MIX_RUNNING @tab Execution stopped after @code{next}
address@hidden 5 @tab MIX_LOADED @tab Program successfully loaded
address@hidden 6 @tab MIX_EMPTY @tab No program loaded
address@hidden multitable
address@hidden defun
-
address@hidden mix-vm-error?
address@hidden mix-vm-break?
address@hidden mix-vm-cond-break?
address@hidden mix-vm-halted?
address@hidden mix-vm-running?
address@hidden mix-vm-loaded?
address@hidden mix-vm-empty?
-Predicates asking whether the current virtual machine status is
address@hidden, @code{MIX_BREAK}, etc.
address@hidden defun
-
address@hidden mix-reg register
address@hidden mix-set-reg! register value
address@hidden evaluates to a number that is the contents of the
-specified @var{register}. @code{mix-set-reg} sets the contents of the
-given @var{register} to @var{value}. The register can be specified
-either as a string (@code{"A"}, @code{"X"}, etc.) or as a symbol
-(@code{'A}, @code{'X}, etc.). For instance:
-
address@hidden
-guile> (mix-reg 'A)
-2341
-guile> (mix-set-reg! "A" 2000)
-ok
-guile> (define reg-a (mix-reg 'A))
-guile> (display reg-a)
-2000
-guile>
address@hidden example
address@hidden defun
-
address@hidden mix-cell cell_no
address@hidden mix-set-cell! cell_no value
-Evaluate and set the contents of the memory cell number
address@hidden Both @var{cell_no} and @var{value} are Scheme numbers.
address@hidden defun
-
address@hidden mix-loc
-Evaluates to the value of the location counter (i.e., the address of the
-next instruction to be executed).
address@hidden defun
-
address@hidden mix-over
address@hidden mix-set-over! #t|#f
address@hidden evaluates to @code{#t} if the overflow toggle is set,
-and to @code{#f} otherwise. The value of the overflow toggle can be
-modified using @code{mix-set-over!}.
address@hidden defun
-
address@hidden mix-cmp
address@hidden mix-set-cmp! 'L|'E|'G
-Evaluate and set the comparison flag. Possible values are the scheme
-symbols @code{L} (lesser), @code{E} (equal) and @code{G} (greater).
address@hidden defun
-
address@hidden mix-up-time
-Evaluates to the current virtual machine uptime.
address@hidden defun
-
address@hidden mix-lap-time
-Evaluates to the current virtual machine lapsed time, i.e., the time
-elapsed since the last @code{run} or @code{next} command.
address@hidden defun
-
address@hidden mix-prog-time
-Evaluates to the total time spent executing the currently loaded program.
address@hidden defun
-
address@hidden mix-prog-name
-Evaluates to a string containing the basename (without any leading path)
-of the currently loaded MIX program.
address@hidden defun
-
address@hidden mix-prog-path
-Evaluates to a string containing the full path to the currently loaded
-MIX program.
address@hidden defun
-
address@hidden mix-src-path
-Evaluates to a string containing the full path to the source file of the
-currently loaded MIX program.
address@hidden defun
-
address@hidden mix-src-line [lineno]
address@hidden mix-src-line-no
address@hidden evaluates to the current source file number
-during the execution of a program.  @code{mix-src-line} evaluates to a
-string containing the source file line number @var{lineno}. When
-invoked without argument, it evaluates to @code{(mix-src-line
-(mix-src-line-no))}.
address@hidden defun
-
address@hidden mix-ddir
-Evaluates to a string containing the full path of the current device
-directory.
address@hidden defun
-
-
-
-

Index: Press-use/MDK/mdk_mixvm.texi
===================================================================
RCS file: Press-use/MDK/mdk_mixvm.texi
diff -N Press-use/MDK/mdk_mixvm.texi
--- Press-use/MDK/mdk_mixvm.texi        28 Jul 2003 18:18:00 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,789 +0,0 @@
address@hidden -*-texinfo-*-
address@hidden This is part of the GNU MDK Reference Manual.
address@hidden Copyright (C) 2000, 2001, 2002, 2003
address@hidden   Free Software Foundation, Inc.
address@hidden See the file mdk.texi for copying conditions.
-
address@hidden $Id: mdk_mixvm.texi,v 1.1 2003/07/28 18:18:00 opus Exp $
-
address@hidden mixvm, gmixvm, mixasm, Top
address@hidden  node-name,  next,  previous,  up
address@hidden @code{mixvm}, the MIX computer simulator
-
address@hidden mixvm
-
-This chapter describes @code{mixvm}, the MIX computer
-simulator. @code{mixvm} is a command line interface program which
-simulates the MIX computer (@pxref{The MIX computer}). It is able
-to run MIXAL programs (@pxref{MIXAL}) previously compiled with the MIX
-assembler (@pxref{mixasm}). The simulator allows inspection of the MIX
-computer components (registers, memory cells, comparison flag and overflow
-toggle), step-by-step execution of MIX programs, and breakpoint
-setting to aid you in debugging your code. For a tutorial description of
address@hidden usage, see @ref{Running the program}.
-
address@hidden
-* Invocation::                  Options when invoking @code{mixvm}.
-* Commands::                    Commands available in interactive mode.
-* Devices::                     MIX block devices implementation.
address@hidden menu
-
address@hidden Invocation, Commands, mixvm, mixvm
address@hidden  node-name,  next,  previous,  up
address@hidden Invoking @code{mixvm}
-
address@hidden can be invoked with the following command line options
-(note that, following GNU's conventions, we provide a long option name
-for each available single letter switch):
-
address@hidden
-mixvm [-vhurdtq] [--version] [--help] [--usage] [--run] [--dump]
-      [--time] [--noinit]  [FILE[.mix]]
address@hidden example
-
address@hidden
-The meaning of these options is as follows:
-
address@hidden -v
address@hidden --version
-Prints version and copyleft information and exits.
address@hidden defopt
-
address@hidden -h
address@hidden --help
address@hidden -u
address@hidden --usage
-Prints a summary of available options and exits.
address@hidden defopt
-
address@hidden -r
address@hidden --run
-Loads the specified @var{FILE} and executes it. After the program
-execution, @code{mixvm} exits. @var{FILE} must be the name of a binary
address@hidden program compiled with @code{mixasm}. If your program does
-not produce any output, use the @code{-d} flag (see below) to peek the
-virtual machine's state after execution.
address@hidden defopt
-
address@hidden -d
address@hidden --dump
-This option must be used in conjunction with @code{-r}, and tells
address@hidden to print the value of the virtual machine's registers,
-comparison flag and overflow toggle after executing the program named
address@hidden See @xref{Non-interactive mode}, for sample usage.
address@hidden defopt
-
address@hidden -t
address@hidden --time
-This option must be used in conjunction with @code{-r}, and tells
address@hidden to print virtual time statistics for the program's
-execution.
address@hidden defopt
-
-When run without the @code{-r} flag, @code{mixvm} enters its interactive
-mode, showing you a prompt like this one:
-
address@hidden
-MIX >
address@hidden example
-
address@hidden
-and waiting for your commands (@pxref{Commands}). If the
-optional @var{FILE} argument is given, the file @file{FILE.mix} will be
-loaded into the virtual machine memory before entering the interactive
-mode.
-
-The first time @code{mixvm} is invoked, a directory named @file{.mdk} is
-created in your home directory. It contains the @code{mixvm}
-configuration file, the command history file and (by default) the block
-devices files (@pxref{Devices}). Before showing you the command prompt,
address@hidden looks in the @file{~/.mdk} directory for a file named
address@hidden If it exists, it is read and evaluated by the
-embedded Guile interpreter (@pxref{Defining new functions}). You can use
-the @code{-q} command line option to skip this file loading:
-
address@hidden -q
address@hidden --noinit
-Do not load the Guile initialization file @code{~/.mdk/mixguile.scm} at
-start-up.
address@hidden defopt
-
address@hidden Commands, Devices, Invocation, mixvm
address@hidden  node-name,  next,  previous,  up
address@hidden Interactive commands
-
-You can enter the interactive mode of the MIX virtual machine by simply
-invoking @code{mixvm} without arguments. You will then be presented with
-a shell prompt:@footnote{The default command prompt, @samp{MIX > }, can
-be changed using the @code{prompt} command (@pxref{Configuration
-commands}).}
-
address@hidden
-MIX >
address@hidden example
-
address@hidden
-which indicates that a new virtual machine has been initialized and is
-ready to execute your commands. As we have already mentioned, this
-command prompt offers you command line editing facilities which are
-described in the Readline user's manual (chances are that you are
-already familiar with these command line editing capabilities, as they
-are present in many GNU utilities, e.g. the @code{bash}
-shell)address@hidden readline functionality will be available if you have
-compiled @sc{mdk} with readline support, i.e., if GNU readline is
-installed in your system. This is often the case in GNU/Linux and BSD
-systems.} In a nutshell, readline provides command completion using the
address@hidden key and command history using the cursor keys. A history file
-containing the last commands typed in previous sessions is stored in the
address@hidden configuration directory (@file{~/.mdk}).
-
-As a beginner, your best friend will be the @code{help} command, which
-shows you a summary of all available MIX commands and their usage. Its
-syntax is as follows:
-
address@hidden address@hidden command} help [command]
-Prints a short description of the given @var{command} and its usage. If
address@hidden is omitted, @code{help} prints the short description for
-all available commands.
address@hidden deffn
-
address@hidden
-* File commands::               Loading and executing programs.
-* Debug commands::              Debugging programs.
-* State commands::              Inspecting the virtual machine state.
-* Configuration commands::      Changing and storing mixvm settings.
-* Scheme commands::
address@hidden menu
-
address@hidden File commands, Debug commands, Commands, Commands
address@hidden File commands
-
-You have at your disposal a series of commands that lets you load and
-execute MIX executable files, as well as manipulate MIXAL source files:
-
address@hidden {file command} load file[.mix]
-This command loads a binary file @var{file.mix} into the virtual
-machine memory, and positions the program counter at the beginning of
-the loaded program. This address is indicated in the MIXAL source file
-as the operand of the @code{END} pseudoinstruction. Thus, if your
address@hidden source file contains the line:
-
address@hidden
-     END 3000
address@hidden example
-
address@hidden
-and you compile it with @code{mixasm} to produce the binary file
address@hidden, you will load it into the virtual machine as follows:
-
address@hidden
-MIX > load sample
-Program loaded. Start address: 3000
-MIX >
address@hidden example
-
address@hidden deffn
-
address@hidden {file command} run [file[.mix]]
-When executed without argument, this command initiates or resumes
-execution of instructions from the current program counter
-address. Therefore, issuing this command after a successful @code{load}
-will run the loaded program until either an @code{HLT} instruction or a
-breakpoint is found. If you provide a MIX filename as an argument, the
-given file will be loaded (as with @code{load} @var{file}) and
-executed. If @code{run} is invoked again after program execution is
-complete (i.e., after the @code{HLT} instruction has been found in a
-previous run), the program counter is repositioned and execution starts
-again from the beginning. A @code{load} command preserving the currently
-set breakpoints is issued before resuming execution.
address@hidden deffn
-
address@hidden {file command} edit [file[.mixal]]
-The source file @var{file.mixal} is edited using the editor defined in
-the environment variable @var{MDK_EDITOR}. If this variable is not set,
-the following ones are tried in order: @var{X_EDITOR}, @var{EDITOR}
-and @var{VISUAL}. If invoked without argument, the source file for the
-currently loaded MIX file is edited. The command used to edit source
-files can also be configured using the @code{sedit} command
-(@pxref{Configuration commands}).
address@hidden deffn
-
address@hidden {file command} compile file[.mixal]
-The source file @var{file.mixal} is compiled (with debug information
-enabled) using @code{mixasm}. If invoked without argument, the source
-file for the currently loaded MIX file is recompiled. The compilation
-command can be set using the @code{sasm} command (@pxref{Configuration
-commands}).
address@hidden deffn
-
address@hidden {file command} pprog
address@hidden {file command} psrc
-Print the path of the currently loaded MIX program and its source file:
-
address@hidden
-MIX > load ../samples/primes
-Program loaded. Start address: 3000
-MIX > pprog
-../samples/primes.mix
-MIX > psrc
-/home/jao/projects/mdk/gnu/samples/primes.mixal
-MIX>
address@hidden example
address@hidden deffn
-
-Finally, you can use the @code{quit} command to exit @code{mixvm}:
-
address@hidden {file command} quit
-Exit @code{mixvm}, saving the current configuration parameters in
address@hidden/.mdk/mixvm.config}.
address@hidden deffn
-
-
address@hidden Debug commands, State commands, File commands, Commands
address@hidden Debug commands
-
-Sequential execution of loaded programs can be interrupted using the
-following debug commands:
-
address@hidden {debug command} next [ins_number]
-This command causes the virtual machine to fetch and execute up to
address@hidden instructions, beginning from the current program
-counter position. Execution is interrupted either when the specified
-number of instructions have been fetched or a breakpoint is found,
-whichever happens first. If run without arguments, one instruction is
-executed. If @code{next} is invoked again after program execution is
-complete (i.e., after the @code{HLT} instruction has been found in a
-previous run), the program counter is repositioned and execution starts
-again from the beginning. A @code{load} command preserving the currently
-set breakpoints is issued before resuming execution.
address@hidden deffn
-
address@hidden {debug command} sbp line_number
address@hidden {debug command} cbp line_no
-Sets a breakpoint at the specified source file line number. If the line
-specified corresponds to a command or to a MIXAL pseudoinstruction that
-does not produce a MIX instruction in the binary file (such as
address@hidden or @code{EQU}), the breakpoint is set at the first source
-code line giving rise to a MIX instruction after the specified
-one. Thus, for our sample @file{hello.mixal} file:
-
address@hidden
-*                                                        (1)
-* hello.mixal: say 'hello world' in MIXAL                (2)
-*                                                        (3)
-* label ins    operand     comment                       (4)
-TERM    EQU    19          the MIX console device number (5)
-        ORIG   1000        start address                 (6)
-START   OUT    MSG(TERM)   output data at address MSG    (7)
-...
address@hidden example
-
address@hidden
-trying to set a breakpoint at line 5 will produce the following result:
-
address@hidden
-MIX > sbp 5
-Breakpoint set at line 7
-MIX >
address@hidden example
-
address@hidden
-since line 7 is the first one compiled into a MIX instruction (at
-address 3000). In order for @code{sbp} to work, the source file must be
-compiled using the @code{-g} flag, which tells @code{mixasm} to include
-debug information in the binary @file{.mix} file.
-
-The command @code{cbp} clears a previously set breakpoint at the given
-source file line.
address@hidden deffn
-
address@hidden {debug command} spba address
address@hidden {debug command} cbpa address
-Sets a breakpoint at the given memory @var{address}. The argument must
-be a valid MIX memory address, i.e., it must fall within the range
address@hidden Note that no check is performed to verify that the
-specified address is reachable during program execution. No debug
-information is needed to set a breakpoint by address with @code{sbpa}.
-The command @code{cbpa} clears a previously set breakpoint at the
-given memory address.
address@hidden deffn
-
address@hidden {debug command} sbpr A | X | J | Ii
address@hidden {debug command} cbpr A | X | J | Ii
-Sets a breakpoint that is conditioned on change in the specified register. For
-instance:
-
address@hidden
-sbpr I1
address@hidden example
-
address@hidden
-will cause an interruption during program execution whenever the
-contents of register @code{I1} change. A previously set breakpoint is
-cleared using the @code{cbpr} command.
address@hidden deffn
-
address@hidden {debug command} sbpm address
address@hidden {debug command} cbpm address
-Sets a breakpoint that is conditioned on the change in the specified memory
-cell. The argument must be a valid MIX memory address, i.e., it must
-fall within the range @w{[0-3999]}. For instance:
-
address@hidden
-sbpm 1000
address@hidden example
-
address@hidden
-will cause an interruption during program execution whenever the
-contents of the memory cell number 1000 change. A previously set
-breakpoint is cleared using the @code{cbpm} command.
address@hidden deffn
-
address@hidden {debug command} sbpo
address@hidden {debug command} cbpo
-Sets/clears a  breakpoint that is conditioned on change in the overflow toggle.
address@hidden deffn
-
address@hidden {debug command} sbpc
address@hidden {debug command} cbpc
-Sets/clears a breakpoint that is conditioned on change in the comparison flag.
address@hidden deffn
-
address@hidden {debug command} cabp
-Clears all currently set breakpoints.
address@hidden deffn
-
address@hidden {debug command} psym [symbol_name]
-MIXAL programs can define symbolic constants, using either the
address@hidden pseudoinstruction or a label at the beginning of a
-line. Thus, in the program fragment:
-
address@hidden
-VAR     EQU  2168
-        ORIG 4000
-START   LDA  VAR
address@hidden example
-
address@hidden
-the symbol @code{VAR} stands for the value 2168, while @code{START} is
-assigned the value 4000. When MIXAL programs are compiled using the
address@hidden flag (which tells @code{mixasm} to include debug information
-in the binary @file{.mix} file), the symbol table can be consulted from
-the @code{mixvm} command line using @code{psym} followed by the name of
-the symbol in whose contents you are interested. When run without
-arguments, @code{psym} will print all defined symbols and their values.
address@hidden deffn
-
-The virtual machine can also show you the instructions it is executing,
-using the following commands:
-
address@hidden {debug command} strace [on|off]
address@hidden on} enables instruction tracing. When tracing is enabled,
-each time the virtual machine executes an instruction (when you issue a
address@hidden or @code{next} command), it is printed in its canonical form
-(with all expressions evaluated to their numerical values) and,
-if the program was compiled with debug information, as it was originally
-typed in the MIXAL source file. Instruction tracing is disabled with
address@hidden off} command. A typical tracing session could be like this:
-
address@hidden
-MIX > strace on
-MIX > next
-3000: [OUT     3002,0(2:3)]    START   OUT     MSG(TERM)
-MIXAL HELLO WORLD
-Elapsed time: 1 /Total program time: 1 (Total uptime: 1)
-MIX > next
-3001: [HLT     0,0]            HLT
-End of program reached at address 3002
-Elapsed time: 10 /Total program time: 11 (Total uptime: 11)
-MIX > strace off
-MIX >
address@hidden example
address@hidden
-The executed instruction, as it was translated, is shown between square
-brackets after the memory address. Following it, you can see the
-actual MIXAL code that was compiled into the executed instruction. The
-tracing behavior is stored as a configuration parameter in @file{~/.mdk}.
address@hidden deffn
-
address@hidden {debug command} pline [LINE_NUMBER]
-Prints the requested source line (or the current one if
address@hidden is omitted:
-
address@hidden
-MIX > load ../samples/hello
-Program loaded. Start address: 3000
-MIX > pline
-Line 5: START       OUT   MSG(TERM)
-MIX > pline 6
-Line 6:             HLT
-MIX >
address@hidden example
address@hidden deffn
-
address@hidden {debug command} pbt [INS_NUMBER]
-This command prints a backtrace of executed instructions. Its optional
-argument @var{ins_number} is the number of instructions to print. If the
-argument is omitted or equals zero, all executed instructions are
-printed. For instance, if you compile and load the following program
-(@file{bt.mixal}):
-
address@hidden
-    ORIG 0
-BEG JMP *+1
-    JMP *+1
-FOO JMP BAR
-BAR HLT
-    END BEG
address@hidden example
-
address@hidden
-you could get the following traces:
-
address@hidden
-MIX > load bt
-Program loaded. Start address: 0
-MIX > next
-MIX > pbt
-#0      BEG     in bt.mixal:2
-MIX > next
-MIX > pbt
-#0      1       in bt.mixal:3
-#1      BEG     in bt.mixal:2
-MIX > run
-Running ...
-... done
-MIX > pbt 3
-#0      BAR     in bt.mixal:5
-#1      FOO     in bt.mixal:4
-#2      1       in bt.mixal:3
-MIX > pbt
-#0      BAR     in bt.mixal:5
-#1      FOO     in bt.mixal:4
-#2      1       in bt.mixal:3
-#3      BEG     in bt.mixal:2
-MIX >
address@hidden example
-
-Note that the executed instruction trace gives you the label of the
-executed line or, if it has no label, its address.
address@hidden deffn
-
-As you have probably observed, @code{mixvm} prints timing statistics
-when running programs. This behavior can be controlled using the
address@hidden command (@pxref{Configuration commands}).
-
address@hidden is also able to evaluate w-expressions
-(@pxref{W-expressions}) using the following command:
-
address@hidden {debug command} weval WEXP
-Evaluates the given w-expression, @var{WEXP}. The w-expression can
-contain any currently defined symbol. For instance:
-
address@hidden
-MIX > psym START
-+ 00 00 00 46 56 (0000003000)
-MIX > weval START(0:1),START(3:4)
-+ 56 00 46 56 00 (0939716096)
-MIX >
address@hidden example
address@hidden deffn
-
-New symbols can be defined using the @code{ssym} command:
-
address@hidden {debug command} ssym SYM WEXP
-Defines the symbol named @var{SYM} with the value resulting from
-evaluating @var{WEXP}, a w-expression. The newly defined symbol can be
-used in subsequent @code{weval} commands, as part of the expression to
-be evaluated, e.g.:
-
address@hidden
-MIX > ssym S 2+23*START
-+ 00 00 18 19 56 (0000075000)
-MIX > psym S
-+ 00 00 18 19 56 (0000075000)
-MIX > weval S(3:4)
-+ 00 00 19 56 00 (0000081408)
-MIX >
address@hidden example
address@hidden deffn
-
-Finally, if you want to find the decimal value of a MIX
-word expressed as five bytes plus sign, you can use:
-
address@hidden {debug command} w2d WORD
-Computes the decimal value of the given word. @var{WORD} must be
-expressed as a sign (+/-) followed by five space-delimited, two-digit
-decimal values representing the five bytes composing the word. The
-reverse operation (showing the word representation of a decimal value)
-can be accomplished with @code{weval}. For instance:
-
address@hidden
-MIX > w2d - 01 00 00 02 02
--16777346
-MIX > weval -16777346
-- 01 00 00 02 02 (0016777346)
-MIX >
address@hidden example
address@hidden deffn
-
address@hidden State commands, Configuration commands, Debug commands, Commands
address@hidden State commands
-
-Inspection and modification of the virtual machine state (memory,
-registers, overflow toggle and comparison flag contents) is accomplished
-using the following commands:
-
address@hidden {state command} pstat
-This command prints the current virtual machine state, which can be one
-of the following:
address@hidden @bullet
address@hidden
-No program loaded
address@hidden
-Program successfully loaded
address@hidden
-Execution stopped (@code{next} executed)
address@hidden
-Execution stopped: breakpoint encountered
address@hidden
-Execution stopped: conditional breakpoint encountered
address@hidden
-Program successfully terminated
address@hidden itemize
address@hidden deffn
-
address@hidden {state command} pc
-Prints the current value of the program counter, which stores the
-address of the next instruction to be executed in a program that has not
-been halted.
address@hidden deffn
-
address@hidden {state command} sreg A | X | J | I[1-6] value
address@hidden {state command} preg [A | X | J | I[1-6]]
address@hidden {state command} pall
address@hidden prints the contents of a given MIX register. For instance,
address@hidden@code{preg} @var{A}} will print the contents of the A-register. 
When
-invoked without arguments, all registers will be printed:
-
address@hidden
-MIX > preg
-rA: - 00 00 00 00 35 (0000000035)
-rX: + 00 00 00 15 40 (0000001000)
-rJ: + 00 00 (0000)
-rI1: + 00 00 (0000)    rI2: + 00 00 (0000)
-rI3: + 00 00 (0000)    rI4: + 00 00 (0000)
-rI5: + 00 00 (0000)    rI6: + 00 00 (0000)
-MIX >
address@hidden example
-
-As you can see in the above sample, the contents are printed as the sign
-plus the values of the MIX bytes stored in the register and, between
-parentheses, the decimal representation of its module.
-
address@hidden prints the contents of all registers plus the comparison
-flag and overflow toggle.
-
-Finally, @code{sreg} sets the contents of the given register to
address@hidden, expressed as a decimal constant. If @var{value} exceeds the
-maximum value storable in the given register, @code{VALUE mod
-MAXIMU_VALUE} is stored, e.g.:
-
address@hidden
-MIX > sreg I1 1000
-MIX > preg I1
-rI1: + 15 40 (1000)
-MIX > sreg I1 1000000
-MIX > preg I1
-rI1: + 09 00 (0576)
-MIX >
address@hidden example
-
address@hidden deffn
-
-
address@hidden {state command} pflags
address@hidden {state command} scmp E | G | L
address@hidden {state command} sover F | T
address@hidden prints the value of the comparison flag and overflow
-toggle of the virtual machine, e.g.:
-
address@hidden
-MIX > pflags
-Overflow: F
-Cmp: E
-MIX >
address@hidden example
-
address@hidden
-The values of the overflow toggle are either @var{F} (false) or @var{T}
-(true), and for the comparison flag, @var{E}, @var{G}, or @var{L}
-(equal, greater, or lesser). @code{scmp} and @code{sover} set the
-comparison flag and overflow toggle values.
address@hidden deffn
-
address@hidden {state command} pmem from[-to]
address@hidden {state command} smem address value
address@hidden prints the contents of memory cells in the address range
address@hidden@address@hidden If the upper limit @var{to} is omitted, only
-the contents of the memory cell with address @var{FROM} is printed, as
-in:
-
address@hidden
-MIX > pmem 3000
-3000: + 46 58 00 19 37 (0786957541)
-MIX >
address@hidden example
-
-The memory contents are displayed both as the set of five MIX bytes plus
-sign composing the stored MIX word and, between parentheses, the decimal
-representation of the module of the stored value.
-
address@hidden sets the contents of the memory cell with address
address@hidden to @var{value}, expressed as a decimal constant.
-
address@hidden deffn
-
address@hidden Configuration commands, Scheme commands, State commands, Commands
address@hidden Configuration commands
-
-This section describes commands that allow you to configure the virtual
-machine's behavior. This configuration is stored in the @sc{mdk}
-directory @file{~/.mdk}.
-
-As you can see from their descriptions, some commands print, as a side
-effect, informational messages to the standard output (e.g., @code{load}
-prints a message telling you the loaded program's start address). These
-messages can be enabled or disabled using @code{slog}:
-
address@hidden {config command} slog on|off
-Turns on/off the logging of informational messages. Note that error
-messages are always displayed, as well as state messages required when
-using commands prefixed with @code{p} (@code{preg}, @code{pmem} and the
-like).
address@hidden deffn
-
address@hidden {config command} stime  on|off
address@hidden {config command} ptime
-The @code{stime} command (un)sets the printing of timing statistics, and
address@hidden prints their current value:
-
address@hidden
-MIX > ptime
-Elapsed time: 10 /Total program time: 11 (Total uptime: 11)
-MIX >
address@hidden example
address@hidden deffn
-
address@hidden {config command} sedit TEMPLATE
address@hidden {config command} pedit
address@hidden sets the command to be used to edit MIXAL source files with
-the @code{edit} command. @var{TEMPLATE} must contain the control
-characters @code{%s} to mark the place where the source file's name will
-be inserted. For instance, if you type:
-
address@hidden
-MIX > sedit emacsclient %s
-MIX >
address@hidden example
-
-issuing the @code{mixvm} command @address@hidden foo.mixal}} will invoke
-the operating system command @address@hidden foo.mixal}}.
-
address@hidden prints the current value of the edit command template.
-
address@hidden deffn
-
address@hidden {config command} sasm TEMPLATE
address@hidden {config command} pasm
address@hidden sets the command to be used to compile MIXAL source files with
-the @code{compile} command. @var{TEMPLATE} must contain the control
-characters @code{%s} to mark the place where the source file's name will
-be inserted. For instance, if you type:
-
address@hidden
-MIX > sasm mixasm -g -l %s
-MIX >
address@hidden example
-
-issuing the @code{mixvm} command @address@hidden foo.mixal}} will invoke
-the operating system command @address@hidden -g -l foo.mixal}}.
-
address@hidden prints the current value of the compile command template.
-
address@hidden deffn
-
address@hidden {config command} sddir DIRNAME
address@hidden {config command} pddir
-MIX devices (@pxref{Devices}) are implemented as regular files stored,
-by default, inside @file{~/.mdk}. The @code{sddir} command lets you
-specify an alternative location for storing these device files, while
address@hidden prints the current device directory.
address@hidden deffn
-
-Finally, you can change the default command prompt, @samp{MIX > },
-using the @code{prompt} command:
-
address@hidden {config command} prompt PROMPT
-Changes the command prompt to @var{prompt}. If you want to include
-white space(s) at the end of the new prompt, bracket @var{prompt} using
-double quotes (e.g., @code{prompt ">> "}).
address@hidden deffn
-
address@hidden Scheme commands,  , Configuration commands, Commands
address@hidden Scheme commands
-
-If you have compiled @sc{mdk} with @code{libguile} support
-(@pxref{Special configure flags}), @code{mixvm} will start and
-initialize an embedded Guile Scheme interpreter when it is invoked. This
-means that you have at your disposal, at @code{mixvm}'s command prompt,
-all the Scheme primitives described in @ref{Using mixguile} and
address@hidden, as well as any other function or hook that you have
-defined in the initialization file @file{~/.mdk/mixguile.scm}. To
-evaluate a Scheme function, simply type it at the @code{mixvm} command
-prompt (see @ref{Using Scheme in mixvm and gmixvm} for a
-sample). Compared to the @code{mixguile} program, this has only one
-limitation: the expressions used in @code{mixvm} cannot span more than
-one line. You can get over this inconvenience by writing your multiline
-Scheme expressions in a file and loading it using the @code{scmf}
-command:
-
address@hidden {scheme command} scmf FILE_NAME
-Loads the given Scheme file and evaluates it using the embedded Guile
-interpreter.
address@hidden deffn
-
-
address@hidden Devices,  , Commands, mixvm
address@hidden MIX block devices
-
-The MIX computer comes equipped with a set of block devices for
-input-output operations (@pxref{Input-output operators}). @code{mixvm}
-implements these block devices as disk files, with the exception of
-block device no. 19 (typewriter terminal), which is redirected to
-standard output. When you request an output operation on any other
-(output) device, a file named according to the following table will be
-created, and the specified MIX words will be
-written to the file in binary form (for binary devices) or in ASCII (for
-char devices). Files corresponding to input block devices should be
-created and filled beforehand to be used by the MIX virtual machine. For
-input-output devices, this creation can be accomplished by a MIXAL
-program writing the required data to the device, or, if you prefer, with
-your favorite editor. The device files are stored, by default, in the
-directory @file{~/.mdk}; this location can be changed using the
address@hidden command @code{devdir} (@pxref{Configuration commands}).
-
address@hidden {the device name} { xx-xx } {filename[x-x].dev} {bin  i/o/char }
address@hidden @emph{Device}  @tab @emph{No.} @tab @emph{filename} @tab 
@emph{type}
address@hidden Tape @tab 0-7 @tab @file{tape[0-7].dev} @tab bin i/o
address@hidden Disks @tab 8-15 @tab @file{disk[0-7].dev} @tab bin i/o
address@hidden Card reader @tab 16 @tab @file{cardrd.dev} @tab char in
address@hidden Card writer @tab 17 @tab @file{cardwr.dev} @tab char out
address@hidden Line printer @tab 18 @tab @file{printer.dev} @tab char out
address@hidden Terminal @tab 19 @tab @code{stdout} @tab char out
address@hidden Paper tape @tab 20 @tab @file{paper.dev} @tab char out
address@hidden multitable
-
-
-
-

Index: Press-use/MDK/mdk_tut.texi
===================================================================
RCS file: Press-use/MDK/mdk_tut.texi
diff -N Press-use/MDK/mdk_tut.texi
--- Press-use/MDK/mdk_tut.texi  28 Jul 2003 18:18:00 -0000      1.1
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,1317 +0,0 @@
address@hidden -*-texinfo-*-
address@hidden This is part of the GNU MDK Reference Manual.
address@hidden Copyright (C) 2000, 2001, 2002, 2003
address@hidden   Free Software Foundation, Inc.
address@hidden See the file mdk.texi for copying conditions.
-
address@hidden $Id: mdk_tut.texi,v 1.1 2003/07/28 18:18:00 opus Exp $
-
address@hidden MIX and MIXAL tutorial, Getting started, Installing MDK, Top
address@hidden  node-name,  next,  previous,  up
address@hidden MIX and MIXAL tutorial
address@hidden MIX
address@hidden MIXAL
-
-In the book series @cite{The Art of Computer Programming}, by Donald
-Knuth, a virtual computer, the MIX, is used by the author, together
-with the set of binary instructions that the virtual CPU accepts, to
-illustrate the algorithms and skills that every serious programmer
-should master. Like any real computer, there is a symbolic assembler
-language that can be used to program the MIX: the MIX assembly
-language, or MIXAL for short.  In the following subsections you will
-find a tutorial which will teach you the basics of the MIX
-architecture and how to program a MIX computer using MIXAL.
-
address@hidden
-* The MIX computer::            Architecture and instruction set
-                                of the MIX computer.
-* MIXAL::                       The MIX assembly language.
address@hidden menu
-
address@hidden The MIX computer, MIXAL, MIX and MIXAL tutorial, MIX and MIXAL 
tutorial
address@hidden  node-name,  next,  previous,  up
address@hidden The MIX computer
-
-In this section, you will find a description of the MIX computer,
-its components and instruction set.
-
address@hidden
-* MIX architecture::
-* MIX instruction set::
address@hidden menu
-
address@hidden MIX architecture, MIX instruction set, The MIX computer, The MIX 
computer
address@hidden  node-name,  next,  previous,  up
address@hidden MIX architecture
address@hidden byte
address@hidden MIX byte
address@hidden word
address@hidden MIX word
address@hidden MIX architecture
address@hidden MIX computer
address@hidden register
address@hidden MIX register
address@hidden field specification
address@hidden fspec
address@hidden instruction
address@hidden MIX instruction
address@hidden address
address@hidden memory cell
address@hidden cell
address@hidden memory
address@hidden index
-
-The basic information storage unit in the MIX computer is the
address@hidden, which stores positive values in the range 0-63 . Note that
-a MIX byte can then be represented as six bits, instead of the eight
-bits used for a @emph{regular} byte. Unless otherwise stated, we will
-use the word @dfn{byte} to refer to a MIX six-bit byte.
-
-A MIX @dfn{word} is defined as a set of five bytes plus a sign. The
-bytes within a word are numbered from one to five, with byte number one
-being the most significant one. The sign is denoted by index
-0. Graphically:
-
address@hidden
- -----------------------------------------------
-|   0   |   1   |   2   |   3   |   4   |   5   |
- -----------------------------------------------
-|  +/-  | byte  | byte  | byte  | byte  | byte  |
- -----------------------------------------------
address@hidden example
address@hidden
-Sample MIX words are: @samp{- 12 00 11 01 63} and @samp{+ 12 11 34 43
-00}.
-
-You can refer to subfields within a word using a @dfn{field
-specification} or @dfn{fspec} of the form ``(@var{L}:@var{R})'', where
address@hidden denotes the first byte and @var{R} the last byte of the
-subfield.
-When @var{L} is zero, the subfield includes the word's
-sign. An fspec can also be represented as a single value @code{F}, given
-by @code{F = 8*L + R} (thus the fspec @samp{(1:3)}, denoting the first
-three bytes of a word, is represented by the integer 11).
-
-The MIX computer stores information in @dfn{registers}, which can store
-either a word or two bytes and a sign (see below), and @dfn{memory cells},
-each one of which contains a word. Specifically, the MIX computer has 4000
-memory cells with addresses 0 to 3999 (i.e., two bytes are enough to
-address a memory cell) and the following registers:
-
address@hidden rA
address@hidden rX
address@hidden rJ
address@hidden rIn
address@hidden register
-
address@hidden @asis
address@hidden @code{rA}
-A register. General purpose register holding a word. Usually its
-contents serve as the operand of arithmetic and storing instructions.
address@hidden @code{rX}
-X register. General purpose register holding a word. Often it acts as an
-extension for or a replacement of @samp{rA}.
address@hidden @code{rJ}
-J (jump) register. This register stores positive two-byte values,
-usually representing a jump address.
address@hidden @code{rI1}, @code{rI2}, @code{rI3}, @code{rI4}, @code{rI5}, 
@code{rI6}
-Index registers. These six registers can store a signed two-byte
-value. Their contents are used as indexing values for the computation of
-effective memory addresses.
address@hidden table
-
address@hidden @sc{ov}
address@hidden @sc{cm}
address@hidden @code{un}
address@hidden overflow toggle
address@hidden comparison indicator
address@hidden input-output devices
address@hidden
-In addition, the MIX computer contains:
-
address@hidden @bullet
address@hidden
-An @dfn{overflow toggle} (a single bit with values @dfn{on} or
address@hidden). In this manual, this toggle is denoted @sc{ov}.
address@hidden
-A @dfn{comparison indicator} (having three values: @dfn{EQUAL},
address@hidden or @dfn{LESS}). In this manual, this indicator is denoted
address@hidden, and its possible values are abbreviated as @dfn{E}, @dfn{G} and
address@hidden
address@hidden
-Input-output block devices. Each device is labelled as @code{un},
-where @code{n} runs from 0 to 20. In Knuth's definition, @code{u0}
-through @code{u7} are magnetic tape units, @code{u8} through
address@hidden are disks and drums, @code{u16} is a card reader,
address@hidden is a card writer, @code{u18} is a line printer, @code{u19}
-is a typewriter terminal and @code{u20} is a paper tape. Our
-implementation maps these devices to disk files, except for
address@hidden, which represents the standard output.
address@hidden itemize
-
-As noted above, the MIX computer communicates with the external world
-by a set of input-output devices which can be ``connected'' to it. The
-computer interchanges information using blocks of words whose length
-depends on the device at hand (@pxref{Devices}). These words are
-interpreted by the device either as binary information (for devices
-0-16), or as representing printable characters (for devices 17-20). In
-the last case, each MIX byte is mapped onto a character according to
-the following table:
-
address@hidden  {00} {C} {00} {C} {00} {C} {00} {C}
address@hidden  00 @tab  @tab 01 @tab A @tab 02 @tab B @tab 03 @tab C
address@hidden  04 @tab D @tab 05 @tab E @tab 06 @tab F @tab 07 @tab G
address@hidden  08 @tab H @tab 09 @tab I @tab 10 @tab d @tab 11 @tab J
address@hidden  12 @tab K @tab 13 @tab L @tab 14 @tab M @tab 15 @tab N
address@hidden  16 @tab O @tab 17 @tab P @tab 18 @tab Q @tab 19 @tab R
address@hidden  20 @tab s @tab 21 @tab p @tab 22 @tab S @tab 23 @tab T
address@hidden  24 @tab U @tab 25 @tab V @tab 26 @tab W @tab 27 @tab X
address@hidden  28 @tab Y @tab 29 @tab Z @tab 30 @tab 0 @tab 31 @tab 1
address@hidden  32 @tab 2 @tab 33 @tab 3 @tab 34 @tab 4 @tab 35 @tab 5
address@hidden  36 @tab 6 @tab 37 @tab 7 @tab 38 @tab 8 @tab 39 @tab 9
address@hidden  40 @tab . @tab 41 @tab , @tab 42 @tab ( @tab 43 @tab )
address@hidden  44 @tab + @tab 45 @tab - @tab 46 @tab * @tab 47 @tab /
address@hidden  48 @tab = @tab 49 @tab $ @tab 50 @tab < @tab 51 @tab >
address@hidden  52 @tab @@ @tab 53 @tab ; @tab 54 @tab : @tab 55 @tab '
address@hidden multitable
address@hidden
-The value 0 represents a whitespace. Lowercase letters (d, s, p)
-correspond to symbols not representable as ASCII characters (uppercase
-delta, sigma and gamma, respectively), and byte values 56-63 have no
-associated character.
-
-Finally, the MIX computer features a virtual CPU which controls the
-above components, and which is able to execute a rich set of
-instructions (constituting its machine language, similar to those
-commonly found in real CPUs) including arithmetic, logical, storing,
-comparison and jump instructions. Being a typical von Neumann computer,
-the MIX CPU fetches binary instructions from memory sequentially (unless
-a jump instruction is found) and stores the address of the next
-instruction to be executed in an internal register called @dfn{location
-counter} (also known as @dfn{program counter} in other architectures).
-
-The next section gives a complete description of the available MIX
-binary instructions.
-
address@hidden MIX instruction set,  , MIX architecture, The MIX computer
address@hidden  node-name,  next,  previous,  up
address@hidden MIX instruction set
address@hidden instruction set
-
-The following subsections fully describe the instruction set of the MIX
-computer. We begin with a description of the structure of binary
-instructions and the notation used to refer to their subfields. The
-remaining subsections are devoted to describing the actual instructions
-available to the MIX programmer.
-
address@hidden
-* Instruction structure::
-* Loading operators::
-* Storing operators::
-* Arithmetic operators::
-* Address transfer operators::
-* Comparison operators::
-* Jump operators::
-* Input-output operators::
-* Conversion operators::
-* Shift operators::
-* Miscellaneous operators::
-* Execution times::
address@hidden menu
-
address@hidden Instruction structure, Loading operators, MIX instruction set, 
MIX instruction set
address@hidden  node-name,  next,  previous,  up
address@hidden Instruction structure
-
-MIX @dfn{instructions} are codified as words with the following subfield
-structure:
-
address@hidden @columnfractions .15 .20 .65
address@hidden @emph{Subfield} @tab @emph{fspec} @tab @emph{Description}
address@hidden ADDRESS @tab (0:2)
address@hidden The first two bytes plus sign are the @dfn{address} field. 
Combined
-with the INDEX field, denotes the memory address to be used by the
-instruction.
address@hidden INDEX @tab (3:3)
address@hidden The third byte is the @dfn{index}, normally used for indexing the
address@hidden actual memory address the instruction refers to
-is obtained by adding the value of the @samp{rI} register denoted by
-INDEX to ADDRESS.}
address@hidden MOD @tab (4:4)
address@hidden Byte four is used either as an operation code modifier or as a 
field
-specification.
address@hidden OPCODE @tab (5:5)
address@hidden The last (least significant) byte in the word denotes the 
operation
-code.
address@hidden multitable
-
address@hidden
-or, graphically:
-
address@hidden
- ------------------------------------------------
-|   0   |   1   |   2   |   3   |   4   |   5    |
- ------------------------------------------------
-|        ADDRESS        | INDEX |  MOD  | OPCODE |
- ------------------------------------------------
address@hidden example
-
-For a given instruction, @samp{M} stands for
-the memory address obtained after indexing the ADDRESS subfield
-(using its INDEX byte), and @samp{V} is the contents of the
-subfield indicated by MOD of the memory cell with address @samp{M}. For
-instance, suppose that we have the following contents of MIX registers
-and memory cells:
-
address@hidden
-[rI2] = + 00 63
-[31] = - 10 11 00 11 22
address@hidden example
address@hidden
-where @samp{[n]} denotes the contents of the nth memory cell and
address@hidden the contents of register @address@hidden general,
address@hidden will denote the contents of entity @samp{X}; thus, by
-definition, @address@hidden = [M](MOD)}}.} Let us consider the binary
-instruction @address@hidden = - 00 32 02 11 10}}. For this instruction we
-have:
-
address@hidden
-ADDRESS = - 00 32 = -32
-INDEX = 02 = 2
-MOD = 11 = (1:3)
-OPCODE = 10
-
-M = ADDRESS + [rI2] = -32 + 63 = 31
-V = [M](MOD) = (- 10 11 00 11 22)(1:3) = + 00 00 10 11 00
address@hidden example
-
-Note that when computing @samp{V} using a word and an fspec, we apply
-a left padding to the bytes selected by @samp{MOD} to obtain a
-complete word as the result.
-
-In the following subsections, we will
-assign to each MIX instruction a mnemonic, or symbolic name. For
-instance, the mnemonic of @samp{OPCODE} 10 is @samp{LD2}. Thus we can
-rewrite the above instruction as:
-
address@hidden
-LD2  -32,2(1:3)
address@hidden example
address@hidden
-or, for a generic instruction:
-
address@hidden
-MNEMONIC  ADDRESS,INDEX(MOD)
address@hidden example
address@hidden
-Some instructions are identified by both the OPCODE and the MOD
-fields. In these cases, the MOD will not appear in the above symbolic
-representation. Also, when ADDRESS or INDEX are zero, they can be
-omitted.  Finally, MOD defaults to (0:5), meaning the whole word.
-
address@hidden Loading operators, Storing operators, Instruction structure, MIX 
instruction set
address@hidden  node-name,  next,  previous,  up
address@hidden Loading operators
address@hidden loading operators
-
-The following instructions are used to load memory contents into a
-register:
-
address@hidden @code
address@hidden LDA
-Put in rA the contents of cell no. M.
-OPCODE = 8, MOD = fspec. @code{rA <- V}.
address@hidden LDX
-Put in rX the contents of cell no. M.
-OPCODE = 15, MOD = fspec. @code{rX <- V}.
address@hidden LDi
-Put in rIi the contents of cell no. M.
-OPCODE = 8 + i, MOD = fspec. @code{rIi <- V}.
address@hidden LDAN
-Put in rA the contents of cell no. M, with opposite sign.
-OPCODE = 16, MOD = fspec. @code{rA <- -V}.
address@hidden LDXN
-Put in rX the contents of cell no. M, with opposite sign.
-OPCODE = 23, MOD = fspec. @code{rX <- -V}.
address@hidden LDiN
-Put in rIi the contents of cell no. M, with opposite sign.
-OPCODE = 16 + i, MOD = fspec. @code{rIi <- -V}.
address@hidden ftable
-
-In all the above load instructions, the @samp{MOD} field selects the
-bytes of the memory cell with address @samp{M} which are loaded into the
-requisite register, indicated by the @samp{OPCODE}.  For instance, the
-word @address@hidden 00 13 01 27 11}} represents the instruction:
-
address@hidden
-LD3    13,1(3:3)
- ^      ^ ^  ^
- |      | |  |
- |      | |   --- MOD = 27 = 3*8 + 3
- |      |  --- INDEX = 1
- |       --- ADDRESS = 00 13
-  --- OPCODE = 11
address@hidden example
-Let us suppose that, prior to the execution of this instruction, the
-state of the MIX computer is the following:
-
address@hidden
-[rI1] = - 00 01
-[rI3] = + 24 12
-[12] = - 01 02 03 04 05
address@hidden example
address@hidden
-As, in this case, @address@hidden = 13 + [rI1] = 12}}, we have:
-
address@hidden
-V = [M](3:3) = (- 01 02 03 04 05)(3:3)
-  = + 00 00 00 00 03
address@hidden example
address@hidden
-(note that the specified subfield is left-padded with null bytes to
-complete a word). Hence, the MIX state, after execution of the
-instruction, will be:
-
address@hidden
-[rI1] = - 00 01
-[rI3] = + 00 03
-[12] = - 01 02 03 04 05
address@hidden example
-
-To further illustrate loading operators, the following table shows the
-contents of @samp{rX} after different @samp{LDX} instructions:
-
address@hidden @samp
address@hidden LDX 12(0:0)     [rX] = - 00 00 00 00 00
address@hidden LDX 12(0:1)     [rX] = - 00 00 00 00 01
address@hidden LDX 12(3:5)     [rX] = + 00 00 03 04 05
address@hidden LDX 12(3:4)     [rX] = + 00 00 00 03 04
address@hidden LDX 12(0:5)     [rX] = - 01 02 03 04 05
address@hidden table
-
-
address@hidden Storing operators, Arithmetic operators, Loading operators, MIX 
instruction set
address@hidden  node-name,  next,  previous,  up
address@hidden Storing operators
address@hidden storing operators
-
-The following instructions are the inverse of the load
-operations; they are used to store a subfield of a register
-in a memory location. Here, MOD represents the subfield of the memory
-cell that is to be overwritten with bytes from a register. These bytes
-are taken beginning with the far right side of the register.
-
address@hidden @code
address@hidden STA
-Store rA. OPCODE = 24, MOD = fspec. @code{V <- rA}.
address@hidden STX
-Store rX. OPCODE = 31, MOD = fspec. @code{V <- rX}.
address@hidden STi
-Store rIi. OPCODE = 24 + i, MOD = fspec. @code{V <- rIi}.
address@hidden STJ
-Store rJ. OPCODE = 32, MOD = fspec. @code{V <- rJ}.
address@hidden STZ
-Store zero. OPCODE = 33, MOD = fspec. @code{V <- 0}.
address@hidden ftable
-
-By way of example, consider the instruction @samp{STA 1200(2:3)}. It
-causes the MIX to fetch bytes four and five of register A and copy them to
-bytes two and three of memory cell no. 1200 (remember that, for these
-instructions, MOD specifies a subfield of @emph{the memory
-address}). The other bytes of the memory cell retain their
-values. Thus, if prior to the instruction execution we have:
-
address@hidden
-[1200] = - 20 21 22 23 24
-[rA] = + 01 02 03 04 05
address@hidden example
address@hidden
-we will end up with
-
address@hidden
-[1200] = - 20 04 05 23 24
-[rA] = + 01 02 03 04 05
address@hidden example
-
-As a second example, @samp{ST2 1000(0)} will set the sign of
address@hidden to that of @samp{[rI2]}.
-
address@hidden Arithmetic operators, Address transfer operators, Storing 
operators, MIX instruction set
address@hidden  node-name,  next,  previous,  up
address@hidden Arithmetic operators
address@hidden arithmetic operators
-
-The following instructions perform arithmetic operations between rA and
-rX register and memory contents.
-
address@hidden @code
address@hidden ADD
-Add and set OV if overflow. OPCODE = 1, MOD = fspec.
address@hidden@code{rA <- rA +V}}.
address@hidden SUB
-Sub and set OV if overflow. OPCODE = 2, MOD = fspec.
address@hidden@code{rA <- rA - V}}.
address@hidden MUL
-Multiply V times rA and store the ten-byte product in rAX.
-OPCODE = 3, MOD = fspec. @address@hidden <- rA x V}}.
address@hidden DIV
-rAX is considered a ten-byte number, and it is divided by V.
-OPCODE = 4, MOD = fspec. @address@hidden <- rAX / V}}, @code{rX} <- reminder.
address@hidden ftable
-
-In all the above instructions, @samp{[rA]} is one of the operands
-of the binary arithmetic operation, the other being @samp{V} (that is,
-the specified subfield of the memory cell with address @samp{M}), padded
-with zero bytes on its left side to complete a word. In multiplication
-and division, the register @samp{X} comes into play as a right-extension
-of the register @samp{A}, so that we are able to handle ten-byte numbers
-whose more significant bytes are those of @samp{rA} (the sign of this
-ten-byte number is that of @samp{rA}; @samp{rX}'s sign is ignored).
-
-Addition and subtraction of MIX words can give rise to overflows, since
-the result is stored in a register with room for only five bytes (plus
-sign). When this occurs, the operation result modulo @w{1,073,741,823}
-(the maximum value storable in a MIX word) is stored in @samp{rA}, and
-the overflow toggle is set to TRUE.
-
address@hidden Address transfer operators, Comparison operators, Arithmetic 
operators, MIX instruction set
address@hidden  node-name,  next,  previous,  up
address@hidden Address transfer operators
address@hidden address transfer operators
-
-In these instructions, @samp{M} (the address of the instruction after
-indexing) is used as a number instead of as the address of a memory
-cell. Consequently, @samp{M} can have any valid word value. It's
-not limited to the 0-3999 range of a memory address.
-
address@hidden @code
address@hidden ENTA
-Enter @samp{M} in [rA]. OPCODE = 48, MOD = 2. @code{rA <- M}.
address@hidden ENTX
-Enter @samp{M} in [rX]. OPCODE = 55, MOD = 2. @code{rX <- M}.
address@hidden ENTi
-Enter @samp{M} in [rIi]. OPCODE = 48 + i, MOD = 2. @code{rIi <- M}.
address@hidden ENNA
-Enter @samp{-M} in [rA]. OPCODE = 48, MOD = 3. @code{rA <- -M}.
address@hidden ENNX
-Enter @samp{-M} in [rX]. OPCODE = 55, MOD = 3. @code{rX <- -M}.
address@hidden ENNi
-Enter @samp{-M} in [rIi]. OPCODE = 48 + i, MOD = 3. @code{rIi <- -M}.
address@hidden INCA
-Increase [rA] by @samp{M}. OPCODE = 48, MOD = 0. @code{rA <- rA + M}.
address@hidden INCX
-Increase [rX] by @samp{M}. OPCODE = 55, MOD = 0. @code{rX <- rX + M}.
address@hidden INCi
-Increase [rIi] by @samp{M}. OPCODE = 48 + i, MOD = 0. @code{rIi <- rIi + M}.
address@hidden DECA
-Decrease [rA] by @samp{M}. OPCODE = 48, MOD = 1. @code{rA <- rA - M}.
address@hidden DECX
-Decrease [rX] by @samp{M}. OPCODE = 55, MOD = 1. @code{rX <- rX - M}.
address@hidden DECi
-Decrease [rIi] by @samp{M}. OPCODE = 48 + i, MaOD = 0. @code{rIi <- rIi - M}.
address@hidden ftable
-
-In the above instructions, the subfield @samp{ADDRESS} acts as an
-immediate (indexed) operand, and allows us to directly set the contents
-of the MIX registers without an indirection to the memory cells (in a
-real CPU this would mean that they are faster than the previously
-discussed instructions, whose operands are fetched from memory). So, if
-you want to store in @samp{rA} the value -2000 (- 00 00 00 31 16), you
-can use the binary instruction @w{+ 31 16 00 03 48}, or, symbolically:
-
address@hidden
-ENNA 2000
address@hidden example
address@hidden
-Used in conjunction with the store operations (@samp{STA}, @samp{STX},
-etc.), these instructions also allow you to set the contents of memory
-cells to concrete values.
-
-Note that in these address transfer operators, the @samp{MOD} field is
-not a subfield specifier, but serves to define, together with
address@hidden, the concrete operation to be performed.
-
address@hidden Comparison operators, Jump operators, Address transfer 
operators, MIX instruction set
address@hidden  node-name,  next,  previous,  up
address@hidden Comparison operators
address@hidden comparison operators
-
-So far, we have learned how to move values around between the MIX
-registers and its memory cells, and also how to perform arithmetic
-operations using these values. But, in order to write non-trivial
-programs, other functionalities are needed. One of the most common is
-the ability to compare two values, which, combined with jumps, will
-allow the execution of conditional statements.
-The following instructions compare the value of a register with @samp{V}, and
-set the @sc{cm} indicator to the result of the comparison, either
address@hidden, @samp{G} or @samp{L} (equal, greater or lesser, respectively).
-
address@hidden @code
address@hidden CMPA
-Compare [rA] with V. OPCODE = 56, MOD = fspec.
address@hidden CMPX
-Compare [rX] with V. OPCODE = 63, MOD = fspec.
address@hidden CMPi
-Compare [rIi] with V. OPCODE = 56 + i, MOD = fspec.
address@hidden ftable
-
-As explained above, these instructions modify the value of the MIX
-comparison indicator; but maybe you are asking yourself how you use
-this value. Enter jump operators, in the next subsection.
-
address@hidden Jump operators, Input-output operators, Comparison operators, 
MIX instruction set
address@hidden  node-name,  next,  previous,  up
address@hidden Jump operators
address@hidden jump operators
-
-The MIX computer has an internal register, called the @dfn{location
-counter}, which stores the address of the next instruction to be fetched
-and executed by the virtual CPU. You cannot directly modify the contents
-of this internal register with a load instruction; after fetching the
-current instruction from memory, it is automatically increased one
-unit by the MIX. However, there is a set of instructions, which we call
-jump instructions, which can alter the contents of the location counter
-provided some condition is met. When this occurs, the value of the next
-instruction address that would have been fetched in the absence of the
-jump is stored in @samp{rJ} (except for @code{JSJ}), and the location
-counter is set to the value of @samp{M} (so that the next instruction is
-fetched from this new address). Later on, you can return to the point
-when the jump occurred by reading the address stored in @samp{rJ}.
-
-The MIX computer provides the following jump instructions.
-With these instructions you force a jump to the specified address. Use
address@hidden if you do not care about the return address.
-
address@hidden @code
address@hidden JMP
-Unconditional jump. OPCODE = 39, MOD = 0.
address@hidden JSJ
-Unconditional jump, but rJ is not modified. OPCODE = 39, MOD = 1.
address@hidden ftable
-
-These instructions check the overflow toggle to decide whether to jump
-or not.
-
address@hidden @code
address@hidden JOV
-Jump if OV is set (and turn it off). OPCODE = 39, MOD = 2.
address@hidden JNOV
-Jump if OV is not set (and turn it off). OPCODE = 39, MOD = 3.
address@hidden ftable
-
-In the following instructions, the jump is conditioned on the contents of the
-comparison flag:
-
address@hidden @code
address@hidden JL
-Jump if @address@hidden = L}}. OPCODE = 39, MOD = 4.
address@hidden JE
-Jump if @address@hidden = E}}. OPCODE = 39, MOD = 5.
address@hidden JG
-Jump if @address@hidden = G}}. OPCODE = 39, MOD = 6.
address@hidden JGE
-Jump if @code{[CM]} does not equal @code{L}. OPCODE = 39, MOD = 7.
address@hidden JNE
-Jump if @code{[CM]} does not equal @code{E}. OPCODE = 39, MOD = 8.
address@hidden JLE
-Jump if @code{[CM]} does not equal @code{G}. OPCODE = 39, MOD = 9.
address@hidden ftable
-
-You can also jump conditioned on the value stored in the MIX registers,
-using the following instructions:
-
address@hidden @code
address@hidden JAN
address@hidden JAZ
address@hidden JAP
address@hidden JANN
address@hidden JANZ
address@hidden JANP
-Jump if the content of rA is, respectively, negative, zero, positive,
-non-negative, non-zero or non-positive.
-OPCODE = 40, MOD = 0, 1, 2, 3, 4, 5.
address@hidden JXN
address@hidden JXZ
address@hidden JXP
address@hidden JXNN
address@hidden JXNZ
address@hidden JXNP
-Jump if the content of rX is, respectively, negative, zero, positive,
-non-negative, non-zero or non-positive.
-OPCODE = 47, MOD = 0, 1, 2, 3, 4, 5.
address@hidden JiN
address@hidden JiZ
address@hidden JiP
address@hidden JiNN
address@hidden JiNZ
address@hidden JiNP
-Jump if the content of rIi is, respectively, negative, zero, positive,
-non-negative, non-zero or non-positive.
-OPCODE = 40 + i, MOD = 0, 1, 2, 3, 4, 5.
address@hidden ftable
-
-
address@hidden Input-output operators, Conversion operators, Jump operators, 
MIX instruction set
address@hidden  node-name,  next,  previous,  up
address@hidden Input-output operators
address@hidden input-output operators
-
-As explained in previous sections (@pxref{MIX architecture}), the MIX
-computer can interact with a series of block devices. To that end, you
-have the following instructions at your disposal:
-
address@hidden @code
address@hidden IN
-Transfer a block of words from the specified unit to memory, starting at
-address M.
-OPCODE = 36, MOD = I/O unit.
address@hidden OUT
-Transfer a block of words from memory (starting at address M) to the
-specified unit.
-OPCODE = 37, MOD = I/O unit.
address@hidden IOC
-Perform a control operation (given by M) on the specified unit.
-OPCODE = 35, MOD = I/O unit.
address@hidden JRED
-Jump to M if the specified unit is ready.
-OPCODE = 38, MOD = I/O unit.
address@hidden JBUS
-Jump to M if the specified unit is busy.
-OPCODE = 34, MOD = I/O unit.
address@hidden ftable
address@hidden
-In all the above instructions, the @samp{MOD} subfile must be in the
-range 0-20, since it denotes the operation's target device. The
address@hidden instruction only makes sense for tape devices (@samp{MOD} =
-0-7 or 20). It shifts the read/write pointer by the number of words
-given by @samp{M} (if it equals zero, the tape is rewound)address@hidden
-Knuth's original definition, there are other control operations
-available, but they do not make sense when implementing the block
-devices as disk files (as we do in the @sc{mdk} simulator). For the same
-reason, @sc{mdk} devices are always ready, since all input-output
-operations are performed using synchronous system calls.}
-
-
address@hidden Conversion operators, Shift operators, Input-output operators, 
MIX instruction set
address@hidden  node-name,  next,  previous,  up
address@hidden Conversion operators
address@hidden conversion operators
-
-The following instructions convert between numerical values and their
-character representations.
-
address@hidden @code
address@hidden NUM
-Convert rAX, assumed to contain a character representation of a number,
-to its numerical value and store it in rA.
-OPCODE = 5, MOD = 0.
address@hidden CHAR
-Convert the number stored in rA to a character representation and store
-it in rAX.
-OPCODE = 5, MOD = 1.
address@hidden ftable
address@hidden
-Digits are represented in MIX by the range of values 30-39 (digits
-0-9). Thus, if the contents of @samp{rA} and @samp{rX} are, for instance:
-
address@hidden
-[rA] = + 30 30 31 32 33
-[rX] = + 31 35 39 30 34
address@hidden example
address@hidden
-the represented number is 0012315904, and @samp{NUM} will store this
-value in @samp{rA} (i.e., we end up with @samp{[rA]} = @w{+ 0 46 62 52
-0} = 12315904).
-
-If any byte in @samp{rA} or @samp{rB} does not belong to the range
-30-39, it is interpreted by @samp{NUM} as the digit obtained by taking
-its value modulo ten. Therefore, the values 0, 10, 20, 30, 40, 50 and
-60 all represent the digit 0, while 2, 12, 22, etc. represent the
-digit 2, and so on. For instance, the number 0012315904 mentioned
-above could also be represented as:
-
address@hidden
-[rA] = + 10 40 31 52 23
-[rX] = + 11 35 49 20 54
address@hidden example
-
address@hidden performs the inverse operation, using only the values 30
-to 39 for representing digits 0-9.
-
address@hidden Shift operators, Miscellaneous operators, Conversion operators, 
MIX instruction set
address@hidden  node-name,  next,  previous,  up
address@hidden Shift operators
address@hidden shift
address@hidden shift operators
-
-The following instructions perform byte-wise shifts of the contents of
address@hidden and @samp{rX}:
-
address@hidden @code
address@hidden SLA
address@hidden SRA
address@hidden SLAX
address@hidden SRAX
address@hidden SLC
address@hidden SRC
-Shift rA or rAX left, right, or rAX circularly (see example below)
-left or right. M specifies the number of bytes to be shifted.
-OPCODE = 6, MOD = 0, 1, 2, 3, 4, 5.
address@hidden ftable
address@hidden
-If we begin with, say, @samp{[rA]} = @w{- 01 02 03 04 05}, we would
-have the following modifications to @samp{rA} contents when performing
-the instructions on the left column:
-
address@hidden {SLA 00} {[rA] = - 00 00 00 00 00}
address@hidden SLA 2 @tab [rA] = - 03 04 05 00 00
address@hidden SLA 6 @tab [rA] = - 00 00 00 00 00
address@hidden SRA 1 @tab [rA] = - 00 01 02 03 04
address@hidden multitable
address@hidden
-Note that the sign is unaffected by shift operations. On the other
-hand, @samp{SLC}, @samp{SRC}, @samp{SLAX} and @samp{SRAX} treat
address@hidden and @samp{rX} as a single ten-byte register (ignoring again
-the signs). For instance, if we begin with @samp{[rA]} = @w{+ 01 02 03
-04 05} and @samp{[rX]} = @w{- 06 07 08 09 10}, we would have:
-
address@hidden {SLC 00} {[rA] = - 00 00 00 00 00} {[rA] = - 00 00 00 00 00}
address@hidden SLC 3 @tab [rA] =  + 04 05 06 07 08 @tab [rX] = - 09 10 01 02 03
address@hidden SLAX 3 @tab [rA] = + 04 05 06 07 08 @tab [rX] = - 09 10 00 00 00
address@hidden SRC 4 @tab [rA] =  + 07 08 09 10 01 @tab [rX] = - 02 03 04 05 06
address@hidden SRAX 4 @tab [rA] =  + 00 00 00 00 01 @tab [rX] = - 02 03 04 05 06
address@hidden multitable
-
address@hidden Miscellaneous operators, Execution times, Shift operators, MIX 
instruction set
address@hidden  node-name,  next,  previous,  up
address@hidden Miscellaneous operators
address@hidden miscellaneous operators
-
-Finally, we list in the following table three miscellaneous MIX
-instructions which do not fit in any of the previous subsections:
-
address@hidden @code
address@hidden MOVE
-Move MOD words from M to the location stored in rI1.
-OPCODE = 7, MOD = number of words.
address@hidden NOP
-No operation. OPCODE = 0, MOD = 0.
address@hidden HLT
-Halt. Stops instruction fetching. OPCODE = 5, MOD = 2.
address@hidden ftable
address@hidden
-The only effect of executing @samp{NOP} is increasing the location
-counter, while @samp{HLT} usually marks program termination.
-
address@hidden Execution times,  , Miscellaneous operators, MIX instruction set
address@hidden  node-name,  next,  previous,  up
address@hidden Execution times
-
address@hidden execution time
address@hidden time
-
-When writing MIXAL programs (or any kind of program, for that matter),
-we will often be interested in their execution time. Loosely speaking,
-we will be interested in how long it takes a program to execute. Of
-course, this execution time will be a function of the input size, and
-the answer to our question is commonly given as the asymptotic
-behavior as a function of the input size. At any rate, to compute this
-asymptotic behavior, we need a measure of how long execution of a
-single instruction takes in our (virtual) CPU. Therefore, each MIX
-instruction will have an associated execution time, given in arbitrary
-units. In a real computer, the value of this unit will depend on the
-hardware configuration. When our MIX virtual machine executes
-programs, it can give you the value of their execution time based on
-the execution time of each single instruction.
-
-The execution times of the MIX instructions, in the arbitrary units
-mentioned above, are:
-
address@hidden {INSSSS} {01} {INSSSS} {01} {INSSSS} {01} {INSSSS} {01}
address@hidden @code{NOP} @tab 1 @tab @code{ADD} @tab 2 @tab @code{SUB}
address@hidden 2 @tab @code{MUL} @tab 10
address@hidden @code{DIV} @tab 12 @tab @code{NUM} @tab 10 @tab @code{CHAR}
address@hidden 10 @tab @code{HLT} @tab 10
address@hidden @code{SLx} @tab 2 @tab @code{SRx} @tab 2 @tab @code{LDx}
address@hidden  2 @tab @code{STx} @tab 2
address@hidden @code{JBUS} @tab 1 @tab @code{IOC} @tab 1 @tab @code{IN}
address@hidden  address@hidden @code{OUT} @tab 1
address@hidden @code{JRED} @tab 1 @tab @code{Jx} @tab 1 @tab @code{INCx}
address@hidden  1 @tab @code{DECx} @tab 1
address@hidden @code{ENTx} @tab 1 @tab @code{ENNx} @tab 1 @tab @code{CMPx}
address@hidden  1 @tab @code{MOVE} @tab 1+2F
address@hidden multitable
-
-Here, 'F' stands for the number of blocks to be moved
-(given by the @code{FSPEC} subfield of the instruction), @code{SLx} and
address@hidden are a shortcut for the byte-shifting operations, @code{LDx}
-denotes all the loading operations, @code{STx} is the storing
-operation, @code{Jx} stands for all the jump operations, and so on with
-the rest of the abbreviations.
-
address@hidden MIXAL,  , The MIX computer, MIX and MIXAL tutorial
address@hidden  node-name,  next,  previous,  up
address@hidden MIXAL
address@hidden MIXAL
address@hidden MIX assembly language
address@hidden assembly
-
-In the previous sections we have listed all the available MIX binary
-instructions. As we have shown, each instruction is represented by a
-word which is fetched from memory and executed by the MIX virtual
-CPU. As is the case with real computers, the MIX knows how to decode
-instructions in binary format (the so--called machine language), but a
-human programmer would have a tough time if she were to write her
-programs in machine language. Fortunately, the MIX computer can be
-programmed using an assembly language, MIXAL, which provides a symbolic
-way of writing the binary instructions understood by the imaginary MIX
-computer. If you have used assembler languages before, you will find
-MIXAL a very familiar language. MIXAL source files are translated
-into machine language by a MIX assembler, which produces a binary file (the
-actual MIX program) which can be directly loaded into the MIX memory and
-subsequently executed.
-
-In this section, we describe MIXAL, the MIX assembly language. The
-implementation of the MIX assembler program and MIX computer simulator
-provided by @sc{mdk} are described later on (@pxref{Getting started}).
-
address@hidden
-* Basic structure::             Writing basic MIXAL programs.
-* MIXAL directives::            Assembler directives.
-* Expressions::                 Evaluation of expressions.
-* W-expressions::               Evaluation of w-expressions.
-* Local symbols::               Special symbol table entries.
-* Literal constants::           Specifying an immediate operand.
address@hidden menu
-
address@hidden Basic structure, MIXAL directives, MIXAL, MIXAL
address@hidden  node-name,  next,  previous,  up
address@hidden Basic program structure
-
-The MIX assembler reads MIXAL files line by line, producing, when
-required, a binary instruction, which is associated with a predefined
-memory address. To keep track of the current address, the assembler
-maintains an internal location counter which is increased each time an
-instruction is compiled. In addition to MIX instructions, in MIXAL you
-can include file assembly directives (or pseudoinstructions) addressed
-at the assembler itself to, for instance, tell it where the program
-starts and ends, or to reposition the location counter (see below).
-
-MIX instructions and assembler address@hidden will call them,
-collectively, MIXAL instructions.} are written in MIXAL (one per
-source file line) according to the following pattern:
-
address@hidden
-[LABEL]   MNEMONIC  [OPERAND]   [COMMENT]
address@hidden example
-
address@hidden
-where @samp{OPERAND} is of the form (items between the square brackets
-are optional):
-
address@hidden
-[ADDRESS][,INDEX][(MOD)]
address@hidden example
-
-And:
-
address@hidden @code
address@hidden LABEL
-is an alphanumeric identifier (a @dfn{symbol}) which gets the current
-value of the location counter, and can be used in subsequent
-expressions.
address@hidden MNEMONIC
-is a literal denoting the operation code of the instruction, such as
address@hidden or @code{STA} (@pxref{MIX instruction set}), or an
-assembly pseudoinstruction, such as @code{ORG} or @code{EQU}.
address@hidden ADDRESS
-is an expression that evaluates to the address subfield of the instruction.
address@hidden INDEX
-is an expression that evaluates to the index subfield of the instruction, which
-defaults to 0 (i.e., no use of indexing) and can only be used when
address@hidden is present.
address@hidden MOD
-is an expression that evaluates to the mod subfield of the instruction. Its
-default value, when omitted, depends on @code{OPCODE}.
address@hidden COMMENT
-any number of spaces after the operand mark the beginning of a comment.
-Any text separated by white space from the operand is ignored by
-the assembler (note that spaces are not allowed within the
address@hidden field).
address@hidden table
-
-Note that spaces are @emph{not} allowed between the @code{ADDRESS},
address@hidden and @code{MOD} fields if they are present. White space is
-used to separate the label, operation code and operand parts of the
address@hidden fact, Knuth's definition of MIXAL restricts the
-column number at which each of these instruction parts must start. The
-MIXAL assembler included in @sc{mdk}, @code{mixasm}, does not impose
-such restrictions.}
-
-We have already listed the mnemonics associated with each MIX
-instruction. Sample MIXAL instructions representing MIX instructions
-are:
address@hidden
-HERE     LDA  2000         HERE represents the current location counter
-         LDX  HERE,2(1:3)  this is a comment
-         JMP  1234
address@hidden example
-
address@hidden MIXAL directives, Expressions, Basic structure, MIXAL
address@hidden  node-name,  next,  previous,  up
address@hidden MIXAL directives
-
-MIXAL instructions can be either one of the MIX machine instructions
-(@pxref{MIX instruction set}) or one of the following assembly
-pseudoinstructions:
-
address@hidden @code
address@hidden ORIG
-Sets the value of the memory address to which subsequent instructions
-will be allocated after compilation.
address@hidden EQU
-Used to define a symbol's value, e.g. @address@hidden  EQU  2*200/3}}.
address@hidden CON
-The value of the given expression is copied directly into the current
-memory address.
address@hidden ALF
-Takes as operand five characters, constituting the five bytes of a word
-which is copied directly into the current memory address.
address@hidden END
-Marks the end of the program. Its operand gives the starting address for
-program execution.
address@hidden ftable
-
-The operand of @code{ORIG}, @code{EQU}, @code{CON} and @code{END} can
-be any expression that evaluates to a constant MIX word, i.e., either
-a simple MIXAL expression (composed of numbers, symbols and binary
-operators (@pxref{Expressions}), or a w-expression
-(@pxref{W-expressions}).
-
-All MIXAL programs must contain an @code{END} directive, for two
-reasons. First, it marks the end of the assembler job. Second, its
-mandatory operand indicates the start address for the compiled program
-(the address at which the virtual MIX machine must begin fetching
-instructions after loading the program). It is also very common,
-although not mandatory, to include at least an @code{ORIG} directive
-to mark the initial value of the assembler's location counter
-(remember that the location counter stores the address associated with
-each compiled MIX instruction). Every MIXAL program should also
-include a @code{HLT} instruction, which will mark the end of program
-execution (but not of program compilation). Thus, a minimal MIXAL
-program would be:
-
address@hidden
-          ORIG  2000    set the initial compilation address
-          NOP           this instruction will be loaded at address 2000
-          HLT           and this one at address 2001
-          END   2000    end of program; start at address 2000
-this line is not parsed by the assembler
address@hidden example
address@hidden
-The assembler will generate two binary instructions (@code{NOP} (@w{+
-00 00 00 00 00}) and @code{HLT} (+ 00 00 02 05)), which will be loaded
-at addresses 2000 and 2001. Execution of the program will begin at
-address 2000.
-
-The @code{EQU} directive allows the definition of symbolic names for
-specific values. For instance, we could rewrite the above program as
-follows:
-
address@hidden
-START     EQU   2000
-          ORIG  START
-          NOP
-          HLT
-          END   START
address@hidden example
address@hidden
-which would give rise to the same compiled code. Symbolic constants
-(symbols, for short) can also be implicitly defined by placing them in
-the @code{LABEL} field of a MIXAL instruction. In this case, the
-assembler assigns the value of the location counter to the symbol
-before compiling the line. Hence, a third way of writing our trivial
-program is:
-
address@hidden
-          ORIG  2000
-START     NOP
-          HLT
-          END   START
address@hidden example
-
-The @code{CON} directive allows you to directly specify the contents
-of the memory address pointed to by the location counter. For
-instance, when the assembler encounters the following code snippet:
-
address@hidden
-          ORIG  1150
-          CON   -1823473
address@hidden example
address@hidden
-it will assign to the memory cell number 1150 the contents @w{- 00 06 61
-11 49} (which corresponds to the decimal value -1823473).
-
-Finally, the @code{ALF} directive lets you specify the memory contents
-as a set of five (quoted) characters, which are translated by the
-assembler to their byte values, confirming in that way the binary word
-that is to be stored in the corresponding memory cell. This directive
-comes in handy when you need to store printable messages in a memory
-address, as in the following example:
-
address@hidden
-          OUT  MSG       MSG is not yet defined here (future reference)
-MSG       ALF  "THIS "   MSG gets defined here
-          ALF  "IS A "
-          ALF  "MESSA"
-          ALF  "GE.  "
address@hidden example
address@hidden
-The above snippet also shows the use of a @dfn{future reference}, which
-is the usage of a symbol (@code{MSG} in the example) prior to its actual
-definition. The MIXAL assembler is able to handle future references
-subject to some limitations, which are described in the following section
-(@pxref{Expressions}).
-
address@hidden comments
-
-Any line starting with an asterisk is treated as a comment and ignored
-by the assembler.
-
address@hidden
-* This is a comment: this line is ignored.
-    * This line is an error: * must be in column 1.
address@hidden example
-
-As noted in the previous section, comments can also be located after the
address@hidden field of an instruction, separated from it by white
-space, as in:
-
address@hidden
-LABEL     LDA   100  This is also a comment
address@hidden example
-
address@hidden Expressions, W-expressions, MIXAL directives, MIXAL
address@hidden  node-name,  next,  previous,  up
address@hidden Expressions
address@hidden operator
address@hidden binary operator
address@hidden unary operator
-The @code{ADDRESS}, @code{INDEX} and @code{MOD} fields of a MIXAL
-instruction can be expressions, formed by numbers, identifiers and
-binary operators (@code{+ - * / // :}). @code{+} and @code{-} can also
-be used as unary operators. Operator precedence is from left to right.
-There is no other operator precedence rule, and parentheses cannot be
-used for grouping. A stand-alone asterisk denotes the current memory
-location. Thus, for instance,
-
address@hidden
-     4+2**
address@hidden example
-
address@hidden
-evaluates to 6 (4 plus 2) times the current memory location. White space
-is not allowed within expressions.
-
-The special binary operator @code{:} has the same meaning as in fspecs,
-i.e.:
-
address@hidden
-A:B = 8*A + B
address@hidden example
address@hidden
-while @code{A//B} stands for the quotient of the ten-byte number 
@address@hidden 00
-00 00 00 00} (A right-padded with five null bytes or, what amounts
-to the same, multiplied by 64 to the fifth power) divided by
address@hidden Sample expressions are:
-
address@hidden
-18-8*3 = 30
-14/3 = 4
-1+3:11 = 4:11 = 43
-1//64 = (01 00 00 00 00 00)/(00 00 00 01 00) = (01 00 00 00 00)
address@hidden example
address@hidden
-Note that all MIXAL expressions, by definition, evaluate to a MIX word.
-
-All symbols appearing within an expression must be previously defined. Future
-references are only allowed when appearing stand-alone (or modified by
-a unary operator) in the @code{ADDRESS} part of a MIXAL instruction,
-e.g.:
-
address@hidden
-* OK: stand-alone future reference
-         STA  -S1(1:5)
-* ERROR: future reference in expression
-         LDX  2-S1
-S1       LD1  2000
address@hidden example
-
address@hidden W-expressions, Local symbols, Expressions, MIXAL
address@hidden  node-name,  next,  previous,  up
address@hidden W-expressions
address@hidden w-expressions
-
-Besides expressions, as described above (@pxref{Expressions}), the MIXAL
-assembler is able to handle @dfn{w-expressions} as the
-operands of the directives @code{ORIG}, @code{EQU}, @code{CON} and
address@hidden (@pxref{MIXAL directives}). The general form of a
-w-expression is:
-
address@hidden
-     WEXP = EXP[(EXP)][,WEXP]
address@hidden example
address@hidden
-where @code{EXP} stands for an expression and square brackets denote
-optional items. Thus, a w-expression is made by an expression, followed
-by an optional expression between parentheses, followed by any number
-of similar constructs separated by commas. Sample w-expressions are:
-
address@hidden
-2000
-235(3)
-S1+3(S2),3000
-S1,S2(3:5),23
address@hidden example
-
-W-expressions are evaluated from left to right as follows:
-
address@hidden
address@hidden
-Start with an accumulated result @samp{w} equal to 0.
address@hidden
-Take the first expression of the comma-separated list and evaluate
-it. For instance, if the w-expression is @samp{S1+2(2:4),2000(S2)}, we
-evaluate first @samp{S1+2}. Suppose that @samp{S1} equals
-265230. Then @samp{S1+2 = 265232 = + 00 01 00 48 16}.
address@hidden
-Evaluate the expression within parentheses, reducing it to an f-spec
-of the form @samp{L:R}. In our previous example, the expression
-between parentheses already has the desired form: 2:4.
address@hidden
-Substitute the bytes of the accumulated result @samp{w} designated by
-the f-spec using those of the previous expression value. In our sample,
address@hidden = + 00 00 00 00 00}, and we must substitute bytes 2, 3 and 4 of
address@hidden using values from 265232. We need three bytes, and we take the
-least significant ones: 00, 48, and 16, and insert them in positions
-2, 3 and 4 of @samp{w}, obtaining @samp{w = + 00 00 48 16 00}.
address@hidden
-Repeat this operation with the remaining terms, acting on the new
-value of @samp{w}. In our example, if @samp{S2 = 1:1}, we must
-substitute the first byte of @samp{w} using one byte (the least
-significant) from 2000, which is 16 (since 2000 = + 00 00 00 31 16).
-Therefore, we obtain @samp{w = + 16 00 48 16 00}. Summing up, we have
-obtained @samp{265232(1:4),2000(1:1) = + 16 00 48 16 00 = 268633088}.
address@hidden itemize
-
-As a second example, in the w-expression:
address@hidden
-1(1:2),66(4:5)
address@hidden example
address@hidden
-we first take two bytes from 1 (00 and 01) and store them as bytes 1
-and 2 of the result (obtaining @address@hidden 00 01 00 00
-00}}). Afterwards, we take two bytes from 66 (01 and 02) and store
-them as bytes 4 and 5 of the result, obtaining @address@hidden 00 01 00 01
-02}} (262210). The process is repeated for each new comma-separated
-example. For instance:
-
address@hidden
-1(1:1),2(2:2),3(3:3),4(4:4) = 01 02 03 04 00
address@hidden example
-
-As stated before, w-expressions can only appear as the operands of MIXAL
-directives that take a constant value (@code{ORIG}, @code{EQU}, @code{CON}
-and @code{END}). Future references are @emph{not} allowed within
-w-expressions. All symbols appearing in a w-expression must be
-defined before it is used.
-
address@hidden Local symbols, Literal constants, W-expressions, MIXAL
address@hidden  node-name,  next,  previous,  up
address@hidden Local symbols
address@hidden local symbols
-
-Besides user defined symbols, MIXAL programmers can use @dfn{local
-symbols}, which are symbols of the form @code{[1-9][HBF]}. A local
-symbol @code{nB} refers to the address of the last previous occurrence
-of @code{nH} as a label, while @code{nF} refers to the next @code{nH}
-occurrence. Unlike user defined symbols, @code{nH} can appear multiple
-times in the @code{LABEL} part of different MIXAL instructions. The
-following code illustrates the usage of local symbols:
-
address@hidden
-* line 1
-1H    LDA  100
-* line 2: 1B refers to address of line 1, 3F refers to address of line 4
-      STA  3F,2(1B//2)
-* line 3: redefinition of 1H
-1H    STZ
-* line 4: 1B refers to address of line 3
-3H    JMP  1B
address@hidden example
-
-Note that a @code{B} local symbol never refers to a definition in its
-own line. In the following program:
-
address@hidden
-               ORIG 1999
-ST             NOP
-3H             EQU 69
-3H             ENTA 3B  local symbol 3B refers to 3H in previous line
-               HLT
-               END ST
address@hidden example
address@hidden
-the content of @samp{rA} is set to 69, @emph{not} to 2001. An
-especially tricky case occurs when using local symbols in conjunction
-with @code{ORIG} address@hidden author wants to
-thank Philip E. King for pointing out these two special cases of local
-symbol usage.} For example:
-
address@hidden
-               ORIG 1999
-ST             NOP
-3H             CON 10
-               ENT1 *
-               LDA 3B
-** rI1 is 2001, rA is 10.  So far so good!
-3H             ORIG 3B+1000
-** at this point 3H equals 2003
-** and the location counter equals 3000.
-               ENT2 *
-               LDX 3B
-** rI2 contains 3000, rX contains 2003.
-               HLT
-               END ST
address@hidden example
-
address@hidden Literal constants,  , Local symbols, MIXAL
address@hidden  node-name,  next,  previous,  up
address@hidden Literal constants
address@hidden literal constants
-
-MIXAL allows the introduction of @dfn{literal constants}, which are
-automatically stored in memory addresses after the end of the program by
-the assembler. Literal constants are denoted as @code{=wexp=}, where
address@hidden is a w-expression (@pxref{W-expressions}). For instance, the
-code:
-
address@hidden
-L         EQU   5
-          LDA   =20-L=
address@hidden example
-
-causes the assembler to add after the program's end an instruction
-with contents 15 (@samp{20-L}), and to assemble the above code as the
-instruction @address@hidden LDA a}}, where @code{a} stands for the address
-in which the value 15 is stored. In other words, the compiled code is
-equivalent to the following:
-
address@hidden
-L         EQU  5
-          LDA  a
address@hidden
-a         CON  20-L
-          END  start
address@hidden example
-

Index: cover/make-back-big.jpg
===================================================================
RCS file: cover/make-back-big.jpg
diff -N cover/make-back-big.jpg
Binary files /tmp/cvsrKWVzm and /dev/null differ

Index: cover/make-back-small.jpg
===================================================================
RCS file: cover/make-back-small.jpg
diff -N cover/make-back-small.jpg
Binary files /tmp/cvskQ7QWk and /dev/null differ

Index: cover/make-front-big.jpg
===================================================================
RCS file: cover/make-front-big.jpg
diff -N cover/make-front-big.jpg
Binary files /tmp/cvstcxHyl and /dev/null differ

Index: cover/make-front-small.jpg
===================================================================
RCS file: cover/make-front-small.jpg
diff -N cover/make-front-small.jpg
Binary files /tmp/cvsWi9JOo and /dev/null differ




reply via email to

[Prev in Thread] Current Thread [Next in Thread]