diff --git a/src/modules/system/Makefile.in b/src/modules/system/Makefile.in
index 2f257ac08571398c255930a103ff41b96204832a..8072c79fe435fba792273ff71af535841440a4c3 100644
--- a/src/modules/system/Makefile.in
+++ b/src/modules/system/Makefile.in
@@ -1,8 +1,14 @@
-# $Id: Makefile.in,v 1.5 1998/03/28 13:48:22 grubba Exp $
+# $Id: Makefile.in,v 1.6 1998/05/13 20:13:44 grubba Exp $
 SRCDIR=@srcdir@
-VPATH=@srcdir@:@srcdir@/../..:../..
+VPATH=@srcdir@:@srcdir@/../..:../..:.
 OBJS=system.o syslog.o passwords.o
 MODULE_LDFLAGS=@LIBS@
 
 @static_module_makefile@
+
+$(SRCDIR)/add-errnos.h : $(SRCDIR)/errnos.list $(SRCDIR)/mkerrnos.sed
+	sed -n <$(SRCDIR)/errnos.list -f $(SRCDIR)/mkerrnos.sed >$(SRCDIR)/add-errnos.h
+
+system.o : $(SRCDIR)/add-errnos.h
+
 @dependencies@
diff --git a/src/modules/system/errnos.list b/src/modules/system/errnos.list
new file mode 100644
index 0000000000000000000000000000000000000000..d13edd275d16f2cc9c49c5f3b63c6db5337a9b3e
--- /dev/null
+++ b/src/modules/system/errnos.list
@@ -0,0 +1,118 @@
+E2BIG
+EACCES
+EADDRINUSE
+EADDRNOTAVAIL
+EADV
+EAFNOSUPPORT
+EAGAIN
+EALREADY
+EBADE
+EBADF
+EBADFD
+EBADMSG
+EBADR
+EBADRQC
+EBADSLT
+EBFONT
+EBUSY
+ECANCELED
+ECHILD
+ECHRNG
+ECOMM
+ECONNABORTED
+ECONNREFUSED
+ECONNRESET
+EDEADLK
+EDEADLOCK
+EDESTADDRREQ
+EDOM
+EDQUOT
+EEXIST
+EFAULT
+EFBIG
+EHOSTDOWN
+EHOSTUNREACH
+EIDRM
+EILSEQ
+EINPROGRESS
+EINTR
+EINVAL
+EIO
+EISCONN
+EISDIR
+EL2HLT
+EL2NSYNC
+EL3HLT
+EL3RST
+ELIBACC
+ELIBBAD
+ELIBEXEC
+ELIBMAX
+ELIBSCN
+ELNRNG
+ELOOP
+EMFILE
+EMLINK
+EMSGSIZE
+EMULTIHOP
+ENAMETOOLONG
+ENETDOWN
+ENETRESET
+ENETUNREACH
+ENFILE
+ENOANO
+ENOBUFS
+ENOCSI
+ENODATA
+ENODEV
+ENOENT
+ENOEXEC
+ENOLCK
+ENOLINK
+ENOMEM
+ENOMSG
+ENONET
+ENOPKG
+ENOPROTOOPT
+ENOSPC
+ENOSR
+ENOSTR
+ENOSYS
+ENOTBLK
+ENOTCONN
+ENOTDIR
+ENOTEMPTY
+ENOTSOCK
+ENOTSUP
+ENOTTY
+ENOTUNIQ
+ENXIO
+EOPNOTSUPP
+EOVERFLOW
+EPERM
+EPFNOSUPPORT
+EPIPE
+EPROTO
+EPROTONOSUPPORT
+EPROTOTYPE
+ERANGE
+EREMCHG
+EREMOTE
+ERESTART
+EROFS
+ESHUTDOWN
+ESOCKTNOSUPPORT
+ESPIPE
+ESRCH
+ESRMNT
+ESTALE
+ESTRPIPE
+ETIME
+ETIMEDOUT
+ETOOMANYREFS
+ETXTBSY
+EUNATCH
+EUSERS
+EWOULDBLOCK
+EXDEV
+EXFULL
diff --git a/src/modules/system/mkerrnos.sed b/src/modules/system/mkerrnos.sed
new file mode 100644
index 0000000000000000000000000000000000000000..af5436dad904456155ac2d7827c3f37a23ae4885
--- /dev/null
+++ b/src/modules/system/mkerrnos.sed
@@ -0,0 +1,9 @@
+h
+s/.*/#ifdef &/
+p
+g
+s/.*/add_integer_constant("&", &, 0);/
+p
+g
+s/.*/#endif \/* & *\//
+p
diff --git a/src/modules/system/system.c b/src/modules/system/system.c
index dd90cb1552f48d41f146e5fb83f201ebb6213bd5..136d0f6d940c8d6f559057b2ff79c5cff8355278 100644
--- a/src/modules/system/system.c
+++ b/src/modules/system/system.c
@@ -1,5 +1,5 @@
 /*
- * $Id: system.c,v 1.49 1998/04/20 18:52:02 grubba Exp $
+ * $Id: system.c,v 1.50 1998/05/13 20:13:42 grubba Exp $
  *
  * System-call module for Pike
  *
@@ -14,7 +14,7 @@
 #include "system.h"
 
 #include "global.h"
-RCSID("$Id: system.c,v 1.49 1998/04/20 18:52:02 grubba Exp $");
+RCSID("$Id: system.c,v 1.50 1998/05/13 20:13:42 grubba Exp $");
 #ifdef HAVE_WINSOCK_H
 #include <winsock.h>
 #endif
@@ -1059,6 +1059,9 @@ void pike_module_init(void)
   ADD_GLOBAL_INTEGER_CONSTANT("HKEY_CLASSES_ROOT",HKEY_CLASSES_ROOT);
   add_efun("RegGetValue",f_RegGetValue,"function(int,string,string:string|int|string*)",OPT_EXTERNAL_DEPEND);
 #endif
+
+  /* errnos */
+#include "add-errnos.h"
 }
 
 void pike_module_exit(void)