* hashtab.h: Bugfix: use SCM_API (WAS: extern).
authorMarius Vollmer <mvo@zagadka.de>
Sun, 5 Jun 2005 18:27:53 +0000 (18:27 +0000)
committerMarius Vollmer <mvo@zagadka.de>
Sun, 5 Jun 2005 18:27:53 +0000 (18:27 +0000)
* socket.c: Remove obsolete comment about socklen_t.
(s_scm_setsockopt)[!HAVE_IP_MREQ]: Do not use ip_mreq code.

* numbers.h (isnan)[__MINGW32__]: Remove.

* Makefile.am (gen_scmconfig_SOURCES): Bugfix: Add
DEFAULT_INCLUDES when cross compiling.

* threads.c (ETIMEDOUT, pipe)[__MINGW32__]: Add defines.

* stime.c (s_scm_strftime)[!HAVE_TM_ZONE]: Use
SCM_SIMPLE_VECTOR_REF instead of SCM_VELTS.  (Changed slightly
from Jan's patch.)

libguile/Makefile.am
libguile/hashtab.h
libguile/numbers.h
libguile/socket.c
libguile/stime.c
libguile/threads.c

index 52e41d0..083129b 100644 (file)
@@ -42,7 +42,7 @@ gen_scmconfig_SOURCES = gen-scmconfig.c
 ## For some reason, OBJEXT does not include the dot
 gen-scmconfig.$(OBJEXT): gen-scmconfig.c
        if [ "$(cross_compiling)" = "yes" ]; then \
-               $(CC_FOR_BUILD) $(DEFS) $(INCLUDES) -c -o $@ $<; \
+               $(CC_FOR_BUILD) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) -c -o $@ $<; \
        else \
                $(COMPILE) -c -o $@ $<; \
        fi
index bbf52a2..eeb4799 100644 (file)
@@ -31,7 +31,7 @@
 #define SCM_HASHTABLEF_WEAK_CAR SCM_WVECTF_WEAK_KEY
 #define SCM_HASHTABLEF_WEAK_CDR SCM_WVECTF_WEAK_VALUE
 
-extern scm_t_bits scm_tc16_hashtable;
+SCM_API scm_t_bits scm_tc16_hashtable;
 
 #define SCM_HASHTABLE_P(x)        SCM_SMOB_PREDICATE (scm_tc16_hashtable, x)
 #define SCM_VALIDATE_HASHTABLE(pos, arg) \
index 8b6e638..72caa47 100644 (file)
@@ -92,7 +92,6 @@
 #  include <float.h>
 #  ifdef __MINGW32__
 #   define copysign _copysign
-#   define isnan _isnan
 #   define finite _finite
 #  endif /* __MINGW32__ */
 # endif /* ndef GO32 */
index 0d2ccbd..c268d5e 100644 (file)
                      + strlen ((ptr)->sun_path))
 #endif
 
-/* we are not currently using socklen_t.  it's not defined on all systems,
-   so would need to be checked by configure.  in the meantime, plain
-   int is the best alternative.  */
-
 \f
 
 SCM_DEFINE (scm_htons, "htons", 1, 0, 0, 
@@ -550,7 +546,10 @@ SCM_DEFINE (scm_setsockopt, "setsockopt", 4, 0, 0,
 #ifdef HAVE_STRUCT_LINGER
   struct linger opt_linger;
 #endif
+
+#if HAVE_STRUCT_IP_MREQ
   struct ip_mreq opt_mreq;
+#endif
 
   const void *optval = NULL;
   socklen_t optlen = 0;
@@ -602,6 +601,7 @@ SCM_DEFINE (scm_setsockopt, "setsockopt", 4, 0, 0,
          }
     }
 
+#if HAVE_STRUCT_IP_MREQ
   if (ilevel == IPPROTO_IP &&
       (ioptname == IP_ADD_MEMBERSHIP || ioptname == IP_DROP_MEMBERSHIP))
     {
@@ -612,6 +612,7 @@ SCM_DEFINE (scm_setsockopt, "setsockopt", 4, 0, 0,
       optlen = sizeof (opt_mreq);
       optval = &opt_mreq;
     }
+#endif
 
   if (optval == NULL)
     {
index 626dc86..8dd1f88 100644 (file)
@@ -653,19 +653,18 @@ SCM_DEFINE (scm_strftime, "strftime", 2, 0, 0,
        environment.  interrupts and thread switching must be deferred
        until TZ is restored.  */
     char **oldenv = NULL;
-    SCM *velts = (SCM *) SCM_VELTS (stime);
+    SCM zone_spec = SCM_SIMPLE_VECTOR_REF (stime, 10);
     int have_zone = 0;
 
-    if (scm_is_true (velts[10]) && *SCM_STRING_CHARS (velts[10]) != 0)
+    if (scm_is_true (zone_spec) && scm_c_string_length (zone_spec) > 0)
       {
        /* it's not required that the TZ setting be correct, just that
           it has the right name.  so try something like TZ=EST0.
           using only TZ=EST would be simpler but it doesn't work on
           some OSs, e.g., Solaris.  */
        SCM zone =
-         scm_string_append (scm_cons (velts[10],
-                                      scm_cons (scm_from_locale_string ("0"),
-                                                SCM_EOL)));
+         scm_string_append (scm_list_2 (zone_spec,
+                                        scm_from_locale_string ("0")));
 
        have_zone = 1;
        SCM_CRITICAL_SECTION_START;
@@ -690,7 +689,7 @@ SCM_DEFINE (scm_strftime, "strftime", 2, 0, 0,
 #if !defined (HAVE_TM_ZONE)
     if (have_zone)
       {
-       restorezone (velts[10], oldenv, FUNC_NAME);
+       restorezone (zone_spec, oldenv, FUNC_NAME);
        SCM_CRITICAL_SECTION_END;
       }
 #endif
index b0a15e2..329049c 100644 (file)
 #include "libguile/continuations.h"
 #include "libguile/init.h"
 
+#ifdef __MINGW32__
+#ifndef ETIMEDOUT
+# define ETIMEDOUT       WSAETIMEDOUT
+#endif
+# include <fcntl.h>
+# include <process.h>
+# define pipe(fd) _pipe (fd, 256, O_BINARY)
+#endif /* __MINGW32__ */
+
 /*** Queues */
 
 /* Make an empty queue data structure.