~ chicken-core (chicken-5) a82ee1718552e895e5d118afe5e8cc4712449cab


commit a82ee1718552e895e5d118afe5e8cc4712449cab
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Fri Jul 16 01:20:13 2010 +0200
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Fri Jul 16 01:20:13 2010 +0200

    use C_return internally

diff --git a/lolevel.scm b/lolevel.scm
index 6db68e2e..ae414886 100644
--- a/lolevel.scm
+++ b/lolevel.scm
@@ -229,7 +229,7 @@ EOF
 
 (define (object->pointer x)
   (and (##core#inline "C_blockp" x)
-       ((foreign-lambda* nonnull-c-pointer ((scheme-object x)) "return((void *)x);") x) ) )
+       ((foreign-lambda* nonnull-c-pointer ((scheme-object x)) "C_return((void *)x);") x) ) )
 
 (define (pointer->object ptr)
   (##sys#check-pointer ptr 'pointer->object)
@@ -242,7 +242,7 @@ EOF
 
 (define pointer+
   (foreign-lambda* nonnull-c-pointer ([c-pointer ptr] [integer off])
-    "return((unsigned char *)ptr + off);") )
+    "C_return((unsigned char *)ptr + off);") )
 
 (define pointer-offset pointer+)	; DEPRECATED
 
diff --git a/manual/faq b/manual/faq
index d4a54820..5793c6a0 100644
--- a/manual/faq
+++ b/manual/faq
@@ -406,7 +406,8 @@ and compiler settings:
 {{+}} {{*}} {{-}} {{/}} {{quotient}} {{eq?}} {{eqv?}} {{equal?}} {{apply}} {{c...r}} {{values}} {{call-with-values}}
 {{list-ref}} {{null?}} {{length}} {{not}} {{char?}} {{string?}} {{symbol?}} {{vector?}} {{pair?}} {{procedure?}}
 {{boolean?}} {{number?}} {{complex?}} {{rational?}} {{real?}} {{exact?}} {{inexact?}} {{list?}} {{eof-object?}}
-{{string-ref}} {{string-set!}} {{vector-ref}} {{vector-set!}} {{char=?}} {{char<?}} {{char>?}} {{char<=?}} {{char>=?}}
+{{string-ref}} {{string-set!}} {{vector-ref}} {{vector-set!}} 
+{{char=?}} {{char<?}} {{char>?}} {{char<=?}} {{char>=?}}
 {{char-numeric?}} {{char-alphabetic?}} {{char-whitespace?}} {{char-upper-case?}} {{for-each}}
 {{char-lower-case?}} {{char-upcae}} {{char-downcase}} {{list-tail}} {{assv}} {{memv}} {{memq}} {{assoc}}
 {{member}} {{set-car!}} {{set-cdr!}} {{abs}} {{exp}} {{sin}} {{cos}} {{tan}} {{log}} {{asin}} {{acos}} {{atan}} {{sqrt}}
diff --git a/posixunix.scm b/posixunix.scm
index 49213e6c..6b5ffc97 100644
--- a/posixunix.scm
+++ b/posixunix.scm
@@ -480,8 +480,8 @@ EOF
 (define ##sys#file-nonblocking!
   (foreign-lambda* bool ([int fd])
     "int val = fcntl(fd, F_GETFL, 0);"
-    "if(val == -1) return(0);"
-    "return(fcntl(fd, F_SETFL, val | O_NONBLOCK) != -1);" ) )
+    "if(val == -1) C_return(0);"
+    "C_return(fcntl(fd, F_SETFL, val | O_NONBLOCK) != -1);" ) )
 
 (define ##sys#file-select-one
   (foreign-lambda* int ([int fd])
@@ -490,8 +490,8 @@ EOF
     "FD_ZERO(&in);"
     "FD_SET(fd, &in);"
     "tm.tv_sec = tm.tv_usec = 0;"
-    "if(select(fd + 1, &in, NULL, NULL, &tm) == -1) return(-1);"
-    "else return(FD_ISSET(fd, &in) ? 1 : 0);" ) )
+    "if(select(fd + 1, &in, NULL, NULL, &tm) == -1) C_return(-1);"
+    "else C_return(FD_ISSET(fd, &in) ? 1 : 0);" ) )
 
 
 ;;; Lo-level I/O:
@@ -1082,7 +1082,7 @@ EOF
 
 (define group-member
   (foreign-lambda* c-string ([int i])
-    "return(C_group->gr_mem[ i ]);") )
+    "C_return(C_group->gr_mem[ i ]);") )
 
 (define (group-information group #!optional as-vector)
   (let ([r (if (fixnum? group)
@@ -1103,14 +1103,14 @@ EOF
 
 (define _get-groups
   (foreign-lambda* int ([int n])
-    "return(getgroups(n, C_groups));") )
+    "C_return(getgroups(n, C_groups));") )
 
 (define _ensure-groups
   (foreign-lambda* bool ([int n])
     "if(C_groups != NULL) C_free(C_groups);"
     "C_groups = (gid_t *)C_malloc(sizeof(gid_t) * n);"
-    "if(C_groups == NULL) return(0);"
-    "else return(1);") )
+    "if(C_groups == NULL) C_return(0);"
+    "else C_return(1);") )
 
 (define (get-groups)
   (let ([n (foreign-value "getgroups(0, C_groups)" int)])
@@ -1779,7 +1779,7 @@ EOF
    "\n#else\n"
    "char *z = (daylight ? tzname[1] : tzname[0]);"
    "\n#endif\n"
-   "return(z);") )
+   "C_return(z);") )
 
 ;;; Other things:
 
@@ -1847,8 +1847,8 @@ EOF
 (define get-host-name
   (let ([getit
        (foreign-lambda* c-string ()
-         "if(gethostname(C_hostbuf, 256) == -1) return(NULL);"
-         "else return(C_hostbuf);") ] )
+         "if(gethostname(C_hostbuf, 256) == -1) C_return(NULL);"
+         "else C_return(C_hostbuf);") ] )
     (lambda ()
       (let ([host (getit)])
         (unless host
diff --git a/posixwin.scm b/posixwin.scm
index 9f313952..9dee8ede 100644
--- a/posixwin.scm
+++ b/posixwin.scm
@@ -1534,7 +1534,7 @@ EOF
 (define local-timezone-abbreviation
   (foreign-lambda* c-string ()
    "char *z = (_daylight ? _tzname[1] : _tzname[0]);\n"
-   "return(z);") )
+   "C_return(z);") )
 
 ;;; Other things:
 
diff --git a/scheduler.scm b/scheduler.scm
index 4e868075..e4512a46 100644
--- a/scheduler.scm
+++ b/scheduler.scm
@@ -306,7 +306,7 @@ EOF
     "timeout.tv_usec = (tm % 1000) * 1000;"
     "C_fdset_input_2 = C_fdset_input;"
     "C_fdset_output_2 = C_fdset_output;"
-    "return(select(FD_SETSIZE, &C_fdset_input, &C_fdset_output, NULL, to ? &timeout : NULL));") )
+    "C_return(select(FD_SETSIZE, &C_fdset_input, &C_fdset_output, NULL, to ? &timeout : NULL));") )
 
 (define ##sys#fdset-restore
   (foreign-lambda* void ()
diff --git a/srfi-4.scm b/srfi-4.scm
index 818225ce..83120073 100644
--- a/srfi-4.scm
+++ b/srfi-4.scm
@@ -257,9 +257,9 @@ EOF
 (let* ([ext-alloc
 	(foreign-lambda* scheme-object ([int bytes])
 	  "C_word *buf = (C_word *)C_malloc(bytes + sizeof(C_header));"
-	  "if(buf == NULL) return(C_SCHEME_FALSE);"
+	  "if(buf == NULL) C_return(C_SCHEME_FALSE);"
 	  "C_block_header(buf) = C_make_header(C_BYTEVECTOR_TYPE, bytes);"
-	  "return(buf);") ]
+	  "C_return(buf);") ]
        [ext-free
 	(foreign-lambda* void ([scheme-object bv])
 	  "C_free((void *)C_block_item(bv, 1));") ]
diff --git a/tcp.scm b/tcp.scm
index 4a7f56fc..324f6237 100644
--- a/tcp.scm
+++ b/tcp.scm
@@ -108,56 +108,57 @@ EOF
 (define ##net#connect (foreign-lambda int "connect" int scheme-pointer int))
 
 (define ##net#send
-  (foreign-lambda* int ((int s) (scheme-pointer msg) (int offset) (int len) (int flags))
-		   "return(send(s, (char *)msg+offset, len, flags));"))
+  (foreign-lambda* 
+      int ((int s) (scheme-pointer msg) (int offset) (int len) (int flags))
+    "C_return(send(s, (char *)msg+offset, len, flags));"))
 
 (define ##net#make-nonblocking
   (foreign-lambda* bool ((int fd))
     "int val = fcntl(fd, F_GETFL, 0);"
-    "if(val == -1) return(0);"
-    "return(fcntl(fd, F_SETFL, val | O_NONBLOCK) != -1);") )
+    "if(val == -1) C_return(0);"
+    "C_return(fcntl(fd, F_SETFL, val | O_NONBLOCK) != -1);") )
 
 (define ##net#getsockname 
   (foreign-lambda* c-string ((int s))
     "struct sockaddr_in sa;"
     "unsigned char *ptr;"
     "int len = sizeof(struct sockaddr_in);"
-    "if(getsockname(s, (struct sockaddr *)&sa, (socklen_t *)&len) != 0) return(NULL);"
+    "if(getsockname(s, (struct sockaddr *)&sa, (socklen_t *)&len) != 0) C_return(NULL);"
     "ptr = (unsigned char *)&sa.sin_addr;"
     "sprintf(addr_buffer, \"%d.%d.%d.%d\", ptr[ 0 ], ptr[ 1 ], ptr[ 2 ], ptr[ 3 ]);"
-    "return(addr_buffer);") )
+    "C_return(addr_buffer);") )
 
 (define ##net#getsockport
   (foreign-lambda* int ((int s))
     "struct sockaddr_in sa;"
     "int len = sizeof(struct sockaddr_in);"
-    "if(getsockname(s, (struct sockaddr *)&sa, (socklen_t *)(&len)) != 0) return(-1);"
-    "else return(ntohs(sa.sin_port));") )
+    "if(getsockname(s, (struct sockaddr *)&sa, (socklen_t *)(&len)) != 0) C_return(-1);"
+    "else C_return(ntohs(sa.sin_port));") )
 
 (define ##net#getpeerport
  (foreign-lambda* int ((int s))
    "struct sockaddr_in sa;"
    "int len = sizeof(struct sockaddr_in);"
-   "if(getpeername(s, (struct sockaddr *)&sa, (socklen_t *)(&len)) != 0) return(-1);"
-   "else return(ntohs(sa.sin_port));") )
+   "if(getpeername(s, (struct sockaddr *)&sa, (socklen_t *)(&len)) != 0) C_return(-1);"
+   "else C_return(ntohs(sa.sin_port));") )
 
 (define ##net#getpeername 
   (foreign-lambda* c-string ((int s))
     "struct sockaddr_in sa;"
     "unsigned char *ptr;"
     "unsigned int len = sizeof(struct sockaddr_in);"
-    "if(getpeername(s, (struct sockaddr *)&sa, ((unsigned int *)&len)) != 0) return(NULL);"
+    "if(getpeername(s, (struct sockaddr *)&sa, ((unsigned int *)&len)) != 0) C_return(NULL);"
     "ptr = (unsigned char *)&sa.sin_addr;"
     "sprintf(addr_buffer, \"%d.%d.%d.%d\", ptr[ 0 ], ptr[ 1 ], ptr[ 2 ], ptr[ 3 ]);"
-    "return(addr_buffer);") )
+    "C_return(addr_buffer);") )
 
 (define ##net#startup
   (foreign-lambda* bool () #<<EOF
 #ifdef _WIN32
-     return(WSAStartup(MAKEWORD(1, 1), &wsa) == 0);
+     C_return(WSAStartup(MAKEWORD(1, 1), &wsa) == 0);
 #else
      signal(SIGPIPE, SIG_IGN);
-     return(1);
+     C_return(1);
 #endif
 EOF
 ) )
@@ -168,8 +169,8 @@ EOF
 (define ##net#getservbyname 
   (foreign-lambda* int ((c-string serv) (c-string proto))
     "struct servent *se;
-     if((se = getservbyname(serv, proto)) == NULL) return(0);
-     else return(ntohs(se->s_port));") )     
+     if((se = getservbyname(serv, proto)) == NULL) C_return(0);
+     else C_return(ntohs(se->s_port));") )     
 
 (define ##net#select
   (foreign-lambda* int ((int fd))
@@ -181,7 +182,7 @@ EOF
      tm.tv_sec = tm.tv_usec = 0;
      rv = select(fd + 1, &in, NULL, NULL, &tm);
      if(rv > 0) { rv = FD_ISSET(fd, &in) ? 1 : 0; }
-     return(rv);") )
+     C_return(rv);") )
 
 (define ##net#select-write
   (foreign-lambda* int ((int fd))
@@ -193,18 +194,18 @@ EOF
      tm.tv_sec = tm.tv_usec = 0;
      rv = select(fd + 1, NULL, &out, NULL, &tm);
      if(rv > 0) { rv = FD_ISSET(fd, &out) ? 1 : 0; }
-     return(rv);") )
+     C_return(rv);") )
 
 (define ##net#gethostaddr
   (foreign-lambda* bool ((scheme-pointer saddr) (c-string host) (unsigned-short port))
     "struct hostent *he = gethostbyname(host);"
     "struct sockaddr_in *addr = (struct sockaddr_in *)saddr;"
-    "if(he == NULL) return(0);"
+    "if(he == NULL) C_return(0);"
     "memset(addr, 0, sizeof(struct sockaddr_in));"
     "addr->sin_family = AF_INET;"
     "addr->sin_port = htons((short)port);"
     "addr->sin_addr = *((struct in_addr *)he->h_addr);"
-    "return(1);") )
+    "C_return(1);") )
 
 (define (yield)
   (##sys#call-with-current-continuation
@@ -254,7 +255,7 @@ EOF
     ;; PLT makes this an optional arg to tcp-listen. Should we as well?
     (when (eq? -1 ((foreign-lambda* int ((int socket)) 
 		     "int yes = 1; 
-                      return(setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, (const char *)&yes, sizeof(int)));") 
+                      C_return(setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, (const char *)&yes, sizeof(int)));") 
 		   s) )
       (##sys#update-errno)
       (##sys#signal-hook 
@@ -551,8 +552,8 @@ EOF
     "int err, optlen;"
     "optlen = sizeof(err);"
     "if (typecorrect_getsockopt(socket, SOL_SOCKET, SO_ERROR, &err, (socklen_t *)&optlen) == -1)"
-    "return(-1);"
-    "return(err);"))
+    "C_return(-1);"
+    "C_return(err);"))
 
 (define general-strerror (foreign-lambda c-string "strerror" int))
 
Trap