[project @ 2001-01-08 12:58:45 by chak]
authorchak <unknown>
Mon, 8 Jan 2001 12:58:45 +0000 (12:58 +0000)
committerchak <unknown>
Mon, 8 Jan 2001 12:58:45 +0000 (12:58 +0000)
Revision of Marcin's QError module

* I think, there was a rough consensus that Marcin's module provides the
  right kind of interface for handling "errno"s

* Malcolm preferred an enumeration, but Marcin made a convincing argument
  that this doesn't go well with architecture-dependent variations of "errno"

* Recoded the hsc magic into autoconf magic

* In hsc files, errno constants can be accessed directly; to provide access
  for ordinary Haskell programmer, constants for a range of common symbols are
  provided (their values are determined by configure)

* Introduced an `Errno' newtype to increase type safety

* renamed the throwIfXXX functions to throwErrnoIfXXX to have the original
  names available in the language independent MarshalError

* FIXME: We need a thread local getErrno in the RTS!

(It all compiles, but is still to be tested.)

aclocal.m4
configure.in

index d8ff450..0f59610 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: aclocal.m4,v 1.60 2000/11/19 18:32:56 simonmar Exp $
+dnl $Id: aclocal.m4,v 1.61 2001/01/08 12:58:45 chak Exp $
 dnl 
 dnl Extra autoconf macros for the Glasgow fptools
 dnl
@@ -526,6 +526,46 @@ AC_DEFINE(HAVE_LONG_LONG)
 fi
 ])
 
+dnl ** Obtain the value of a C constant.
+dnl    The value will be `0' if the constant is undefined.
+dnl
+dnl    This is set up so that the argument can be a shell variable.
+dnl
+AC_DEFUN(FPTOOLS_CHECK_CCONST,
+[
+eval "def_name=CCONST_$1"
+eval "cv_name=ac_cv_cconst_$1"
+AC_MSG_CHECKING(value of $1)
+AC_CACHE_VAL($cv_name,
+[AC_TRY_RUN([#include <stdio.h>
+#include <errno.h>
+main()
+{
+  FILE *f=fopen("conftestval", "w");
+  if (!f) exit(1);
+  fprintf(f, "%d\n", $1);
+  exit(0);
+}], 
+eval "$cv_name=`cat conftestval`",
+eval "$cv_name=0",
+ifelse([$2], , , eval "$cv_name=$2"))])dnl
+eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
+AC_MSG_RESULT($fptools_check_cconst_result)
+AC_DEFINE_UNQUOTED($def_name, $fptools_check_cconst_result)
+unset fptools_check_cconst_result
+])
+
+dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with 
+dnl    spaces)
+dnl
+AC_DEFUN(FPTOOLS_CHECK_CCONSTS,
+[for ac_const_name in $1
+do
+FPTOOLS_CHECK_CCONST($ac_const_name)dnl
+done
+])
+
+
 dnl *** Can we open files in binary mode? ***
 dnl 
 AC_DEFUN(FPTOOLS_O_BINARY,
@@ -820,7 +860,7 @@ dnl The variable LIBM (which is not an output variable by default) is
 dnl set to a value which is suitable for use in a Makefile (for example,
 dnl in make's LOADLIBES macro) provided you AC_SUBST it first.
 dnl
-dnl @version 0.01 $Id: aclocal.m4,v 1.60 2000/11/19 18:32:56 simonmar Exp $
+dnl @version 0.01 $Id: aclocal.m4,v 1.61 2001/01/08 12:58:45 chak Exp $
 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
 
 # FPTOOLS_CHECK_LIBM - check for math library
@@ -908,7 +948,7 @@ dnl Please note that as the ac_opengl macro and the toy example evolves,
 dnl the version number increases, so you may have to adjust the above
 dnl URL accordingly.
 dnl
-dnl @version 0.01 $Id: aclocal.m4,v 1.60 2000/11/19 18:32:56 simonmar Exp $
+dnl @version 0.01 $Id: aclocal.m4,v 1.61 2001/01/08 12:58:45 chak Exp $
 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
 
 AC_DEFUN(FPTOOLS_HAVE_OPENGL,
index ec178cf..652edbd 100644 (file)
@@ -716,6 +716,8 @@ FPTOOLS_CHECK_HTYPE(GLdouble)
 FPTOOLS_CHECK_HTYPE(GLclampd)
 fi
 
+FPTOOLS_CHECK_CCONSTS(E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EADV EAFNOSUPPORT EAGAIN EALREADY EBADF EBADMSG EBADRPC EBUSY ECHILD ECOMM ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDIRTY EDOM EDQUOT EEXIST EFAULT EFBIG EFTYPE EHOSTDOWN EHOSTUNREACH EIDRM EILSEQ EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE EMULTIHOP ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODATA ENODEV ENOENT ENOEXEC ENOLCK ENOLINK ENOMEM ENOMSG ENONET ENOPROTOOPT ENOSPC ENOSR ENOSTR ENOSYS ENOTBLK ENOTCONN ENOTDIR ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM EPFNOSUPPORT EPIPE EPROCLIM EPROCUNAVAIL EPROGMISMATCH EPROGUNAVAIL EPROTO EPROTONOSUPPORT EPROTOTYPE ERANGE EREMCHG EREMOTE EROFS ERPCMISMATCH ERREMOTE ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESRMNT ESTALE ETIME ETIMEDOUT ETOOMANYREFS ETXTBSY EUSERS EWOULDBLOCK EXDEV)
+
 dnl ** can we open files in binary mode?
 FPTOOLS_O_BINARY