No problems. Here's the patch without the extra @node updates. I haven't signed any papers with the FSF so if the patch is considered too big to incorporate without signing copyright papers then I'd be happy to.
* posix.texi: Added more examples of usage and a sample TCP/IP client/server. --- doc/ref/posix.texi.orig Sun Mar 10 20:49:59 2002 +++ doc/ref/posix.texi Mon Mar 18 22:41:52 2002 @@ -701,6 +701,16 @@ @deffn primitive closedir port Close the directory stream @var{stream}. The return value is unspecified. + +To display all the entries in a directory: +@example +(define dir (opendir "/usr/lib")) +(do ((entry (readdir dir) (readdir dir))) + ((eof-object? entry)) + (display entry)(newline)) +(closedir dir) +@end example + @end deffn @deffn primitive sync @@ -753,6 +763,11 @@ base name is the file name without any directory components. If @var{suffix} is provided, and is equal to the end of @var{basename}, it is removed also. + +@lisp +(basename "/tmp/test.xml" ".xml") +@result{}"test" +@end lisp @end deffn @@ -970,6 +985,11 @@ month and day names is dependent on the current locale. The value returned is the formatted string. @xref{Formatting Date and Time, , , libc, The GNU C Library Reference Manual}.) + +@lisp +(strftime "%c" (localtime (current-time))) +@result{}"Mon Mar 11 20:17:43 2002" +@end lisp @end deffn @deffn primitive strptime format string @@ -1549,6 +1569,13 @@ @deffn procedure open-input-pipe command Equivalent to @code{open-pipe} with mode @code{OPEN_READ}. + +@lisp +(read-line (open-input-pipe "date")) +@result{}"Mon Mar 11 20:10:44 GMT 2002" +(waitpid WAIT_ANY) +@result{}(24160 . 0) +@end lisp @end deffn @deffn procedure open-output-pipe command @@ -1572,6 +1599,7 @@ * Network Address Conversion:: * Network Databases:: * Network Sockets and Communication:: +* Internet Socket Examples:: @end menu @node Network Address Conversion @@ -1705,6 +1733,13 @@ @code{no-data}, corresponding to the equivalent @code{h_error} values. Unusual conditions may result in errors thrown to the @code{system-error} or @code{misc_error} keys. + +@lisp +(gethost "www.gnu.org") +@result{}#("www.gnu.org" () 2 4 (3353880842)) +(gethostbyname "www.emacs.org") +@result{}#("emacs.org" ("www.emacs.org") 2 4 (1073448978)) +@end lisp @end deffn The following procedures may be used to step through the host @@ -1874,6 +1909,14 @@ @code{getservent} (see below). @end deffn +@lisp +(getserv "imap" "tcp") +@result{}#("imap2" ("imap") 143 "tcp") +(getservbyport 88 "udp") +@result{}#("kerberos" ("kerberos5" "krb5") 88 "udp") +@end lisp + + The following procedures may be used to step through the service database from beginning to end. @@ -2241,6 +2284,68 @@ (uniform-vector-read! v port) (ntohl (uniform-vector-ref v 0))))) @end example + +@node Internet Socket Examples +@subsection Network Socket Examples +The following sections give examples of how to use network sockets. + +@menu +* Internet Socket Client:: +* Internet Socket Server:: +@end menu + +@node Internet Socket Client +@subsubsection Internet Socket Client Example +@cindex socket client example + +The following example demonstrates an Internet socket client. +It connects to the HTTP daemon running on the local machine and +returns the contents of the root index URL. + +@example +(let ((s (socket AF_INET SOCK_STREAM 0))) + (connect s AF_INET (inet-aton "127.0.0.1") 80) + (display "GET / HTTP/1.0\r\n\r\n" s) + + (do ((line (read-line s) (read-line s))) + ((eof-object? line)) + (display line)(newline))) +@end example + +@node Internet Socket Server +@subsubsection Internet Socket Server Example +@cindex socket server example + +The following example shows a simple Internet server which listens on +port 2904 for incoming connections and sends a greeting back to the +client. + +@example +(let ((s (socket AF_INET SOCK_STREAM 0))) + (setsockopt s SOL_SOCKET SO_REUSEADDR 1) + ;; Specific address? +; (bind s AF_INET (inet-aton "127.0.0.1") 2904) + (bind s AF_INET INADDR_ANY 2904) + (listen s 5) + + (simple-format #t "Listening for clients in pid: ~S" (getpid)) + (newline) + + (while #t + (let* ((client-connection (accept s)) + (client-details (cdr client-connection)) + (client (car client-connection))) + (simple-format #t "Got new client connection: ~S" client-details) + (newline) + (simple-format #t "Client address: ~S" + (gethostbyaddr + (sockaddr:addr client-details)))(newline) + ;; Send back the greeting to the client port + (display "Hello client\r\n" client) + (close client)))) +@end example + + @node System Identification @section System Identification _______________________________________________ Bug-guile mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-guile