~ chicken-core (chicken-5) 03f709f892d1cb515dfc237e7de7cf685efb61f0


commit 03f709f892d1cb515dfc237e7de7cf685efb61f0
Author:     Evan Hanson <evhan@foldling.org>
AuthorDate: Tue Feb 10 14:12:35 2015 +1300
Commit:     Evan Hanson <evhan@foldling.org>
CommitDate: Sun Jul 19 21:12:54 2015 +1200

    Convert the tcp unit into a module

diff --git a/README b/README
index 6806ecac..e669cb84 100644
--- a/README
+++ b/README
@@ -286,6 +286,7 @@
 	|   |       |-- chicken.import.so
 	|   |       |-- chicken.data-structures.import.so
 	|   |       |-- chicken.ports.import.so
+	|   |       |-- chicken.tcp.import.so
 	|   |       |-- chicken.utils.import.so
 	|   |       |-- csi.import.so
 	|   |       |-- extras.import.so
@@ -300,7 +301,6 @@
 	|   |       |-- setup-download.import.so
 	|   |       |-- setup-download.so
 	|   |       |-- srfi-4.import.so
-	|   |       |-- tcp.import.so
 	|   |       `-- types.db
 	|   |-- libchicken.a
 	|   |-- libchicken.dll.a                      (Windows)
diff --git a/chicken-bug.scm b/chicken-bug.scm
index f5cc6694..926932c0 100644
--- a/chicken-bug.scm
+++ b/chicken-bug.scm
@@ -26,8 +26,9 @@
 
 (require-library posix tcp data-structures utils extras)
 
-(import posix tcp extras
+(import posix extras
 	chicken.data-structures
+	chicken.tcp
 	chicken.utils)
 
 (define-constant +bug-report-file+ "chicken-bug-report.~a-~a-~a")
diff --git a/chicken-install.scm b/chicken-install.scm
index b9069599..2dede2fd 100644
--- a/chicken-install.scm
+++ b/chicken-install.scm
@@ -46,6 +46,7 @@
       "chicken.import.so"
       "chicken.data-structures.import.so"
       "chicken.ports.import.so"
+      "chicken.tcp.import.so"
       "chicken.utils.import.so"
       "lolevel.import.so"
       "srfi-1.import.so"
@@ -53,7 +54,6 @@
       "files.import.so"
       "posix.import.so"
       "extras.import.so"
-      "tcp.import.so"
       "foreign.import.so"
       "csi.import.so"
       "irregex.import.so"
diff --git a/defaults.make b/defaults.make
index ec0979d2..64eb346f 100644
--- a/defaults.make
+++ b/defaults.make
@@ -267,10 +267,10 @@ CHICKEN_PROGRAM_OPTIONS += $(if $(PROFILE_OBJECTS),-profile)
 
 # import libraries
 
-PRIMITIVE_IMPORT_LIBRARIES = chicken lolevel srfi-1 srfi-4 files
-PRIMITIVE_IMPORT_LIBRARIES += posix extras tcp foreign csi irregex
+PRIMITIVE_IMPORT_LIBRARIES = chicken lolevel srfi-4 files
+PRIMITIVE_IMPORT_LIBRARIES += posix extras foreign csi irregex
 PRIMITIVE_IMPORT_LIBRARIES += setup-api setup-download
-DYNAMIC_IMPORT_LIBRARIES = data-structures ports utils
+DYNAMIC_IMPORT_LIBRARIES = data-structures ports tcp utils
 
 # targets
 
diff --git a/distribution/manifest b/distribution/manifest
index 5a834b33..759bc600 100644
--- a/distribution/manifest
+++ b/distribution/manifest
@@ -244,6 +244,8 @@ chicken.data-structures.import.scm
 chicken.data-structures.import.c
 chicken.ports.import.scm
 chicken.ports.import.c
+chicken.tcp.import.scm
+chicken.tcp.import.c
 chicken.utils.import.scm
 chicken.utils.import.c
 foreign.import.scm
@@ -253,13 +255,11 @@ srfi-4.import.scm
 posix.import.scm
 extras.import.scm
 irregex.import.scm
-tcp.import.scm
 lolevel.import.c
 srfi-4.import.c
 posix.import.c
 extras.import.c
 irregex.import.c
-tcp.import.c
 csi.import.scm
 csi.import.c
 setup-download.scm
diff --git a/modules.scm b/modules.scm
index e47c2ad6..c7965d5d 100644
--- a/modules.scm
+++ b/modules.scm
@@ -915,6 +915,7 @@
 (##sys#register-module-alias 'r5rs 'scheme)
 (##sys#register-module-alias 'data-structures 'chicken.data-structures)
 (##sys#register-module-alias 'ports 'chicken.ports)
+(##sys#register-module-alias 'tcp 'chicken.tcp)
 (##sys#register-module-alias 'utils 'chicken.utils)
 
 (register-feature! 'module-environments)
diff --git a/rules.make b/rules.make
index a4b0047f..e5ef7c13 100644
--- a/rules.make
+++ b/rules.make
@@ -563,6 +563,7 @@ csi.c: csi.scm \
 		chicken.ports.import.scm
 chicken-bug.c: chicken-bug.scm \
 		chicken.data-structures.import.scm \
+		chicken.tcp.import.scm \
 		chicken.utils.import.scm
 chicken-profile.c: chicken-profile.scm \
 		chicken.data-structures.import.scm
@@ -588,6 +589,7 @@ setup-api.c: setup-api.scm \
 setup-download.c: setup-download.scm \
 		chicken.data-structures.import.scm \
 		chicken.ports.import.scm \
+		chicken.tcp.import.scm \
 		chicken.utils.import.scm \
 		setup-api.import.scm
 posixunix.c: posixunix.scm \
@@ -638,7 +640,7 @@ files.c: $(SRCDIR)files.scm $(SRCDIR)common-declarations.scm
 lolevel.c: $(SRCDIR)lolevel.scm $(SRCDIR)common-declarations.scm
 	$(bootstrap-lib) 
 tcp.c: $(SRCDIR)tcp.scm $(SRCDIR)common-declarations.scm
-	$(bootstrap-lib) 
+	$(bootstrap-lib) -emit-import-library chicken.tcp
 srfi-4.c: $(SRCDIR)srfi-4.scm $(SRCDIR)common-declarations.scm
 	$(bootstrap-lib) 
 utils.c: $(SRCDIR)utils.scm $(SRCDIR)common-declarations.scm
diff --git a/setup-download.scm b/setup-download.scm
index 9f3ec607..c3455490 100644
--- a/setup-download.scm
+++ b/setup-download.scm
@@ -37,9 +37,10 @@
 			temporary-directory)
 
   (import scheme chicken foreign)
-  (import extras irregex posix tcp files
+  (import extras irregex posix files
 	  setup-api
 	  chicken.data-structures
+	  chicken.tcp
 	  chicken.utils)
 
   (include "mini-srfi-1.scm")
diff --git a/tcp.import.scm b/tcp.import.scm
deleted file mode 100644
index c648ad17..00000000
--- a/tcp.import.scm
+++ /dev/null
@@ -1,44 +0,0 @@
-;;;; tcp.import.scm - import library for "tcp" module
-;
-; Copyright (c) 2008-2015, The CHICKEN Team
-; All rights reserved.
-;
-; Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following
-; conditions are met:
-;
-;   Redistributions of source code must retain the above copyright notice, this list of conditions and the following
-;     disclaimer. 
-;   Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
-;     disclaimer in the documentation and/or other materials provided with the distribution. 
-;   Neither the name of the author nor the names of its contributors may be used to endorse or promote
-;     products derived from this software without specific prior written permission. 
-;
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
-; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
-; AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR
-; CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-; OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-
-
-(##sys#register-primitive-module
- 'tcp
- '(tcp-abandon-port
-   tcp-accept
-   tcp-accept-ready?
-   tcp-accept-timeout
-   tcp-addresses
-   tcp-buffer-size
-   tcp-close
-   tcp-connect
-   tcp-connect-timeout
-   tcp-listen
-   tcp-listener-fileno
-   tcp-listener-port
-   tcp-listener?
-   tcp-port-numbers
-   tcp-read-timeout
-   tcp-write-timeout))
diff --git a/tcp.scm b/tcp.scm
index e12a7521..8c2b9c5a 100644
--- a/tcp.scm
+++ b/tcp.scm
@@ -29,9 +29,6 @@
   (unit tcp)
   (uses ports scheduler)
   (disable-interrupts) ; Avoid race conditions around errno/WSAGetLastError
-  (export tcp-close tcp-listen tcp-connect tcp-accept tcp-accept-ready? ##sys#tcp-port->fileno tcp-listener? tcp-addresses
-	  tcp-abandon-port tcp-listener-port tcp-listener-fileno tcp-port-numbers tcp-buffer-size
-	  tcp-read-timeout tcp-write-timeout tcp-accept-timeout tcp-connect-timeout)
   (foreign-declare #<<EOF
 #ifdef _WIN32
 # include <winsock2.h>
@@ -140,10 +137,17 @@ static int C_set_socket_options(int socket)
 EOF
 ) )
 
-(include "common-declarations.scm")
+(module chicken.tcp
+  (tcp-close tcp-listen tcp-connect tcp-accept tcp-accept-ready?
+   tcp-listener? tcp-addresses tcp-abandon-port tcp-listener-port
+   tcp-listener-fileno tcp-port-numbers tcp-buffer-size tcp-read-timeout
+   tcp-write-timeout tcp-accept-timeout tcp-connect-timeout)
 
+(import scheme chicken foreign)
 (import chicken.ports)
 
+(include "common-declarations.scm")
+
 (register-feature! 'tcp)
 
 (define-foreign-type sockaddr* (pointer "struct sockaddr"))
@@ -660,3 +664,5 @@ EOF
 (define (tcp-listener-fileno l)
   (##sys#check-structure l 'tcp-listener 'tcp-listener-fileno)
   (##sys#slot l 1) )
+
+)
diff --git a/tests/runtests.sh b/tests/runtests.sh
index a3a1261c..297bfc35 100755
--- a/tests/runtests.sh
+++ b/tests/runtests.sh
@@ -41,7 +41,7 @@ for x in setup-api.so setup-api.import.so setup-download.so \
       chicken.ports.import.so chicken.utils.import.so files.import.so \
       posix.import.so \
       extras.import.so \
-      irregex.import.so tcp.import.so \
+      irregex.import.so chicken.tcp.import.so \
       foreign.import.so \
       csi.import.so irregex.import.so types.db; do
   cp ../$x test-repository
diff --git a/types.db b/types.db
index 63c64fd7..67de25e0 100644
--- a/types.db
+++ b/types.db
@@ -2215,27 +2215,27 @@
 
 ;; tcp
 
-(tcp-abandon-port (#(procedure #:clean #:enforce) tcp-abandon-port (port) undefined))
-(tcp-accept (#(procedure #:clean #:enforce) tcp-accept ((struct tcp-listener)) input-port output-port))
-(tcp-accept-ready? (#(procedure #:clean #:enforce) tcp-accept-ready? ((struct tcp-listener)) boolean))
-(tcp-accept-timeout (#(procedure #:clean #:enforce) tcp-accept-timeout (#!optional (or false integer)) (or false integer)))
-(tcp-addresses (#(procedure #:clean #:enforce) tcp-addresses (port) string string))
-(tcp-buffer-size (#(procedure #:clean #:enforce) tcp-buffer-size (#!optional fixnum) fixnum))
-(tcp-close (#(procedure #:clean #:enforce) tcp-close ((struct tcp-listener)) undefined))
-(tcp-connect (#(procedure #:clean #:enforce) tcp-connect (string #!optional fixnum) input-port output-port))
-(tcp-connect-timeout (#(procedure #:clean #:enforce) tcp-connect-timeout (#!optional (or false integer)) (or false integer)))
-(tcp-listen (#(procedure #:clean #:enforce) tcp-listen (fixnum #!optional fixnum *) (struct tcp-listener)))
-
-(tcp-listener-fileno (#(procedure #:clean #:enforce) tcp-listener-fileno ((struct tcp-listener)) fixnum)
+(chicken.tcp#tcp-abandon-port (#(procedure #:clean #:enforce) chicken.tcp#tcp-abandon-port (port) undefined))
+(chicken.tcp#tcp-accept (#(procedure #:clean #:enforce) chicken.tcp#tcp-accept ((struct tcp-listener)) input-port output-port))
+(chicken.tcp#tcp-accept-ready? (#(procedure #:clean #:enforce) chicken.tcp#tcp-accept-ready? ((struct tcp-listener)) boolean))
+(chicken.tcp#tcp-accept-timeout (#(procedure #:clean #:enforce) chicken.tcp#tcp-accept-timeout (#!optional (or false integer)) (or false integer)))
+(chicken.tcp#tcp-addresses (#(procedure #:clean #:enforce) chicken.tcp#tcp-addresses (port) string string))
+(chicken.tcp#tcp-buffer-size (#(procedure #:clean #:enforce) chicken.tcp#tcp-buffer-size (#!optional fixnum) fixnum))
+(chicken.tcp#tcp-close (#(procedure #:clean #:enforce) chicken.tcp#tcp-close ((struct tcp-listener)) undefined))
+(chicken.tcp#tcp-connect (#(procedure #:clean #:enforce) chicken.tcp#tcp-connect (string #!optional fixnum) input-port output-port))
+(chicken.tcp#tcp-connect-timeout (#(procedure #:clean #:enforce) chicken.tcp#tcp-connect-timeout (#!optional (or false integer)) (or false integer)))
+(chicken.tcp#tcp-listen (#(procedure #:clean #:enforce) chicken.tcp#tcp-listen (fixnum #!optional fixnum *) (struct tcp-listener)))
+
+(chicken.tcp#tcp-listener-fileno (#(procedure #:clean #:enforce) chicken.tcp#tcp-listener-fileno ((struct tcp-listener)) fixnum)
 		     (((struct tcp-listener)) (##sys#slot #(1) '1)))
 
-(tcp-listener-port (#(procedure #:clean #:enforce) tcp-listener-port ((struct tcp-listener)) fixnum))
+(chicken.tcp#tcp-listener-port (#(procedure #:clean #:enforce) chicken.tcp#tcp-listener-port ((struct tcp-listener)) fixnum))
 
-(tcp-listener? (#(procedure #:clean #:predicate (struct tcp-listener)) tcp-listener? (*) boolean))
+(chicken.tcp#tcp-listener? (#(procedure #:clean #:predicate (struct tcp-listener)) chicken.tcp#tcp-listener? (*) boolean))
 
-(tcp-port-numbers (#(procedure #:clean #:enforce) tcp-port-numbers (port) fixnum fixnum))
-(tcp-read-timeout (#(procedure #:clean #:enforce) tcp-read-timeout (#!optional (or false integer)) (or false integer)))
-(tcp-write-timeout (#(procedure #:clean #:enforce) tcp-write-timeout (#!optional (or false integer)) (or false integer)))
+(chicken.tcp#tcp-port-numbers (#(procedure #:clean #:enforce) chicken.tcp#tcp-port-numbers (port) fixnum fixnum))
+(chicken.tcp#tcp-read-timeout (#(procedure #:clean #:enforce) chicken.tcp#tcp-read-timeout (#!optional (or false integer)) (or false integer)))
+(chicken.tcp#tcp-write-timeout (#(procedure #:clean #:enforce) chicken.tcp#tcp-write-timeout (#!optional (or false integer)) (or false integer)))
 
 
 ;; utils
Trap