eschmid Tue Apr 17 10:37:14 2001 EDT
Modified files:
/phpdoc/de/functions sockets.xml
Log:
Another translation by Conni.
Index: phpdoc/de/functions/sockets.xml
diff -u /dev/null phpdoc/de/functions/sockets.xml:1.6
--- /dev/null Tue Apr 17 10:37:14 2001
+++ phpdoc/de/functions/sockets.xml Tue Apr 17 10:37:14 2001
@@ -0,0 +1,620 @@
+ <reference id="ref.sockets">
+ <title>Socket Funktionen</title>
+ <titleabbrev>Sockets</titleabbrev>
+
+ <partintro>
+ <simpara>
+ Die Socket-Erweiterung stellt eine hardwarenahe Schnittstelle
+ zu den Datenaustauschfunktionen einer Socket-Verbindung zur
+ Verf�gung und bietet die M�glichkeit, entweder als Socket-Server
+ oder als Client zu agieren.
+ </simpara>
+ <para>
+ Die hier beschriebenen Socket Funktionen sind Teil einer PHP
+ Erweiterung, die beim Kompilieren mit der Option<option
+ role="configure">--enable-sockets</option> beim Befehl
+ <command>configure</command> eingebunden werden m�ssen.
+ </para>
+ <para>
+ F�r eine allgemeinere clientseitige Socket Schnittstelle siehe
+ <function>fsockopen</function> und
+ <function>pfsockopen</function>.
+ </para>
+ <para>
+ Wenn man diese Funktionen benutzt, darf man nicht vergessen,
+ dass, obwohl viele der Funktionen gleichlautende Namen wie ihre
+ Entsprechungen in C haben, sie dennoch oft unterschiedliche
+ Deklarationen haben. Bitte lesen Sie die Deklarationen, um
+ Verwirrung zu vermeiden.
+ </para>
+ <para>
+ Das heisst, wem Socketprogrammierung fremd ist, der findet eine
+ grosse Menge n�tzlicher Materialien in den entsprechenden Unix
+ manpages und es gibt jede Menge von Tutorials und Informationen �ber
+ Socketprogrammierung in C im Internet. Vieles davon kann mit leichten
+ �nderungen f�r die Socketprogrammierung mit PHP benutzt werden.
+ </para>
+ <para>
+ <example>
+ <title>Socket Beispiel: Einfacher TCP/IP Server</title>
+ <para>
+ Dieses Beispiel zeigt einen einfachen Echo-Server. Passen Sie
+ die Variablen <varname>address</varname> und
+ <varname>port</varname> an Ihre Systemumgebung an und f�hren
+ Sie das Skript aus. Dann k�nnen Sie sich mit einem Befehl wie:
+ <command>telnet 192.168.1.53 10000</command> (bei dem adress
+ und port an Ihre Umgebung angepasst ist) mit dem Server
+ verbinden. Alles, was Sie eingeben, wird an den Server geschickt
+ und von diesem wieder an Sie zur�ckgegeben. Um die Verbindung
+ zu trennen, geben sie 'quit' ein.
+ </para>
+ <programlisting role="php">
+<?php
+error_reporting (E_ALL);
+
+/* Warten auf Verbindungen */
+set_time_limit (0);
+
+$address = '192.168.1.53';
+$port = 10000;
+
+if (($sock = socket (AF_INET, SOCK_STREAM, 0)) < 0) {
+ echo "socket() fehlgeschlagen: Grund: " . strerror ($sock) . "\n";
+}
+
+if (($ret = bind ($sock, $address, $port)) < 0) {
+ echo "bind() fehlgeschlagen: Grund: " . strerror ($ret) . "\n";
+}
+
+if (($ret = listen ($sock, 5)) < 0) {
+ echo "listen() fehlgeschlagen: reason: " . strerror ($ret) . "\n";
+}
+
+do {
+ if (($msgsock = accept_connect($sock)) < 0) {
+ echo "accept_connect() fehlgeschlagen: Grund: " . strerror ($msgsock) . "\n";
+ break;
+ }
+ do {
+ $buf = '';
+ $ret = read ($msgsock, $buf, 2048);
+ if ($ret < 0) {
+ echo "read() fehlgeschlagen: Grund: " . strerror ($ret) . "\n";
+ break 2;
+ }
+ if ($ret == 0) {
+ break 2;
+ }
+ $buf = trim ($buf);
+ if ($buf == 'quit') {
+ close ($msgsock);
+ break 2;
+ }
+ $talkback = "PHP: You said '$buf'.\n";
+ write ($msgsock, $talkback, strlen ($talkback));
+ echo "$buf\n";
+ } while (true);
+ close ($msgsock);
+} while (true);
+
+close ($sock);
+?>
+ </programlisting>
+ </example>
+ </para>
+ <para>
+ <example>
+ <title>Socket Beispiel: Einfacher TCP/IP client</title>
+ <para>
+ Dieses Beispiel zeigt einen einfachen HTTP-Client. Er verbindet sich
+ mit einer Seite, schickt einen HEAD-Request, gibt die Antwort zurueck
+ und beendet das Skript.
+ </para>
+ <programlisting>
+<?php
+error_reporting (E_ALL);
+
+echo "<h2>TCP/IP Connection</h2>\n";
+
+/* Die Portnummer des WWW Service holen. */
+$service_port = getservbyname ('www', 'tcp');
+
+/* Die IP-Adresse des Zielhosts holen. */
+$address = gethostbyname ('www.php.net');
+
+/* Eine TCP/IP Socketverbindung aufbauen. */
+$socket = socket (AF_INET, SOCK_STREAM, 0);
+if ($socket < 0) {
+ echo "socket() fehlgeschlagen: Grund: " . strerror ($socket) . "\n";
+} else {
+ "socket() ausgefuehrt: " . strerror ($socket) . "\n";
+}
+
+echo "Verbindungsversuch mit '$address' on port '$service_port'...";
+$result = connect ($socket, $address, $service_port);
+if ($result < 0) {
+ echo "connect() fehlgeschlagen.\nGrund: ($result) " . strerror($result) . "\n";
+} else {
+ echo "OK.\n";
+}
+
+$in = "HEAD / HTTP/1.0\r\n\r\n";
+$out = '';
+
+echo "HTTP HEAD request senden...";
+write ($socket, $in, strlen ($in));
+echo "OK.\n";
+
+echo "Antwort lesen:\n\n";
+while (read ($socket, $out, 2048)) {
+ echo $out;
+}
+
+echo "Socketverbindung schliessen...";
+close ($socket);
+echo "OK.\n\n";
+?>
+ </programlisting>
+ </example>
+ </para>
+ </partintro>
+
+ <refentry id="function.accept-connect">
+ <refnamediv>
+ <refname>accept_connect</refname>
+ <refpurpose>Weist den Socket an, hereinkommende Verbindungen zu
+bearbeiten</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Beschreibung</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>int <function>accept_connect</function></funcdef>
+ <paramdef>int <parameter>socket</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ <para>
+ Nachdem der Socket <parameter>socket</parameter> mit der
+ <function>socket</function> erzeugt wurde, mit
+ <function>bind</function> mit einem Namen verknuepft wurde
+ und mit <function>listen</function> angewiesen wurde, auf
+ hereinkommende Verbindungsanforderungen zu horchen, wird der
+ Socket mit dieser Funktion angewiesen, heieinkommende
+ Verbindungsanforderungen zuzulassen und zu bearbeiten. Wenn ein
+ Verbindungsaufbau erfolgreich war, wird ein neuer Socket-Deskriptot
+ zur�ckgegeben, welcher zur Kommunikation benutzt werden kann.
+ Wenn es mehrere Verbindungsanforderungen an diesem Socket gibt,
+ werden diese in eine Warteschlange gestellt und die erste
+ Verbindungsanforderung wird bedient.
+ Falls es keine aktuellen Verbindungsanforderungen gibt, blockiert
+ die Funktion <function>accept_connect</function> solange, bis eine
+ Verbindungsanforderung kommt. Falls <parameter>socket</parameter>
+ mit der Funktion <function>socket_set_blocking</function> oder mit
+ <function>set_nonblock</function> auf 'nicht blockieren' gesetzt
+ wurde, wird ein Fehlercode zur�ckgegeben.
+ </para>
+ <para>
+ Der Socket-Deskriptor, der von <function>accept_connect</function>
+ zur�ckgegeben wird, soll nicht dazu benutzt werden, um neue
+ Verbindungsanforderungen zuzulassen. Der origin�re wartende Socket
+ <parameter>socket</parameter> bleibt ge�ffnet und kann wiederbenutzt
+ werden.
+ </para>
+ <para>
+ Gibt einen neuen Socket-Deskriptor zur�ck oder einen negativen
+ Fehlercode, falls ein Fehler auftritt. Dieser Fehlercode kann an
+ die Funktion <function>strerror</function> �bergeben werden, um
+ eine textuelle Beschreibung des Fehlers zu erhalten.
+ </para>
+ <para>
+ Siehe auch:
+ <function>bind</function>,
+ <function>connect</function>,
+ <function>listen</function>,
+ <function>socket</function>,
+ <function>socket_get_status</function>, und
+ <function>strerror</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.bind">
+ <refnamediv>
+ <refname>bind</refname>
+ <refpurpose>Verkn�pft einen Namen mit einem Socket</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Beschreibung</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>int <function>bind</function></funcdef>
+ <paramdef>int <parameter>socket</parameter></paramdef>
+ <paramdef>string <parameter>address</parameter></paramdef>
+ <paramdef>int
+ <parameter><optional>port</optional></parameter>
+ </paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ <para>
+ <function>bind</function> verkn�pft den Namen, der in
+ <parameter>address</parameter> angegeben ist mit dem Socket, der
+ durch <parameter>socket</parameter> bestimmt wird. Dies muss ein
+ g�ltiger Socket-Deskriptor sein, der mit der Funktion
+ <function>socket</function> erzeugt wurde.
+ </para>
+ <para>
+ Der Parameter <parameter>address</parameter> ist entweder eine
+ IP-Adresse, angegeben in Punktnotation
+ (z.B. <literal>127.0.0.1</literal>), falls der Socket zur
+ <constant>AF_INET</constant> -Familie geh�rt; oder ein Pfadname
+ eines Unix-domain socket, falls er zur <constant>AF_UNIX</constant> -
+ Familie Geh�rt.
+ </para>
+ <para>
+ Der Parameter <parameter>port</parameter> wird nur benutzt, wenn
+ eine Verbindung zu einem <constant>AF_INET</constant> -Socket
+ aufgebaut wird und bestimmt den Port des entfernten Hosts, zu dem
+ die Verbindung hergestellt werden soll.
+ </para>
+ <para>
+ Gibt bei Erfolg null zur�ck, ansonsten einen negativen Fehlercode.
+ Dieser Fehlercode kann an die Funktion <function>strerror</function>
+ �bergeben werden, um eine textuelle Beschreibung des Fehlers zu erhalten.
+ </para>
+ <para>
+ Siehe auch:
+ <function>accept_connect</function>,
+ <function>connect</function>,
+ <function>listen</function>,
+ <function>socket</function>,
+ <function>socket_get_status</function>, und
+ <function>strerror</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.close">
+ <refnamediv>
+ <refname>close</refname>
+ <refpurpose>Schliesst einen Datei-Deskriptor</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Beschreibung</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>bool <function>close</function></funcdef>
+ <paramdef>int <parameter>socket</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ <para>
+ <function>close</function> schliesst den Datei- (oder Socket-) Deskriptor,
+ der durch <parameter>socket</parameter> gegeben ist.
+ </para>
+ <para>
+ Beachten sie, dass <function>close</function> nicht mit PHP
+ Dateideskriptoren, die mit <function>fopen</function>,
+ <function>popen</function>, <function>fsockopen</function> oder
+ <function>psockopen</function> erzeugt wurden, benutzt werden
+ sollte, sondern nur f�r Dateideskriptoren, die mit
+ <function>socket</function> oder <function>accept_connect</function>
+ erzeugt wurden.
+ </para>
+ <para>
+ Gibt bei Erfolg true zur�ck oder, falls ein Fehler auftrat, false.
+ (z.B. <parameter>socket</parameter> is invalid).
+ </para>
+ <para>
+ Siehe auch: <function>bind</function>, <function>listen</function>,
+ <function>socket</function>,
+ <function>socket_get_status</function>, und
+ <function>strerror</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.connect">
+ <refnamediv>
+ <refname>connect</refname>
+ <refpurpose>Baut eine Verbindung zu einem Socket auf</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Beschreibung</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>int <function>connect</function></funcdef>
+ <paramdef>int <parameter>socket</parameter></paramdef>
+ <paramdef>string <parameter>address</parameter></paramdef>
+ <paramdef>int
+ <parameter><optional>port</optional></parameter>
+ </paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ <para>
+ Baut mit Hilfe eines g�ltigen Socket-Deskriptors
+ <parameter>socket</parameter>, der von der Funktion
+ <function>socket</function> zur�ckgegeben wurde,
+ eine Verbindung zu dem Socket auf.
+ </para>
+ <para>
+ Der Parameter <parameter>address</parameter> ist entweder
+ eine IP-Adresse in Punktnotation (e.g. <literal>127.0.0.1</literal>),
+ falls der Socket zur <constant>AF_INET</constant> -Familie geh�rt,
+ oder der Pfadname eines Unix-domain socket, falls der Socket zur
+ <constant>AF_UNIX</constant> -Familie geh�rt.
+ </para>
+ <para>
+ Der Parameter <parameter>port</parameter> wird nur benutzt, falls
+ eine Verbindung zu einem <constant>AF_INET</constant> Socket
+ aufgebaut wird, und bestimmt den Port des entfernten Hosts, zu
+ dem die Verbindung aufgebaut werden soll.
+ </para>
+ <para>
+ Gibt bei Erfolg null zur�ck oder einen negativen Fehlercode, falls
+ ein Fehler aufgetreten ist.Dieser Fehlercode kann an die Funktion
+ <function>strerror</function> �bergeben werden, um eine textuelle
+ Beschreibung des Fehlers zu erhalten.
+ </para>
+ <para>
+ Siehe auch:
+ <function>bind</function>,
+ <function>listen</function>,
+ <function>socket</function>,
+ <function>socket_get_status</function>, und
+ <function>strerror</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.listen">
+ <refnamediv>
+ <refname>listen</refname>
+ <refpurpose>Horcht auf eine Verbindungsanforderung an dem Socket</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Beschreibung</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>int <function>listen</function></funcdef>
+ <paramdef>int <parameter>socket</parameter></paramdef>
+ <paramdef>int <parameter>backlog</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ <para>
+ Nachdem der Socket <parameter>socket</parameter> mit
+ <function>socket</function> erzeugt wurde und mit
+ <function>bind</function> mit einem Namen verkn�pft wurde,
+ wird er mit dieser Funktion angewiesen, am Socket
+ <parameter>socket</parameter> auf hereinkommende
+ Verbindungen zu horchen. <parameter>backlog</parameter> ist
+ das Maximum an hereinkommenden Verbindungsanforderungen, die
+ zur weiteren Verarbeitung in die Warteschlange gestellt werden
+ k�nnen.
+ </para>
+ <para>
+ <function>listen</function> kann nur mit Sockets vom Typ
+ <literal>SOCK_STREAM</literal> oder <literal>SOCK_SEQPACKET</literal>
+ verwendet werden.
+ </para>
+ <para>
+ Gibt bei Erfolg null zur�ck oder einen negativen Fehlercode wenn
+ die Funktion fehlschl�gt. Dieser Fehlercode kann an die Funktion
+ <function>strerror</function> �bergeben werden, um eine textuelle
+ Beschreibung des Fehlers zu erhalten.
+ </para>
+ <para>
+ Siehe auch:
+ <function>accept_connect</function>,
+ <function>bind</function>,
+ <function>connect</function>,
+ <function>socket</function>,
+ <function>socket_get_status</function>, und
+ <function>strerror</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.read">
+ <refnamediv>
+ <refname>read</refname>
+ <refpurpose>Liest vom Socket</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Beschreibung</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>int <function>read</function></funcdef>
+ <paramdef>int <parameter>socket_des</parameter></paramdef>
+ <paramdef>string <parameter>&buffer</parameter></paramdef>
+ <paramdef>int <parameter>length</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ <para>
+ Die Funktion <function>read</function> liest vom Socket
+ <parameter>socket_des</parameter>, der von der Funktion
+ <function>accept_connect</function> erzeugt wurde die Anzahl Bytes,
+ die in dem Parameter <parameter>length</parameter> �bergeben
+ wurde in den Puffer <parameter>&buffer</parameter>.
+ Um das Lesen zu Beenden, kann man \n, \t oder \0 benutzen.
+ Gibt die Anzahl der gelesenen Bytes zur�ck.
+ </para>
+ <para>
+ Siehe auch:
+ <function>accept_connect</function>,
+ <function>bind</function>,
+ <function>connect</function>,
+ <function>listen</function>,
+ <function>strerror</function>,
+ <function>socket_get_status</function> und
+ <function>write</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.socket">
+ <refnamediv>
+ <refname>socket</refname>
+ <refpurpose>Erzeugt einen Socket (Endpunkt f�r die Daten�bertragung)</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Beschreibung</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>int <function>socket</function></funcdef>
+ <paramdef>int <parameter>domain</parameter></paramdef>
+ <paramdef>int <parameter>type</parameter></paramdef>
+ <paramdef>int <parameter>protocol</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ <para>
+ Erzeugt eine Datenendeinrichtung zur Kommunikation (einen Socket)
+ und gibt f�r diesen Socket einen Deskriptor zur�ck.
+ </para>
+ <para>
+ Der Parameter <parameter>domain</parameter> bestimmt die Domain.
+ Momentan werden <constant>AF_INET</constant> und
+ <constant>AF_UNIX</constant> unterst�tzt.
+ </para>
+ <para>
+ Der Parameter <parameter>type</parameter> w�hlt den Socket-Typ.
+ Das ist entweder <constant>SOCK_STREAM</constant>,
+ <constant>SOCK_DGRAM</constant>,
+ <constant>SOCK_SEQPACKET</constant>,
+ <constant>SOCK_RAW</constant>, <constant>SOCK_RDM</constant>, oder
+ <constant>SOCK_PACKET</constant>.
+ </para>
+ <para>
+ <parameter>protocol</parameter> bestimmt das Protokoll.
+ </para>
+ <para>
+ Gibt bei Erfolg einen g�ltigen Socket-Deskriptor zur�ck oder einen
+ negativen Fehlercode, falls ein Fehler auftritt.Dieser Fehlercode
+ kann an die Funktion <function>strerror</function> �bergeben werden,
+ um eine textuelle Beschreibung des Fehlers zu erhalten.
+ </para>
+ <para>
+ Um mehr Informationen �ber den Gebrauch der Funktion
+ <function>socket</function> und die Bedeutung der verschiedenen
+ Parameter zu erhalten , sei auf die Unix man page socket (2)
+ verwiesen.
+ </para>
+ <para>
+ Siehe auch:
+ <function>accept_connect</function>,
+ <function>bind</function>,
+ <function>connect</function>,
+ <function>listen</function>,
+ <function>strerror</function>, und
+ <function>socket_get_status</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.strerror">
+ <refnamediv>
+ <refname>strerror</refname>
+ <refpurpose>Gibt einen String zur�ck, der einen Socket-Fehler
+beschreibt</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Beschreibung</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>string <function>strerror</function></funcdef>
+ <paramdef>int <parameter>errno</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ <para>
+ <function>strerror</function> nimmt als Parameter
+ <parameter>errno</parameter> den R�ckgabewert einer Socket-Funktion
+ und gibt seinerseits den entsprechenden Erkl�rungstext aus. Das macht
+ die Fehlersuche ein wenig einfacher. Zum Beispiel, anstatt eine
+ Include-Datei des Systems zu durchsuchen, was der Fehlercode -111
+ bedeutet, kann man den Code an die Funktion <function>strerror</function>
+ �bergeben und erh�lt Aufschluss �ber die internen Abl�ufe.
+ </para>
+ <para>
+ <example>
+ <title><function>strerror</function> Beispiel: </title>
+ <programlisting role="php">
+<?php
+if (($socket = socket (AF_INET, SOCK_STREAM, 0)) < 0) {
+ echo "socket() fehlgeschlagen: Grund: " . strerror ($socket) . "\n";
+}
+
+if (($ret = bind ($socket, '127.0.0.1', 80)) < 0) {
+ echo "bind() fehlgeschlagen: Grund: " . strerror ($ret) . "\n";
+}
+?>
+ </programlisting>
+ <para>
+ Die erwartete Ausgabe des obigen Beispiels (vorausgesetzt, das Skript
+ wird nicht mit root- Benutzerrrechten ausgef�hrt) ist:
+ <screen>
+ bind() fehlgeschlagen: Grund: Permission denied
+ </screen>
+ </para>
+ </example>
+ </para>
+ <para>
+ Siehe auch:
+ <function>accept_connect</function>,
+ <function>bind</function>,
+ <function>connect</function>,
+ <function>listen</function>,
+ <function>socket</function>, und
+ <function>socket_get_status</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ <refentry id="function.write">
+ <refnamediv>
+ <refname>write</refname>
+ <refpurpose>Schreibt in den Socket</refpurpose>
+ </refnamediv>
+ <refsect1>
+ <title>Beschreibung</title>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>int <function>write</function></funcdef>
+ <paramdef>int <parameter>socket_des</parameter></paramdef>
+ <paramdef>string <parameter>&buffer</parameter></paramdef>
+ <paramdef>int <parameter>length</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ <para>
+ Die Funktion <function>write</function> schreibt in den Socket, mit
+ dem Socket Deskriptor <parameter>socket_des</parameter>, aus dem
+ Puffer <parameter>&buffer</parameter> die Anzahl Bytes, die mit
+ <parameter>length</parameter> �bergeben wurde.
+ </para>
+ <para>
+ Siehe auch:
+ <function>accept_connect</function>,
+ <function>bind</function>,
+ <function>connect</function>,
+ <function>listen</function>,
+ <function>read</function>,
+ <function>strerror</function>, und
+ <function>socket_get_status</function>.
+ </para>
+ </refsect1>
+ </refentry>
+
+ </reference>
+
+ <!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:1
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:"../../manual.ced"
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+