[MLton-commit] r4303

Matthew Fluet MLton@mlton.org
Mon, 23 Jan 2006 16:27:24 -0800


More unified c-side/ml-side basis functions
----------------------------------------------------------------------

U   mlton/branches/on-20050822-x86_64-branch/basis-library/misc/primitive.sml
D   mlton/branches/on-20050822-x86_64-branch/runtime/basis/Itimer/
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Itimer/
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Itimer/itimer-consts.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Itimer/set.c
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Process/
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Process/spawne.c
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Process/spawnp.c
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Rlimit/
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Rlimit/rlimit-consts.c
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Rlimit/rlimit.c
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Rusage/
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Rusage/rusage.c
D   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/rlimit.c
D   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/rusage.c
D   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/spawne.c
D   mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/spawnp.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Net.c
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetHostDB-consts.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetHostDB.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetProtDB.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetServDB.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/GenericSock.c
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/INetSock-consts.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/INetSock.c
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/Socket-consts.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/Socket.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/UnixSock.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/Date.c
A   mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/OS/IO/poll-consts.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/OS/IO/poll.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/Time.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/gc.h
U   mlton/branches/on-20050822-x86_64-branch/runtime/gen/basis-ffi.def
U   mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-basis-ffi.sml
U   mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-types.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/platform.c
U   mlton/branches/on-20050822-x86_64-branch/runtime/platform.h

----------------------------------------------------------------------

Modified: mlton/branches/on-20050822-x86_64-branch/basis-library/misc/primitive.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/basis-library/misc/primitive.sml	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/basis-library/misc/primitive.sml	2006-01-24 00:27:14 UTC (rev 4303)
@@ -22,6 +22,7 @@
 structure Bool =
    struct
       datatype bool = datatype bool
+      type t = bool
    end
 
 structure Char =

Copied: mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Itimer (from rev 4301, mlton/branches/on-20050822-x86_64-branch/runtime/basis/Itimer)

Added: mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Itimer/itimer-consts.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Itimer/itimer-consts.c	2006-01-09 22:47:28 UTC (rev 4301)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Itimer/itimer-consts.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -0,0 +1,5 @@
+#include "platform.h"
+
+const C_Int_t MLton_Itimer_PROF = ITIMER_PROF;
+const C_Int_t MLton_Itimer_REAL = ITIMER_REAL;
+const C_Int_t MLton_Itimer_VIRTUAL = ITIMER_VIRTUAL;

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Itimer/set.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Itimer/set.c	2006-01-09 22:47:28 UTC (rev 4301)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Itimer/set.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -1,15 +1,16 @@
 #include "platform.h"
 
-void Itimer_set (Int which,
-                        Int interval_tv_sec, Int interval_tv_usec,
-                        Int value_tv_sec, Int value_tv_usec) {
-        struct itimerval        v;
-        int i;
-
-        v.it_interval.tv_sec = interval_tv_sec;
-        v.it_interval.tv_usec = interval_tv_usec;
-        v.it_value.tv_sec = value_tv_sec;
-        v.it_value.tv_usec = value_tv_usec;
-        i = setitimer (which, &v, (struct itimerval *)NULL);
-        assert(i == 0);
+C_Errno_t(C_Int_t) 
+MLton_Itimer_set (C_Int_t which,
+            C_Time_t interval_tv_sec, 
+            C_SUSeconds_t interval_tv_usec,
+            C_Time_t value_tv_sec, 
+            C_SUSeconds_t value_tv_usec) {
+  struct itimerval v;
+  
+  v.it_interval.tv_sec = interval_tv_sec;
+  v.it_interval.tv_usec = interval_tv_usec;
+  v.it_value.tv_sec = value_tv_sec;
+  v.it_value.tv_usec = value_tv_usec;
+  return setitimer (which, &v, (struct itimerval *)NULL);
 }

Copied: mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Process/spawne.c (from rev 4301, mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/spawne.c)

Copied: mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Process/spawnp.c (from rev 4301, mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/spawnp.c)

Added: mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Rlimit/rlimit-consts.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Rlimit/rlimit-consts.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Rlimit/rlimit-consts.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -0,0 +1,10 @@
+#include "platform.h"
+
+const C_Int_t MLton_Rlimit_AS = RLIMIT_AS;
+const C_Int_t MLton_Rlimit_CORE = RLIMIT_CORE;
+const C_Int_t MLton_Rlimit_CPU = RLIMIT_CPU;
+const C_Int_t MLton_Rlimit_DATA = RLIMIT_DATA;
+const C_Int_t MLton_Rlimit_FSIZE = RLIMIT_FSIZE;
+const C_Int_t MLton_Rlimit_NOFILE = RLIMIT_NOFILE;
+const C_Int_t MLton_Rlimit_STACK = RLIMIT_STACK;
+const C_RLim_t MLton_Rlimit_INFINITY = RLIM_INFINITY;

Copied: mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Rlimit/rlimit.c (from rev 4301, mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/rlimit.c)
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/rlimit.c	2006-01-09 22:47:28 UTC (rev 4301)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Rlimit/rlimit.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -0,0 +1,21 @@
+#include "platform.h"
+
+static struct rlimit rlimit;
+
+C_Errno_t(C_Int_t) MLton_Rlimit_get (C_Int_t r) {
+  return getrlimit (r, &rlimit);
+}
+
+C_RLim_t MLton_Rlimit_getHard () {
+  return rlimit.rlim_max;
+}
+
+C_RLim_t MLton_Rlimit_getSoft () {
+  return rlimit.rlim_cur;
+}
+
+C_Errno_t(C_Int_t) MLton_Rlimit_set (C_Int_t r, C_RLim_t hard, C_RLim_t soft) {
+  rlimit.rlim_max = hard;
+  rlimit.rlim_cur = soft;
+  return setrlimit (r, &rlimit);
+}

Copied: mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Rusage/rusage.c (from rev 4301, mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/rusage.c)
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/rusage.c	2006-01-09 22:47:28 UTC (rev 4301)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/Rusage/rusage.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -0,0 +1,59 @@
+#include "platform.h"
+
+static struct rusage self;
+static struct rusage children;
+static struct rusage gc;
+
+C_Time_t MLton_Rusage_self_utime_sec (void) {
+  return self.ru_utime.tv_sec;
+}
+
+C_SUSeconds_t MLton_Rusage_self_utime_usec (void) {
+  return self.ru_utime.tv_usec;
+}
+
+C_Time_t MLton_Rusage_self_stime_sec (void) {
+  return self.ru_stime.tv_sec;
+}
+
+C_SUSeconds_t MLton_Rusage_self_stime_usec (void) {
+  return self.ru_stime.tv_usec;
+}
+
+C_Time_t MLton_Rusage_children_utime_sec (void) {
+  return children.ru_utime.tv_sec;
+}
+
+C_SUSeconds_t MLton_Rusage_children_utime_usec (void) {
+  return children.ru_utime.tv_usec;
+}
+
+C_Time_t MLton_Rusage_children_stime_sec (void) {
+  return children.ru_stime.tv_sec;
+}
+
+C_SUSeconds_t MLton_Rusage_children_stime_usec (void) {
+  return children.ru_stime.tv_usec;
+}
+
+C_Time_t MLton_Rusage_gc_utime_sec (void) {
+  return gc.ru_utime.tv_sec;
+}
+
+C_SUSeconds_t MLton_Rusage_gc_utime_usec (void) {
+  return gc.ru_utime.tv_usec;
+}
+
+C_Time_t MLton_Rusage_gc_stime_sec (void) {
+  return gc.ru_stime.tv_sec;
+}
+
+C_SUSeconds_t MLton_Rusage_gc_stime_usec (void) {
+  return gc.ru_stime.tv_usec;
+}
+
+void MLton_Rusage_getrusage (GC_state s) {
+  gc = *(GC_getRusageGCAddr (s));
+  getrusage (RUSAGE_SELF, &self);
+  getrusage (RUSAGE_CHILDREN, &children);
+}

Deleted: mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/rlimit.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/rlimit.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/rlimit.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -1,21 +0,0 @@
-#include "platform.h"
-
-static struct rlimit rlimit;
-
-Int MLton_Rlimit_get (Resource r) {
-        return getrlimit (r, &rlimit);
-}
-
-Rlimit MLton_Rlimit_getHard () {
-        return rlimit.rlim_max;
-}
-
-Rlimit MLton_Rlimit_getSoft () {
-        return rlimit.rlim_cur;
-}
-
-Int MLton_Rlimit_set (Resource r, Rlimit hard, Rlimit soft) {
-        rlimit.rlim_max = hard;
-        rlimit.rlim_cur = soft;
-        return setrlimit (r, &rlimit);
-}

Deleted: mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/rusage.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/rusage.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/rusage.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -1,59 +0,0 @@
-#include "platform.h"
-
-static struct rusage self;
-static struct rusage children;
-static struct rusage gc;
-
-Int MLton_Rusage_self_utime_sec (void) {
-        return self.ru_utime.tv_sec;
-}
-
-Int MLton_Rusage_self_utime_usec (void) {
-        return self.ru_utime.tv_usec;
-}
-
-Int MLton_Rusage_self_stime_sec (void) {
-        return self.ru_stime.tv_sec;
-}
-
-Int MLton_Rusage_self_stime_usec (void) {
-        return self.ru_stime.tv_usec;
-}
-
-Int MLton_Rusage_children_utime_sec (void) {
-        return children.ru_utime.tv_sec;
-}
-
-Int MLton_Rusage_children_utime_usec (void) {
-        return children.ru_utime.tv_usec;
-}
-
-Int MLton_Rusage_children_stime_sec (void) {
-        return children.ru_stime.tv_sec;
-}
-
-Int MLton_Rusage_children_stime_usec (void) {
-        return children.ru_stime.tv_usec;
-}
-
-Int MLton_Rusage_gc_utime_sec (void) {
-        return gc.ru_utime.tv_sec;
-}
-
-Int MLton_Rusage_gc_utime_usec (void) {
-        return gc.ru_utime.tv_usec;
-}
-
-Int MLton_Rusage_gc_stime_sec (void) {
-        return gc.ru_stime.tv_sec;
-}
-
-Int MLton_Rusage_gc_stime_usec (void) {
-        return gc.ru_stime.tv_usec;
-}
-
-void MLton_Rusage_ru (GC_state s) {
-        gc = *(GC_getRusageGCAddr (s));
-        getrusage (RUSAGE_SELF, &self);
-        getrusage (RUSAGE_CHILDREN, &children);
-}

Deleted: mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/spawne.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/spawne.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/spawne.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -1,36 +0,0 @@
-#include "platform.h"
-
-#if HAS_SPAWN
-Int MLton_Process_spawne (NullString p, Pointer a, Pointer e) {
-        char    *path;
-        char    *asaved;
-        char    *esaved;
-        char    **args;
-        char    **env;
-        int     an;
-        int     en;
-        int     result;
-
-        path = (char *) p;
-        args = (char **) a;
-        env = (char **) e;
-        an = GC_arrayNumElements(a) - 1;
-        asaved = args[an];
-        en = GC_arrayNumElements(e) - 1;
-        esaved = env[en];
-        args[an] = (char *) NULL;
-        env[en] = (char *) NULL;
-        result = spawnve (SPAWN_MODE, path, 
-                                (const char * const *)args,
-                                (const char * const *)env);
-        args[an] = asaved;
-        env[en] = esaved;
-        return result;
-}
-#else
-Int MLton_Process_spawne (__attribute__ ((unused)) Pointer p, 
-                          __attribute__ ((unused)) Pointer a, 
-                          __attribute__ ((unused)) Pointer e) {
-        die ("MLton_Process_spawne not implemented");
-}
-#endif

Deleted: mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/spawnp.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/spawnp.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/MLton/spawnp.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -1,25 +0,0 @@
-#include "platform.h"
-
-#if HAS_SPAWN
-Int MLton_Process_spawnp (NullString p, Pointer a) {
-        char    *path;
-        char    *asaved;
-        char    **args;
-        int     an;
-        int     result;
-
-        path = (char *) p;
-        args = (char **) a;
-        an = GC_arrayNumElements(a) - 1;
-        asaved = args[an];
-        args[an] = (char *) NULL;
-        result = spawnvp (SPAWN_MODE, path, (const char * const *)args);
-        args[an] = asaved;
-        return result;
-}
-#else
-Int MLton_Process_spawnp (__attribute__ ((unused)) Pointer p, 
-                          __attribute__ ((unused)) Pointer a) {
-        die ("MLton_Process_spawnp not implemented");
-}
-#endif

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Net.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Net.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Net.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -1,20 +1,17 @@
-#define _ISOC99_SOURCE
-#define _BSD_SOURCE
-
 #include "platform.h"
 
-Int Net_htonl (Int i) {
-        return htonl (i);
+Word32_t Net_htonl (Word32_t w) {
+  return htonl (w);
 }
 
-Int Net_ntohl (Int i) {
-        return ntohl (i);
+Word32_t Net_ntohl (Word32_t w) {
+  return ntohl (w);
 }
 
-Int Net_htons (Int i) {
-        return htons (i);
+Word16_t Net_htons (Word16_t w) {
+  return htons (w);
 }
 
-Int Net_ntohs (Int i) {
-        return ntohs (i);
+Word16_t Net_ntohs (Word16_t w) {
+  return ntohs (w);
 }

Added: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetHostDB-consts.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetHostDB-consts.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetHostDB-consts.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -0,0 +1,4 @@
+#include "platform.h"
+
+const C_Size_t NetHostDB_inAddrLen = sizeof (struct in_addr);
+const C_Int_t NetHostDB_INADDR_ANY = INADDR_ANY;

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetHostDB.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetHostDB.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetHostDB.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -2,52 +2,52 @@
 
 static struct hostent *hostent;
 
-Cstring NetHostDB_Entry_name(void) {
-        return (Cstring)hostent->h_name;
+C_String_t NetHostDB_getEntryName(void) {
+  return (C_String_t)(hostent->h_name);
 }
 
-Int NetHostDB_Entry_numAliases(void) {
-        int num = 0;
-        while (hostent->h_aliases[num] != NULL) num++;
-        return num;
+C_Int_t NetHostDB_getEntryAliasesNum(void) {
+  int num = 0;
+  while (hostent->h_aliases[num] != NULL) num++;
+  return num;
 }
 
-Cstring NetHostDB_Entry_aliasesN(Int n) {
-        return (Cstring)hostent->h_aliases[n];
+C_String_t NetHostDB_getEntryAliasesN(C_Int_t n) {
+  return (C_String_t)(hostent->h_aliases[n]);
 }
 
-Int NetHostDB_Entry_addrType(void) {
-        return hostent->h_addrtype;
+C_Int_t NetHostDB_getEntryAddrType(void) {
+  return hostent->h_addrtype;
 }
 
-Int NetHostDB_Entry_length(void) {
-        return hostent->h_length;
+C_Int_t NetHostDB_getEntryLength(void) {
+  return hostent->h_length;
 }
 
-Int NetHostDB_Entry_numAddrs(void) {
-        int num = 0;
-        while (hostent->h_addr_list[num] != NULL) num++;
-        return num;
+C_Int_t NetHostDB_getEntryAddrsNum(void) {
+  int num = 0;
+  while (hostent->h_addr_list[num] != NULL) num++;
+  return num;
 }
 
-void NetHostDB_Entry_addrsN(Int n, Pointer addr) {
-        int i;
-        for (i = 0; i < hostent->h_length; i++) {
-                addr[i] = hostent->h_addr_list[n][i];
-        }
-        return;
+void NetHostDB_getEntryAddrsN(C_Int_t n, Array(C_Char_t) addr) {
+  int i;
+  for (i = 0; i < hostent->h_length; i++) {
+    ((char*)addr)[i] = hostent->h_addr_list[n][i];
+  }
+  return;
 }
 
-Bool NetHostDB_getByAddress(Pointer addr, Int len) {
-        hostent = gethostbyaddr(addr, len, AF_INET);
-        return (hostent != NULL and hostent->h_name != NULL);
+Bool_t NetHostDB_getByAddress(Vector(C_Char_t) addr, C_Socklen_t len) {
+  hostent = gethostbyaddr((void*)addr, len, AF_INET);
+  return (hostent != NULL and hostent->h_name != NULL);
 }
 
-Bool NetHostDB_getByName(Cstring name) {
-        hostent = gethostbyname((char*)name);
-        return (hostent != NULL and hostent->h_name != NULL);
+Bool_t NetHostDB_getByName(NullString8_t name) {
+  hostent = gethostbyname((char*)name);
+  return (hostent != NULL and hostent->h_name != NULL);
 }
 
-Int NetHostDB_getHostName(Pointer buf, Int len) {
-        return (gethostname ((char*) buf, len));
+C_Errno_t(C_Int_t) NetHostDB_getHostName(Array(Char8_t) buf, C_Size_t len) {
+  return gethostname ((char*)buf, len);
 }

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetProtDB.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetProtDB.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetProtDB.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -2,30 +2,30 @@
 
 static struct protoent *protoent;
 
-Cstring NetProtDB_Entry_name(void) {
-        return (Cstring)protoent->p_name;
+C_String_t NetProtDB_getEntryName(void) {
+  return (C_String_t)(protoent->p_name);
 }
 
-Int NetProtDB_Entry_numAliases(void) {
-        int num = 0;
-        while (protoent->p_aliases[num] != NULL) num++;
-        return num;
+C_Int_t NetProtDB_getEntryAliasesNum(void) {
+  int num = 0;
+  while (protoent->p_aliases[num] != NULL) num++;
+  return num;
 }
 
-Cstring NetProtDB_Entry_aliasesN(Int n) {
-        return (Cstring)protoent->p_aliases[n];
+C_String_t NetProtDB_getEntryAliasesN(C_Int_t n) {
+  return (C_String_t)(protoent->p_aliases[n]);
 }
 
-Int NetProtDB_Entry_protocol(void) {
-        return protoent->p_proto;
+C_Int_t NetProtDB_getEntryProto(void) {
+  return protoent->p_proto;
 }
 
-Int NetProtDB_getByName(Cstring name) {
-        protoent = getprotobyname((char*)name);
-        return (protoent != NULL and protoent->p_name != NULL);
+Bool_t NetProtDB_getByName(NullString8_t name) {
+  protoent = getprotobyname((char*)name);
+  return (protoent != NULL and protoent->p_name != NULL);
 }
 
-Int NetProtDB_getByNumber(Int proto) {
-        protoent = getprotobynumber(proto);
-        return (protoent != NULL and protoent->p_name != NULL);
+Bool_t NetProtDB_getByNumber(C_Int_t proto) {
+  protoent = getprotobynumber(proto);
+  return (protoent != NULL and protoent->p_name != NULL);
 }

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetServDB.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetServDB.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/NetServDB.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -5,42 +5,42 @@
 
 static struct servent *servent;
 
-Cstring NetServDB_Entry_name(void) {
-        return (Cstring)servent->s_name;
+C_String_t NetServDB_getEntryName(void) {
+  return (C_String_t)(servent->s_name);
 }
 
-Int NetServDB_Entry_numAliases(void) {
-        int num = 0;
-        while (servent->s_aliases[num] != NULL) num++;
-        return num;
+C_Int_t NetServDB_getEntryAliasesNum(void) {
+  int num = 0;
+  while (servent->s_aliases[num] != NULL) num++;
+  return num;
 }
 
-Cstring NetServDB_Entry_aliasesN(Int n) {
-        return (Cstring)servent->s_aliases[n];
+C_String_t NetServDB_getEntryAliasesN(C_Int_t n) {
+  return (C_String_t)(servent->s_aliases[n]);
 }
 
-Int NetServDB_Entry_port(void) {
-        return servent->s_port;
+C_Int_t NetServDB_getEntryPort(void) {
+  return servent->s_port;
 }
 
-Cstring NetServDB_Entry_protocol(void) {
-        return (Cstring)servent->s_proto;
+C_String_t NetServDB_getEntryProto(void) {
+  return (C_String_t)(servent->s_proto);
 }
 
-Int NetServDB_getByName(Cstring name, Cstring proto) {
-        servent = getservbyname((char*)name, (char*)proto);
-        return (servent != NULL and servent->s_name != NULL);
+Bool_t NetServDB_getByName(NullString8_t name, NullString8_t proto) {
+  servent = getservbyname((char*)name, (char*)proto);
+  return (servent != NULL and servent->s_name != NULL);
 }
 
-Int NetServDB_getByNameNull(Cstring name) {
-        return NetServDB_getByName(name, (Cstring)NULL);
+Bool_t NetServDB_getByNameNull(NullString8_t name) {
+  return NetServDB_getByName(name, (NullString8_t)NULL);
 }
 
-Int NetServDB_getByPort(Int port, Cstring proto) {
-        servent = getservbyport(port, (char*)proto);
-        return (servent != NULL and servent->s_name != NULL);
+Bool_t NetServDB_getByPort(C_Int_t port, NullString8_t proto) {
+  servent = getservbyport(port, (char*)proto);
+  return (servent != NULL and servent->s_name != NULL);
 }
 
-Int NetServDB_getByPortNull(Int port) {
-        return NetServDB_getByPort(port, (Cstring)NULL);
+Bool_t NetServDB_getByPortNull(C_Int_t port) {
+  return NetServDB_getByPort(port, (NullString8_t)NULL);
 }

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/GenericSock.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/GenericSock.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/GenericSock.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -1,11 +1,13 @@
 #include "platform.h"
 
-Int GenericSock_socket (Int domain, Int type, Int protocol) {
-        MLton_initSockets ();
-        return socket (domain, type, protocol);
+C_Errno_t(C_Int_t) 
+Socket_GenericSock_socket (C_Int_t domain, C_Int_t type, C_Int_t protocol) {
+  MLton_initSockets ();
+  return socket (domain, type, protocol);
 }
 
-Int GenericSocket_socketPair (Int domain, Int type, Int protocol, Int sv[2]) {
-        MLton_initSockets ();
-        return socketpair (domain, type, protocol, (int*)sv);
+C_Errno_t(C_Int_t)
+Socket_GenericSock_socketPair (C_Int_t domain, C_Int_t type, C_Int_t protocol, Array(C_Int_t) sv) {
+  MLton_initSockets ();
+  return socketpair (domain, type, protocol, (int*)sv);
 }

Added: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/INetSock-consts.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/INetSock-consts.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/INetSock-consts.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -0,0 +1,4 @@
+#include "platform.h"
+
+const C_Int_t Socket_INetSock_Ctl_IPPROTO_TCP = IPPROTO_TCP;
+const C_Int_t Socket_INetSock_Ctl_TCP_NODELAY = TCP_NODELAY;

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/INetSock.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/INetSock.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/INetSock.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -1,29 +1,31 @@
 #include "platform.h"
 
-void INetSock_toAddr (Pointer in_addr, Int port, Char* addr, Int *addrlen) {
-        struct sockaddr_in *sa = (struct sockaddr_in*)addr;
+void 
+Socket_INetSock_toAddr (Vector(Word8_t) in_addr, C_Int_t port, 
+                        Array(Word8_t) addr, Ref(C_Socklen_t) addrlen) {
+  struct sockaddr_in *sa = (struct sockaddr_in*)addr;
 
-        sa->sin_family = AF_INET;
-        sa->sin_port = port;
-        sa->sin_addr = *(struct in_addr*)in_addr;
-        *addrlen = sizeof(struct sockaddr_in);
+  sa->sin_family = AF_INET;
+  sa->sin_port = port;
+  sa->sin_addr = *(struct in_addr*)in_addr;
+  *((socklen_t*)addrlen) = sizeof(struct sockaddr_in);
 }
 
 static int port;
 static struct in_addr in_addr;
 
-void INetSock_fromAddr (Char* addr) {
-        struct sockaddr_in *sa = (struct sockaddr_in*)addr;
-
-        assert(sa->sin_family == AF_INET);
-        port = sa->sin_port;
-        in_addr = sa->sin_addr;
+void Socket_INetSock_fromAddr (Vector(Word8_t) addr) {
+  struct sockaddr_in *sa = (struct sockaddr_in*)addr;
+  
+  assert(sa->sin_family == AF_INET);
+  port = sa->sin_port;
+  in_addr = sa->sin_addr;
 }
 
-Int INetSock_getPort (void) {
-        return port;
+Int Socket_INetSock_getPort (void) {
+  return port;
 }
 
-void INetSock_getInAddr (Pointer addr) {
-        *(struct in_addr*)addr = in_addr;
+void Socket_INetSock_getInAddr (Array(Word8_t) addr) {
+  *(struct in_addr*)addr = in_addr;
 }

Added: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/Socket-consts.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/Socket-consts.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/Socket-consts.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -0,0 +1,39 @@
+#include "platform.h"
+
+const C_Size_t Socket_sockAddrStorageLen = sizeof (struct sockaddr_storage);
+const C_Int_t Socket_AF_INET = AF_INET;
+const C_Int_t Socket_AF_INET6 = AF_INET6;
+const C_Int_t Socket_AF_UNIX = AF_UNIX;
+const C_Int_t Socket_AF_UNSPEC = AF_UNSPEC;
+const C_Int_t Socket_Ctl_SOL_SOCKET = SOL_SOCKET;
+const C_Int_t Socket_Ctl_SO_ACCEPTCONN = SO_ACCEPTCONN;
+const C_Int_t Socket_Ctl_SO_BROADCAST = SO_BROADCAST;
+const C_Int_t Socket_Ctl_SO_DEBUG = SO_DEBUG;
+const C_Int_t Socket_Ctl_SO_DONTROUTE = SO_DONTROUTE;
+const C_Int_t Socket_Ctl_SO_ERROR = SO_ERROR;
+const C_Int_t Socket_Ctl_SO_KEEPALIVE = SO_KEEPALIVE;
+const C_Int_t Socket_Ctl_SO_LINGER = SO_LINGER;
+const C_Int_t Socket_Ctl_SO_OOBINLINE = SO_OOBINLINE;
+const C_Int_t Socket_Ctl_SO_RCVBUF = SO_RCVBUF;
+const C_Int_t Socket_Ctl_SO_RCVLOWAT = SO_RCVLOWAT;
+const C_Int_t Socket_Ctl_SO_RCVTIMEO = SO_RCVTIMEO;
+const C_Int_t Socket_Ctl_SO_REUSEADDR = SO_REUSEADDR;
+const C_Int_t Socket_Ctl_SO_SNDBUF = SO_SNDBUF;
+const C_Int_t Socket_Ctl_SO_SNDLOWAT = SO_SNDLOWAT;
+const C_Int_t Socket_Ctl_SO_SNDTIMEO = SO_SNDTIMEO;
+const C_Int_t Socket_Ctl_SO_TYPE = SO_TYPE;
+const C_Int_t Socket_MSG_CTRUNC = MSG_CTRUNC;
+const C_Int_t Socket_MSG_DONTROUTE = MSG_DONTROUTE;
+const C_Int_t Socket_MSG_DONTWAIT = MSG_DONTWAIT;
+const C_Int_t Socket_MSG_EOR = MSG_EOR;
+const C_Int_t Socket_MSG_OOB = MSG_OOB;
+const C_Int_t Socket_MSG_PEEK = MSG_PEEK;
+const C_Int_t Socket_MSG_TRUNC = MSG_TRUNC;
+const C_Int_t Socket_MSG_WAITALL = MSG_WAITALL;
+const C_Int_t Socket_SHUT_RD = SHUT_RD;
+const C_Int_t Socket_SHUT_RDWR = SHUT_RDWR;
+const C_Int_t Socket_SHUT_WR = SHUT_WR;
+const C_Int_t Socket_SOCK_DGRAM = SOCK_DGRAM;
+const C_Int_t Socket_SOCK_RAW = SOCK_RAW;
+const C_Int_t Socket_SOCK_SEQPACKET = SOCK_SEQPACKET;
+const C_Int_t Socket_SOCK_STREAM = SOCK_STREAM;

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/Socket.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/Socket.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/Socket.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -1,85 +1,102 @@
 #include "platform.h"
 
-Int Socket_accept (Int s, Char *addr, Int *addrlen) {
-        MLton_initSockets ();
-        return accept (s, (struct sockaddr*)addr, (socklen_t*)addrlen);
+C_Errno_t(C_Int_t) Socket_accept (C_Sock_t s, Array(Word8_t) addr, Ref(C_Socklen_t) addrlen) {
+  MLton_initSockets ();
+  return accept (s, (struct sockaddr*)addr, (socklen_t*)addrlen);
 }
 
-Int Socket_bind (Int s, Char *addr, Int addrlen) {
-        MLton_initSockets ();
-        return bind (s, (struct sockaddr*)addr, (socklen_t)addrlen);
+C_Errno_t(C_Int_t) Socket_bind (C_Sock_t s, Array(Word8_t) addr, C_Socklen_t addrlen) {
+  MLton_initSockets ();
+  return bind (s, (struct sockaddr*)addr, (socklen_t)addrlen);
 }
 
-Int Socket_close(Int s) {
-        return close(s);
+C_Errno_t(C_Int_t) Socket_close(C_Sock_t s) {
+  return close(s);
 }
 
-Int Socket_connect (Int s, Char *addr, Int addrlen) {
-        MLton_initSockets ();
-        return connect (s, (struct sockaddr*)addr, (socklen_t)addrlen);
+C_Errno_t(C_Int_t) Socket_connect (C_Sock_t s, Vector(Word8_t) addr, C_Socklen_t addrlen) {
+  MLton_initSockets ();
+  return connect (s, (struct sockaddr*)addr, (socklen_t)addrlen);
 }
 
-Int Socket_familyOfAddr(Char *addr) {
-        return ((struct sockaddr*)addr)->sa_family;
+C_Int_t Socket_familyOfAddr(Vector(Word8_t) addr) {
+  return ((struct sockaddr*)addr)->sa_family;
 }
 
-Int Socket_listen (Int s, Int backlog) {
-        MLton_initSockets ();
-        return listen (s, backlog);
+C_Errno_t(C_Int_t) Socket_listen (C_Sock_t s, C_Int_t backlog) {
+  MLton_initSockets ();
+  return listen (s, backlog);
 }
 
-Int Socket_recv (Int s, Char *msg, Int start, Int len, Word flags) {
-        MLton_initSockets ();
-        return recv (s, (void*)((char *)msg + start), (size_t)len, flags);
+C_Errno_t(C_SSize_t) 
+     Socket_recv (C_Sock_t s, Array(Word8_t) msg, 
+                  C_Int_t start, C_Size_t len, C_Int_t flags) {
+  MLton_initSockets ();
+  return recv (s, (void*)((char *)msg + start), len, flags);
 }
 
-Int Socket_recvFrom (Int s, Char *msg, Int start, Int len, Word flags,
-                    Char* addr, Int *addrlen) {
-        MLton_initSockets ();
-        return recvfrom (s, (void*)((char *)msg + start), (size_t)len, flags,
-                                (struct sockaddr*)addr, (socklen_t*)addrlen);
+C_Errno_t(C_SSize_t) 
+Socket_recvFrom (C_Sock_t s, Array(Word8_t) msg, 
+                 C_Int_t start, C_Size_t len, C_Int_t flags,
+                 Array(Word8_t) addr, Ref(C_Socklen_t) addrlen) {
+  MLton_initSockets ();
+  return recvfrom (s, (void*)((char *)msg + start), len, flags,
+                   (struct sockaddr*)addr, (socklen_t*)addrlen);
 }
 
-Int Socket_send (Int s, Char *msg, Int start, Int len, Word flags) {
-        MLton_initSockets ();
-        return send (s, (void*)((char *)msg + start), (size_t)len, flags);
+C_Errno_t(C_SSize_t)
+Socket_send (C_Sock_t s, Vector(Word8_t) msg, 
+             C_Int_t start, C_Size_t len, C_Int_t flags) {
+  MLton_initSockets ();
+  return send (s, (void*)((char *)msg + start), len, flags);
 }
 
-Int Socket_sendTo (Int s, Char *msg, Int start, Int len, Word flags,
-                  Char* addr, Int addrlen) {
-        MLton_initSockets ();
-        return sendto (s, (void*)((char *)msg + start), (size_t)len, flags,
-                      (struct sockaddr*)addr, (socklen_t)addrlen);
+C_Errno_t(C_SSize_t) 
+Socket_sendTo (C_Sock_t s, Vector(Word8_t)msg, 
+               C_Int_t start, C_Size_t len, C_Int_t flags,
+               Vector(Word8_t) addr, C_Socklen_t addrlen) {
+  MLton_initSockets ();
+  return sendto (s, (void*)((char *)msg + start), len, flags,
+                 (struct sockaddr*)addr, (socklen_t)addrlen);
 }
 
-Int Socket_shutdown (Int s, Int how) {
-        MLton_initSockets ();
-        return shutdown (s, how);
+C_Errno_t(C_Int_t) Socket_shutdown (C_Sock_t s, C_Int_t how) {
+  MLton_initSockets ();
+  return shutdown (s, how);
 }
 
-Int Socket_Ctl_getSockOpt (Int s, Int level, Int optname, Char *optval,
-                                 Int *optlen) {
-        MLton_initSockets ();
-        return getsockopt (s, level, optname, (void*)optval, (socklen_t*)optlen);
+C_Errno_t(C_Int_t) 
+Socket_Ctl_getSockOpt (C_Sock_t s, C_Int_t level, C_Int_t optname, 
+                       Array(Word8_t) optval, Ref(C_Socklen_t) optlen) {
+  MLton_initSockets ();
+  return getsockopt (s, level, optname, (void*)optval, (socklen_t*)optlen);
 }
 
-Int Socket_Ctl_setSockOpt (Int s, Int level, Int optname, Char *optval, 
-                                Int optlen) {
-        MLton_initSockets ();
-        return setsockopt (s, level, optname, (void*)optval, (socklen_t)optlen);
+C_Errno_t(C_Int_t)
+Socket_Ctl_setSockOpt (C_Sock_t s, C_Int_t level, C_Int_t optname, 
+                       Vector(Word8_t) optval, C_Socklen_t optlen) {
+  MLton_initSockets ();
+  return setsockopt (s, level, optname, (void*)optval, (socklen_t)optlen);
 }
 
-Int Socket_Ctl_getsetIOCtl (Int s, Int request, Char* argp) {
-        MLton_initSockets ();
-        return ioctl (s, request, argp);
+C_Errno_t(C_Int_t) 
+Socket_Ctl_getIOCtl (C_Sock_t s, C_Int_t request, Array(Word8_t) argp) {
+  MLton_initSockets ();
+  return ioctl (s, request, (void*)argp);
 }
 
-Int Socket_Ctl_getPeerName (Int s, Char *name, Int *namelen) {
-        MLton_initSockets ();
-        return getpeername (s, (struct sockaddr*)name, (socklen_t*)namelen);
+C_Errno_t(C_Int_t) 
+Socket_Ctl_setIOCtl (C_Sock_t s, C_Int_t request, Vector(Word8_t) argp) {
+  MLton_initSockets ();
+  return ioctl (s, request, (void*)argp);
 }
 
-Int Socket_Ctl_getSockName (Int s, Char *name, Int *namelen) {
-        MLton_initSockets ();
-        return getsockname (s, (struct sockaddr*)name, (socklen_t*)namelen);
+C_Errno_t(C_Int_t) Socket_Ctl_getPeerName (C_Sock_t s, Array(Word8_t) name, Ref(C_Socklen_t) namelen) {
+  MLton_initSockets ();
+  return getpeername (s, (struct sockaddr*)name, (socklen_t*)namelen);
 }
+
+C_Errno_t(C_Int_t) Socket_Ctl_getSockName (C_Sock_t s, Array(Word8_t) name, Ref(C_Socklen_t) namelen) {
+  MLton_initSockets ();
+  return getsockname (s, (struct sockaddr*)name, (socklen_t*)namelen);
+}

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/UnixSock.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/UnixSock.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/Net/Socket/UnixSock.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -1,45 +1,47 @@
 #include "platform.h"
 
-#define UNIX_PATH_MAX 108
+#define UNIXSOCK_PATH_MAX (sizeof(struct sockaddr_un) - offsetof(struct sockaddr_un, sun_path))
 
-void UnixSock_toAddr (Char* path, Int pathlen, Char* addr, Int *addrlen) {
-        int i;
-        struct sockaddr_un *sa = (struct sockaddr_un*)addr;
+void Socket_UnixSock_toAddr (NullString8_t path, C_Size_t pathlen, Array(Word8_t) addr, Ref(C_Socklen_t) addrlen) {
+  size_t i;
+  struct sockaddr_un *sa = (struct sockaddr_un*)addr;
 
-        sa->sun_family = AF_UNIX;
-        i = 0;
-        if (pathlen <= UNIX_PATH_MAX) {
-                for (i = 0; i < pathlen; i++) {
-                        sa->sun_path[i] = path[i];
-                }
-        } else {
-                for (i = 0; i < UNIX_PATH_MAX-1; i++) {
-                        sa->sun_path[i] = path[i];
-                }
-                sa->sun_path[UNIX_PATH_MAX-1] = '\000';
-        }
-        *addrlen = sizeof(struct sockaddr_un);
+  sa->sun_family = AF_UNIX;
+  i = 0;
+  if (pathlen <= UNIXSOCK_PATH_MAX) {
+    for (i = 0; i < pathlen; i++) {
+      sa->sun_path[i] = path[i];
+    }
+  } else {
+    for (i = 0; i < UNIXSOCK_PATH_MAX-1; i++) {
+      sa->sun_path[i] = path[i];
+    }
+    sa->sun_path[UNIXSOCK_PATH_MAX-1] = '\000';
+  }
+  *((socklen_t*)addrlen) = sizeof(struct sockaddr_un);
 }
 
-Int UnixSock_pathLen (Char* addr) {
-        int i;
-        struct sockaddr_un *sa = (struct sockaddr_un*)addr;
+C_Size_t Socket_UnixSock_pathLen (Array(Word8_t) addr) {
+  size_t i;
+  struct sockaddr_un *sa = (struct sockaddr_un*)addr;
 
-        i = 0;
-        if (sa->sun_path[i] == '\000') {
-                return UNIX_PATH_MAX;
-        } else {
-                while (i < UNIX_PATH_MAX && sa->sun_path[i] != '\000') i++;
-                return i;
-        }
+  i = 0;
+  if (sa->sun_path[i] == '\000') {
+    return UNIXSOCK_PATH_MAX;
+  } else {
+    while (i < UNIXSOCK_PATH_MAX && sa->sun_path[i] != '\000') i++;
+    return i;
+  }
 }
 
-void UnixSock_fromAddr (Char* addr, Char* path, Int pathlen) {
-        int i;
-        struct sockaddr_un *sa = (struct sockaddr_un*)addr;
+void Socket_UnixSock_fromAddr (Array(Word8_t) addr, Array(Char8_t) path, C_Size_t pathlen) {
+  size_t i;
+  struct sockaddr_un *sa = (struct sockaddr_un*)addr;
+  
+  assert (sa->sun_family == AF_UNIX);
+  for (i = 0; i < pathlen; i++) {
+    ((char*)path)[i] = sa->sun_path[i];
+  }
+}
 
-        assert (sa->sun_family == AF_UNIX);
-        for (i = 0; i < pathlen; i++) {
-                path[i] = sa->sun_path[i];
-        }
-}
+#undef UNIXSOCK_PATH_MAX

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/Date.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/Date.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/Date.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -4,35 +4,35 @@
 #define DEBUG FALSE
 #endif
 
-static struct tm tm;
-static struct tm *tmp;
+static struct tm tm_in;
+static struct tm *tm_out;
 
-C_Int_t Date_Tm_getHour(void) { return tmp->tm_hour; }
-C_Int_t Date_Tm_getIsDst(void) { return tmp->tm_isdst; }
-C_Int_t Date_Tm_getMDay(void) { return tmp->tm_mday; }
-C_Int_t Date_Tm_getMin(void) { return tmp->tm_min; }
-C_Int_t Date_Tm_getMon(void) { return tmp->tm_mon; }
-C_Int_t Date_Tm_getSec(void) { return tmp->tm_sec; }
-C_Int_t Date_Tm_getWDay(void) { return tmp->tm_wday; }
-C_Int_t Date_Tm_getYDay(void) { return tmp->tm_yday; }
-C_Int_t Date_Tm_getYear(void) { return tmp->tm_year; }
+C_Int_t Date_Tm_getHour(void) { return tm_out->tm_hour; }
+C_Int_t Date_Tm_getIsDst(void) { return tm_out->tm_isdst; }
+C_Int_t Date_Tm_getMDay(void) { return tm_out->tm_mday; }
+C_Int_t Date_Tm_getMin(void) { return tm_out->tm_min; }
+C_Int_t Date_Tm_getMon(void) { return tm_out->tm_mon; }
+C_Int_t Date_Tm_getSec(void) { return tm_out->tm_sec; }
+C_Int_t Date_Tm_getWDay(void) { return tm_out->tm_wday; }
+C_Int_t Date_Tm_getYDay(void) { return tm_out->tm_yday; }
+C_Int_t Date_Tm_getYear(void) { return tm_out->tm_year; }
 
-void Date_Tm_setHour(C_Int_t x) { tm.tm_hour = x; }
-void Date_Tm_setIsDst(C_Int_t x) { tm.tm_isdst = x; }
-void Date_Tm_setMDay(C_Int_t x) { tm.tm_mday = x; }
-void Date_Tm_setMin(C_Int_t x) { tm.tm_min = x; }
-void Date_Tm_setMon(C_Int_t x) { tm.tm_mon = x; }
-void Date_Tm_setSec(C_Int_t x) { tm.tm_sec = x; }
-void Date_Tm_setWDay(C_Int_t x) { tm.tm_wday = x; }
-void Date_Tm_setYDay(C_Int_t x) { tm.tm_yday = x; }
-void Date_Tm_setYear(C_Int_t x) { tm.tm_year = x; }
+void Date_Tm_setHour(C_Int_t x) { tm_in.tm_hour = x; }
+void Date_Tm_setIsDst(C_Int_t x) { tm_in.tm_isdst = x; }
+void Date_Tm_setMDay(C_Int_t x) { tm_in.tm_mday = x; }
+void Date_Tm_setMin(C_Int_t x) { tm_in.tm_min = x; }
+void Date_Tm_setMon(C_Int_t x) { tm_in.tm_mon = x; }
+void Date_Tm_setSec(C_Int_t x) { tm_in.tm_sec = x; }
+void Date_Tm_setWDay(C_Int_t x) { tm_in.tm_wday = x; }
+void Date_Tm_setYDay(C_Int_t x) { tm_in.tm_yday = x; }
+void Date_Tm_setYear(C_Int_t x) { tm_in.tm_year = x; }
 
 C_Errno_t(C_Int_t) Date_gmTime(Ref(C_Time_t) p) {
-  tmp = gmtime((time_t*)p);
+  tm_out = gmtime((time_t*)p);
   if (DEBUG)
     fprintf (stderr, FMTPTR" = Date_gmTime ("FMTPTR")\n", 
-             (uintptr_t)tmp, (uintptr_t)p);
-  if (tmp == NULL) return -1;
+             (uintptr_t)tm_out, (uintptr_t)p);
+  if (tm_out == NULL) return -1;
   return 0;
 }
 
@@ -46,18 +46,18 @@
 }
 
 C_Errno_t(C_Int_t) Date_localTime(Ref(C_Time_t) p) {
-  tmp = localtime((time_t*)p);
+  tm_out = localtime((time_t*)p);
   if (DEBUG)
     fprintf (stderr, FMTPTR" = Date_localTime ("FMTPTR")\n", 
-             (uintptr_t)tmp, (uintptr_t)p);
-  if (tmp == NULL) return -1;
+             (uintptr_t)tm_out, (uintptr_t)p);
+  if (tm_out == NULL) return -1;
   return 0;
 }
 
 C_Errno_t(C_Time_t) Date_mkTime(void) {
-  return mktime(&tm);
+  return mktime(&tm_in);
 }
 
 C_Size_t Date_strfTime(String_t buf, C_Size_t n, NullString_t fmt) {
-  return strftime((char*)(buf), n, (char*)(fmt), &tm);
+  return strftime((char*)(buf), n, (char*)(fmt), &tm_in);
 }

Added: mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/OS/IO/poll-consts.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/OS/IO/poll-consts.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/OS/IO/poll-consts.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -0,0 +1,5 @@
+#include "platform.h"
+
+const C_Short_t OS_IO_POLLIN = POLLIN;
+const C_Short_t OS_IO_POLLPRI = POLLPRI;
+const C_Short_t OS_IO_POLLOUT = POLLOUT;

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/OS/IO/poll.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/OS/IO/poll.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/OS/IO/poll.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -1,11 +1,12 @@
 #include "platform.h"
 
-C_Int_t OS_IO_poll (Vector(C_Fd_t) fds, 
-                    Vector(C_Short_t) eventss, 
-                    C_NFds_t n, 
-                    C_Int_t timeout, 
-                    Array(C_Short_t) reventss) {
-  unsigned int i
+C_Errno_t(C_Int_t) 
+OS_IO_poll (Vector(C_Fd_t) fds, 
+            Vector(C_Short_t) eventss, 
+            C_NFds_t n, 
+            C_Int_t timeout, 
+            Array(C_Short_t) reventss) {
+  unsigned int i;
   int res;
   struct pollfd ufds[n];
 

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/Time.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/Time.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/basis/System/Time.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -6,7 +6,7 @@
 
 static struct timeval timeval;
 
-C_Int_t Time_gettimeofday (void) {
+C_Int_t Time_getTimeOfDay (void) {
   int res;
   res = gettimeofday (&timeval, (struct timezone*)NULL);
   if (DEBUG)

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/gc.h
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/gc.h	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/gc.h	2006-01-24 00:27:14 UTC (rev 4303)
@@ -17,6 +17,7 @@
 
 struct GC_state;
 typedef struct GC_state *GC_state;
+typedef GC_state GCState_t;
 
 #define GC_MODEL_NATIVE32
 

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/gen/basis-ffi.def
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/gen/basis-ffi.def	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/gen/basis-ffi.def	2006-01-24 00:27:14 UTC (rev 4303)
@@ -23,12 +23,129 @@
 Date.localOffset = _import : unit -> C.Double.t
 Date.localTime = _import : C.Time.t ref -> C.Int.t C.Errno.t
 Date.mkTime = _import : unit -> C.Time.t C.Errno.t
-Date.strfTime = _import : String.t * C.Size.t * NullString.t -> C.Size.t
+Date.strfTime = _import : String8.t * C.Size.t * NullString8.t -> C.Size.t
+MLton.Itimer.PROF = _const : int
+MLton.Itimer.REAL = _const : int
+MLton.Itimer.VIRTUAL = _const : int
+MLton.Itimer.set = _import : C.Int.t * C.Time.t * C.SUSeconds.t * C.Time.t * C.SUSeconds.t -> C.Int.t C.Errno.t
+MLton.Rlimit.AS = _const : C.Int.t
+MLton.Rlimit.CORE = _const : C.Int.t
+MLton.Rlimit.CPU = _const : C.Int.t
+MLton.Rlimit.DATA = _const : C.Int.t
+MLton.Rlimit.FSIZE = _const : C.Int.t
+MLton.Rlimit.INFINITY = _const : C.RLim.t
+MLton.Rlimit.NOFILE = _const : C.Int.t
+MLton.Rlimit.STACK = _const : C.Int.t
+MLton.Rlimit.get = _import : C.Int.t -> C.Int.t C.Errno.t
+MLton.Rlimit.getHard = _import : unit -> C.RLim.t
+MLton.Rlimit.getSoft = _import : unit -> C.RLim.t
+MLton.Rlimit.set = _import : C.Int.t * C.RLim.t * C.RLim.t -> C.Int.t C.Errno.t
+MLton.Rusage.children_stime_sec = _import : unit -> C.Time.t
+MLton.Rusage.children_stime_usec = _import : unit -> C.SUSeconds.t
+MLton.Rusage.children_utime_sec = _import : unit -> C.Time.t
+MLton.Rusage.children_utime_usec = _import : unit -> C.SUSeconds.t
+MLton.Rusage.gc_stime_sec = _import : unit -> C.Time.t
+MLton.Rusage.gc_stime_usec = _import : unit -> C.SUSeconds.t
+MLton.Rusage.gc_utime_sec = _import : unit -> C.Time.t
+MLton.Rusage.gc_utime_usec = _import : unit -> C.SUSeconds.t
+MLton.Rusage.getrusage = _import : GCState.t -> unit
+MLton.Rusage.self_stime_sec = _import : unit -> C.Time.t
+MLton.Rusage.self_stime_usec = _import : unit -> C.SUSeconds.t
+MLton.Rusage.self_utime_sec = _import : unit -> C.Time.t
+MLton.Rusage.self_utime_usec = _import : unit -> C.SUSeconds.t
+Net.htonl = _import : Word32.t -> Word32.t
+Net.htons = _import : Word16.t -> Word16.t
+Net.ntohl = _import : Word32.t -> Word32.t
+Net.ntohs = _import : Word16.t -> Word16.t
+NetHostDB.INADDR_ANY = _const : C.Int.t
+NetHostDB.getByAddress = _import : Word8.t vector * C.Socklen.t -> Bool.t
+NetHostDB.getByName = _import : NullString8.t -> C.Int.t C.HErrno.t
+NetHostDB.getEntryAddrType = _import : unit -> C.Int.t
+NetHostDB.getEntryAddrsN = _import : C.Int.t * Word8.t array -> unit
+NetHostDB.getEntryAddrsNum = _import : unit -> C.Int.t
+NetHostDB.getEntryAliasesN = _import : C.Int.t -> C.String.t
+NetHostDB.getEntryAliasesNum = _import : unit -> C.Int.t
+NetHostDB.getEntryLength = _import : unit -> C.Int.t
+NetHostDB.getEntryName = _import : unit -> C.String.t
+NetHostDB.getHostName = _import : Char8.t array * C.Size.t -> Bool.t
+NetHostDB.inAddrLen = _const : C.Size.t
+NetProtDB.getByName = _import : NullString8.t -> Bool.t
+NetProtDB.getByNumber = _import : C.Int.t -> Bool.t
+NetProtDB.getEntryAliasesN = _import : C.Int.t -> C.String.t
+NetProtDB.getEntryAliasesNum = _import : unit -> C.Int.t
+NetProtDB.getEntryName = _import : unit -> C.String.t
+NetProtDB.getEntryProto = _import : unit -> C.Int.t
+NetServDB.getByName = _import : NullString8.t * NullString8.t -> Bool.t
+NetServDB.getByNameNull = _import : NullString8.t -> Bool.t
+NetServDB.getByPort = _import : C.Int.t * NullString8.t -> Bool.t
+NetServDB.getByPortNull = _import : C.Int.t -> Bool.t
+NetServDB.getEntryAliasesN = _import : C.Int.t -> C.String.t
+NetServDB.getEntryAliasesNum = _import : unit -> C.Int.t
+NetServDB.getEntryName = _import : unit -> C.String.t
+NetServDB.getEntryPort = _import : unit -> C.Int.t
+NetServDB.getEntryProto = _import : unit -> C.String.t
 OS.IO.POLLIN = _const : C.Short.t
 OS.IO.POLLOUT = _const : C.Short.t
 OS.IO.POLLPRI = _const : C.Short.t
-OS.IO.poll = _import : C.Fd.t vector * C.Short.t vector * C.NFds.t * C.Int.t * C.Short.t array -> C.Int.t
-Stdio.print = _import : String.t -> unit
-Time.gettimeofday = _import : unit -> C.Int.t
+OS.IO.poll = _import : C.Fd.t vector * C.Short.t vector * C.NFds.t * C.Int.t * C.Short.t array -> C.Int.t C.Errno.t
+Socket.AF.INET = _const : C.Int.t
+Socket.AF.INET6 = _const : C.Int.t
+Socket.AF.UNIX = _const : C.Int.t
+Socket.AF.UNSPEC = _const : C.Int.t
+Socket.Clt.FIONBIO = _const : C.Int.t
+Socket.Clt.FIONREAD = _const : C.Int.t
+Socket.Clt.SIOCATMARK = _const : C.Int.t
+Socket.Ctl.SOL_SOCKET = _const : C.Int.t
+Socket.Ctl.SO_ACCEPTCONN = _const : C.Int.t
+Socket.Ctl.SO_BROADCAST = _const : C.Int.t
+Socket.Ctl.SO_DEBUG = _const : C.Int.t
+Socket.Ctl.SO_DONTROUTE = _const : C.Int.t
+Socket.Ctl.SO_ERROR = _const : C.Int.t
+Socket.Ctl.SO_KEEPALIVE = _const : C.Int.t
+Socket.Ctl.SO_LINGER = _const : C.Int.t
+Socket.Ctl.SO_OOBINLINE = _const : C.Int.t
+Socket.Ctl.SO_RCVBUF = _const : C.Int.t
+Socket.Ctl.SO_RCVLOWAT = _const : C.Int.t
+Socket.Ctl.SO_RCVTIMEO = _const : C.Int.t
+Socket.Ctl.SO_REUSEADDR = _const : C.Int.t
+Socket.Ctl.SO_SNDBUF = _const : C.Int.t
+Socket.Ctl.SO_SNDLOWAT = _const : C.Int.t
+Socket.Ctl.SO_SNDTIMEO = _const : C.Int.t
+Socket.Ctl.SO_TYPE = _const : C.Int.t
+Socket.Ctl.getIOCtl = _import : C.Sock.t * C.Int.t * Word8.t array -> C.Int.t C.Errno.t
+Socket.Ctl.getPeerName = _import : C.Sock.t * Word8.t array * C.Socklen.t ref -> C.Int.t C.Errno.t
+Socket.Ctl.getSockName = _import : C.Sock.t * Word8.t array * C.Socklen.t ref -> C.Int.t C.Errno.t
+Socket.Ctl.getSockOpt = _import : C.Sock.t * C.Int.t * C.Int.t * Word8.t array * C.Socklen.t ref -> C.Int.t C.Errno.t
+Socket.Ctl.setIOCtl = _import : C.Sock.t * C.Int.t * Word8.t vector -> C.Int.t C.Errno.t
+Socket.Ctl.setSockOpt = _import : C.Sock.t * C.Int.t * C.Int.t * Word8.t vector * C.Socklen.t -> C.Int.t C.Errno.t
+Socket.GenericSock.socket = _import : C.Int.t * C.Int.t * C.Int.t -> C.Int.t C.Errno.t
+Socket.GenericSock.socketPair = _import : C.Int.t * C.Int.t * C.Int.t * C.Int.t array -> C.Int.t C.Errno.t
+Socket.INetSock.Ctl.IPPROTO_TCP = _const : C.Int.t
+Socket.INetSock.Ctl.TCP_NODELAY = _const : C.Int.t
+Socket.INetSock.fromAddr = _import : Word8.t vector -> unit
+Socket.INetSock.getInAddr = _import : Word8.t array -> unit
+Socket.INetSock.getPort = _import : unit -> C.Int.t
+Socket.INetSock.toAddr = _import : Word8.t vector * C.Int.t * Word8.t array * C.Socklen.t ref -> unit
+Socket.SOCK.DGRAM = _const : C.Int.t
+Socket.SOCK.RAW = _const : C.Int.t
+Socket.SOCK.SEQPACKET = _const : C.Int.t
+Socket.SOCK.STREAM = _const : C.Int.t
+Socket.UnixSock.fromAddr = _import : Word8.t array * Char8.t array * C.Size.t -> unit
+Socket.UnixSock.pathLen = _import : Word8.t array -> C.Size.t
+Socket.UnixSock.toAddr = _import : NullString8.t * C.Size.t * Word8.t array * C.Socklen.t ref -> unit
+Socket.accept = _import : C.Sock.t * Word8.t array * C.Socklen.t ref -> C.Int.t C.Errno.t
+Socket.bind = _import : C.Sock.t * Word8.t array * C.Socklen.t -> C.Int.t C.Errno.t
+Socket.close = _import : C.Sock.t -> C.Int.t C.Errno.t
+Socket.connect = _import : C.Sock.t * Word8.t vector * C.Socklen.t -> C.Int.t C.Errno.t
+Socket.familyOfAddr = _import : Word8.t vector -> C.Int.t
+Socket.listen = _import : C.Sock.t * C.Int.t -> C.Int.t C.Errno.t
+Socket.recv = _import : C.Sock.t * Word8.t array * C.Int.t * C.Size.t * C.Int.t -> C.SSize.t C.Errno.t
+Socket.recvFrom = _import : C.Sock.t * Word8.t array * C.Int.t * C.Size.t * C.Int.t * Word8.t array * C.Socklen.t ref -> C.SSize.t C.Errno.t
+Socket.send = _import : C.Sock.t * Word8.t vector * C.Int.t * C.Size.t * C.Int.t -> C.SSize.t C.Errno.t
+Socket.sendTo = _import : C.Sock.t * Word8.t vector * C.Int.t * C.Size.t * C.Int.t * Word8.t vector * C.Socklen.t -> C.SSize.t C.Errno.t
+Socket.shutdown = _import : C.Sock.t * C.Int.t -> C.Int.t C.Errno.t
+Socket.sockAddrStorageLen = _const : C.Size.t
+Stdio.print = _import : String8.t -> unit
+Time.getTimeOfDay = _import : unit -> C.Int.t
 Time.sec = _import : unit -> C.Time.t
 Time.usec = _import : unit -> C.SUSeconds.t

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-basis-ffi.sml
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-basis-ffi.sml	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-basis-ffi.sml	2006-01-24 00:27:14 UTC (rev 4303)
@@ -68,7 +68,8 @@
             val ss = Substring.droplSpace ss
             val (names, rest) = 
                Substring.splitl 
-               (fn c => Char.isAlpha c orelse c = #".")
+               (fn c => Char.isAlphaNum c 
+                   orelse c = #"." orelse c = #"_")
                ss
             val rest = Substring.droplSpace rest
          in
@@ -122,7 +123,7 @@
                 | SOME (name, rest) => loop (rest, Con (name, t))
          in
             case Name.parse s of
-               NONE => raise Fail "Type.parse"
+               NONE => raise Fail (concat ["Type.parse: \"", Substring.string s, "\""])
              | SOME (Name.T ["unit"], rest) => loop (rest, Unit)
              | SOME (name, rest) => loop (rest, Base name)
          end
@@ -148,7 +149,7 @@
                                ret = ret}, 
                               rest)
                           end
-                  else raise Fail "Type.parseFn"
+                  else raise Fail (concat ["Type.parseFn: \"", Substring.string s, "\""])
                end
          in
             loop (s, [])
@@ -179,9 +180,11 @@
          case entry of
             Const {name, ty} => 
                String.concat
-               ["/* ",
+               ["extern const ",
+                Type.toC ty,
+                " ",
                 Name.toC name,
-                " */"]
+                ";"]
           | Import {name, ty = {args, ret}} =>
                String.concat
                [Type.toC ret,
@@ -235,11 +238,11 @@
             val s = Substring.droplSpace s
             val s = if Substring.isPrefix ":" s
                       then #2 (Substring.splitAt (s, 1))
-                       else raise Fail "Entry.parseSymbol"
+                       else raise Fail (concat ["Entry.parseSymbol: \"", Substring.string s, "\""])
             val (ret, rest) = Type.parse s
             val () = if Substring.isEmpty rest
                         then ()
-                        else raise Fail "Entry.parseSymbol"
+                        else raise Fail (concat ["Entry.parseSymbol: \"", Substring.string s, "\""])
          in
             Const {name = name,
                    ty = ret}
@@ -251,11 +254,11 @@
             val s = Substring.droplSpace s
             val s = if Substring.isPrefix ":" s
                        then #2 (Substring.splitAt (s, 1))
-                       else raise Fail "Entry.parseImport"
+                       else raise Fail (concat ["Entry.parseImport: \"", Substring.string s, "\""])
             val ({args, ret}, rest) = Type.parseFn s
             val () = if Substring.isEmpty rest
                         then ()
-                        else raise Fail "Entry.parseImport"
+                        else raise Fail (concat ["Entry.parseImport: \"", Substring.string s, "\""])
          in
             Import {name = name,
                     ty = {args = args, ret = ret}}
@@ -267,11 +270,11 @@
             val s = Substring.droplSpace s
             val s = if Substring.isPrefix ":" s
                       then #2 (Substring.splitAt (s, 1))
-                       else raise Fail "Entry.parseSymbol"
+                       else raise Fail (concat ["Entry.parseSymbol: \"", Substring.string s, "\""])
             val (ret, rest) = Type.parse s
             val () = if Substring.isEmpty rest
                         then ()
-                        else raise Fail "Entry.parseSymbol"
+                        else raise Fail (concat ["Entry.parseSymbol: \"", Substring.string s, "\""])
          in
             Symbol {name = name,
                     ty = ret}
@@ -292,9 +295,9 @@
                              then parseImport (rest, name)
                           else if Substring.isPrefix "_symbol" rest
                              then parseSymbol (rest, name)
-                          else raise Fail "Entry.parse"
+                          else raise Fail (concat ["Entry.parse: \"", Substring.string s, "\""])
                        end
-                  else raise Fail "Entry.parse"
+                  else raise Fail (concat ["Entry.parse: \"", Substring.string s, "\""])
    end
 
 val entries =

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-types.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-types.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/gen/gen-types.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -45,50 +45,78 @@
   "typedef unsigned char* Pointer;",
   "#define Array(t) Pointer",
   "#define Ref(t) Pointer",
-  "#define Vector(t) Pointer",
+  "#define Vector(t) const Pointer",
   "",
-  "typedef void unit;",
-  "",
+  "typedef int8_t Int8_t;",
   "typedef int8_t Int8;",
+  "typedef int16_t Int16_t;",
   "typedef int16_t Int16;",
+  "typedef int32_t Int32_t;",
   "typedef int32_t Int32;",
+  "typedef int64_t Int64_t;",
   "typedef int64_t Int64;",
+  "typedef float Real32_t;",
   "typedef float Real32;",
+  "typedef double Real64_t;",
   "typedef double Real64;",
+  "typedef uint8_t Word8_t;",
   "typedef uint8_t Word8;",
+  "typedef uint16_t Word16_t;",
   "typedef uint16_t Word16;",
+  "typedef uint32_t Word32_t;",
   "typedef uint32_t Word32;",
+  "typedef uint64_t Word64_t;",
   "typedef uint64_t Word64;",
   "",
-  "typedef Int8 WordS8;",
-  "typedef Int16 WordS16;",
-  "typedef Int32 WordS32;",
-  "typedef Int64 WordS64;",
+  "typedef Int8_t WordS8_t;",
+  "typedef Int8_t WordS8;",
+  "typedef Int16_t WordS16_t;",
+  "typedef Int16_t WordS16;",
+  "typedef Int32_t WordS32_t;",
+  "typedef Int32_t WordS32;",
+  "typedef Int64_t WordS64_t;",
+  "typedef Int64_t WordS64;",
   "",
-  "typedef Word8 WordU8;",
-  "typedef Word16 WordU16;",
-  "typedef Word32 WordU32;",
-  "typedef Word64 WordU64;",
+  "typedef Word8_t WordU8_t;",
+  "typedef Word8_t WordU8;",
+  "typedef Word16_t WordU16_t;",
+  "typedef Word16_t WordU16;",
+  "typedef Word32_t WordU32_t;",
+  "typedef Word32_t WordU32;",
+  "typedef Word64_t WordU64_t;",
+  "typedef Word64_t WordU64;",
   "",
-  "typedef WordS8 Char8;",
-  "typedef WordS16 Char16;",
-  "typedef WordS32 Char32;",
+  "typedef WordS8_t Char8_t;",
+  "typedef WordS8_t Char8;",
+  "typedef WordS16_t Char16_t;",
+  "typedef WordS16_t Char16;",
+  "typedef WordS32_t Char32_t;",
+  "typedef WordS32_t Char32;",
   "",
-  "typedef Vector(Char8) String8;",
-  "typedef Vector(Char16) String16;",
-  "typedef Vector(Char32) String32;",
+  "typedef Vector(Char8_t) String8_t;",
+  "typedef Vector(Char8_t) String8;",
+  "typedef Vector(Char16_t) String16_t;",
+  "typedef Vector(Char16_t) String16;",
+  "typedef Vector(Char32_t) String32_t;",
+  "typedef Vector(Char32_t) String32;",
   "",
-  "typedef Int32 Bool;",
-  "typedef Char8 Char;",
-  "typedef Int32 Int;",
-  "typedef Real64 Real;",
-  "typedef String8 String;",
-  "typedef Word32 Word;",
+  "typedef Int32_t Bool_t;",
+  "typedef Int32_t Bool;",
+  "typedef Char8_t Char_t;",
+  "typedef Char8_t Char;",
+  "typedef Int32_t Int_t;",
+  "typedef Int32_t Int;",
+  "typedef Real64_t Real_t;",
+  "typedef Real64_t Real;",
+  "typedef String8_t String_t;",
+  "typedef String8_t String;",
+  "typedef Word32_t Word_t;",
+  "typedef Word32_t Word;",
   ""
-  "typedef String NullString;",
-  "",
-  "typedef String String_t;",
-  "typedef String NullString_t;",
+  "typedef String8_t NullString8_t;",
+  "typedef String8_t NullString8;",
+  "typedef NullString8_t NullString_t;",
+  "typedef NullString8_t NullString;",
   NULL
 };
 
@@ -100,7 +128,7 @@
   writeString (fd, " */ ");                \
   writeString (fd, bt);                    \
   writeUintmaxU (fd, CHAR_BIT * sizeof(t));\
-  writeString (fd, " ");                   \
+  writeString (fd, "_t ");                 \
   writeString (fd, name);                  \
   writeString (fd, ";");                   \
   writeNewline (fd);                       \
@@ -123,10 +151,11 @@
 static char* suffix[] = {
   "",
   "#define C_Errno_t(t) t",
+  "#define C_HErrno_t(t) t",
   "",
   "typedef C_Pointer_t Cpointer;",
   "typedef C_Size_t Size;",
-  "typedef C_SSize Ssize;",
+  "typedef C_SSize_t Ssize;",
   "typedef C_String_t Cstring;",
   "typedef C_StringArray_t CstringArray;",
   "typedef C_Off Position;"
@@ -137,7 +166,7 @@
   "typedef C_Mode Mode;",
   "typedef C_PId Pid;",
   "typedef C_Resource Resource;",
-  "typedef C_RLim Rlimit;",
+  "typedef C_RLim_t Rlimit;",
   "typedef C_Signal Signal;",
   "typedef C_Speed Speed;",
   "typedef C_Status Status;",
@@ -193,6 +222,7 @@
   writeString (fd, "/* Generic integers */");
   writeNewline (fd);
   systype(int, "Int", "C_Fd_t");
+  systype(int, "Int", "C_Sock_t");
   writeNewline (fd);
   writeString (fd, "/* from <poll.h> */");
   writeNewline (fd);
@@ -200,7 +230,7 @@
   writeNewline (fd);
   writeString (fd, "/* from <sys/resource.h> */");
   writeNewline (fd);
-  systype(rlim_t, "Word", "C_RLim");
+  systype(rlim_t, "Word", "C_RLim_t");
   writeNewline (fd);
   writeString (fd, "/* from <sys/types.h> */");
   writeNewline (fd);
@@ -210,12 +240,16 @@
   chkintsystype(mode_t, "C_Mode");
   systype(off_t, "Int", "C_Off");
   systype(pid_t, "Int", "C_PId");
-  systype(ssize_t, "Int", "C_SSize");
+  systype(ssize_t, "Int", "C_SSize_t");
   systype(suseconds_t, "Int", "C_SUSeconds_t");
   chknumsystype(time_t, "C_Time_t");
   chkintsystype(uid_t, "C_UId");
   systype(useconds_t, "Word", "C_USeconds_t");
   writeNewline (fd);
+  writeString (fd, "/* from <sys/types.h> */");
+  writeNewline (fd);
+  chkintsystype(socklen_t, "C_Socklen_t");
+  writeNewline (fd);
   writeString (fd, "/* from <termios.h> */");
   writeNewline (fd);
   systype(tcflag_t, "Word", "C_TCFlag");

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/platform.c
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/platform.c	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/platform.c	2006-01-24 00:27:14 UTC (rev 4303)
@@ -18,13 +18,13 @@
 void MLton_init (int argc, char **argv, GC_state s) {
   int start;
 
-  Posix_ProcEnv_environ = (CstringArray)environ;
+  Posix_ProcEnv_environ = (C_StringArray_t)environ;
   start = GC_init (s, argc, argv);
   /* Setup argv and argc that SML sees. */
   /* start is now the index of the first real arg. */
-  CommandLine_commandName = (unsigned int)(argv[0]);
+  CommandLine_commandName = (C_String_t)(argv[0]);
   CommandLine_argc = argc - start;
-  CommandLine_argv = (unsigned int)(argv + start);
+  CommandLine_argv = (C_StringArray_t)(argv + start);
 }
 
 void MLton_exit (GC_state s, Int status) {

Modified: mlton/branches/on-20050822-x86_64-branch/runtime/platform.h
===================================================================
--- mlton/branches/on-20050822-x86_64-branch/runtime/platform.h	2006-01-23 03:12:19 UTC (rev 4302)
+++ mlton/branches/on-20050822-x86_64-branch/runtime/platform.h	2006-01-24 00:27:14 UTC (rev 4303)
@@ -225,18 +225,6 @@
 Bool IntInf_equal (Pointer lhs, Pointer rhs);
 
 /* ------------------------------------------------- */
-/*                      Itimer                       */
-/* ------------------------------------------------- */
-
-#define Itimer_prof ITIMER_PROF
-#define Itimer_real ITIMER_REAL
-#define Itimer_virtual ITIMER_VIRTUAL
-
-void Itimer_set (Int which,
-                        Int interval_tv_sec, Int interval_tv_usec,
-                        Int value_tv_sec, Int value_tv_usec);
-
-/* ------------------------------------------------- */
 /*                       MLton                       */
 /* ------------------------------------------------- */
 
@@ -286,109 +274,7 @@
 Int MLton_Process_spawne (Pointer p, Pointer a, Pointer e);
 Int MLton_Process_spawnp (Pointer p, Pointer a);
 
-/* ---------------------------------- */
-/*            MLton.Rlimit            */
-/* ---------------------------------- */
-
-#define RLIMIT_BOGUS 0xFFFFFFFF
-
-#ifndef RLIMIT_RSS
-#define RLIMIT_RSS RLIMIT_BOGUS
-#endif
-#ifndef RLIMIT_NPROC
-#define RLIMIT_NPROC RLIMIT_BOGUS
-#endif
-#ifndef RLIMIT_MEMLOCK
-#define RLIMIT_MEMLOCK RLIMIT_BOGUS
-#endif
-
-#define MLton_Rlimit_cpuTime RLIMIT_CPU
-#define MLton_Rlimit_coreFileSize RLIMIT_CORE
-#define MLton_Rlimit_dataSize RLIMIT_DATA
-#define MLton_Rlimit_fileSize RLIMIT_FSIZE
-#define MLton_Rlimit_lockedInMemorySize RLIMIT_MEMLOCK
-#define MLton_Rlimit_numFiles RLIMIT_NOFILE
-#define MLton_Rlimit_numProcesses RLIMIT_NPROC
-#define MLton_Rlimit_residentSetSize RLIMIT_RSS
-#define MLton_Rlimit_stackSize RLIMIT_STACK
-#if (defined (RLIMIT_DATA))
-#define MLton_Rlimit_virtualMemorySize RLIMIT_DATA
-#elif (defined (RLIMIT_AS))
-#define MLton_Rlimit_virtualMemorySize RLIMIT_AS
-#else
-#error MLton_Rlimit_virtualMemorySize not defined
-#endif
-
-#define MLton_Rlimit_infinity RLIM_INFINITY
-
-Int MLton_Rlimit_get (Resource r);
-Rlimit MLton_Rlimit_getHard (void);
-Rlimit MLton_Rlimit_getSoft (void);
-Int MLton_Rlimit_set (Resource r, Rlimit hard, Rlimit soft);
-
-/* ---------------------------------- */
-/*           MLton.Rusage             */
-/* ---------------------------------- */
-
-Int MLton_Rusage_self_utime_sec (void);
-Int MLton_Rusage_self_utime_usec (void);
-Int MLton_Rusage_self_stime_sec (void);
-Int MLton_Rusage_self_stime_usec (void);
-Int MLton_Rusage_children_utime_sec (void);
-Int MLton_Rusage_children_utime_usec (void);
-Int MLton_Rusage_children_stime_sec (void);
-Int MLton_Rusage_children_stime_usec (void);
-Int MLton_Rusage_gc_utime_sec (void);
-Int MLton_Rusage_gc_utime_usec (void);
-Int MLton_Rusage_gc_stime_sec (void);
-Int MLton_Rusage_gc_stime_usec (void);
-void MLton_Rusage_ru (GC_state s);
-
 /* ------------------------------------------------- */
-/*                        Net                        */
-/* ------------------------------------------------- */
-
-Int Net_htonl (Int i);
-Int Net_ntohl (Int i);
-Int Net_htons (Int i);
-Int Net_ntohs (Int i);
-#define NetHostDB_inAddrLen sizeof (struct in_addr)
-#define NetHostDB_INADDR_ANY INADDR_ANY
-Cstring NetHostDB_Entry_name(void);
-Int NetHostDB_Entry_numAliases(void);
-Cstring NetHostDB_Entry_aliasesN(Int n);
-Int NetHostDB_Entry_addrType(void);
-Int NetHostDB_Entry_length(void);
-Int NetHostDB_Entry_numAddrs(void);
-void NetHostDB_Entry_addrsN(Int n, Pointer addr);
-Bool NetHostDB_getByAddress(Pointer addr, Int len);
-Bool NetHostDB_getByName(Cstring name);
-Int NetHostDB_getHostName(Pointer buf, Int len);
-Cstring NetProtDB_Entry_name(void);
-Int NetProtDB_Entry_numAliases(void);
-Cstring NetProtDB_Entry_aliasesN(Int n);
-Int NetProtDB_Entry_protocol(void);
-Int NetProtDB_getByName(Cstring name);
-Int NetProtDB_getByNumber(Int proto);
-Cstring NetServDB_Entry_name(void);
-Int NetServDB_Entry_numAliases(void);
-Cstring NetServDB_Entry_aliasesN(Int n);
-Int NetServDB_Entry_port(void);
-Cstring NetServDB_Entry_protocol(void);
-Int NetServDB_getByName(Cstring name, Cstring proto);
-Int NetServDB_getByNameNull(Cstring name);
-Int NetServDB_getByPort(Int port, Cstring proto);
-Int NetServDB_getByPortNull(Int port);
-
-/* ------------------------------------------------- */
-/*                      OS                           */
-/* ------------------------------------------------- */
-
-#define OS_IO_POLLIN POLLIN
-#define OS_IO_POLLPRI POLLPRI
-#define OS_IO_POLLOUT POLLOUT
-
-/* ------------------------------------------------- */
 /*                     PackReal                      */
 /* ------------------------------------------------- */
 
@@ -958,66 +844,6 @@
 static inline void MLton_initSockets (void) {}
 #endif
 
-#define Socket_sockAddrLenMax max(sizeof (struct sockaddr), \
-                              max(sizeof (struct sockaddr_un), \
-                              max(sizeof (struct sockaddr_in), \
-                                  sizeof (struct sockaddr_in6))))
-#define Socket_AF_UNIX PF_UNIX
-#define Socket_AF_INET PF_INET
-#define Socket_AF_INET6 PF_INET6
-#define Socket_AF_UNSPEC PF_UNSPEC
-#define Socket_SOCK_STREAM SOCK_STREAM
-#define Socket_SOCK_DGRAM SOCK_DGRAM
-#define Socket_Ctl_SOL_SOCKET SOL_SOCKET
-#define Socket_Ctl_SO_DEBUG SO_DEBUG
-#define Socket_Ctl_SO_REUSEADDR SO_REUSEADDR
-#define Socket_Ctl_SO_KEEPALIVE SO_KEEPALIVE
-#define Socket_Ctl_SO_DONTROUTE SO_DONTROUTE
-#define Socket_Ctl_SO_LINGER SO_LINGER
-#define Socket_Ctl_SO_BROADCAST SO_BROADCAST
-#define Socket_Ctl_SO_OOBINLINE SO_OOBINLINE
-#define Socket_Ctl_SO_SNDBUF SO_SNDBUF
-#define Socket_Ctl_SO_RCVBUF SO_RCVBUF
-#define Socket_Ctl_SO_TYPE SO_TYPE
-#define Socket_Ctl_SO_ERROR SO_ERROR
-#define Socket_Ctl_FIONBIO FIONBIO
-#define Socket_Ctl_FIONREAD FIONREAD
-#define Socket_Ctl_SIOCATMARK SIOCATMARK
-#define Socket_SHUT_RD SHUT_RD
-#define Socket_SHUT_WR SHUT_WR
-#define Socket_SHUT_RDWR SHUT_RDWR
-#define Socket_MSG_DONTROUTE MSG_DONTROUTE
-#define Socket_MSG_DONTWAIT MSG_DONTWAIT
-#define Socket_MSG_OOB MSG_OOB
-#define Socket_MSG_PEEK MSG_PEEK
-#define Socket_INetSock_TCP_SOL_TCP IPPROTO_TCP
-#define Socket_INetSock_TCP_SO_NODELAY TCP_NODELAY
-Int Socket_accept (Int s, Char *addr, Int *addrlen);
-Int Socket_bind (Int s, Char *addr, Int addrlen);
-Int Socket_close(Int s);
-Int Socket_connect (Int s, Char *addr, Int addrlen);
-Int Socket_familyOfAddr(Char *addr);
-Int Socket_listen (Int s, Int backlog);
-Int Socket_recv (Int s, Char *msg, Int start, Int len, Word flags);
-Int Socket_recvFrom (Int s, Char *msg, Int start, Int len, Word flags, Char* addr, Int *addrlen);
-Int Socket_send (Int s, Char *msg, Int start, Int len, Word flags);
-Int Socket_sendTo (Int s, Char *msg, Int start, Int len, Word flags, Char* addr, Int addrlen);
-Int Socket_shutdown (Int s, Int how);
-Int Socket_Ctl_getSockOpt (Int s, Int level, Int optname, Char *optval, Int *optlen);
-Int Socket_Ctl_setSockOpt (Int s, Int level, Int optname, Char *optval, Int optlen);
-Int Socket_Ctl_getsetIOCtl (Int s, Int request, Char* argp);
-Int Socket_Ctl_getPeerName (Int s, Char *name, Int *namelen);
-Int Socket_Ctl_getSockName (Int s, Char *name, Int *namelen);
-Int GenericSock_socket (Int domain, Int type, Int protocol);
-Int GenericSocket_socketPair (Int domain, Int type, Int protocol, Int sv[2]);
-void UnixSock_toAddr (Char* path, Int pathlen, Char* addr, Int *addrlen);
-Int UnixSock_pathLen (Char* addr);
-void UnixSock_fromAddr (Char* addr, Char* path, Int pathlen);
-void INetSock_toAddr (Pointer in_addr, Int port, Char* addr, Int *addrlen);
-void INetSock_fromAddr (Char* addr);
-Int INetSock_getPort (void);
-void INetSock_getInAddr (Pointer addr);
-
 /* ------------------------------------------------- */
 /*                      Windows                      */
 /* ------------------------------------------------- */